Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp463218ybl; Tue, 28 Jan 2020 06:21:53 -0800 (PST) X-Google-Smtp-Source: APXvYqwaFeXPtPfcTI21aKEnrYciO7TJ2zNA9glfEbCpem9DEC4M+SAT2PIaGjPc4om8nM2jjp7v X-Received: by 2002:a9d:1ca3:: with SMTP id l35mr16413784ota.271.1580221313580; Tue, 28 Jan 2020 06:21:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580221313; cv=none; d=google.com; s=arc-20160816; b=QPpVhgpbfKpv+smWetzOizspTWUIVSMVjucFCjZTSAH8fuEbk6GSnG61xB1df4ChjQ Q/A33U96Xgrhnulticiimg7AUcpo70VaSW32ZMsG/WrtyE5HobD5BHZc7sXBnFYDM7f7 nWTPH9PvmQ0ofZdi/6URWFjF4ELsWzZJ5EXeljXMzBYywouAqSnTEhtHZdku5iyGVDIb xqA8t18F2dBF0l6fpnhNZ2OPxp4M0XzvyDPOkoXzsLbOWX/3tR3V5LC/dVD/rUzYcJlS Rxb8RPRw26wH3DDcUzrTZffyp8JquDhVFfpP+eMWZOmzGE6CpMXa2Qh8TfTvDUICvFOD 2Psg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lmiastIxtq6nwMYawHY8f5mQluXf1bD7jmVh7IX5DMQ=; b=0zxzfq1QfT6VUzJCJUpliYWcguqmnWdwuZPlNDrnzWUU5zAYpIwql8P+J7toBd619k ckp4NGTqe94SQO/eXTrpF6gp5duR6UNDteVIUDZajHo6oZQDBrHcqNGNXzYpKc1EpdnP ksnNCfEkZcQHE3IS97zDK8Hn7sUW2yzExAowwr5/BAC/o+1n+6Aitlw8qJZeMj9P2fNz c3krpSrXt976xZ0Pawj2JnLOEKGkgu4WpDRnypcRd8/ZhZfeOdXXL2PGJU/l5TOYSrv/ hhrPi3rhfYcAD1pa77xMgYL9Nyj/cQntkyMFvfl168iIYmfrpJdyrBp+dkdxmAZkW71b lgfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wsIeirpN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q6si10511028otg.248.2020.01.28.06.21.42; Tue, 28 Jan 2020 06:21:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wsIeirpN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731149AbgA1OUw (ORCPT + 99 others); Tue, 28 Jan 2020 09:20:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:45872 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731144AbgA1OUt (ORCPT ); Tue, 28 Jan 2020 09:20:49 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 503B92071E; Tue, 28 Jan 2020 14:20:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580221248; bh=+cwP9XADjrvZI1b705EfYZDrZt+Y9lRU5CyBykThi80=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wsIeirpNQRI2M3bEwMAfYx1+SJ/59sv0qkmZ/ItizwCy9pWmsTty1KAYUOLup+D2k x4MQU4jkaGTld6SLoXSG6T47Kxw6SKwh7PbwPLd0+EwAXM/2rpFZG+Ligq+ygRnZjq zrmr5bL6KH17ZWd72BEBPl2zoSJfhkm+q9185of0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Martin Sperl , Stefan Wahren , Mark Brown , Sasha Levin Subject: [PATCH 4.9 112/271] spi: bcm2835aux: fix driver to not allow 65535 (=-1) cs-gpios Date: Tue, 28 Jan 2020 15:04:21 +0100 Message-Id: <20200128135900.913030359@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200128135852.449088278@linuxfoundation.org> References: <20200128135852.449088278@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Martin Sperl [ Upstream commit 509c583620e9053e43d611bf1614fc3d3abafa96 ] The original driver by default defines num_chipselects as -1. This actually allicates an array of 65535 entries in of_spi_register_master. There is a side-effect for buggy device trees that (contrary to dt-binding documentation) have no cs-gpio defined. This mode was never supported by the driver due to limitations of native cs and additional code complexity and is explicitly not stated to be implemented. To keep backwards compatibility with such buggy DTs we limit the number of chip_selects to 1, as for all practical purposes it is only ever realistic to use a single chip select in native cs mode without negative side-effects. Fixes: 1ea29b39f4c812ec ("spi: bcm2835aux: add bcm2835 auxiliary spi device...") Signed-off-by: Martin Sperl Acked-by: Stefan Wahren Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/spi/spi-bcm2835aux.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-bcm2835aux.c b/drivers/spi/spi-bcm2835aux.c index 5c89bbb05441b..e075712c501e8 100644 --- a/drivers/spi/spi-bcm2835aux.c +++ b/drivers/spi/spi-bcm2835aux.c @@ -416,7 +416,18 @@ static int bcm2835aux_spi_probe(struct platform_device *pdev) platform_set_drvdata(pdev, master); master->mode_bits = (SPI_CPOL | SPI_CS_HIGH | SPI_NO_CS); master->bits_per_word_mask = SPI_BPW_MASK(8); - master->num_chipselect = -1; + /* even though the driver never officially supported native CS + * allow a single native CS for legacy DT support purposes when + * no cs-gpio is configured. + * Known limitations for native cs are: + * * multiple chip-selects: cs0-cs2 are all simultaniously asserted + * whenever there is a transfer - this even includes SPI_NO_CS + * * SPI_CS_HIGH: is ignores - cs are always asserted low + * * cs_change: cs is deasserted after each spi_transfer + * * cs_delay_usec: cs is always deasserted one SCK cycle after + * a spi_transfer + */ + master->num_chipselect = 1; master->transfer_one = bcm2835aux_spi_transfer_one; master->handle_err = bcm2835aux_spi_handle_err; master->prepare_message = bcm2835aux_spi_prepare_message; -- 2.20.1