From nobody Wed Oct 1 22:31:22 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CDC028BA83 for ; Fri, 26 Sep 2025 13:30:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893437; cv=none; b=LAP5++H1QoYOvQVE52itxkf0YbemtBczY2i5yAZ1zvRCZV1Wi6Je9iIIOLiIUYJVnuXPrPahtCmYDSwH0e+GTPajFVUSYcsYDHW0T5uns+a60HauCPl7lPY2eR3G8jTMpgMbBGR/a+Kr1rPcx4FgVF5y8uJiKxrUJRMdWAshO3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893437; c=relaxed/simple; bh=9tMx3D8608utTcEpPMnkdtIuK+d8YCm/4QGWcLPlEvU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mVMcWdw1GhQD9/NnJyAAGYdkBDhz30HF6GqgnrkNmuj283TwQIKLj9vFWCHM/VFuwnwngV3uCVA6E/hYjptWtnCJCWqKicY8IWMqpq/+I7Oz/KwXSTinyhsAhUYpl084/5DUkcdQ8hVv/7k9fNHheUDywnSN8Ky1JpNlayZ679E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dy5OA5S5; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dy5OA5S5" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58Q8vZ4u018152 for ; Fri, 26 Sep 2025 13:30:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=52JKwdjjF6T 43Z0oK2sV6asg8JQDNCAzfJwR0DaXYts=; b=dy5OA5S5m4cdg8N7uMETnSuDF/p UIHx5SPVG7wfSCzYB7qDX4NGGy3Bt9Foyv5ls1YhMQEoUTefpgYfWKUzI8KrNlRv /zCUbUychw0qfqTlyN6xaaHE9EfDtsx5aR22TBIVKom26DCTn/aEF7LfSqTyn9Ox 83EORVcQFkJYSVfMn07VLJcajgusjaJ+BSblsJPBkud5lPfwfrFeyKZCk41D3TTj b9uOFhMoAp3MLBG3NN3OXlUFmFawOTu4uI8qgpFMQtYinu3bhPstsi5r/xpQDgJB k+/lf41PTiGfMAwTSY8AUvyRp1lQEBZ23SxPUSjtpTTsb9yVVRbKD29+R6g== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49db0tb0em-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:30:34 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b557abaad02so3117226a12.3 for ; Fri, 26 Sep 2025 06:30:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893433; x=1759498233; 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=52JKwdjjF6T43Z0oK2sV6asg8JQDNCAzfJwR0DaXYts=; b=pPsR/882Qsgr8HV9th4IJDPnVV9uBjPZIbGPPQW7g6/ulFhx2j8YvZYLVTO1WhD9V9 SxgO0xT7DBn7aa+k2XTi6ulL++CJnrwSFVrimVxtqUorX8ZLa04fneb6DjmVUlZuZWb4 2IWlYw38LERvUQWwL9lBxCqiSWsiV5M/LA5J7Xjbx+5HrWzd8x7sv31DGn8x+33VLWXC lTCejpnzOgZMC6NTg92aNuhUM+uKk2NvfSNk3zxmtxeEMFbxpqxD9gb6wSuwBWmqT5Qy I3DQP4t2tLDCtwzjBM0rUywQ+jmA6/U3K1M6scnowi7FVSvmQPPeXQGQxjUVMwi6Dy9c 4RtA== X-Forwarded-Encrypted: i=1; AJvYcCUEHeUMgjx0ig6uKT2iS+wTiZyzeMJS6F8Fv5dKHEAW8TF+O/eCGbOq6c/KRCCVLf++XeWSeGqZVbJnH24=@vger.kernel.org X-Gm-Message-State: AOJu0YxrPwo3V0JSIycllMCw+e13uw4GNYb6vc1n2Z/+4Hj7ZelbaoHY 9o0jSDIz3F90vdNXQ4F3CD4l+ItBWaWOuUBeLtPv028xOvqyzTvmkDi8c4chKGbqQ+/W4t5CMij LJZEtANy14SJdo8fSgMFNDk//pKsAX5w9qzrVGfFLd89TuM4AyKhZv11se6QV0NfUAVs= X-Gm-Gg: ASbGncvEapILlM/y7RCGb2Xe8QfXPBM3v3icVLVgD+r8hzqA3JWjdECrapvWsIMoGOS BMaIqXZ5zA0Pa3AR1ge89uQEr7lg09JVaBSOTCq0E2sfOYs/Z6+Cm2KLdgyccmf7mYpYGysPA/Q fTPVZOLD6Q5DKWmAHq6IokLBekJr7Ssq0rlmgnRvauJ68VFhhGdmZPsepD6BYkwq3j156uHzyyC rROJeXF61QPz47r9/s2aVXQ6tNCRQuvKcoMje+DzW6gmi6PjzLaqqAtjB4Tj5YS1+hda6Hn7Y9X dosYCMvgmJ5lESqR3qTdyFrUTJx3uCB6cSY3LZ472ZGaOQ15EvYF+JiQOOn2hFiWfHHsC5hM8Wh 3 X-Received: by 2002:a05:6a20:6a11:b0:2b8:5f2d:933d with SMTP id adf61e73a8af0-2e7c44125d5mr9295215637.12.1758893433323; Fri, 26 Sep 2025 06:30:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE9vJ7dSnobiw0gNzFaPZhNDl0sU+RMma/SjzJVzdYzcFJ5zLjBs4955Ly/ZUBsj/+Bq19zoA== X-Received: by 2002:a05:6a20:6a11:b0:2b8:5f2d:933d with SMTP id adf61e73a8af0-2e7c44125d5mr9295173637.12.1758893432713; Fri, 26 Sep 2025 06:30:32 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:30:32 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Viken Dadhaniya Subject: [PATCH v5 1/6] can: mcp251xfd: move chip sleep mode into runtime pm Date: Fri, 26 Sep 2025 19:00:13 +0530 Message-Id: <20250926133018.3071446-2-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Proofpoint-ORIG-GUID: 38gyDVo4B5-19dyqhizjPpyiKaKLuT5O X-Proofpoint-GUID: 38gyDVo4B5-19dyqhizjPpyiKaKLuT5O X-Authority-Analysis: v=2.4 cv=Jvz8bc4C c=1 sm=1 tr=0 ts=68d6957a cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=EUspDBNiAAAA:8 a=6KGlMJUpO0AhJANn3KQA:9 a=x9snwWr2DeNwDh03kgHS:22 a=uSNRK0Bqq4PXrUp6LDpb:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI1MDE3MSBTYWx0ZWRfX/3X56sf1tgMi 0AX9dOOqk67JbQk9JjVWDfpVlwzGSv9a8dPZujwopzvNKi0UoFgk0tpJozrdV+TXfWeF8v2EqdB hu73a1TRjDXFJwd2lT17C8l7AAAS4RHzf0LOIKL82p6KEtdzbSEH6zN8YdeZltzO5DkDH/To5iV GmYRovLZBx7oCFqc0SmbfrAwPXkmACPhc5PJtBwrowJMy+s5415qymT1CsmTe++w+aZ3GP+E3Ci qYhiYW1ToEmCtWtF940itydpz6gbdgQnUJkakeO6wQ9/JJnuimLjPRFpMQH4+4ADZKzEjW5A/Qe ayVyyRhAA6oU9uFdFUbx7yD/lAQBd9g9nfBEZjSpFAHReWDtq2evBCbFKVywxUDoncPyaM9kSRS gXwM4ftDQoGUSVM4iAnAQo7M9+kxjw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509250171 Content-Type: text/plain; charset="utf-8" From: Marc Kleine-Budde This is a preparation patch to add GPIO support. Up to now, the Vdd regulator and the clocks have been managed by Runtime-PM (on systems without CONFIG_PM these remain permanently switched on). During the mcp251xfd_open() callback the mcp251xfd is powered, soft-reset and configured. In mcp251xfd_stop() the chip is shut down again. To support the on-chip GPIOs, the chip must be supplied with power while GPIOs are being requested, even if the networking interface is down. To support this, move the functions mcp251xfd_chip_softreset() and mcp251xfd_chip_clock_init() from mcp251xfd_chip_start() to mcp251xfd_runtime_resume(). Instead of setting the controller to sleep mode in mcp251xfd_chip_stop(), bring it into configuration mode. This way it doesn't take part in bus activity and doesn't enter sleep mode. Signed-off-by: Marc Kleine-Budde Signed-off-by: Gregor Herburger Tested-by: Viken Dadhaniya Signed-off-by: Viken Dadhaniya --- .../net/can/spi/mcp251xfd/mcp251xfd-core.c | 91 ++++++++++++------- 1 file changed, 57 insertions(+), 34 deletions(-) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/c= an/spi/mcp251xfd/mcp251xfd-core.c index 7450ea42c1ea..f9eabb1810cf 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -767,21 +767,13 @@ static void mcp251xfd_chip_stop(struct mcp251xfd_priv= *priv, mcp251xfd_chip_interrupts_disable(priv); mcp251xfd_chip_rx_int_disable(priv); mcp251xfd_timestamp_stop(priv); - mcp251xfd_chip_sleep(priv); + mcp251xfd_chip_set_mode(priv, MCP251XFD_REG_CON_MODE_CONFIG); } =20 static int mcp251xfd_chip_start(struct mcp251xfd_priv *priv) { int err; =20 - err =3D mcp251xfd_chip_softreset(priv); - if (err) - goto out_chip_stop; - - err =3D mcp251xfd_chip_clock_init(priv); - if (err) - goto out_chip_stop; - err =3D mcp251xfd_chip_timestamp_init(priv); if (err) goto out_chip_stop; @@ -1625,8 +1617,11 @@ static int mcp251xfd_open(struct net_device *ndev) return err; =20 err =3D pm_runtime_resume_and_get(ndev->dev.parent); - if (err) + if (err) { + if (err =3D=3D -ETIMEDOUT || err =3D=3D -ENODEV) + pm_runtime_set_suspended(ndev->dev.parent); goto out_close_candev; + } =20 err =3D mcp251xfd_ring_alloc(priv); if (err) @@ -1907,53 +1902,53 @@ static int mcp251xfd_register(struct mcp251xfd_priv= *priv) struct net_device *ndev =3D priv->ndev; int err; =20 + mcp251xfd_register_quirks(priv); + err =3D mcp251xfd_clks_and_vdd_enable(priv); if (err) return err; =20 - pm_runtime_get_noresume(ndev->dev.parent); - err =3D pm_runtime_set_active(ndev->dev.parent); - if (err) - goto out_runtime_put_noidle; - pm_runtime_enable(ndev->dev.parent); - - mcp251xfd_register_quirks(priv); - err =3D mcp251xfd_chip_softreset(priv); if (err =3D=3D -ENODEV) - goto out_runtime_disable; + goto out_clks_and_vdd_disable; if (err) goto out_chip_sleep; =20 err =3D mcp251xfd_chip_clock_init(priv); if (err =3D=3D -ENODEV) - goto out_runtime_disable; + goto out_clks_and_vdd_disable; if (err) goto out_chip_sleep; =20 + pm_runtime_get_noresume(ndev->dev.parent); + err =3D pm_runtime_set_active(ndev->dev.parent); + if (err) + goto out_runtime_put_noidle; + pm_runtime_enable(ndev->dev.parent); + err =3D mcp251xfd_register_chip_detect(priv); if (err) - goto out_chip_sleep; + goto out_runtime_disable; =20 err =3D mcp251xfd_register_check_rx_int(priv); if (err) - goto out_chip_sleep; + goto out_runtime_disable; =20 mcp251xfd_ethtool_init(priv); =20 err =3D register_candev(ndev); if (err) - goto out_chip_sleep; + goto out_runtime_disable; =20 err =3D mcp251xfd_register_done(priv); if (err) goto out_unregister_candev; =20 - /* Put controller into sleep mode and let pm_runtime_put() - * disable the clocks and vdd. If CONFIG_PM is not enabled, - * the clocks and vdd will stay powered. + /* Put controller into Config mode and let pm_runtime_put() + * put in sleep mode, disable the clocks and vdd. If CONFIG_PM + * is not enabled, the clocks and vdd will stay powered. */ - err =3D mcp251xfd_chip_sleep(priv); + err =3D mcp251xfd_chip_set_mode(priv, MCP251XFD_REG_CON_MODE_CONFIG); if (err) goto out_unregister_candev; =20 @@ -1963,12 +1958,13 @@ static int mcp251xfd_register(struct mcp251xfd_priv= *priv) =20 out_unregister_candev: unregister_candev(ndev); -out_chip_sleep: - mcp251xfd_chip_sleep(priv); out_runtime_disable: pm_runtime_disable(ndev->dev.parent); out_runtime_put_noidle: pm_runtime_put_noidle(ndev->dev.parent); +out_chip_sleep: + mcp251xfd_chip_sleep(priv); +out_clks_and_vdd_disable: mcp251xfd_clks_and_vdd_disable(priv); =20 return err; @@ -1980,10 +1976,12 @@ static inline void mcp251xfd_unregister(struct mcp2= 51xfd_priv *priv) =20 unregister_candev(ndev); =20 - if (pm_runtime_enabled(ndev->dev.parent)) + if (pm_runtime_enabled(ndev->dev.parent)) { pm_runtime_disable(ndev->dev.parent); - else + } else { + mcp251xfd_chip_sleep(priv); mcp251xfd_clks_and_vdd_disable(priv); + } } =20 static const struct of_device_id mcp251xfd_of_match[] =3D { @@ -2206,16 +2204,41 @@ static void mcp251xfd_remove(struct spi_device *spi) =20 static int __maybe_unused mcp251xfd_runtime_suspend(struct device *device) { - const struct mcp251xfd_priv *priv =3D dev_get_drvdata(device); + struct mcp251xfd_priv *priv =3D dev_get_drvdata(device); =20 + mcp251xfd_chip_sleep(priv); return mcp251xfd_clks_and_vdd_disable(priv); } =20 static int __maybe_unused mcp251xfd_runtime_resume(struct device *device) { - const struct mcp251xfd_priv *priv =3D dev_get_drvdata(device); + struct mcp251xfd_priv *priv =3D dev_get_drvdata(device); + int err; + + err =3D mcp251xfd_clks_and_vdd_enable(priv); + if (err) + return err; =20 - return mcp251xfd_clks_and_vdd_enable(priv); + err =3D mcp251xfd_chip_softreset(priv); + if (err =3D=3D -ENODEV) + goto out_clks_and_vdd_disable; + if (err) + goto out_chip_sleep; + + err =3D mcp251xfd_chip_clock_init(priv); + if (err =3D=3D -ENODEV) + goto out_clks_and_vdd_disable; + if (err) + goto out_chip_sleep; + + return 0; + +out_chip_sleep: + mcp251xfd_chip_sleep(priv); +out_clks_and_vdd_disable: + mcp251xfd_clks_and_vdd_disable(priv); + + return err; } =20 static const struct dev_pm_ops mcp251xfd_pm_ops =3D { --=20 2.34.1 From nobody Wed Oct 1 22:31:22 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B97612F83A3 for ; Fri, 26 Sep 2025 13:30:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893442; cv=none; b=rKtnjOk09RwzBwCnKkvfYfZmAGUjBg9AEQ3G4sO3iXCP8iKMuDwDcE5Xn+qn4DBpjMzLhLIp2ecwYRNdlOqXkTlBkeRPVk+YnjlhDcT8cZWqOYDx3LECyVveEhH6DclR0v7y/c2QPxYwV8eItXkd8O+Qh34tHhZTYpF5mr15kNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893442; c=relaxed/simple; bh=+IOLF0XPvUULiaKZhdl3sSn55zuFmc8DaivaubnewwY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UJaPaROrx5br1Nm0N/T6UN/GbF/MaA0aU3lRuA7AvgwcmnoQM8JRYm0GVASE7rvibzNKDKjuhg01yr1hmLdwlh0zhPC/daHzLA7METRtAOCQDBRGGKLunNl6nWmRItWP7MQIfDdjuznE1OXrXW7LeG40yMKV4wgQFkD0wKHytVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=m/gCVSxJ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="m/gCVSxJ" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58Q8vcZg020699 for ; Fri, 26 Sep 2025 13:30:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=QmS6oCHS+MH N39AhLGTMSeGEuEf2T3uv/XWwxaYqPAw=; b=m/gCVSxJp/vkvDWz9f6l6NsLaBp w3+bkwbPE1iXtmIXIOb/CyKcHbmhXFdZ+FtlRDT75wFX2YdNzkXRImMlhIBA2/BX XvtWn8OBLbpoyah2nsrVCCSNjdomXWYQwol2ObeHLKnGkJM8q1E7wcKFpStIbVUj zWPamctQjQcA16xWuGECMvu9VbDCbnwo0iveauX2HAoypNmRK/+cnbEaT39uGxz3 5M86cCAH9FcBC9RBjqUmOcAr7gXzrUfc9c/QXzgCT3EsvwB2eY+rkusILFoHlZcs eF0gGRM8PuIV0o7uij7XO/VsensQAFLwCm5EM0VcU+NyhYnLV4gRhGX7d3w== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49db0qu0ek-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:30:39 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77f68c697d3so1697617b3a.1 for ; Fri, 26 Sep 2025 06:30:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893439; x=1759498239; 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=QmS6oCHS+MHN39AhLGTMSeGEuEf2T3uv/XWwxaYqPAw=; b=pYxjRVaBXsiRXkaZk1CT2jNmu+jCJ4PuR4Kq8WgvN9h8yCvJ/YaTu18EeJZeMq0TGM EJkOFsXve0DDa2dTFtuekNCHQZss2aYiphi3zUmChr6f0azEKL4dkKHWXJBxdoS15XVM wIyHmcr9fYMZhlLh53OhuUQ7QPi5C3VzbIiN1t0u+JGF3rhGBnieFNgOyBHcldsjsPUa h2OfojKMde9w9BJvcAfFwWSk6kpeTZQTKa+ty6l/BpvysMzvklBpn7m8XxBXR33x2AB8 IhRDnPzqueNyZSlXcTHildeqBij3d5OCpwbf2z5o9Kgg62T7oWftHFL6VPb9VRolsjta ftcQ== X-Forwarded-Encrypted: i=1; AJvYcCUxyUs2TYoqUDTkbuGT+aGQ1wwFo6oG+VcouUkl0+jLCODK9AA0kS0+Qp4JDwk6T2xfg049nVoIx+HNe74=@vger.kernel.org X-Gm-Message-State: AOJu0Yzk+cFDV5uiAiloK4UmN66KhVZGcXkKsf5/LgtZh2QKbfJ4Ww3z X9sa4Z3ou6s/wvPRIJHli+vZXky5demtqaaZDdK2VbmiwHpPMbGb//NxBbqo0KIVKUg9SVGPm/T LD7fx3Tq+abrZ5+OeRrO959JPEaJeH7SXMtlhBURUSxsmILmOwFTbio2W2Xb22qSgYYs= X-Gm-Gg: ASbGncsZ/MIHrE4IoCb2qZ/C4T/zO4m/wunzSwLmogjGJDhoUut1GHjrJiZN1MKOoRG Q1Ck8OrTQawcjnJBpxES6Dn2V2lMtD0ekh3uFaYgJ4r1Wcrv9edW5bO9ZvsG0LNAWQX0QhL8ecj mROxTTYtES7ri3eUYvoM+x0xqFzTdWAu2QxkiH4mOZ5CCeCLEz8cWjh+HUZ3BFj7pe4OwmjKvYC f4vTXjAtyPQe7dLJbJ+5QsMrwKFjGXfCUHZA+QPw80i6PbI20Eho9uj5HV7dZhdIlbI9Vjrgj4O vr0DmxrnY112rWNi8VCH5/tOwfLjnJyCh8ziJ0hZbxsvOIZXXnUAjdOX5iIfITU/C6VFAz770N3 n X-Received: by 2002:a05:6a00:2d88:b0:781:21db:4e16 with SMTP id d2e1a72fcca58-78121db4f59mr624970b3a.4.1758893438924; Fri, 26 Sep 2025 06:30:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHsielPPomP21N2Fqm4F4onXqE5w84lbLbYWd6SPPbSs5v9gEnLj3E/5yVmC9Upkyo6oZ+pXg== X-Received: by 2002:a05:6a00:2d88:b0:781:21db:4e16 with SMTP id d2e1a72fcca58-78121db4f59mr624916b3a.4.1758893438284; Fri, 26 Sep 2025 06:30:38 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:30:37 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Viken Dadhaniya Subject: [PATCH v5 2/6] can: mcp251xfd: utilize gather_write function for all non-CRC writes Date: Fri, 26 Sep 2025 19:00:14 +0530 Message-Id: <20250926133018.3071446-3-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Proofpoint-GUID: kvuakqGGWjGcXz1RmuivsXx1xGhUuDNc X-Proofpoint-ORIG-GUID: kvuakqGGWjGcXz1RmuivsXx1xGhUuDNc X-Authority-Analysis: v=2.4 cv=api/yCZV c=1 sm=1 tr=0 ts=68d6957f cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=EUspDBNiAAAA:8 a=lCqp9tVl3zhOgjhhuWQA:9 a=IoOABgeZipijB_acs4fv:22 a=uSNRK0Bqq4PXrUp6LDpb:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI1MDE3MSBTYWx0ZWRfXyTUKlH+lq7jT ToKG7iyRmrMUO0tDTZw1/PH0PfgNEFtP8XnrDXp6wSvbkxQbB6nbc5MhLcnkpd+5QxDCFEX7ksR sfkhfwQ96NctaYj2ayseCFHCurDz76TTHYPEc79jmclhokk5pJbw/J/pcxofSq8FD54u7Yrt2kt jWnmwQEOrTMMZbBtO4EFVaUj7PQdvEZW3YkbbGppODRYcFLk5YBmk77VcBZgtUyIXWdi6YiNzBy 7AoSrJZkYvoOU+7NK/o1qR1OihwDZB0nmQinPuLrWcMlnIK5zilHQ8QiVYwH6eXmrkL9p9jVZhf ua3HKv4dam2em4fymQYVlKBJy4+cs8JtQs5Tm+JHiDPUV0N29SbrByqyO0hXOjO7BS0fvkuUnV7 TkM7Dc/6oeHfyVIfD86cl3ZPnGT6GQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 adultscore=0 spamscore=0 priorityscore=1501 bulkscore=0 phishscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509250171 Content-Type: text/plain; charset="utf-8" From: Gregor Herburger This is a preparation patch to add errata workaround for non crc writes. Currently for non-crc writes to the chip can go through the .gather_write, .write or the reg_update_bits callback. To allow the addition of the errata fix at a single location use mcp251xfd_regmap_nocrc_gather_write for all non-CRC write instructions, similar to the crc regmap. Signed-off-by: Gregor Herburger Tested-by: Viken Dadhaniya Signed-off-by: Viken Dadhaniya --- .../net/can/spi/mcp251xfd/mcp251xfd-regmap.c | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c b/drivers/net= /can/spi/mcp251xfd/mcp251xfd-regmap.c index 8c5be8d1c519..e61cbd209955 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c @@ -12,14 +12,6 @@ =20 static const struct regmap_config mcp251xfd_regmap_crc; =20 -static int -mcp251xfd_regmap_nocrc_write(void *context, const void *data, size_t count) -{ - struct spi_device *spi =3D context; - - return spi_write(spi, data, count); -} - static int mcp251xfd_regmap_nocrc_gather_write(void *context, const void *reg, size_t reg_len, @@ -47,6 +39,15 @@ mcp251xfd_regmap_nocrc_gather_write(void *context, return spi_sync_transfer(spi, xfer, ARRAY_SIZE(xfer)); } =20 +static int +mcp251xfd_regmap_nocrc_write(void *context, const void *data, size_t count) +{ + const size_t data_offset =3D sizeof(__be16); + + return mcp251xfd_regmap_nocrc_gather_write(context, data, data_offset, + data + data_offset, count - data_offset); +} + static inline bool mcp251xfd_update_bits_read_reg(const struct mcp251xfd_priv *priv, unsigned int reg) @@ -64,6 +65,7 @@ mcp251xfd_update_bits_read_reg(const struct mcp251xfd_pri= v *priv, case MCP251XFD_REG_CON: case MCP251XFD_REG_OSC: case MCP251XFD_REG_ECCCON: + case MCP251XFD_REG_IOCON: return true; default: mcp251xfd_for_each_rx_ring(priv, ring, n) { @@ -139,10 +141,9 @@ mcp251xfd_regmap_nocrc_update_bits(void *context, unsi= gned int reg, tmp_le32 =3D orig_le32 & ~mask_le32; tmp_le32 |=3D val_le32 & mask_le32; =20 - mcp251xfd_spi_cmd_write_nocrc(&buf_tx->cmd, reg + first_byte); - memcpy(buf_tx->data, &tmp_le32, len); - - return spi_write(spi, buf_tx, sizeof(buf_tx->cmd) + len); + reg +=3D first_byte; + mcp251xfd_spi_cmd_write_nocrc(&buf_tx->cmd, reg); + return mcp251xfd_regmap_nocrc_gather_write(context, &buf_tx->cmd, 2, &tmp= _le32, len); } =20 static int --=20 2.34.1 From nobody Wed Oct 1 22:31:22 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3ECA42F90D4 for ; Fri, 26 Sep 2025 13:30:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893447; cv=none; b=nfpe0P7ZUHfrq8Y/XjVjr+0OvAHSaAOMgdzhOGiMnnNfZ9Jd1P32+H98gAT7tmz5UmzRbJdAvdpbtgVpq0mqG9/Pvv2CJNCXiYQtFyxfdSoWv19xBt1sS9nefPp6z0sJvBRXnGdlkBaWQ/VWWKakTYC1pvGagotv264p1NjLrBM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893447; c=relaxed/simple; bh=qKSG5ADsXNKPjV3nlzlHBiIYrmbuMHtoYqrl7DKLOKU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HdTwxJJQg4cNDwi+XqLo3Zs0VxAHJ108QXoRFjcm//hg/piuRBmdOLeS88A9Ojjr7pEKUqLUuYg4fpduEBacf3cGrBqRMM5yx1jweSV8MrzjSPPOiyHCs6pYR0V7W1KgCafDVZU2Pt9ec2lvkfQEPn7w0f1ZYQOSNLfJjU1D98A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MKGJL4ZY; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MKGJL4ZY" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58Q8vqda029048 for ; Fri, 26 Sep 2025 13:30:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=o0FOP3SERm0 lzOQVjmAaIk/cr88mu/vSl0/yi1Gxue0=; b=MKGJL4ZY9DYmg2Rq+RX6U6jG4qh n5E+DFPnGRCw/6nCRkZik+aZpMICxOatsep2wUpLunfbj7OjW+sclZCKrN2x/8QS cArenclZSmBfgUO0p+fqaBHZkBaqOTjR1XpcmBgaHKgtI4opZyj+wWL1zZif42cI zSDxcjzFA/B9NhZo57aTdy7+yB5cOHaHVPrrIzuMCXh6266MqEiUxhemB6ySZcMm JeC3spIQ0RjTiWG+qvxyTWtvJiWjhfPY1yuBXd1LDYK1F3VU607ME0o8JeN3iXTX hEPlj2MBAPDmKqH5ZEXdjiH26HBiQJd0Xing0OCpndxksRKXNub+Om+kW6g== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49db0q2y5x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:30:45 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-78117b8e49fso1051671b3a.3 for ; Fri, 26 Sep 2025 06:30:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893444; x=1759498244; 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=o0FOP3SERm0lzOQVjmAaIk/cr88mu/vSl0/yi1Gxue0=; b=TkrUIfzmnpBskQWNYknFwMi15TF/e9ntWeXD9X1FGpvdO1LPCPVV5ZotKOy8oAhcEr 0nbqGsOoQtZMAaapdZIdNwx16D2phjE+Q6eaUTeXTh9WdItFNHvJMn9+oWFPj08acZOe 3oouKkft1sHRPwEEPfABTW6qyBpWm1wbmuMCYGS42tJv/H3Ic/EE5snkBgM1kESbRrMz k2/VPQnTg62s5dayjGfTjTh36M3L7bxgGHllhRW3rlax3cI+WqjcDTyKajGSRLj9UPi3 A4DciGs9PBQnaAx7mM3tXhKlXvdAmgmWuUVo2xRtYpqA2dg6cA8sw3gNJGhFs4qCpcvn x+yw== X-Forwarded-Encrypted: i=1; AJvYcCUYBk9vLAcfTaV80bSSXvTGrrwOO7tAZeGTPkjovqyoXTI+WR+tYf1MRf0DrXinnEtBqqoniV8+cE90990=@vger.kernel.org X-Gm-Message-State: AOJu0YyALZRjJWWBOncFWXsrArtbGKe2fc9ebi7ytP1s6d38lilTVoSr bygwVGnNFywa2LjMjtBQL29u9f81MV+/w0AaMuqPz/Db6IiWqb63zsv58y9t/hGTSshUOj4wd7y FF5BZDmluCh2MqJsJfYNRBFRuQUtm7NnOm34gCo/A9YVlUG/Rurm9CyI/m6krs8mayzI= X-Gm-Gg: ASbGncsAiJeokXKoQRrB0ojraIymWSavqBXh3lcpqHAiyl3akTEdqQUPSQU7dKfHsRG hrR4Yax20Fsyd6GgUX1LzHJHDCBRmZKUY+4WpKK7UZzjOOhAsz1mf/0fY+TgdKR1AAiQhwJ5J5l Neml68Lwag/DZ1cVU2+InSAoAIwcY+Ze4rKVBNU08cbEzcwqEONmW0OrvXMN9z9ECe++G7Gn2hv en0EmVLWAox0eT2kEVUjkTYnmJhd5MaQWPmiK1z+jUEfWlRODhe5/6Um6PhJ+zTNZ9H8QeQ8Jrv oabGgEa0YJcbFfzyJNiU42XrFeiRyzLqFfAO+DnIzfbrFnUsdbWev1iy0kDdWps6c6W24qBhuJQ V X-Received: by 2002:a05:6a21:7e82:b0:2ef:4635:4fff with SMTP id adf61e73a8af0-2ef46a02466mr4953089637.26.1758893444377; Fri, 26 Sep 2025 06:30:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHcuC+aAxAqTlMVdk/vbhfZoaMeOoObmULAxinRGBkkAoWtjCKdTkyKJEMeKLUyDVjwVByb6g== X-Received: by 2002:a05:6a21:7e82:b0:2ef:4635:4fff with SMTP id adf61e73a8af0-2ef46a02466mr4953037637.26.1758893443806; Fri, 26 Sep 2025 06:30:43 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:30:43 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Viken Dadhaniya Subject: [PATCH v5 3/6] can: mcp251xfd: add workaround for errata 5 Date: Fri, 26 Sep 2025 19:00:15 +0530 Message-Id: <20250926133018.3071446-4-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI1MDE3MSBTYWx0ZWRfX7uM73PnqRCfW J/cs7XOxSBl9j8iBAmPTsGwC0zaWBA+mz+1E1n5khkIgRZ32mQPWXpgJR42L7F1SPfMFvCkLMsk K2Qf5UrFjp/YB2k6Gz9ZGvFLOU5QoAFDPYIKvGNQ5clO1So9XFV9SII7ffz/+5IC6D6dqeRYQvk 9t6BRYZlVhjBLi2s2LZUUalHTvsBjGyMzH++WKVWiCsoSfjxOabGYY+hwaQ+HzFy/aeFdSXVa5q eIpuefo8dhFoSvfNK0J9562HEty2rqqjApDUwEzUVFBOdVfEB4Qy7yuZZNd056R5FJCL6n69VDT qW2PtFUao/SAgwkDOwnVDxScVR6VkWmc9IebUS9X2/ueZO/8a11uHeTpGABDkwchtdn3g9op07G WCRtfNDS5DEyq4k2RWo8hzdhikUTag== X-Proofpoint-GUID: snaKBeUT10tWVz5CrbSyfAXYhNv1VfM1 X-Proofpoint-ORIG-GUID: snaKBeUT10tWVz5CrbSyfAXYhNv1VfM1 X-Authority-Analysis: v=2.4 cv=JsX8bc4C c=1 sm=1 tr=0 ts=68d69585 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=EUspDBNiAAAA:8 a=-2jKClcn1S1UO4fOL_0A:9 a=2VI0MkxyNR6bbpdq8BZq:22 a=uSNRK0Bqq4PXrUp6LDpb:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 priorityscore=1501 spamscore=0 malwarescore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509250171 Content-Type: text/plain; charset="utf-8" From: Gregor Herburger According to Errata DS80000789E 5 writing IOCON register using one SPI write command clears LAT0/LAT1. Errata Fix/Work Around suggests to write registers with single byte write instructions. However, it seems that every write to the second byte causes the overwrite of LAT0/LAT1. Never write byte 2 of IOCON register to avoid clearing of LAT0/LAT1. Signed-off-by: Gregor Herburger Tested-by: Viken Dadhaniya Signed-off-by: Viken Dadhaniya --- .../net/can/spi/mcp251xfd/mcp251xfd-regmap.c | 89 +++++++++++++++++-- 1 file changed, 83 insertions(+), 6 deletions(-) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c b/drivers/net= /can/spi/mcp251xfd/mcp251xfd-regmap.c index e61cbd209955..70d5ff0ae7ac 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c @@ -13,9 +13,9 @@ static const struct regmap_config mcp251xfd_regmap_crc; =20 static int -mcp251xfd_regmap_nocrc_gather_write(void *context, - const void *reg, size_t reg_len, - const void *val, size_t val_len) +_mcp251xfd_regmap_nocrc_gather_write(void *context, + const void *reg, size_t reg_len, + const void *val, size_t val_len) { struct spi_device *spi =3D context; struct mcp251xfd_priv *priv =3D spi_get_drvdata(spi); @@ -39,6 +39,45 @@ mcp251xfd_regmap_nocrc_gather_write(void *context, return spi_sync_transfer(spi, xfer, ARRAY_SIZE(xfer)); } =20 +static int +mcp251xfd_regmap_nocrc_gather_write(void *context, + const void *reg_p, size_t reg_len, + const void *val, size_t val_len) +{ + const u16 byte_exclude =3D MCP251XFD_REG_IOCON + + mcp251xfd_first_byte_set(MCP251XFD_REG_IOCON_GPIO_MASK); + u16 reg =3D be16_to_cpu(*(__be16 *)reg_p) & MCP251XFD_SPI_ADDRESS_MASK; + int ret; + + /* Never write to bits 16..23 of IOCON register to avoid clearing of LAT0= /LAT1 + * + * According to MCP2518FD Errata DS80000789E 5 writing IOCON register usi= ng one + * SPI write command clears LAT0/LAT1. + * + * Errata Fix/Work Around suggests to write registers with single byte + * write instructions. However, it seems that the byte at 0xe06(IOCON[23:= 16]) + * is for read-only access and writing to it causes the clearing of LAT0/= LAT1. + */ + if (reg <=3D byte_exclude && reg + val_len > byte_exclude) { + size_t len =3D byte_exclude - reg; + + /* Write up to 0xe05 */ + ret =3D _mcp251xfd_regmap_nocrc_gather_write(context, reg_p, reg_len, va= l, len); + if (ret) + return ret; + + /* Write from 0xe07 on */ + reg +=3D len + 1; + reg =3D (__force unsigned short)cpu_to_be16(MCP251XFD_SPI_INSTRUCTION_WR= ITE | reg); + return _mcp251xfd_regmap_nocrc_gather_write(context, ®, reg_len, + val + len + 1, + val_len - len - 1); + } + + return _mcp251xfd_regmap_nocrc_gather_write(context, reg_p, reg_len, + val, val_len); +} + static int mcp251xfd_regmap_nocrc_write(void *context, const void *data, size_t count) { @@ -197,9 +236,9 @@ mcp251xfd_regmap_nocrc_read(void *context, } =20 static int -mcp251xfd_regmap_crc_gather_write(void *context, - const void *reg_p, size_t reg_len, - const void *val, size_t val_len) +_mcp251xfd_regmap_crc_gather_write(void *context, + const void *reg_p, size_t reg_len, + const void *val, size_t val_len) { struct spi_device *spi =3D context; struct mcp251xfd_priv *priv =3D spi_get_drvdata(spi); @@ -230,6 +269,44 @@ mcp251xfd_regmap_crc_gather_write(void *context, return spi_sync_transfer(spi, xfer, ARRAY_SIZE(xfer)); } =20 +static int +mcp251xfd_regmap_crc_gather_write(void *context, + const void *reg_p, size_t reg_len, + const void *val, size_t val_len) +{ + const u16 byte_exclude =3D MCP251XFD_REG_IOCON + + mcp251xfd_first_byte_set(MCP251XFD_REG_IOCON_GPIO_MASK); + u16 reg =3D *(u16 *)reg_p; + int ret; + + /* Never write to bits 16..23 of IOCON register to avoid clearing of LAT0= /LAT1 + * + * According to MCP2518FD Errata DS80000789E 5 writing IOCON register usi= ng one + * SPI write command clears LAT0/LAT1. + * + * Errata Fix/Work Around suggests to write registers with single byte + * write instructions. However, it seems that the byte at 0xe06(IOCON[23:= 16]) + * is for read-only access and writing to it causes the clearing of LAT0/= LAT1. + */ + if (reg <=3D byte_exclude && reg + val_len > byte_exclude) { + size_t len =3D byte_exclude - reg; + + /* Write up to 0xe05 */ + ret =3D _mcp251xfd_regmap_crc_gather_write(context, ®, reg_len, val, = len); + if (ret) + return ret; + + /* Write from 0xe07 on */ + reg +=3D len + 1; + return _mcp251xfd_regmap_crc_gather_write(context, ®, reg_len, + val + len + 1, + val_len - len - 1); + } + + return _mcp251xfd_regmap_crc_gather_write(context, reg_p, reg_len, + val, val_len); +} + static int mcp251xfd_regmap_crc_write(void *context, const void *data, size_t count) --=20 2.34.1 From nobody Wed Oct 1 22:31:22 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D93CE2F999F for ; Fri, 26 Sep 2025 13:30:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893453; cv=none; b=HJpqVoAUoMushyc8ll0Wc2X6d74bKkcUvm9toZXDXXvJiZfc/ri4XdoUgWLw373TtEva5dKY7H+LWAA8Wr/s16p0X8T1Zu5VaSqwnhPiupnKvBkSq/hZNtIZ8XuJpoOsQoUs58bBDiJQOWCsN4QEuXP26oW1+EM3QlWHqf3X2LA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893453; c=relaxed/simple; bh=fk0TNQn7BAcvjE7TYECp7NGF/xF5QIeAzGhAHgip9EU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=o2ZFeB68uY+96GQYP6mdS1Rv7wjQxNf0r4H5s93HQmwn7BlfgaVyYfjsoAML7rOdsULIBYOIPUzAPBOUu3XUkfK9bYk9Vz5yHLew/d9ru2hA/5Qbc/6NEtE9lfkzPfyUGwOPaUL0AtEguBRpSXe+rc4PlzYANa04mrOR6YulWZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=IIadcD+e; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="IIadcD+e" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58QBAnPX019649 for ; Fri, 26 Sep 2025 13:30:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=fAG+r6LmnpS +c29A06CpnJf3DtWoAPxQEN6FpwdQPUk=; b=IIadcD+efjes/6pWru2eTk/72SW 1cGLaJBrb+fQXJDQXagnW/fzm/VhAWx1EFhqnOFJH4xhLs7VPKe0z/jXlS0xa2fh qy3FLInVmB+eCZBLx5fnD/4rNMf+N8NUtPHE+QxclZsiTicyWLpt3How5tVSQba/ IKugLJMrOJYWo1kssjanQPzQSqs7R5WKAV/TcrX3gwKsNDWRxEyISk6ea0nHUCVl VOi7wdN2U90tF3n1+eHNsW19fS+z2u9KsQU9OKi/9XURyVIRTuZj7xGBlSNqs3pc I8rtL7yUQIuV0pj0lKQvWG0x/V9PGb8sd/spmWVgoIxvYC2cCObsfqvt8+w== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49dsqrgbkt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:30:50 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-780fdbbdd20so2313243b3a.1 for ; Fri, 26 Sep 2025 06:30:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893450; x=1759498250; 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=fAG+r6LmnpS+c29A06CpnJf3DtWoAPxQEN6FpwdQPUk=; b=gViH17Misr3oMABWDjz8BRnE/sTUVofge8iilRFZ6RR3VKUbTlZ6zEtSo7OKY+9XMU dJ5jY7l4G+Lxy1oPLlCQC/tayj31E0V3hpy0+a89KyqW29xp1Z/7FSemk0vxToG+Z1c8 qqJ5Y7lhHaY+BUAjDtg9PgPl7AAIQkN3fe5l9VP5SIfKAWwJtI5QWCvVj/K9Iq+U5Mdh u7yTKU5MjNq42EPFx9ypNDAMO2GVIsrf978AUnR2V9tcnqjDiZXATDetqh56ZRCfb3eN iPk61NZq8/Away3z7YOZ2dsHXc+kMAev0D9deHDp4xK0REfdmYrNpzbFV3Pr3uhhu7Ob og5Q== X-Forwarded-Encrypted: i=1; AJvYcCWugWjmxBMOdhQpaB1f3u2Ce78gexaaywdKzMXlXRD1r9Px+EOiGoK+GAHk/84KdICiCIEZlKfEIgnX9UI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6pnWJnivFlMcmRUQi9hbBQYnOu30sAurqHHJrjy+EGAEcXAut SfZiqxlPU/81XjkuVHv3GlVx0s++uZ+kZCOc6cxPW8afSczDLWX3Z+sugYWi8qxI5wdbz7XM0oe mOUyH6nlZ0qB8Fhe8IJHhHNhMFYUMqtxG7nEfOpDw01Ul781o/Yojoxl658NMVOA+pmI= X-Gm-Gg: ASbGncvlp5BReFusQ7FRI9nZaPOkklVC0Ug/f2nqmSK/rGBpaWtNpOrIrH+3fWtkohz Uo9PDcsSkjGngMrwRJVSai3zdcexWCkTG0fxWOc7O4DZBWBuquJl6qF40C/ZACGMQh7EQZQQVgA JJphP53PoPey5MIHIc8M06KMX5ITG0OmLhxG3xaUNaR/bvVNy1ndimATbVUvl92+YwINmuWdat7 tv9wt0uMkyc8R53z5PgKKhveB/7/q3/3WGa/DMZcqHmz4MohFuwp+GPw6Im2lFsAgnjCHhLpu5k vL3Wa9ECw+zOZ4F/fQlcVUFYQl//Xh7+fW+moMwIQKRtJok1j6M8k4hKpn0HjLoeTUxec2in3/w L X-Received: by 2002:a05:6a00:cc6:b0:776:130f:e1a1 with SMTP id d2e1a72fcca58-780fcdf3f22mr7086992b3a.5.1758893449851; Fri, 26 Sep 2025 06:30:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEstEY69dbLRQR6at3E+oZw1Mj2XvmB0hm8PJBwooP0qoucokHD6HUCye2J9PIVoBANgGti2w== X-Received: by 2002:a05:6a00:cc6:b0:776:130f:e1a1 with SMTP id d2e1a72fcca58-780fcdf3f22mr7086938b3a.5.1758893449358; Fri, 26 Sep 2025 06:30:49 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:30:49 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Viken Dadhaniya Subject: [PATCH v5 4/6] can: mcp251xfd: only configure PIN1 when rx_int is set Date: Fri, 26 Sep 2025 19:00:16 +0530 Message-Id: <20250926133018.3071446-5-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Proofpoint-GUID: -IPxsNGG1uluL5hliG1BMk6JGQ-iMszj X-Authority-Analysis: v=2.4 cv=d8n4CBjE c=1 sm=1 tr=0 ts=68d6958a cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=EUspDBNiAAAA:8 a=Zr3td6iJmGh5AMeZqZgA:9 a=IoOABgeZipijB_acs4fv:22 a=uSNRK0Bqq4PXrUp6LDpb:22 X-Proofpoint-ORIG-GUID: -IPxsNGG1uluL5hliG1BMk6JGQ-iMszj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI2MDEwMyBTYWx0ZWRfXxrGwMnSF9Ud1 8cA1pvlB2HX6jzQDihSNgmtgoxQgFBuktYXR0aPtbri3G9HWgbO+eykPrejcgp9CJoopq1WlP6g HtoGqYHP/gLL8WK9MogYVcvZCA69GYyBFX4wVcsLBUr/Catood6dcnLGWAariUfYW3sEtOLhFzQ Y8M+cnpLLmnrUZngn6G561YzMXjAfUgUL+dAw8Z/mFo7vmn1q5zHpjc3ffqJkQZisEQdfkt42sJ r+Yjrfe9KQZvHk1s8LE4MhkZcPbLIoLqQVJDK+hB9+cP5oF3iboYNfnZRd6eXekSAiG6aVpDzPT obrBDVZoCV0yXo/fLA1RTAGx5peRTrG6fSQZ5rypahb0oAivUxxWhuyIP4YperDgsae810BwEvB JlWdCxoTLBvP6qQ2AHwcJTqC5pSxpQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509260103 Content-Type: text/plain; charset="utf-8" From: Gregor Herburger When rx_int is used th mcp251xfd_chip_rx_int_enable and mcp251xfd_chip_rx_int_disable function configure both PIN0 and PIN1. To prepare the support of the GPIOS only configure PIN1 with regmap_update_bits. This way PIN0 can be used as GPIO while PIN1 is used as rx_int interrupt. Signed-off-by: Gregor Herburger Tested-by: Viken Dadhaniya Signed-off-by: Viken Dadhaniya --- .../net/can/spi/mcp251xfd/mcp251xfd-core.c | 22 +++++++------------ drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 6 +++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/c= an/spi/mcp251xfd/mcp251xfd-core.c index f9eabb1810cf..ea41f04ae1a6 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -608,23 +608,21 @@ static int mcp251xfd_set_bittiming(const struct mcp25= 1xfd_priv *priv) =20 static int mcp251xfd_chip_rx_int_enable(const struct mcp251xfd_priv *priv) { - u32 val; + u32 val, mask; =20 if (!priv->rx_int) return 0; =20 - /* Configure GPIOs: - * - PIN0: GPIO Input - * - PIN1: GPIO Input/RX Interrupt + /* Configure PIN1 as RX Interrupt: * * PIN1 must be Input, otherwise there is a glitch on the * rx-INT line. It happens between setting the PIN as output * (in the first byte of the SPI transfer) and configuring the * PIN as interrupt (in the last byte of the SPI transfer). */ - val =3D MCP251XFD_REG_IOCON_PM0 | MCP251XFD_REG_IOCON_TRIS1 | - MCP251XFD_REG_IOCON_TRIS0; - return regmap_write(priv->map_reg, MCP251XFD_REG_IOCON, val); + val =3D MCP251XFD_REG_IOCON_TRIS(1); + mask =3D MCP251XFD_REG_IOCON_TRIS(1) | MCP251XFD_REG_IOCON_PM(1); + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, mask, val); } =20 static int mcp251xfd_chip_rx_int_disable(const struct mcp251xfd_priv *priv) @@ -634,13 +632,9 @@ static int mcp251xfd_chip_rx_int_disable(const struct = mcp251xfd_priv *priv) if (!priv->rx_int) return 0; =20 - /* Configure GPIOs: - * - PIN0: GPIO Input - * - PIN1: GPIO Input - */ - val =3D MCP251XFD_REG_IOCON_PM1 | MCP251XFD_REG_IOCON_PM0 | - MCP251XFD_REG_IOCON_TRIS1 | MCP251XFD_REG_IOCON_TRIS0; - return regmap_write(priv->map_reg, MCP251XFD_REG_IOCON, val); + /* Configure PIN1 as GPIO Input */ + val =3D MCP251XFD_REG_IOCON_PM(1) | MCP251XFD_REG_IOCON_TRIS(1); + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, val, val); } =20 static int mcp251xfd_chip_ecc_init(struct mcp251xfd_priv *priv) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/sp= i/mcp251xfd/mcp251xfd.h index dcbbd2b2fae8..bd28510a6583 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h @@ -335,13 +335,19 @@ #define MCP251XFD_REG_IOCON_TXCANOD BIT(28) #define MCP251XFD_REG_IOCON_PM1 BIT(25) #define MCP251XFD_REG_IOCON_PM0 BIT(24) +#define MCP251XFD_REG_IOCON_PM(n) (MCP251XFD_REG_IOCON_PM0 << (n)) #define MCP251XFD_REG_IOCON_GPIO1 BIT(17) #define MCP251XFD_REG_IOCON_GPIO0 BIT(16) +#define MCP251XFD_REG_IOCON_GPIO(n) (MCP251XFD_REG_IOCON_GPIO0 << (n)) +#define MCP251XFD_REG_IOCON_GPIO_MASK GENMASK(17, 16) #define MCP251XFD_REG_IOCON_LAT1 BIT(9) #define MCP251XFD_REG_IOCON_LAT0 BIT(8) +#define MCP251XFD_REG_IOCON_LAT(n) (MCP251XFD_REG_IOCON_LAT0 << (n)) +#define MCP251XFD_REG_IOCON_LAT_MASK GENMASK(9, 8) #define MCP251XFD_REG_IOCON_XSTBYEN BIT(6) #define MCP251XFD_REG_IOCON_TRIS1 BIT(1) #define MCP251XFD_REG_IOCON_TRIS0 BIT(0) +#define MCP251XFD_REG_IOCON_TRIS(n) (MCP251XFD_REG_IOCON_TRIS0 << (n)) =20 #define MCP251XFD_REG_CRC 0xe08 #define MCP251XFD_REG_CRC_FERRIE BIT(25) --=20 2.34.1 From nobody Wed Oct 1 22:31:22 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 874D92F60C0 for ; Fri, 26 Sep 2025 13:30:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893459; cv=none; b=Hco+Xr/uyi2QOT7bGOSE0CsMf9hKo/ibtZkStHQJEWNxPggLGUOuTWICDTS9vsbrXGMm62cfkEmH1BCy42moLzKizNYjeM2a9bXQSna3j9zeqEl6wJltO7VbN2eIcb++Y/pa+nrsezm9V1Pnqwh7aZ+RkPOtMDQeTPKRVyQnPBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893459; c=relaxed/simple; bh=SPcf++Iyi3zzKsVUVveR11UfhJHrrII0re5TSa0X8Qg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JAB7FnvlnGIHuxw5O+LO8X/Mqym5riRja8MTpzxr+3wFL4EN1kvnx/XGIh0nXZpHJwXb/Am3PqBtgLQAxRjRT9ZcUw6bAC5v/vKxZa4fggfz3+V9VZWU2kuLIyBfb9rr6fc9uxdtKgz3GVeUe4ePttmEQXx2sotkaeCovuci1ZU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MC+bQKDk; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MC+bQKDk" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58Q8vqMJ021014 for ; Fri, 26 Sep 2025 13:30:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=eea5gCv3xnM ebaukW35PefSTb9gPNWDUanvxJnODS38=; b=MC+bQKDk4wyDBUvmXgizRPOTMxt nZWr7zATaqUCW+DF3odBbkelhk3agWH3cyl08JSzxHDuGHUMfLlFLlr9MsPN53N/ QxNBBMuq0DG7i4kEpbN6o9dltx7yNeQG+cElHWaVrEHVfBR9G6jfuOOeubH6PzSh tKr/FK1YuYoTcV2uZSwMq9Nc/2L1PqwWKPzD9ggMmW4vdcJQxcN+VhC/WFu629tT B0gQJLGwyc/D/ltoV+7uMZBW3b7HAcu7VsYxXONnqi7rnfFMSkyrfsIVHQ1Qixvs GlCvi6KGzksPwatspZyPw3Uq82OjbqK2AR8xK8hZ3vqsKyv1P9isG6UAZxg== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49db0qu0g8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:30:56 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-77f3998c607so3721431b3a.1 for ; Fri, 26 Sep 2025 06:30:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893456; x=1759498256; 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=eea5gCv3xnMebaukW35PefSTb9gPNWDUanvxJnODS38=; b=X3X4RElaa07DKNiw5fOuQS2KMwkoJBht2jzFQVjw4yx4iZptzs+7tgMo8AJrTewIIZ v/DvXbOzRkYnc/wc0wWdVpfBTsrhiJthwBng+b4+esYi2AHrxsHPLnS54r34bcxEdSAt 6T0hHhXDyKpKTzKO9/jOgRoZk0ebtQ7+CBOCKz5CQLxvgeO3tfwBNYkfI1q3Vv1tJpzj 9ScsbxRvdzBTsHh1j2mOtGSr+BLah52ALfoKw3beIJ3fkpvMy023fdgqptuMeBR/7PT6 igD7lYsB7UFgEEHlDy/seSWk8QcM9jBywYZb666oJGWX6eEylhYRLBCgUPsANB0pQmbN +YXw== X-Forwarded-Encrypted: i=1; AJvYcCXPk7D9Nt5yoWkgj60CwFNrBbY0tMQPoM3BU32CzXxs0QtJ/f2HeQ65LJdBSqViueXkriBEbXtTFeNZjco=@vger.kernel.org X-Gm-Message-State: AOJu0YyZ3QhxWvT+lYmt8DLh8eZopmo4I0OPZVUSD4gR/DuwisMPKhb9 5hp7xC3pdXIgBmAKjxCeOFrfixIOoHsZEZstoHvz2zrHDOvdi1RAs9Bu6dLSagZXNED94TFKskh D2Cmn5obZ/p6BxElKdmJwZcSyePUtzI+OPnTnTqv78+dfGAiBsl0hWR0nr4TOWwRnJYc= X-Gm-Gg: ASbGncsoh5W8uEiMsTaPBXtJR0GTKXGiJHgx/G4Q8edZCu0WddQsOe0jrScA0jom8vs LXUzNBu6wt9jQJwgQ/2uyVN4chpgFXnHGDOzagDqZFq9IN867aLf32ENLG09Vnf/OeCtfQIVngo aAegrM9pjyEuZQZWSuL2eYYwY/CsowuocUWBVLsV12nKfCVDT+jW8neH/eIc6CtkK66dbTHw8Lk /h5OQGmLpiutrzVhS7nSCr0m3HjZII1T+zpdTOBTK8ZqmugwPebel51DQal4syJvw3+QX5nNS89 d992DHw3nVSvPmeId1/fnHe2lDn7ThKxZOhd1DO5aFs2zf3DqcvYhIuoMhXH4KzHX5Vo9mAjXwk V X-Received: by 2002:a05:6a00:8c0e:b0:781:18dd:31de with SMTP id d2e1a72fcca58-78118dd369dmr1549234b3a.12.1758893455708; Fri, 26 Sep 2025 06:30:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFDMsJY/jOHSQBSRpAM1bJg3jREXLQMB/BlA11EqBoG9fchJG9k3mAKRt0sQomWwVSy1TLp2g== X-Received: by 2002:a05:6a00:8c0e:b0:781:18dd:31de with SMTP id d2e1a72fcca58-78118dd369dmr1549190b3a.12.1758893455134; Fri, 26 Sep 2025 06:30:55 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:30:54 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Viken Dadhaniya Subject: [PATCH v5 5/6] can: mcp251xfd: add gpio functionality Date: Fri, 26 Sep 2025 19:00:17 +0530 Message-Id: <20250926133018.3071446-6-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Proofpoint-GUID: ggtGiXiwIf_gsjCOCDSsfMfrqwvXPIL5 X-Proofpoint-ORIG-GUID: ggtGiXiwIf_gsjCOCDSsfMfrqwvXPIL5 X-Authority-Analysis: v=2.4 cv=api/yCZV c=1 sm=1 tr=0 ts=68d69590 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=EUspDBNiAAAA:8 a=tLDx1KCooYQGmN993QAA:9 a=zc0IvFSfCIW2DFIPzwfm:22 a=uSNRK0Bqq4PXrUp6LDpb:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI1MDE3MSBTYWx0ZWRfX5mvIKVgZbdoM tMPc0blsSxzwnUgy7DTRVLJ8q+5KM5qE8gg5jUat3TXTgyBbnYOlDILSE6uH99i4/zOz3795cf8 e6IuBiMp8hHGn/BtX9povp9rwOym1tsRzHVLvJlK1R8UQ/86DcXua1BkcwNhUomtQJ3NiZHuIMK kUvLnYQWnEF18yUU29WXSbDd2T/Cl1USpymFq45b2efVkmr7Kra2eHwsziFX/NZJu7BTNC0ppy9 /U5Z41s52NRWYfoAUNNaGtxPSI005Mpj2xLiSTuBeiQ1gf2+QJ0fZEzW36e/fMWiSkGJmGQcOeD g6U3786qfAtiZkqyXwbp5uuzoHPNegEw43u05tckxYA05Uyizuw62332Aj2vDXPQZb+Axi6Mo6y rZOpe/koP9c2OghGF72ioZv+x02FHg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 adultscore=0 spamscore=0 priorityscore=1501 bulkscore=0 phishscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509250171 Content-Type: text/plain; charset="utf-8" From: Gregor Herburger The mcp251xfd devices allow two pins to be configured as gpio. Add this functionality to driver. Signed-off-by: Gregor Herburger Tested-by: Viken Dadhaniya Signed-off-by: Viken Dadhaniya Acked-by: Bartosz Golaszewski --- drivers/net/can/spi/mcp251xfd/Kconfig | 1 + .../net/can/spi/mcp251xfd/mcp251xfd-core.c | 172 ++++++++++++++++++ drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 + 3 files changed, 175 insertions(+) diff --git a/drivers/net/can/spi/mcp251xfd/Kconfig b/drivers/net/can/spi/mc= p251xfd/Kconfig index 877e4356010d..7c29846e6051 100644 --- a/drivers/net/can/spi/mcp251xfd/Kconfig +++ b/drivers/net/can/spi/mcp251xfd/Kconfig @@ -5,6 +5,7 @@ config CAN_MCP251XFD select CAN_RX_OFFLOAD select REGMAP select WANT_DEV_COREDUMP + select GPIOLIB help Driver for the Microchip MCP251XFD SPI FD-CAN controller family. diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/c= an/spi/mcp251xfd/mcp251xfd-core.c index ea41f04ae1a6..88035d4404b5 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -1797,6 +1797,172 @@ static int mcp251xfd_register_check_rx_int(struct m= cp251xfd_priv *priv) return 0; } =20 +static const char * const mcp251xfd_gpio_names[] =3D { "GPIO0", "GPIO1" }; + +static int mcp251xfd_gpio_request(struct gpio_chip *chip, unsigned int off= set) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 pin_mask =3D MCP251XFD_REG_IOCON_PM(offset); + int ret; + + if (priv->rx_int && offset =3D=3D 1) { + netdev_err(priv->ndev, "Can't use GPIO 1 with RX-INT!\n"); + return -EINVAL; + } + + ret =3D pm_runtime_resume_and_get(priv->ndev->dev.parent); + if (ret) + return ret; + + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, + pin_mask, pin_mask); +} + +static void mcp251xfd_gpio_free(struct gpio_chip *chip, unsigned int offse= t) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + + pm_runtime_put(priv->ndev->dev.parent); +} + +static int mcp251xfd_gpio_get_direction(struct gpio_chip *chip, + unsigned int offset) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 mask =3D MCP251XFD_REG_IOCON_TRIS(offset); + u32 val; + int ret; + + ret =3D regmap_read(priv->map_reg, MCP251XFD_REG_IOCON, &val); + if (ret) + return ret; + + if (mask & val) + return GPIO_LINE_DIRECTION_IN; + + return GPIO_LINE_DIRECTION_OUT; +} + +static int mcp251xfd_gpio_get(struct gpio_chip *chip, unsigned int offset) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 mask =3D MCP251XFD_REG_IOCON_GPIO(offset); + u32 val; + int ret; + + ret =3D regmap_read(priv->map_reg, MCP251XFD_REG_IOCON, &val); + if (ret) + return ret; + + return !!(mask & val); +} + +static int mcp251xfd_gpio_get_multiple(struct gpio_chip *chip, unsigned lo= ng *mask, + unsigned long *bit) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 val; + int ret; + + ret =3D regmap_read(priv->map_reg, MCP251XFD_REG_IOCON, &val); + if (ret) + return ret; + + *bit =3D FIELD_GET(MCP251XFD_REG_IOCON_GPIO_MASK, val) & *mask; + + return 0; +} + +static int mcp251xfd_gpio_direction_output(struct gpio_chip *chip, + unsigned int offset, int value) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 dir_mask =3D MCP251XFD_REG_IOCON_TRIS(offset); + u32 val_mask =3D MCP251XFD_REG_IOCON_LAT(offset); + u32 val; + + if (value) + val =3D val_mask; + else + val =3D 0; + + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, + dir_mask | val_mask, val); +} + +static int mcp251xfd_gpio_direction_input(struct gpio_chip *chip, + unsigned int offset) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 dir_mask =3D MCP251XFD_REG_IOCON_TRIS(offset); + + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, + dir_mask, dir_mask); +} + +static int mcp251xfd_gpio_set(struct gpio_chip *chip, unsigned int offset,= int value) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 val_mask =3D MCP251XFD_REG_IOCON_LAT(offset); + u32 val; + int ret; + + if (value) + val =3D val_mask; + else + val =3D 0; + + ret =3D regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, val_mask, = val); + if (ret) + dev_err(&priv->spi->dev, "Failed to set GPIO %u: %d\n", offset, ret); + + return ret; +} + +static int mcp251xfd_gpio_set_multiple(struct gpio_chip *chip, unsigned lo= ng *mask, + unsigned long *bits) +{ + struct mcp251xfd_priv *priv =3D gpiochip_get_data(chip); + u32 val; + int ret; + + val =3D FIELD_PREP(MCP251XFD_REG_IOCON_LAT_MASK, *bits); + + ret =3D regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, + MCP251XFD_REG_IOCON_LAT_MASK, val); + if (ret) + dev_err(&priv->spi->dev, "Failed to set GPIOs %d\n", ret); + + return ret; +} + +static int mcp251fdx_gpio_setup(struct mcp251xfd_priv *priv) +{ + struct gpio_chip *gc =3D &priv->gc; + + if (!device_property_present(&priv->spi->dev, "gpio-controller")) + return 0; + + gc->label =3D dev_name(&priv->spi->dev); + gc->parent =3D &priv->spi->dev; + gc->owner =3D THIS_MODULE; + gc->request =3D mcp251xfd_gpio_request; + gc->free =3D mcp251xfd_gpio_free; + gc->get_direction =3D mcp251xfd_gpio_get_direction; + gc->direction_output =3D mcp251xfd_gpio_direction_output; + gc->direction_input =3D mcp251xfd_gpio_direction_input; + gc->get =3D mcp251xfd_gpio_get; + gc->get_multiple =3D mcp251xfd_gpio_get_multiple; + gc->set =3D mcp251xfd_gpio_set; + gc->set_multiple =3D mcp251xfd_gpio_set_multiple; + gc->base =3D -1; + gc->can_sleep =3D true; + gc->ngpio =3D ARRAY_SIZE(mcp251xfd_gpio_names); + gc->names =3D mcp251xfd_gpio_names; + + return devm_gpiochip_add_data(&priv->spi->dev, gc, priv); +} + static int mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_= id, u32 *effective_speed_hz_slow, @@ -1930,6 +2096,12 @@ static int mcp251xfd_register(struct mcp251xfd_priv = *priv) =20 mcp251xfd_ethtool_init(priv); =20 + err =3D mcp251fdx_gpio_setup(priv); + if (err) { + dev_err_probe(&priv->spi->dev, err, "Failed to register gpio-controller.= \n"); + goto out_runtime_disable; + } + err =3D register_candev(ndev); if (err) goto out_runtime_disable; diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/sp= i/mcp251xfd/mcp251xfd.h index bd28510a6583..085d7101e595 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -676,6 +677,7 @@ struct mcp251xfd_priv { =20 struct mcp251xfd_devtype_data devtype_data; struct can_berr_counter bec; + struct gpio_chip gc; }; =20 #define MCP251XFD_IS(_model) \ --=20 2.34.1 From nobody Wed Oct 1 22:31:22 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 968DA2F83C0 for ; Fri, 26 Sep 2025 13:31:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893465; cv=none; b=Mcc0u81vHMU0yTZaGUCM6gpd+2ygrR1MTfBWPkwH8GYz4Su9Rt4W42oJiGTJeE9IBUWDbTjAgeYkCzAa7npbXZFQUl8N2WWEB33XIHRpchN/Rmyv7j2P5zPGXddAclAev6qG0Jt+X8p/66ngV/KUOBWZtNQtolmQjXVHxWln5uc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758893465; c=relaxed/simple; bh=EDxK0JAECJqknU7nyBNM/XjceytGlGUL11eBwTOLESE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=glN/0jkqkp4zRxofkR5MouN/E+9j+VP5Smv/HX6AVzZSjQNagUmgrOS9omY21158ZwlF0E+tllvRHijGkh14OIuwNYEHLYFn+Xj+mJBlmE9BS7e/Ot96ytnZHivFUxEIB72YbnwA68A1Oiw3T7iUUM3fz68+cn0wQsIO9JKK7mk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=migAbhzW; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="migAbhzW" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58Q8vYA9015984 for ; Fri, 26 Sep 2025 13:31:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=dzJS/eOWAno Hpfft1/dBeRGBEhv7bksVWKJ4cITaZw8=; b=migAbhzWL8v+PgJ74M+ufkydUdS 9n18zmVFuE/FC7LRNpBMccL6mJAKwAybZ5hDDQWte7ypvyvNYcUyB6beadrejWaY rR9dGUlpS4JvYl3MxAwkSH97mhh+6BIihQKyZSVZBQ5lMYzsK6u/moyL62hsc9pd EYzVA03srswTmqFZSaUWvMMEksf/2p2FJQhEgAdqDdADeTskKN0hcZm3/5JRnTvA lHROQLA0kjZZpitvydMlZyscK3tGu40+0QzYRFp385FZRidbVDNQ9Tr+y8cEFBut U57viTYbWXTwHmCcVYMfwolorvxg6jySaT0T7CPGKom+9ax3GGMBCXrpaNg== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49db0rk07t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 26 Sep 2025 13:31:02 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-78104c8c8ddso1719295b3a.2 for ; Fri, 26 Sep 2025 06:31:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758893462; x=1759498262; 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=dzJS/eOWAnoHpfft1/dBeRGBEhv7bksVWKJ4cITaZw8=; b=aoMsqIqHBA9teKN9Ic2E67iRZvctcWq6TdnZhCjr9e1PcF3/QvtKlsP957ihPcjNRX Os62ejdG09Cf/AoAKfmInMUBkE+4uPoSI8IdOqoLAAi/BVt1H9U9LdSCqhOSl0L2mmzK r0ieWDIP1gTdWLjaQpNtcW6wtEaOOHKOlTzsYX3N7Ufl7a3BGt3rLPE2sGMqjKsx1YKM eu5llQ6N+HGlu93/Jk1kQAHf66SU3DVd3pMCslrPPOHZqkO0drrFyHzJfZO93OnRPLRo hMFdufQflyP9YtMVC5uuqJBCC6z0+lNSmd6RSv25f+qZRgIN9MeViXuGmjb/s5fT6gJJ 0fcw== X-Forwarded-Encrypted: i=1; AJvYcCWXx5eecRTs/q2nB68sMEL/QWxaRnn8qk0DEA1jnOAiCe5s5sDwjOD3xf0WqwRN5XnCVJfz5zGHWDKhB6A=@vger.kernel.org X-Gm-Message-State: AOJu0YxmqgvBgQnZkbZXOKaqUeHGkk+IcNqy3u5SUFfYvsAq5vuyFr5Q 4T5tZy1owCeFckyeXSjRrJgwMGq1ShXCB+7m2i+hANmNDBa7+ofsUDFVz9w+lP5/sLVx5FyNkY4 X3hc/m6hlCztY2cPmGT/VgFw1qfyQIfYnj0QlqyV4wZQMszQVvYFMyyQVhV+bcTCHuKQ= X-Gm-Gg: ASbGncuNu0ofD5Z0PWbvy3uiQ4zcer9A2QePK0RZkXeN16GrQGdhLTiWUGgiIuu2OHt hkYaYzKqKOQoc3q9HEoiUvpFHsqaYQQH8VKcaitsvlOsgbsek33TuJ85hF38zOuQmdpz6w/dXRj ROAsyIRdiYfT3fYihpOPqF0+XF0Nr3Cj5JyFoSLuFzxJdGJ/vSxuEm+Ik54fSMJN04iR1Yik0H8 eLJgYkFbRdPentbA5VRnqdQ/D0z0+30GPqXX5le8a7G1+P7mLS+wTgK+Rg1rPenbnfKLWJvq+sq yduJzVVozHKamMOkWObNBPR9asFIWCOIVncdp5cJdof7hBhqWP/DaTEEapqeQFoPHTYKYN59cRt j X-Received: by 2002:a05:6a00:1408:b0:77f:6971:c590 with SMTP id d2e1a72fcca58-780fceb49eemr7690276b3a.22.1758893462042; Fri, 26 Sep 2025 06:31:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGLeHddy/mn17tTANaaPlDdZJPY7hKHUQGRRzCDSBlp3I0nv2etth7ZbqEJFM0oH9ZNV1jfRA== X-Received: by 2002:a05:6a00:1408:b0:77f:6971:c590 with SMTP id d2e1a72fcca58-780fceb49eemr7690219b3a.22.1758893461423; Fri, 26 Sep 2025 06:31:01 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7810238d321sm4504174b3a.17.2025.09.26.06.30.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Sep 2025 06:31:01 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol.vincent@wanadoo.fr, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Gregor Herburger , Krzysztof Kozlowski , Viken Dadhaniya Subject: [PATCH v5 6/6] dt-bindings: can: mcp251xfd: add gpio-controller property Date: Fri, 26 Sep 2025 19:00:18 +0530 Message-Id: <20250926133018.3071446-7-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.com> References: <20250926133018.3071446-1-viken.dadhaniya@oss.qualcomm.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 X-Authority-Analysis: v=2.4 cv=dP+rWeZb c=1 sm=1 tr=0 ts=68d69597 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=yJojWOMRYYMA:10 a=8f9FM25-AAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=ubk9sFcynENsk3o0iIUA:9 a=OpyuDcXvxspvyRM73sMx:22 a=uSNRK0Bqq4PXrUp6LDpb:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: nL-s8Z18ehFh64xmc-X9oqK_tanxOhzV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI1MDE3MSBTYWx0ZWRfX8voKv/+1K1Ib x9RQzZ4gpYiyrS8wzjmcnJKa0Hl78HxrHBBLXvOiJPjLbAIqekoT6IeFmDi+LFG0ii0NE0Bg33m aIFMmdQU++P9Jcve9Jb0cOM0oS+mDeF9EcdeT8diBsJhuqc6gxgl21RknDdxB6GdQSmHdQkQONp M3WOuE9jcY3jbBHo1+HdBVxSZr+ZWEpBYzfNOI5AR+KQP1daLJwO+LqnmTq1UbkrKdCWY6uL+if SlohDciH3Zini8MEA+oEtQ9ApmE3yqXHkGrW6fRiFO2qX3PK1QwWCjzn8HEPMlEEFkBXSdjDtcE caa56LnhhW+iyrY+7mhy6Vh2Eg8EHv9oU4Muz8dJxivZDg+Oc98e1CJttVpVuEeaF2Xauy7tIsb MWgf7kiI7Fi7jIqRpmjsK7pXo4xvaA== X-Proofpoint-GUID: nL-s8Z18ehFh64xmc-X9oqK_tanxOhzV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-26_04,2025-09-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509250171 Content-Type: text/plain; charset="utf-8" From: Gregor Herburger The mcp251xfd has two pins that can be used as gpio. Add gpio-controller property to binding description. Acked-by: Krzysztof Kozlowski Signed-off-by: Gregor Herburger Signed-off-by: Viken Dadhaniya --- .../devicetree/bindings/net/can/microchip,mcp251xfd.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.= yaml b/Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.yaml index c155c9c6db39..2d13638ebc6a 100644 --- a/Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.yaml +++ b/Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.yaml @@ -49,6 +49,11 @@ properties: Must be half or less of "clocks" frequency. maximum: 20000000 =20 + gpio-controller: true + + "#gpio-cells": + const: 2 + required: - compatible - reg --=20 2.34.1