From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 406AA277814 for ; Mon, 15 Sep 2025 18:37:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961462; cv=none; b=LNWzuMviRXgPYtMMsWGnh67+TxPrjjxUCtj8/sGqyT1Gee3j3RnTy4RK7RY0JILoRr+pnbcm8zZH+pDJAc4YuupLqpoqZjuCDxLc+N0XjI8OJEy+dd1FDlMU6Ecjg4wWTvxmLg1CBiKNgitbUmI5ukfuPjeM6hOczvaHusWU4Xg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961462; c=relaxed/simple; bh=saRKhQdSfkWWGMnDAouHGazpODy9OIrbPN7VfwvSKVk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TnsGrs9SCtok+ESrkoIqfQVH/Nul4dfKryxFKjeQqDxSDAcAgQ1yRG8pbfFPg0ZbtObZ11GaHf3lOckipA3Fw6bcmXLEQcsun/dBl6rMygV8wadmx68ra69qV26ybSCTiUQJNJovdhVfXczzWXHK0eTOd8uIsJYExoYz7zbmzGs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eLHZXHiB; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eLHZXHiB" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-62f0bf564e4so3384224a12.3 for ; Mon, 15 Sep 2025 11:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961459; x=1758566259; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EnZt//Gw8HEE+0ExEJAEOTVfUit0SOOn3jWqZZ6uos0=; b=eLHZXHiBnxdwQW40SxZmFwxCvfyFLqPxCkn+Bqrb0puSOdVht88p1zbDx3LEIFbYwB hjpab+fgOq3Bzf/fM9hemsO3nyL4PRee6PxP2e6ToX7W5xhmO2Rt0uNksv1/HAzCeq7S qOG0Bi3IpQLQ4l0KNnmiG5fdeWFsEVLVSMKpu/6/GB9CYal3Y4BzGyxQtwBcDjDVLKEh FnMZ73ZVqW4+cR/1gfkbe5kmZtOB80STlv4VOOBLcANfMCmj15jSA1DBn0inyXMXdcPG BgWHvmggZYWtL5tL2Ro1XHoWmCYg4jB/FM0dmS2jIDrFU/WSj5rQ+33kBm1d9h6SAnC9 J8Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961459; x=1758566259; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EnZt//Gw8HEE+0ExEJAEOTVfUit0SOOn3jWqZZ6uos0=; b=hEg5QK0i8CEp77bQt3YJ4jFBfKtEdn2rsDj2fuXAZPkYH+GgszAWnjJ9O7nkd6ksjO Gf0XysoYhwKUBvgEK25YKAz9OSWq7CcId0yMF49lfv6k6AfynlxLhgMSGUjpWYsbUIOe o22B1CxAly8MtH9sOg0d5ZhXcRBw7sccN76Nx4LxaL9mvxhJYWbNhNR+7V6FPj9vfH5Z NyNMGCaIc9/r64sovbFpigK3B4GB7pWLP4+fBJ3pJSVWFhHpAKWuflX+kvJJpO4Ju7PH HIQwDnVRShpP5EglO1f8qA+eAu6IlgxpNQNGsPj0Pniaafa4qHHaZwslBi4GeOA02on9 AwnQ== X-Forwarded-Encrypted: i=1; AJvYcCV/MxFbuDjbN5cKFUKpSQB9+JXBbNNsud7QgwyV6Cs5pAiwAV+uGwvtxKesZT0VtiwMA8sR2xQUDoz4Src=@vger.kernel.org X-Gm-Message-State: AOJu0YzgjLc92lyQJ30GODFPF3d/dQ9WYpArf84BxOAhj8tcRkFjzRUF CLgwAzSfNnT4uFSLSgHVzBVS71KhDhU9RY1zAdKdRfX4fYCHhHQLfDbx4bytGQ== X-Gm-Gg: ASbGncsfsZXSWJJg93fAXBn7TrgVXoRTxTNz2RUd8n2rWt1JB3gOPK7HE0y/yVY3cDO e7ikMOOiO9/6i/ySxkEu5MpcUTY1NvrKDqPjAU8xjGX66YbcUVcsumyQr/Tvb1TRZ2JUNjIRr4B HQprf7X1201EKY6mYY9e+enS/s85px7AGZcasrWMMJmePRecLeDemyGW+VWykcSo3Qjf5Yf64NO ndA2EhWDm9tRCH4wVyJwVHfIjYQ1971Xe1hA2ymwZ41g4nMQsG1aj6fn0NW7XgbiAycIbw3AqUT vHz14FuMO22woPOckgDzCsqm5Z6PtC1lou5rtVOKascph+Edi89XsTDIA3SXX2ctktVg1Gk0bsc oaw4l9AXW8m1SsepCzYXDeZ9p8IvSdTOIJ2C84FdzIqUH0ZW3WmpIeWqQerGcE9XavMitJ5aXaQ HqqG0= X-Google-Smtp-Source: AGHT+IEHWw+SDHAsI+AJuF9hiHU1IZzFJOmeRVfV5E+4W7dXdDnkqNl8hapKzt5xJVXwH3B9F7lXMQ== X-Received: by 2002:a05:6402:13c5:b0:622:173c:63f4 with SMTP id 4fb4d7f45d1cf-62ed851af9dmr13620728a12.35.1757961459419; Mon, 15 Sep 2025 11:37:39 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-62f454f4288sm2119985a12.5.2025.09.15.11.37.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:39 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 1/7] spi: fix return code when spi device has too many chipselects Date: Mon, 15 Sep 2025 20:37:19 +0200 Message-ID: <20250915183725.219473-2-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Don't return a positive value when there are too many chipselects. Fixes: 4d8ff6b0991d ("spi: Add multi-cs memories support in SPI core") Signed-off-by: Jonas Gorski --- v1 -> v2: * no changes drivers/spi/spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index f95c4304df8e..b07d6cdf587c 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -2445,7 +2445,7 @@ static int of_spi_parse_dt(struct spi_controller *ctl= r, struct spi_device *spi, if (rc > ctlr->num_chipselect) { dev_err(&ctlr->dev, "%pOF has number of CS > ctlr->num_chipselect (%d)\n= ", nc, rc); - return rc; + return -EINVAL; } if ((of_property_present(nc, "parallel-memories")) && (!(ctlr->flags & SPI_CONTROLLER_MULTI_CS))) { --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4938D26AD9 for ; Mon, 15 Sep 2025 18:37:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961465; cv=none; b=VcJvE6htUQMdfR/jjmx/fHkLGIJyprmFhs5vW8Tw0v3lC6AR4VyOqo5SFig7pZXTwxAtB04m71fCegYTbQcecA8ZRtkir9IJyCNt+QM28BJmBU1GI81nALJyxnpaYN7CDl7l0Kq4NHZs64JMnfRf7cnvYO5zKHEb7Dx8fJkdRtY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961465; c=relaxed/simple; bh=nNyJAqPzUbsMstGn8KK/RzOT1a5rF94uDp1blWPy1lM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YpDoQSaPLf1D6q/TUgSt4TJU9vRvh3ol1biOTjDufcnN0LrXwXkQQ8y0ghUU+XsdOAEwWGiZzpL7Q0TH+alXYFu7mcn++EtNNG+MPGUrKjgxNo31IAKeJGXOhkJFjvAN1XeWflUM0kuJdGud0FzHzAhO8FlLLKSob8z5nDythg0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BDRzj/C8; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BDRzj/C8" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-62f277546abso3654492a12.3 for ; Mon, 15 Sep 2025 11:37:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961461; x=1758566261; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+49Y+bB3RvywezAkTwvS7iRVhJ0Xt45mru9DJDyH0I4=; b=BDRzj/C81+Ih9KJefRLdG2R0UcSsQP4IigNoz4UuB2c9oLwJX44N6WzY9HXr6K3oO3 vYTABNmaSbgpVu21jiNu2RwmSy6MXFiZjIMb29ESDTQDO7HdPakHnf0ZrTRbjn5esX8b CQgezoPvf13eQlA8cctRJ7S6YjbrtFSiLl7aON5VOsi0veUVTc1euTt2P4HXdaQYPgKY jm04YaC9/3YYEPKyISmsVSvEstfwIawAcb2I9E0mEXv5XkayMMMdyMP0fCUukRjr/LJS 5EuOpcf1lXu1LP+R6XzyprUbxY+5bIJLlpW8mwEEp1tfX/jje4zbyoC1Ish93xGjr9dL cCwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961461; x=1758566261; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+49Y+bB3RvywezAkTwvS7iRVhJ0Xt45mru9DJDyH0I4=; b=Js1WhJOidp4novhk6NeCsq+gubOEk2MPCEDH6ja7/gtqYUNUkt1l9YpbkHrA3gkksw lY1Y9JaKjU+NkkoGIIcDfFZo4AihQ8rAGSCDWZBa1KQpFwFzVl+yPFx6YF/w/m9s5cR5 jqB1O/dWrhcoZLbc+W2DbvLgpKqs1ei07Ml0Zp58DofGucBorHtpPAs3/7uCNKOBlrWM sRBSH5HVXwbZG3J+OQx1eFVFOrMiiApd0fl02ztmkiJjS8Ls4w4waOCCWnuVAIuMK0fQ 3Eev6PWwC42B201jgDQ6WR2lYgDDp8mPL71ZevxP1kRX6bFred1DD3mbJFs+pumrCU1I jl8w== X-Forwarded-Encrypted: i=1; AJvYcCUxoG1OpAayhjFV3Yj0RttFGI5gKbo8ZPeD9CE7619jDMIHYY0+MfP1nPL1+mIilF3TTMJzVwFKwluOYRU=@vger.kernel.org X-Gm-Message-State: AOJu0YzY5A5U6HfBrN1rXzIYpcUPn0oe/V1+SQDq+EIDYpfZnK4CZqzl cgxmW8IUhPV7K2fE0Ug+gw/Vddv2/JDnieJzNJQbd1czZo++mIrRkEfI X-Gm-Gg: ASbGncufLbxOLngG+NBUFBpTYrnp//sWQ6MfrHtJSE6+YyddODuQdbrCPpSycZvDoKH GKJdwL7RiVex5z7/Ed5X8pF1e2mClV7O0m6Nu/7wwgZV/6gk0F0x8PVzzsN1wVq+Klgsy/L31T4 AZ4hZemFfCQaFvRTUy+B53dme0QZPUlWY/7BpOQJdFFEXyeRtzXnZGMGYdX8Em5mUhLgZd9Am85 iX14Q0CtvIi13UnCSDKImz2pxadzd1LGE/wV4gnnnPaqEHHUPI/SzF6D+p65K2ChDNzh0riJGxG ly2f5FLUsJ144GMI/TNxwucJBuVARw6yAL/1rkuqfdWJW/bNx0VTNkD9AVGJdDWxwnH5Qvv02A5 bb+Zpnx3xKj7I4YVl//pTFXf/ek6osP93SYCcwMaYv93gXVA0W4cXk7EQwEV8421B/th634kS14 xvexbUxBrelqiMtg== X-Google-Smtp-Source: AGHT+IG0HDooEQiV6aZa1Xu+D32GfMTtE75Na7INqqUdeAb78fEIj6a5Ia+hK7zoxv1DVPrGll47hQ== X-Received: by 2002:a17:907:7f13:b0:b04:858e:c1ee with SMTP id a640c23a62f3a-b07c3540588mr1496134266b.2.1757961460486; Mon, 15 Sep 2025 11:37:40 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07dbf5dbf5sm633180766b.79.2025.09.15.11.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:40 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 2/7] spi: keep track of number of chipselects in spi_device Date: Mon, 15 Sep 2025 20:37:20 +0200 Message-ID: <20250915183725.219473-3-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There are several places where we need to iterate over a device's chipselect. To be able to do it efficiently, store the number of chipselects in spi_device, like we do for controllers. Since we now use a device supplied value, add a check to make sure it isn't more than we can support. Signed-off-by: Jonas Gorski --- Changes v1 -> v2: * no changes drivers/spi/spi.c | 29 +++++++++++++++++++++-------- include/linux/spi/spi.h | 4 +++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index b07d6cdf587c..6598fb862d80 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -586,6 +586,7 @@ struct spi_device *spi_alloc_device(struct spi_controll= er *ctlr) spi->dev.bus =3D &spi_bus_type; spi->dev.release =3D spidev_release; spi->mode =3D ctlr->buswidth_override_bits; + spi->num_chipselect =3D 1; =20 device_initialize(&spi->dev); return spi; @@ -635,7 +636,7 @@ static inline int spi_dev_check_cs(struct device *dev, u8 idx_new; =20 cs =3D spi_get_chipselect(spi, idx); - for (idx_new =3D new_idx; idx_new < SPI_CS_CNT_MAX; idx_new++) { + for (idx_new =3D new_idx; idx_new < new_spi->num_chipselect; idx_new++) { cs_new =3D spi_get_chipselect(new_spi, idx_new); if (is_valid_cs(cs) && is_valid_cs(cs_new) && cs =3D=3D cs_new) { dev_err(dev, "chipselect %u already in use\n", cs_new); @@ -652,7 +653,7 @@ static int spi_dev_check(struct device *dev, void *data) int status, idx; =20 if (spi->controller =3D=3D new_spi->controller) { - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + for (idx =3D 0; idx < spi->num_chipselect; idx++) { status =3D spi_dev_check_cs(dev, spi, idx, new_spi, 0); if (status) return status; @@ -674,7 +675,13 @@ static int __spi_add_device(struct spi_device *spi) int status, idx; u8 cs; =20 - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + if (spi->num_chipselect > SPI_CS_CNT_MAX) { + dev_err(dev, "num_cs %d > max %d\n", spi->num_chipselect, + SPI_CS_CNT_MAX); + return -EOVERFLOW; + } + + for (idx =3D 0; idx < spi->num_chipselect; idx++) { /* Chipselects are numbered 0..max; validate. */ cs =3D spi_get_chipselect(spi, idx); if (is_valid_cs(cs) && cs >=3D ctlr->num_chipselect) { @@ -689,7 +696,7 @@ static int __spi_add_device(struct spi_device *spi) * For example, spi->chip_select[0] !=3D spi->chip_select[1] and so on. */ if (!spi_controller_is_target(ctlr)) { - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + for (idx =3D 0; idx < spi->num_chipselect; idx++) { status =3D spi_dev_check_cs(dev, spi, idx, spi, idx + 1); if (status) return status; @@ -717,7 +724,7 @@ static int __spi_add_device(struct spi_device *spi) if (ctlr->cs_gpiods) { u8 cs; =20 - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + for (idx =3D 0; idx < spi->num_chipselect; idx++) { cs =3D spi_get_chipselect(spi, idx); if (is_valid_cs(cs)) spi_set_csgpiod(spi, idx, ctlr->cs_gpiods[cs]); @@ -1024,7 +1031,7 @@ static void spi_res_release(struct spi_controller *ct= lr, struct spi_message *mes =20 /*------------------------------------------------------------------------= -*/ #define spi_for_each_valid_cs(spi, idx) \ - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) \ + for (idx =3D 0; idx < spi->num_chipselect; idx++) \ if (!(spi->cs_index_mask & BIT(idx))) {} else =20 static inline bool spi_is_last_cs(struct spi_device *spi) @@ -1080,8 +1087,12 @@ static void spi_set_cs(struct spi_device *spi, bool = enable, bool force) trace_spi_set_cs(spi, activate); =20 spi->controller->last_cs_index_mask =3D spi->cs_index_mask; - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) - spi->controller->last_cs[idx] =3D enable ? spi_get_chipselect(spi, 0) : = SPI_INVALID_CS; + for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + if (enable && idx < spi->num_chipselect) + spi->controller->last_cs[idx] =3D spi_get_chipselect(spi, 0); + else + spi->controller->last_cs[idx] =3D SPI_INVALID_CS; + } =20 spi->controller->last_cs_mode_high =3D spi->mode & SPI_CS_HIGH; if (spi->controller->last_cs_mode_high) @@ -2452,6 +2463,8 @@ static int of_spi_parse_dt(struct spi_controller *ctl= r, struct spi_device *spi, dev_err(&ctlr->dev, "SPI controller doesn't support multi CS\n"); return -EINVAL; } + + spi->num_chipselect =3D rc; for (idx =3D 0; idx < rc; idx++) spi_set_chipselect(spi, idx, cs[idx]); =20 diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index e9ea43234d9a..49c048277e97 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -170,6 +170,7 @@ extern void spi_transfer_cs_change_delay_exec(struct sp= i_message *msg, * two delays will be added up. * @chip_select: Array of physical chipselect, spi->chipselect[i] gives * the corresponding physical CS for logical CS i. + * @num_chipselect: Number of physical chipselects used. * @cs_index_mask: Bit mask of the active chipselect(s) in the chipselect = array * @cs_gpiod: Array of GPIO descriptors of the corresponding chipselect li= nes * (optional, NULL when not using a GPIO line) @@ -229,6 +230,7 @@ struct spi_device { struct spi_delay cs_inactive; =20 u8 chip_select[SPI_CS_CNT_MAX]; + u8 num_chipselect; =20 /* * Bit mask of the chipselect(s) that the driver need to use from @@ -315,7 +317,7 @@ static inline bool spi_is_csgpiod(struct spi_device *sp= i) { u8 idx; =20 - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + for (idx =3D 0; idx < spi->num_chipselect; idx++) { if (spi_get_csgpiod(spi, idx)) return true; } --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B61C2C11ED for ; Mon, 15 Sep 2025 18:37:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961465; cv=none; b=cVeWAF1dpcOdrHm2MeLwu2oi+4FVUsBWIW60W6EWyuuBuxnBXCrrmF2mkjvHt8sUjX0JQEx16mdHcRe0P01JgEF7W7Tr2E71TQ7/mzArdrVtOvVXpAYFWp/UR2LAICSe7n2OIlZAe6mQjQ+e3hhw2basfZY2b+R5Gnf4+yaFgOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961465; c=relaxed/simple; bh=L+M1ZzECWc7o27mlJQWYs2Ncc6khfKdpycbHvgVp5i4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DIfL36NOk5/XZ16xpAcI39DEht9fcjdxKn3fKwydnvXAEqKaX8/H4G8Ahp7CXXohr+381LwhHAJzxMkdBSkF5pNYJSq/lmSwLVUbrtlaGR/hOMF/cpJQlcXueAGZxMa6UTkA5lLgaB9GjC5u2/38uSewWXZ8VyNxtEIVZSTnWR4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WtEDg8Ik; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WtEDg8Ik" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b0411b83aafso682478266b.1 for ; Mon, 15 Sep 2025 11:37:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961462; x=1758566262; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fwqKiH/y6X4L1jh+XrSa2jKjNfRnZ7Plhu44ecA68uk=; b=WtEDg8IkAb2qr3DLCqHwItwBE5o60JV8FWkmdkk8iEddyQ4gKDNm39Y22J/HjWC7P6 gD6JR3dp6LvjeRz5xyUK/JU1ofB2L3506tCERif8ILHa0uG2Bwy+iFtY40N3IxdVhlnc roYueLE+BS2xFRuTgV5zYrPiaQG1R6Xz5Q9lC0Z1UfMW7ZshopPXIsX4o+0Nv58r5wea JoY+iyg9nxiyvke0qyY9k10MbZjZej7231luRqFocz0ylIZgq9FpzKmPoxBwLocufRsz 7NqoZ3Un5TxcMfb+8YJJyoLLvL5R7Tw5+RYzeHVQ2NY/d99pz2xFWaDJDYQiEzQRdkU+ nWBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961462; x=1758566262; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fwqKiH/y6X4L1jh+XrSa2jKjNfRnZ7Plhu44ecA68uk=; b=EG4Ke4vfTg2fz8jPX+B6Ibburko/AP0aemqfxbu3htH6XPyRFHe8rO4ecyBl8Lvoaq 3/YNb6ez7M2wA+fvU+OJafjzPvTYtGIcUEUy6B0dp4jMAJdwbWXT+ffeiYK0I1JA/0VZ ycfnQ4zCpDw9r+XkhvJt5V0mEmRSM+0+dhixL2L1WePBOQD5S9Rsc421PE8erTGXYBQK o/CHcYajyNrwQbBGzV4/oBUI4SQ/B9Lw5erb+UlYQ0IOayzjBcXbQO3tJTsJGexGQ7my 916qJ1C1J0YyeJCy3T4+pQqgly/t1yI3nEmNUMAEYOGrCM+SrQ1MiSuLl9WPpkoMe94e CTvQ== X-Forwarded-Encrypted: i=1; AJvYcCVRAZv3nPSLwYhZXYmNpvQmMNEBHxKzn9Z4Ex/xsTtSDyn0kEuFTswL3aM3ceSXAIopWuRzUpLDWsIpJxo=@vger.kernel.org X-Gm-Message-State: AOJu0YxjG3rbCU+g8z7Hs0hH2lRbsdwPXLlk3Mv/QaeWVw7VIrkkE4CE +b6yBQkqh5RC4nKwxzJ0zPkJil9euVODludWWbXzdeDV3QYA3vI5Bqe8moQDnQ== X-Gm-Gg: ASbGncslxbswWlqbV57uo5JrYFLuA7hbrcsxJ7hU2144G0LAbzrY3bQ14NkgBA6R45U b//yORDeVSC3fnr/No3hdqym1/BjARZ69Z7p0N1HYavHdFSIAO7ZDANWtJrWocBR9Jtk+gwpD95 CEo063Z5COOfIWGQ2Z5Qq8B48VpU+BM1G2DlFfuXKRsPhcRSHb9285Wd0BpUnJbqcfOJFZKwsgC 6L7Rr1YVsyaE+b7lvE0wzKdebAtAmK/QeWdgPJ1JF3mPtmL7jTr3HQaKLOukuOXiqTOWD3ke+HT Gb6J2/O3zaYGzYL1vYkLrhg82r/wd4CPrsc8c64JznrR9V4kZ0TilZ/fCJwzFue5Ns9JVDtPZ0o 5Py6XVS5bRB7ec8IXpGXcmfGdYU8ZYrSFHl2QS1yZo2DgABhxQXd9H2gLvbHdRR9fUuhCCQA6aK gjRkI= X-Google-Smtp-Source: AGHT+IGANoiEWAPfOY4jgzmxfgKsGfrxWOlgfv/xUo3QUDJfGt0s9o1t9GE9IutJIpf4+qhMXszSwg== X-Received: by 2002:a17:907:980a:b0:b04:5b3d:c305 with SMTP id a640c23a62f3a-b07c35722dcmr1465346366b.17.1757961461647; Mon, 15 Sep 2025 11:37:41 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32f22ddsm1005093266b.88.2025.09.15.11.37.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:41 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 3/7] spi: move unused device CS initialization to __spi_add_device() Date: Mon, 15 Sep 2025 20:37:21 +0200 Message-ID: <20250915183725.219473-4-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Using spi_device::num_chipselect, initialize unused device CS as invalid at registration time in __spi_add_device(), and drop it from the different allocation paths. Signed-off-by: Jonas Gorski --- Changes v1 -> v2: * new patch drivers/spi/spi.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 6598fb862d80..ad965eae9c9f 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -703,6 +703,10 @@ static int __spi_add_device(struct spi_device *spi) } } =20 + /* Initialize unused logical CS as invalid */ + for (idx =3D spi->num_chipselect; idx < SPI_CS_CNT_MAX; idx++) + spi_set_chipselect(spi, idx, SPI_INVALID_CS); + /* Set the bus ID string */ spi_dev_set_name(spi); =20 @@ -780,14 +784,6 @@ int spi_add_device(struct spi_device *spi) } EXPORT_SYMBOL_GPL(spi_add_device); =20 -static void spi_set_all_cs_unused(struct spi_device *spi) -{ - u8 idx; - - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) - spi_set_chipselect(spi, idx, SPI_INVALID_CS); -} - /** * spi_new_device - instantiate one new SPI device * @ctlr: Controller to which device is connected @@ -823,7 +819,6 @@ struct spi_device *spi_new_device(struct spi_controller= *ctlr, WARN_ON(strlen(chip->modalias) >=3D sizeof(proxy->modalias)); =20 /* Use provided chip-select for proxy device */ - spi_set_all_cs_unused(proxy); spi_set_chipselect(proxy, 0, chip->chip_select); =20 proxy->max_speed_hz =3D chip->max_speed_hz; @@ -2443,8 +2438,6 @@ static int of_spi_parse_dt(struct spi_controller *ctl= r, struct spi_device *spi, return -EINVAL; } =20 - spi_set_all_cs_unused(spi); - /* Device address */ rc =3D of_property_read_variable_u32_array(nc, "reg", &cs[0], 1, SPI_CS_CNT_MAX); @@ -2589,7 +2582,6 @@ struct spi_device *spi_new_ancillary_device(struct sp= i_device *spi, strscpy(ancillary->modalias, "dummy", sizeof(ancillary->modalias)); =20 /* Use provided chip-select for ancillary device */ - spi_set_all_cs_unused(ancillary); spi_set_chipselect(ancillary, 0, chip_select); =20 /* Take over SPI mode/speed from SPI main device */ @@ -2837,7 +2829,6 @@ struct spi_device *acpi_spi_device_alloc(struct spi_c= ontroller *ctlr, return ERR_PTR(-ENOMEM); } =20 - spi_set_all_cs_unused(spi); spi_set_chipselect(spi, 0, lookup.chip_select); =20 ACPI_COMPANION_SET(&spi->dev, adev); --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 69A0330506C for ; Mon, 15 Sep 2025 18:37:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961466; cv=none; b=VTelEI6hmD98J3ivs3apqjV+BgS4rZUQG8EBiXu9Ft3UrHHm9R5GVSXjVNSLy2QnTtpyt3/Rf+OFiIb+v/56hwyXFyRqns0h+xxGKJc2oCTM6eEK/mPYhz7VYoWOe7zFs4vhohBUwfpwfYSbw4gxuGXt7mFOJLqW6+LAkD3+pmM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961466; c=relaxed/simple; bh=KHf1K07NTwkhv6Wp3wTHX8eW6RchNhIV/ZMDf7/E9CE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DXW8jFcJnyYiViAwvn4uwjpCwKGkQ5WSwH60RPwsmntmdXa61aWTOiG8QY+rWUVAIXQSFNL2dqqKaUTO9Rv8kTJIRqGDSzS8M+TEpBpDZdWAzai1tD24c9ZILOUqAzykF6mkWdRFF1EUAxwAGTsrW+YLeVHnfzpTPSM3RWYLQ/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IgEe1LH5; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IgEe1LH5" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b0473327e70so135352466b.3 for ; Mon, 15 Sep 2025 11:37:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961463; x=1758566263; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jGAd5EwTueREEYaKyLu1qn1htBR/b/MdV1Cw2/PFlS0=; b=IgEe1LH5kTWDDWZYM9ujEEIwXqmYMMskqvPFfzZ8FoXThu/Kf3HhqtwDi/2FwewdHl UBL29cU/bdW+tGUV7CP1XrdNfhmKYs/beAqp2ckAbc/kB/1IeCgADklf4iycbmVgSgfg PVhgrqwzMCvIgW7a58jqSggkiHUnI6DETgtPd5qxWxz7iM/MO29hhKduePAqBTMyd/vo OrIq/aC11SoKXI+O+rSIRuzrCNTkGYnYSIxrAZ/SUQmqhc46c5ohpImeolZw63oOZbEn SVKoKmCGeG52nM8sH500c6xxp+eCxhGsUoN38a8aFWEtxnKfsRpd9XkEPaui+923Pgrn adeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961463; x=1758566263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jGAd5EwTueREEYaKyLu1qn1htBR/b/MdV1Cw2/PFlS0=; b=HF+5FZmV4rGEifqq4WCuM88hqNt5n3RaMKL4N2357SwzPsMLpMYhewQM/7isUNdbBn g0tp/5FBI498S1TQJ39oy7B9A/jLPQTOIuIsddpoyOANMgW8T9kwPlHqy81w8v78VbzH hZn+XXzdIDOT4PG89XkbvMKLw7fOs6NaJzKfxpT2lwlVAjqSL9+r5H9awb4aGQq1fdnT px/sT3vJ5zrKxu4DE9DgiOA85sL3rqHyasqL9o0Abwu3i2HqiiMJUYvFahCLsTxB+PWm cVbi7iP6y7sicrYm94si4BR26VHMolTBvib1H7anOiiDin4yy5ASBl2mO7fYBQ+7bBkA f0KQ== X-Forwarded-Encrypted: i=1; AJvYcCWs3VtCuXoe3CJX6C8DplBro9KcO/NYh7kJ2sUAbIuNvrTE7amtvT6a0BjUts8xZNoDBilhsgv1bSkrGwU=@vger.kernel.org X-Gm-Message-State: AOJu0YwlWHvCOnzPmkBMJY9lun0EEmJOw5v1g0W5UxVJBMkevJODn/0w NdZpQgt/Qwa4CclQl8zXHmXRFuZq3jF44j9K1Bsh1XjcNexGERJkeJgD X-Gm-Gg: ASbGncsaTA1S/5t+kLxp9QFDsId4yPb4HpVtBFLIP5FCquPBe7kqye/+QTug+ZeoPRU iosBTLKS10GgWzOOMVrr9Suug/EiXPe6HCKdXCfkx/XGN70Dnduw43ka+V3j0XmZVitvoMYqAsN 9DzKGJIv3Leo8OJJeP9sRXhlN7skq17fvAkYFNNYJcD1B3Gg7SZHe3C880xstUDNLCfOJfj/Fnn pM9uhz58U9wjZtULsyWDbdDSm43DNHdywAtP+AkjdUWr/J3/y1cADJICtA++sY/0IFpwQXVyOKz /aIAMuNr8sVskgituJDcmmzz+ydIhFi8F7YG6JDMV1DwqJNc6N5qDcTIO31TsC7CvxtOYJB+Grt Cn2vbdpMmdk3r9bqDx8ximRvcHvRzCK089tzvumxRM9bkttAteJU60oJxBocXASv3izdt4FdYDr zcL6M= X-Google-Smtp-Source: AGHT+IHUmkUWx/CNy9iKmZXK/Te/bh1246ey7N6I2lziuHZZC5hu9GTBD+URO/efKjEPAxGfYJB4Ww== X-Received: by 2002:a17:907:86a9:b0:b0c:be67:f556 with SMTP id a640c23a62f3a-b0cbe67f693mr747768166b.38.1757961462682; Mon, 15 Sep 2025 11:37:42 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b30da33dsm1006476466b.1.2025.09.15.11.37.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:42 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 4/7] spi: drop check for validity of device chip selects Date: Mon, 15 Sep 2025 20:37:22 +0200 Message-ID: <20250915183725.219473-5-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that we know the number of chip selects of a device, we can assume these are valid, and do not need to check them first. Signed-off-by: Jonas Gorski --- v1 -> v2: * dropped removal of initialization to SPI_CS_INVALID drivers/spi/spi.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index ad965eae9c9f..91e2f4f504e8 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -623,11 +623,6 @@ static void spi_dev_set_name(struct spi_device *spi) */ #define SPI_INVALID_CS ((s8)-1) =20 -static inline bool is_valid_cs(s8 chip_select) -{ - return chip_select !=3D SPI_INVALID_CS; -} - static inline int spi_dev_check_cs(struct device *dev, struct spi_device *spi, u8 idx, struct spi_device *new_spi, u8 new_idx) @@ -638,7 +633,7 @@ static inline int spi_dev_check_cs(struct device *dev, cs =3D spi_get_chipselect(spi, idx); for (idx_new =3D new_idx; idx_new < new_spi->num_chipselect; idx_new++) { cs_new =3D spi_get_chipselect(new_spi, idx_new); - if (is_valid_cs(cs) && is_valid_cs(cs_new) && cs =3D=3D cs_new) { + if (cs =3D=3D cs_new) { dev_err(dev, "chipselect %u already in use\n", cs_new); return -EBUSY; } @@ -684,7 +679,7 @@ static int __spi_add_device(struct spi_device *spi) for (idx =3D 0; idx < spi->num_chipselect; idx++) { /* Chipselects are numbered 0..max; validate. */ cs =3D spi_get_chipselect(spi, idx); - if (is_valid_cs(cs) && cs >=3D ctlr->num_chipselect) { + if (cs >=3D ctlr->num_chipselect) { dev_err(dev, "cs%d >=3D max %d\n", spi_get_chipselect(spi, idx), ctlr->num_chipselect); return -EINVAL; @@ -730,8 +725,7 @@ static int __spi_add_device(struct spi_device *spi) =20 for (idx =3D 0; idx < spi->num_chipselect; idx++) { cs =3D spi_get_chipselect(spi, idx); - if (is_valid_cs(cs)) - spi_set_csgpiod(spi, idx, ctlr->cs_gpiods[cs]); + spi_set_csgpiod(spi, idx, ctlr->cs_gpiods[cs]); } } =20 --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67F5030E84B for ; Mon, 15 Sep 2025 18:37:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961467; cv=none; b=C1kAu0g+Ih169k+My7RkEgezNpuUeExRMAt0ABYAtacecC3kRlVOfirFaL4GtZ+tg/b1/evzCQYo6dMk3hTD1mFClZwo4LIS8a8VSipVNjmC3lLbX56M5vyftzkQ4tOgxbiK+TBNcn77ZuIqQk59mD9z2ZEeLbmt+F/knRvNp9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961467; c=relaxed/simple; bh=D7l1i7Tso98Yp3oxSA+xRb+WgnIZVt0f20hEA6CTpEo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SrzlH5l7+aJQls1lid7lJzAAV5o7NjS5CGjgq+4MHxoGrOs73c2tU4Fdjhvr3qqJR+Ah66aRooPfOuPQku6Xp+hiidsYs4+7G2/C2juCZKTT50nqDT296haKP3weiLJJ31v6Pw7hfTpRhpxNX83YoxYxszSnChPw+i5VPQemnac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fmKOYmxY; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fmKOYmxY" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-afcb7322da8so146580966b.0 for ; Mon, 15 Sep 2025 11:37:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961464; x=1758566264; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DeZpyFc4Ckatn0hgt18UAr4UISB/Kvr7U8EfP7dfVc4=; b=fmKOYmxYsQbKxpl7ZdipV8Y9fsUxTh8mLAJTHqE7eZK+oZ0vXV6hsSpEjTj10wy52B xGSC6mo5GV2GR9fN6wqTXu7SR51mzxmvEyjP48BXs2th9xyX4fIsNRAcEBM5YVaE6PVZ FFuzPaRcytdPuPENx3LkQ0uuh1mvHrnKLVGKcLxTAUXuuQup3mmCZql62sy517IIpcWY evsoMHgEvQ5BdySaJf+BR71lypeq8GOlK/mBZIf3ZOsI6fFwvLSJ2Tsj8Ox/lNBiinVJ cuCtw2s3BglSXWXdWiiPl1EHplo3AbyyjH0JSmdOvEVDNsZG/vWhR7fOlIHRkVzRZ4e8 0fHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961464; x=1758566264; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DeZpyFc4Ckatn0hgt18UAr4UISB/Kvr7U8EfP7dfVc4=; b=F049JFL215Tn1ERbuLukFVqyvAs6VAh/hmqxcytXup8B2vWPef/SurfmEngsYCrXvn hXBaHgXICU1aoYVDKcGZHQRaA//HL+uaeleTSdGApoXric5LuCQ5yJ6yuj4/0ozqg57M /PHYFXyixbrllxqisQzrgY2wvMnJPO2dXG4P7pqwhVFIy48pliBpXzut7cbhRsXCuDUl U7DsFcaW3LLUlzosVBP9NrgYRbmHropeW8S+iuq9ozTOGZzoJvjNNiR+csR1fh3ahB1d mu46blJf7BW0knpLcsy7dQ/olL++ekp5cV2xcvMCfH9n91cafigQooLQRdC4vxxEmCGo Q7yg== X-Forwarded-Encrypted: i=1; AJvYcCWzurM09kjKqLhKveyGyX569Gn5VTc1OPExPWRogBo3RxHt84tR0angRzUCuCY62lxQU+kunSILyOTE97I=@vger.kernel.org X-Gm-Message-State: AOJu0YzEcXQ7iTlAEKfLas5VohkciyF6D0bEvWhmHRO0W2dGEyUFYaE7 osnhtNmbnzRVMsKBPZGaqNTd+7fYdrDrdvM3fhr3JhsoshqmZ0jGNFd1 X-Gm-Gg: ASbGnctk4TgMkhkcAVY9W0ZDJcM/K2k6EUVw2vtlIDcR15pPuK4ub3qqh4PhuE2V7WB jxUEx/vJGkooOYASWiBagG0SAfBw7RxZAmTQ3UXbVVG3Zb8WGCaZRC2cXUEcRWQEZhADbBcFkNW 8nu/oAxORm3AXwyteHkMcKn0+DwmGBVjrLDGFvs3+MZpOGbye7Gr+/2wF6KlMokfNEtD6N6UNnw Wu/QA+w3u/8u4ObcAbYlNm/sftZK/jyXPKZEQaE/3Ji7IZBJ/4YNzUZKhaEHAdtwzK21YMBwgTx lYUI7g+LHG7+V9Io7Q+J5H0DahfN7PBzhNHEo33itBxDzkdkQOJt0sGk3OJ1YhNlrdNFVHr+xht lNjavB5acinZM8V0y1gEZBcxEDjTF+T6ZAqtMEhE4+0rrv7IXSaJ5Q+mLzLSqGAPXUy/lEcSFgH jlG45JLckjp5CBag== X-Google-Smtp-Source: AGHT+IG4ukwBCnrVrafYVIfnQ2fBgnMS356P5egIxyTNPI1AtkBlvU4TPcYBay4AUhoWx6zE9fBkLQ== X-Received: by 2002:a17:907:3e1f:b0:b04:25ae:6c74 with SMTP id a640c23a62f3a-b07c354fadbmr1221786266b.9.1757961463847; Mon, 15 Sep 2025 11:37:43 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32dd3e4sm983305466b.54.2025.09.15.11.37.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:43 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 5/7] spi: don't check spi_controller::num_chipselect when parsing a dt device Date: Mon, 15 Sep 2025 20:37:23 +0200 Message-ID: <20250915183725.219473-6-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Do not validate spi_controller::num_chipselect against SPI_CS_CNT_MAX when parsing an spi device firmware node. Firstly this is the wrong place, and this should be done while registering/validating the controller. Secondly, there is no reason for that check, as SPI_CS_CNT_MAX controls the amount of chipselects a device may have, not a controller may have. So drop that check as it needlessly limits controllers to SPI_CS_CNT_MAX number of chipselects. Likewise, drop the check for number of device chipselects larger than controller's number of chipselects, as __spi_add_device() will already catch that as either one of the chip selects will be out of range, or there is a duplicate one. Signed-off-by: Jonas Gorski --- v1 -> v2: * no changes drivers/spi/spi.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 91e2f4f504e8..2eb361e9e44d 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -2427,11 +2427,6 @@ static int of_spi_parse_dt(struct spi_controller *ct= lr, struct spi_device *spi, return 0; } =20 - if (ctlr->num_chipselect > SPI_CS_CNT_MAX) { - dev_err(&ctlr->dev, "No. of CS is more than max. no. of supported CS\n"); - return -EINVAL; - } - /* Device address */ rc =3D of_property_read_variable_u32_array(nc, "reg", &cs[0], 1, SPI_CS_CNT_MAX); @@ -2440,11 +2435,7 @@ static int of_spi_parse_dt(struct spi_controller *ct= lr, struct spi_device *spi, nc, rc); return rc; } - if (rc > ctlr->num_chipselect) { - dev_err(&ctlr->dev, "%pOF has number of CS > ctlr->num_chipselect (%d)\n= ", - nc, rc); - return -EINVAL; - } + if ((of_property_present(nc, "parallel-memories")) && (!(ctlr->flags & SPI_CONTROLLER_MULTI_CS))) { dev_err(&ctlr->dev, "SPI controller doesn't support multi CS\n"); --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4B5A315D33 for ; Mon, 15 Sep 2025 18:37:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961468; cv=none; b=Vp2B6+TMqAw+vC/exmt3aTC5+qKYbtDdr8hqfNeGYMtGjM3GSJKlMhonIgEjF50WHvSePwMgR9xDl62j5PCUI9YB4B2hJl8g8SoahBoiyAX+dW1tCZGdRYcTsGTHqxMXmtH++n+IJStO99R0TNyjHrKq3PgJpwpH33yYjPk+n/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961468; c=relaxed/simple; bh=QAbUqWkSjFj8vv8re1gL9uKqrXQ0aq6hKWDoZOQJvFk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aSUF8PxJRhMx+26ixiM1FSxi5DM/ltnDqy2eNyo8YBU3q2BV4vQ7ifcCiSmv5s4WbYk8iNefk1IArz1wFRr0oxdvP09LelA03DgH1vl9HOgDzo2shpsp4MI+e2wu7ym5u7m/YV9EhLdHWX6FZ+nr3VhIRszOx6aZXNmdm7Hock8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aevUUoVH; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aevUUoVH" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-62f0411577aso4648423a12.1 for ; Mon, 15 Sep 2025 11:37:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961465; x=1758566265; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fmTJoZFxd/UizIvu0+o0FQEf2UBZJpqtSSU3Va1l+q8=; b=aevUUoVHBmIA9VPTJJNym6BAw/UGnToVjolgsCMnPHcho+It9JFjgh/mQpXrINXpaq PgXDDgZlrKcWboxFc3FQSr81VkzZNVcXFnJzZF9H03HMQb4hPlURP/ctHq4yWK9hudWF 8/Hr3y5WVknCbMJrArzKdJe9HjkUvucW0T2nVliCzxVnu/QyzxcD5eMq1OE7C0lITNCJ o6y82XfCj3a75Rg75WA0XYG0SHgogbtYunGzinpsrOobmGw+dqHuAHfRfP87pn5MspQy 5LeUsc/3GDLySWPUaKT9Ql4YSKTNrrMfYszE0U01J/SMl23DmKRvXE3yGee6m1CXQTCl lGBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961465; x=1758566265; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fmTJoZFxd/UizIvu0+o0FQEf2UBZJpqtSSU3Va1l+q8=; b=ouvhX0H8uhrMWG4kHOKd0wqZcPfvcl50+gdR/swW7AT5lFceMw+sD56GIy/jJagZTB eR0yeNIabfaC0B0j2mgBX482RTNgFKFhapmN5h2uvvBfEYg+5Nt82KL5qVs5HUQsMHYO riiIKQs6P9MT97jeD0uSqeG9RQ08++/jELI2ra6b2uvwMi6T8X6NBwFKzj9HnyTT2kBe 31Vr+A2WXJtQgOuPe8o+Nqic3EqwWfQaQ6gkc3iIC/ydZlw2mGxEhGC0Q8pGKqt3Ka0m IheozoB7IhkPOx90npUIuwDvH22thpUUbovEM+LDnb96R8+66Q/5gq5ivJOrvJwykzVK Jzhg== X-Forwarded-Encrypted: i=1; AJvYcCV0Lbdv2GcJaerPK7CjhyP1Zjy3sPbdxpWUHOwON7k0mZIl1VhriHHsaJ+KyPqsf6ZUS6N1q5Y7uV28RlQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyV7t9jnTTGjjc2GA6cNTlOwO//WJJ6fZRSFnaVWV4R1+WRDZNw 6tXdaDhwToeSDvpxrxtEkoQTAAGEwSz+K5aNjnh/tIshvaundf9KY/uA X-Gm-Gg: ASbGnct736u6FRLv7t60H0Z6K0FXLQErKi1YjQy+G2H28LyeWA/WlGQu18lGGLZdkE9 suOJcw6IE4GrmharWcnZxuvdgiSqBJm9mxXQ4wmfH5fVbhmHLGlh3JBz22/g2SWoLyahf3nrQBh kRCzkeNdPozFtvvQ2788z8E9aYHyGipkHs77arxTaIqpeikbxdmX8GFHsL3OTq8o3nARyLIHoGw ku7Qk4xwCqpFpTkGrWg/AK8jUXE6pI1BkqnirGK9KUT1MKdKNk9Y3lI6bsXTbc5WSysLFfZp9zv Dd6YtIJVyTHtUDnxDRaXyLgkFyjWFyr0K7DLV88PhnwoOskEEN/gCECPeF95UBbr4YUQkRYpfsh Ha8pq5WoP7M3Te0tKRsu316zbid8wivO3IgXweJ0boePEnlgCmCUJjjPDqsGzbrQJuV1BdF5mnM mqebY= X-Google-Smtp-Source: AGHT+IGWgnAO5l3hIYL3IEZLVlHRwLHiJ4By/g9hfpqmnTd2frdisat/kWwywXjBeT9mDnq7CCvwzQ== X-Received: by 2002:a17:907:6d29:b0:b04:85f2:d26f with SMTP id a640c23a62f3a-b07c35bd9b4mr1581764966b.25.1757961464914; Mon, 15 Sep 2025 11:37:44 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32dd309sm991919966b.53.2025.09.15.11.37.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:44 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 6/7] spi: reduce device chip select limit again Date: Mon, 15 Sep 2025 20:37:24 +0200 Message-ID: <20250915183725.219473-7-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The spi chipselect limit SPI_CS_CNT_MAX was raised with commit 2f8c7c3715f2 ("spi: Raise limit on number of chip selects") from 4 to 16 to accommodate spi controllers with more than 4 chip selects, and then later to 24 with commit 96893cdd4760 ("spi: Raise limit on number of chip selects to 24"). Now that we removed SPI_CS_CNT_MAX limiting the chip selects of controllers, we can reduce the amount of chip selects per device again to 4, the original value. Signed-off-by: Jonas Gorski --- v1 -> v2: * reworded and rebased onto newest changes include/linux/spi/spi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 49c048277e97..df4842abbc6f 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -21,7 +21,7 @@ #include =20 /* Max no. of CS supported per spi device */ -#define SPI_CS_CNT_MAX 24 +#define SPI_CS_CNT_MAX 4 =20 struct dma_chan; struct software_node; --=20 2.43.0 From nobody Thu Oct 2 14:13:38 2025 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E79331D759 for ; Mon, 15 Sep 2025 18:37:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961470; cv=none; b=R1D9CShcOMHpas5YMGa6qQga0SGlzNtTUFo3a+7/TwVjhYiVSWnRUhVU6agZ23nnkoQWgpRP94eyrR6QnhWtmqJnPK9fk468hmhoM6ur0DKvwqCB5BHEHld2WmPm19ZwWYOLaIjrqEUt5RwVsjG0nfqwPi43ebhUBVkLthTCmyk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757961470; c=relaxed/simple; bh=jbnenaa4O6i14j4ZifdqFvInS3eJxZIQbMEEwSis0yw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OFl+FZU1AL3gZI61/yF3qCaA7fMM/vX1TnUyJUboBERETSaDiSB28iDgFL9QwRM5hE3/PiNK8c86YZasuylZ7s2uEBkv2hKE+vdBvapIZNo737kO3k48jVTu2zVHtTMkOu6Jw9N2L+Lftt1XU6EObajfefmbcouuZlBxW/nr1J8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CwAJZcDy; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CwAJZcDy" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b04ba58a84fso607367866b.2 for ; Mon, 15 Sep 2025 11:37:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757961466; x=1758566266; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5qjOlUlJq2SsNzQS1L4g2nZJSlF7eLB1a0byw2EKzH4=; b=CwAJZcDy83d14bePGKhFeirGFaVzBPdELC/8dwWdncFwmhv0Gy6AZixUgqwyGC4M4T npdZAMnqnaMjnUm+nb77+Sk8MLj+lUpYwtoYjBGgfSXDV91sc0nrrREFLJByEcZ8RgAr W88+t5JjxlCDVNja6fQDwflSfXKqTZ4jhGOv6UFhu9Sh93Vxm3/Qb89+XqskIq9Bcrz/ 3h2EDdcoBIK/YPlWwibFF+/mDS6sT3T192RRv1OxTgPSSzP54w2KrKkYX9yOpfTHFARn gJL1qvmOC5s/4b4+WC8BOsxIH5tlH1tdQm18P1jkReKLRZTZkJqaMfShvEPWcRQbcm2C Qcrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757961466; x=1758566266; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5qjOlUlJq2SsNzQS1L4g2nZJSlF7eLB1a0byw2EKzH4=; b=t/11mRhnSSaZ9doSVVcmNUc692SB6zQKlL3Wy21hw6Ciq/8hVKkm1553naMyEqpugQ 8LpcWPsh9l71XBrlCgnVZUniCcpHn+4p6l/EPDBCc10UDfv9hr7ofRDgnV27xNuHPX6B F5aF4ugZJE+wrpme7Y4kwPFUYdc9qoIvZ7lDZ88XPMSJhhMFdO2mfAq8bm1VXuGSrMtt 4uC7PjjDS06IL/jvkuAMqP/h9UarI4K8x97Axu/jQvkcISg7kwlDpXBWFPOxEQyo0anB V1BOPckgmBqTWovR3IAKwScSLtTI4YqpzXrMKHgBCOomj1Kxvotv/YsvP05rXUlRHJOW wN6Q== X-Forwarded-Encrypted: i=1; AJvYcCXxbum8IjKMe11WcY3CScza0HeZl/AV7rl4+vocIc+/xPTseNQjD99k5MHbUreec6War5Gm/nHtHYMFtyg=@vger.kernel.org X-Gm-Message-State: AOJu0YzfQLRmat2/Vaija2RpLyeIK/v3t4MYlL77jxaFBnyhs1Ycjcjh XJltVmpWMtqErUHDWv6/CUn5Lg6wPscWOt53rpUsybNBcTC+xmbi0ITD X-Gm-Gg: ASbGncv6C/FoREvKiT9VSdQ29pmdIsfUuDn44HPthBwrZhHFKqzJDNif4V8MtIQZide MgrTdNBpzJNJTRhpmkIMjvdQORg+10kZo0na53EEITB77IEq7+RZN6ZIKc7b/xzGXfDPZepCzsk MPbpTkgNdPkLugMGd2xXSlKMnbYm/XmGdhZWObhF2soKBAdFH46EyL4IdALSP+y0ySD55uK6N1h viMhHIdPDQiYPcPFpSgurSQDSd9rnOPl40T+f9hbOboE9sqCMYwoxkOy1EeUXqV7k7wKjCCbVWm 8tzNWOALsz3yOn7YqnhrxnGEn9Cjo6MnlfPxE9lYRcRBt+FWGY0BR65ixCNf2GU2XWSw4G3yNaP MpHRQvXsq6tTVNMCpE1EnOZ3yLlAwSSxV4x0WLYAmHpLh3SGvixbZz9P2JqgPiqXG2qp+Vp0M5d zvR/oR2g9ZwLzMKg== X-Google-Smtp-Source: AGHT+IGOgHgfT9pewzJMSeqVIebTPIEkxQX8DNga8jXtGvUMJHVHxmWcNBP2oUmlSXgcd2MHGYeYbw== X-Received: by 2002:a17:907:1c93:b0:b04:590a:a5b5 with SMTP id a640c23a62f3a-b07c3579f62mr1299448766b.24.1757961465968; Mon, 15 Sep 2025 11:37:45 -0700 (PDT) Received: from localhost (dslb-002-205-018-108.002.205.pools.vodafone-ip.de. [2.205.18.108]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32f1cc4sm1016951266b.76.2025.09.15.11.37.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 11:37:45 -0700 (PDT) From: Jonas Gorski To: Mark Brown , Amit Kumar Mahapatra Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde Subject: [PATCH v2 7/7] spi: rename SPI_CS_CNT_MAX => SPI_DEVICE_CS_CNT_MAX Date: Mon, 15 Sep 2025 20:37:25 +0200 Message-ID: <20250915183725.219473-8-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250915183725.219473-1-jonas.gorski@gmail.com> References: <20250915183725.219473-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rename SPI_CS_CNT_MAX to SPI_DEVICE_CS_CNT_MAX to make it more obvious that this is the max number of CS per device supported, not per controller. Signed-off-by: Jonas Gorski --- v1 -> v2: * no changes drivers/spi/spi-cadence-quadspi.c | 2 +- drivers/spi/spi.c | 14 +++++++------- include/linux/spi/spi.h | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-qu= adspi.c index 9bf823348cd3..d6b2c1051328 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -33,7 +33,7 @@ #define CQSPI_NAME "cadence-qspi" #define CQSPI_MAX_CHIPSELECT 4 =20 -static_assert(CQSPI_MAX_CHIPSELECT <=3D SPI_CS_CNT_MAX); +static_assert(CQSPI_MAX_CHIPSELECT <=3D SPI_DEVICE_CS_CNT_MAX); =20 /* Quirks */ #define CQSPI_NEEDS_WR_DELAY BIT(0) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 2eb361e9e44d..2e0647a06890 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -670,9 +670,9 @@ static int __spi_add_device(struct spi_device *spi) int status, idx; u8 cs; =20 - if (spi->num_chipselect > SPI_CS_CNT_MAX) { + if (spi->num_chipselect > SPI_DEVICE_CS_CNT_MAX) { dev_err(dev, "num_cs %d > max %d\n", spi->num_chipselect, - SPI_CS_CNT_MAX); + SPI_DEVICE_CS_CNT_MAX); return -EOVERFLOW; } =20 @@ -699,7 +699,7 @@ static int __spi_add_device(struct spi_device *spi) } =20 /* Initialize unused logical CS as invalid */ - for (idx =3D spi->num_chipselect; idx < SPI_CS_CNT_MAX; idx++) + for (idx =3D spi->num_chipselect; idx < SPI_DEVICE_CS_CNT_MAX; idx++) spi_set_chipselect(spi, idx, SPI_INVALID_CS); =20 /* Set the bus ID string */ @@ -1076,7 +1076,7 @@ static void spi_set_cs(struct spi_device *spi, bool e= nable, bool force) trace_spi_set_cs(spi, activate); =20 spi->controller->last_cs_index_mask =3D spi->cs_index_mask; - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) { + for (idx =3D 0; idx < SPI_DEVICE_CS_CNT_MAX; idx++) { if (enable && idx < spi->num_chipselect) spi->controller->last_cs[idx] =3D spi_get_chipselect(spi, 0); else @@ -2354,7 +2354,7 @@ static void of_spi_parse_dt_cs_delay(struct device_no= de *nc, static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device = *spi, struct device_node *nc) { - u32 value, cs[SPI_CS_CNT_MAX]; + u32 value, cs[SPI_DEVICE_CS_CNT_MAX]; int rc, idx; =20 /* Mode (clock phase/polarity/etc.) */ @@ -2429,7 +2429,7 @@ static int of_spi_parse_dt(struct spi_controller *ctl= r, struct spi_device *spi, =20 /* Device address */ rc =3D of_property_read_variable_u32_array(nc, "reg", &cs[0], 1, - SPI_CS_CNT_MAX); + SPI_DEVICE_CS_CNT_MAX); if (rc < 0) { dev_err(&ctlr->dev, "%pOF has no valid 'reg' property (%d)\n", nc, rc); @@ -3313,7 +3313,7 @@ int spi_register_controller(struct spi_controller *ct= lr) } =20 /* Setting last_cs to SPI_INVALID_CS means no chip selected */ - for (idx =3D 0; idx < SPI_CS_CNT_MAX; idx++) + for (idx =3D 0; idx < SPI_DEVICE_CS_CNT_MAX; idx++) ctlr->last_cs[idx] =3D SPI_INVALID_CS; =20 status =3D device_add(&ctlr->dev); diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index df4842abbc6f..cb2c2df31089 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -21,7 +21,7 @@ #include =20 /* Max no. of CS supported per spi device */ -#define SPI_CS_CNT_MAX 4 +#define SPI_DEVICE_CS_CNT_MAX 4 =20 struct dma_chan; struct software_node; @@ -229,7 +229,7 @@ struct spi_device { struct spi_delay cs_hold; struct spi_delay cs_inactive; =20 - u8 chip_select[SPI_CS_CNT_MAX]; + u8 chip_select[SPI_DEVICE_CS_CNT_MAX]; u8 num_chipselect; =20 /* @@ -238,9 +238,9 @@ struct spi_device { * multiple chip selects & memories are connected in parallel * then more than one bit need to be set in cs_index_mask. */ - u32 cs_index_mask : SPI_CS_CNT_MAX; + u32 cs_index_mask : SPI_DEVICE_CS_CNT_MAX; =20 - struct gpio_desc *cs_gpiod[SPI_CS_CNT_MAX]; /* Chip select gpio desc */ + struct gpio_desc *cs_gpiod[SPI_DEVICE_CS_CNT_MAX]; /* Chip select gpio de= sc */ =20 /* * Likely need more hooks for more protocol options affecting how @@ -721,8 +721,8 @@ struct spi_controller { bool auto_runtime_pm; bool fallback; bool last_cs_mode_high; - s8 last_cs[SPI_CS_CNT_MAX]; - u32 last_cs_index_mask : SPI_CS_CNT_MAX; + s8 last_cs[SPI_DEVICE_CS_CNT_MAX]; + u32 last_cs_index_mask : SPI_DEVICE_CS_CNT_MAX; struct completion xfer_completion; size_t max_dma_len; =20 --=20 2.43.0