From nobody Sat Apr 4 01:49:52 2026 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 0FEA12F3600 for ; Sat, 21 Mar 2026 13:50:56 +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=1774101059; cv=none; b=m/fciAcopEloh2I1yAomI5vA9/ZlICX/DRjetSXhxCfSTVJvNEc7xfxWfOzTIIjc1FCDOhLNSrIW+p1ifEwU72sk2CZW8nwChOZZiTqQZSKzvAUUJVprT9nnaoyCnW16EJNE3/S0k9e+fqe1yoCkyFZ92AMMrOInh/ToMhfqxzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774101059; c=relaxed/simple; bh=92OGINrYIEMHF4Yj1z89XucWCdQo5x7PD93rkEDJkSU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pGH4j/5C1BPizRpjGsaSBm45fhFbYgEaJ+C6ShEOsR651FspRhsfTgr2gvpeOdFDxInLYepugFpxZQbhqZZjpO5GYGzi9vCouXSODVOpnhrB14VKMOBR6vVnU/06nbduZP7sXBQxDVu+Td101nS0CAYsDY943ra49Nyss+i2y64= 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=YbRRxNvM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=e53JOUzf; 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="YbRRxNvM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="e53JOUzf" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62LBoof52300428 for ; Sat, 21 Mar 2026 13:50:56 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=dEwv3v4fvUI ft8JTog2rIO4fgOp9tun/AvsOV/PcgME=; b=YbRRxNvMbb0bTnKuOUFNjAugrSH mbQgzEOVLCNBcbkGentXKXdqKynHhMwdukdelNCMGRLNOdLW8c2AjK+yCiWNKxTU SHCDL/h1sX+ZI0t2FrZSpy5X7lOW6B1vGWGfcibHcuqrCgxe4avSPI06cAKMW0VJ z749n+4JhMP5MmwmU3EdC6Y6r/7Q+yNh7w55FE8BPyXyyPTW6GWNz2ZRplGTBA3y rhiGnGDuiNpUKaGMCCRyOuaE+OzMJgNXo7ncQkDb5BAbLVuJ0nGn3ODGnjF/Xozd oIp/Vwz3QuNV38WA3if0WMB/8k8+49WXHcPLSRpnLxS9Pndyvt0TNVWsTPg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d1m3crqu0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 21 Mar 2026 13:50:56 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b06395b7a7so35129565ad.2 for ; Sat, 21 Mar 2026 06:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774101056; x=1774705856; 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=dEwv3v4fvUIft8JTog2rIO4fgOp9tun/AvsOV/PcgME=; b=e53JOUzfRn7jhJ+kfuFsXrL30/aN2GdF1GOQQjbq/O+jcCVchT5TCjr64ihysT0nJR nu0lyfuI+ssnk5Twi8esR7WmxWQ7Fl7vMZb/fPbX4KDpxe0tZGK6Es7u4124RgcB124n nFieDFP0dgVM6nxCIVhOBKei4UM6e/g6geOiHbp8NI6qG5HSpkjQFN5gDx4RbOaKmJzy lYK5rKpLcPHNiOvMlZ2bZQfusKfAXtjFPl5tZFaftX9/DFkYHYgRvVFlNNPntNlvCCTf 4MgEfIaQDXFqoWcRdx5oKSl3ELexHXTDw6Ss1qHEbdQ4VoGbtnMOvfmDFVU4dw08aupY 28CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774101056; x=1774705856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dEwv3v4fvUIft8JTog2rIO4fgOp9tun/AvsOV/PcgME=; b=TypI+MFKy07YMbRa3p1wmVYMac1EP8O+wu83CCkripsSBEyPHipcp543G8Yb66jXZM c11ph5Q56YvJWkYYogQOXob1vHsXj8YMR4UAqzmCMVrTIs1VaPgmVz4KX6tgO6P9Yv3B QtlpO6/x5iZ1usq6T7qTula7f5df3w0m27IGRoZn+5NSQGRnr+Ba+rIvzoed3TEg6YTg J32/d3dDPsOcIBah15o0vhuaEOUCEPaDIsjqZHgfAY/UdG6S2FLhSDazfs2bxIL5rNl+ MaFrmUd7Io76JjU+Z9WBle0tGFe05ZAGjNCEOfKx+cs4qIgtiI96sAsJYrT1PpeXJxbb Yh2w== X-Forwarded-Encrypted: i=1; AJvYcCV5thykGwTa5KRZNulpjYSWndJy6GaB1t/Q98O5KJLILGZ1cTKCu4eEj9klywKCZrHRv+2+SstHqSyEshc=@vger.kernel.org X-Gm-Message-State: AOJu0YyFMCHntTW+Vr/avN7UGbSAb7tKFlcjTbCPWow6R3KXiZNexj8K i4pNtEuUSdlRdyzVJyrviT3ePdM7HXCcF/pfzrkttXJUJnnDa5u6dizG558DRu7PxnJ8UhnZgJL I2x5mtGU909u6uiGDln8Mk866No+DWDMKH7KFPP/xuJmSCMIdlPDrlcLJ4ZBzaHNFDoI= X-Gm-Gg: ATEYQzwdhlWa/Vush4q9oi/fbgFf5UOdGgDiuUgl8W3g6s3YxVsbllEpWfPkW/nH9bx Vr/SciQLg7+X5cbTBxupFaAHD6EN8B2+jMA53cvPtw37GqOVEqb86K3R+3+3lgldil6BIZdOBpj kTkI0XBySHW5p6Qg7MJz50Rs1K+NLeR/vrwF9ESS2v4RemV6KegGY9Cd93WJLloQFJgvRYt1lU7 0wR6P6caH1JOPJfvOo/s205xcd02mWAyP2khc/mmMCAhqV+Z4uPFbVKsqpVqAbywjGkK02P8rpX 5VUSV874mji68C+Te6p69mxEMq7J9dSQ79qkhw/6nOg8DdLGj+bREatZwZZg0y1FHVqRF2bfLwC JhANMVTT5BzA5DHYxorp/sHW7NnU5Panh6IbjgeDRVU0ALZUBWbp+hMnPtA== X-Received: by 2002:a17:902:e551:b0:2ae:c9be:5f30 with SMTP id d9443c01a7336-2b0827898f7mr62267215ad.23.1774101055711; Sat, 21 Mar 2026 06:50:55 -0700 (PDT) X-Received: by 2002:a17:902:e551:b0:2ae:c9be:5f30 with SMTP id d9443c01a7336-2b0827898f7mr62266925ad.23.1774101055240; Sat, 21 Mar 2026 06:50:55 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b083516cb9sm54897555ad.2.2026.03.21.06.50.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Mar 2026 06:50:54 -0700 (PDT) From: Viken Dadhaniya To: mkl@pengutronix.de, mani@kernel.org, thomas.kopp@microchip.com, mailhol@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andersson@kernel.org, konradybcio@kernel.org, linusw@kernel.org, brgl@kernel.org, linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org Cc: mukesh.savaliya@oss.qualcomm.com, anup.kulkarni@oss.qualcomm.com, Viken Dadhaniya Subject: [PATCH v3 2/2] can: mcp251xfd: add support for XSTBYEN transceiver standby control Date: Sat, 21 Mar 2026 19:20:31 +0530 Message-Id: <20260321135031.3107408-3-viken.dadhaniya@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260321135031.3107408-1-viken.dadhaniya@oss.qualcomm.com> References: <20260321135031.3107408-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: L25kCCP2laKgjdowOd9u1QlN_ansd5xt X-Authority-Analysis: v=2.4 cv=Z5rh3XRA c=1 sm=1 tr=0 ts=69bea240 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=K7bTvPR2ScrnO788fwgA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIxMDExNSBTYWx0ZWRfX/6wx8ULYtFNN Z0yeRHJI6AMGbmZcTcLt3k1stIoHhF/E95BnzIgZUeq//+33sg5d5aphqFfqeLlEgJ0sXOTKzAi VzsF2gZBmdQ9rHIt8Of6oRlithTDKxnri5fLlL0b8YJJFX1yqcwAWZxUr0Blxpk3WPhyHp1xZWg CImdsTdJGkTm8aU7rziKW3PJGUMdAnhiDidW4JuuO+hcaVknhBCE05jJOAbkrV/yQIhyUHp4M5O ujZlDLXvrVd+Oo/kvLwjmtL+OjM+rCs8o3LMHYxBtHu2A9xWIsj1+jDwyu9ediwKKWQWoAaZjR8 WdGoPAvOnM2SpqBUBeuyAWmRGSOYg3ltVjqVXDmiC92I/iX1nCEsnayLqwrw94H5kaev61OxqJg gFbZhZGZKukAc/tm3b4vrNl+Aj2H7JVC2rjGzR61pZozV4CZZuMeUhXWIhKzYLoyeJpG4NrbT2d GZvb7/QB6Cw2KzxipZA== X-Proofpoint-ORIG-GUID: L25kCCP2laKgjdowOd9u1QlN_ansd5xt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-21_04,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 bulkscore=0 suspectscore=0 clxscore=1015 spamscore=0 impostorscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603210115 Content-Type: text/plain; charset="utf-8" The MCP251xFD has a dedicated transceiver standby control function on the INT0/GPIO0/XSTBY pin, controlled by the XSTBYEN bit in IOCON. When enabled, the hardware automatically manages the transceiver standby state: the pin is driven low when the controller is active and high when it enters Sleep mode. Enable this feature when the 'microchip,xstbyen' device tree property is present. Signed-off-by: Viken Dadhaniya --- v2 -> v3: - Configure xstbyen pin before bringing the controller into normal mode. - Add a check in mcp251xfd_gpio_request() to ensure that GPIO0 cannot be used when xstbyen is enabled. v2 Link: https://lore.kernel.org/all/20260316131950.859748-3-viken.dadhaniy= a@oss.qualcomm.com/ --- .../net/can/spi/mcp251xfd/mcp251xfd-core.c | 37 +++++++++++++++++++ drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 1 + 2 files changed, 38 insertions(+) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/c= an/spi/mcp251xfd/mcp251xfd-core.c index 9c86df08c2c5..92a86083c896 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -764,6 +764,31 @@ static void mcp251xfd_chip_stop(struct mcp251xfd_priv = *priv, mcp251xfd_chip_set_mode(priv, MCP251XFD_REG_CON_MODE_CONFIG); } =20 +static int mcp251xfd_chip_xstbyen_enable(const struct mcp251xfd_priv *priv) +{ + /* Configure the INT0/GPIO0/XSTBY pin as transceiver standby control: + * + * - XSTBYEN=3D1: route the pin to the transceiver standby function + * - TRIS0=3D0: set output direction; the reset default is 1 (input), + * which leaves the pin floating HIGH and keeps the + * transceiver in standby regardless of XSTBYEN + * - LAT0=3D0: drive pin LOW =3D> transceiver active (not in standby) + * + * All three bits are included in the mask; only XSTBYEN is set in + * val, so TRIS0 and LAT0 are cleared to 0 atomically. + * + * Pin behaviour by mode: + * - Config mode: controlled by LAT0 (LAT0=3D0 =3D> LOW =3D> active) + * - Normal mode: hardware drives pin LOW (active) + * - Sleep mode: hardware drives pin HIGH (standby) + */ + return regmap_update_bits(priv->map_reg, MCP251XFD_REG_IOCON, + MCP251XFD_REG_IOCON_XSTBYEN | + MCP251XFD_REG_IOCON_TRIS0 | + MCP251XFD_REG_IOCON_LAT0, + MCP251XFD_REG_IOCON_XSTBYEN); +} + static int mcp251xfd_chip_start(struct mcp251xfd_priv *priv) { int err; @@ -796,6 +821,12 @@ static int mcp251xfd_chip_start(struct mcp251xfd_priv = *priv) =20 priv->can.state =3D CAN_STATE_ERROR_ACTIVE; =20 + if (priv->xstbyen) { + err =3D mcp251xfd_chip_xstbyen_enable(priv); + if (err) + goto out_chip_stop; + } + err =3D mcp251xfd_chip_set_normal_mode(priv); if (err) goto out_chip_stop; @@ -1805,6 +1836,11 @@ static int mcp251xfd_gpio_request(struct gpio_chip *= chip, unsigned int offset) u32 pin_mask =3D MCP251XFD_REG_IOCON_PM(offset); int ret; =20 + if (priv->xstbyen && offset =3D=3D 0) { + netdev_err(priv->ndev, "Can't use GPIO 0 with XSTBYEN!\n"); + return -EINVAL; + } + if (priv->rx_int && offset =3D=3D 1) { netdev_err(priv->ndev, "Can't use GPIO 1 with RX-INT!\n"); return -EINVAL; @@ -2271,6 +2307,7 @@ static int mcp251xfd_probe(struct spi_device *spi) priv->pll_enable =3D pll_enable; priv->reg_vdd =3D reg_vdd; priv->reg_xceiver =3D reg_xceiver; + priv->xstbyen =3D device_property_present(&spi->dev, "microchip,xstbyen"); priv->devtype_data =3D *(struct mcp251xfd_devtype_data *)spi_get_device_m= atch_data(spi); =20 /* Errata Reference: diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/sp= i/mcp251xfd/mcp251xfd.h index 085d7101e595..d3f4704e2678 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h @@ -672,6 +672,7 @@ struct mcp251xfd_priv { struct gpio_desc *rx_int; struct clk *clk; bool pll_enable; + bool xstbyen; struct regulator *reg_vdd; struct regulator *reg_xceiver; =20 --=20 2.34.1