From nobody Thu Apr 2 09:45:49 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 B47053A5E9B for ; Tue, 17 Mar 2026 10:16:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773742598; cv=none; b=RQnD/uYYiMEcZnXaPKvFTs/PJGYfy3XVsOGutJvAdJG9A6MXkHJzSOmJ1UFKJwaZGo3a6pQgDQw7w48bwsJh+hXvfsNz5u2tbHfdfSxiUrXjLgfQRiB4urJFTXSrWgnSnBIFftqMTCUagxEKzUjObNO1TWxlwlNeZGTE1fV7sHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773742598; c=relaxed/simple; bh=Vv5jfU2xp/7PSp/stUyAYi5FI6A/UUcopnqGXFTucWE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eHJGgekvD787xp6rpDRG38TNfzqt6Lq7e6vyXGaOtvcQdRAwuZ/sz8F8xP6/RZPH3eXmlLochMEGXXjFWm+0LxKQl454DJkY8xVrIQJhOZIuWcfpgfuikgkg6Z4/RHHCXILORbQCrpGdNaJY76A+Fu4QVtyUZbeaz2wKtHRNJrA= 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=LsrIK9ud; arc=none smtp.client-ip=209.85.128.42 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="LsrIK9ud" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-483487335c2so52802385e9.2 for ; Tue, 17 Mar 2026 03:16:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773742595; x=1774347395; 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=HN1wjkx+gppfVALBMPSUGdorIm/d8VSpYPy83Z+m/zI=; b=LsrIK9udER2U6WmrhxnraD4G9lbVxuIrg6lxELAuHvApfQ76Y7rElYfRV+6L0vcg98 zE+LqYmV9MzHH0z/+A15QVnnuOnzmPvwl2L3I/L2XR3CNGEqADC5NLu93sKALxRyyMHN 6h1VuBzWs0KiBauJOQqm4RCV0CbeQPfhpSl6RbiUUpEEb67p6NHAquUsyqsaKKe3qdZq wWAOBb6cNReAJBq6DXBCIfxPcjIIe5axrPy3B+BprIrgy8YxxUYGJLuopWN9RbIXvCMo FwIuAlTZEeVVX+CLnZYPT46jjBb3CJZPpJxaDFZLxKkT/H+9mi+4wff5obWTNVWBH5mH sFAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773742595; x=1774347395; 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=HN1wjkx+gppfVALBMPSUGdorIm/d8VSpYPy83Z+m/zI=; b=k38rH8v3WSjDgVOVHENsTYqHpltXetNVFJBFV9iwq75ivwojx9jTthxxIcpYPr+EBu 9sG0CQi1HiQju0jq20L5SxOA0QBnb0FeWGsIUJzWP/kcGwz5ctlveIOnH3MwhQuzi9uh Dgzlctqmn6NSbgYp8gsqkYvX6NIAyezz5YY7xSWurchC3JEZK9dwNLas2VT6C0BRJU9e JeajiHUntcRl+HwYMIx6NwokqQdLdnpNkmdqSFkbyntwq4hp4NHVBBio5SGwhO4Ie6Xc dwTIUVhyMagcdQy9Q3cvb45eR4vcIHCZG48spY2iIDnKtn/3Xxhm6RBfJBSgqbpu9mSY x+7A== X-Forwarded-Encrypted: i=1; AJvYcCUxOrCrZW0qVbXdEUgXlb/Is/KBCjKLqUOQwkArodeg15deAJYVWNSk7kdl7AzJlSf1o7CBTRfuMYx9NK8=@vger.kernel.org X-Gm-Message-State: AOJu0YwMywLV0fxooD6VNwDzLhGhE9UBzlKL6VRnOG2/5D4TVwmZBXR1 51k1psQvhCzsffq2X9RuwehTRvuelKd66PRawZTKjAivCcdI6eanL2Tz X-Gm-Gg: ATEYQzzXAWytoGZM9BNqQw6J81Skn87Up35mHPUNl2Zv8gnUvmMk0Y0EEuL82sm3s1g hEFpWzhW9RTmjZToE7Nz3RohJe0CyboOvxlhegSMuMw8wS+g6yqz4FxdZX00xxo9p2t9A3M3Cq7 wnzgpnTAbUSYm6KqYFJWQ7bc91kB25pnOI6JxAHhUfXe8Zdzk3Di2VRzX5z6U0kf9GuZyvnEGwl kJ5E4MLKtDD3ZbFUOpsep02Oky5UlupZOpaywvDuNOfYLEMHKq5TYYc8udU/leE7iwI+lxV970z SxmEeHbSXxe+QpjtX8jaQy+XamOvC4BMxF37AZWW1axK5KihEb3Nf83c2LgY/Z6g5odKC/tp8H+ IJHxyMAgMG9h+Z+X7DU0ftYfOOW+yjtvalRNyyD0Td5sFVc4m3OLO3IAIhETK5OT+n+G+a26xT3 8ZW6JbiXMdfLFlReqrc43NLqK3EDgcDR4vIMd1OF2zDgu432VO X-Received: by 2002:a05:600c:a4a:b0:47f:f952:d207 with SMTP id 5b1f17b1804b1-485566facc8mr272444065e9.19.1773742594946; Tue, 17 Mar 2026 03:16:34 -0700 (PDT) Received: from localhost.localdomain ([2a00:23c4:a758:8a01:e16b:fc56:e220:9aa9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4856eaee510sm53903275e9.14.2026.03.17.03.16.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Mar 2026 03:16:34 -0700 (PDT) From: Biju X-Google-Original-From: Biju To: Geert Uytterhoeven , Linus Walleij Cc: Biju Das , linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das Subject: [PATCH v3 4/8] pinctrl: renesas: rzg2l: Add support for selecting power source for {WDT,AWO,ISO} Date: Tue, 17 Mar 2026 10:16:17 +0000 Message-ID: <20260317101627.174491-5-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260317101627.174491-1-biju.das.jz@bp.renesas.com> References: <20260317101627.174491-1-biju.das.jz@bp.renesas.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" From: Biju Das The RZ/G3L SoC has support for setting power source that are not controlled by the following voltage control registers: - SD_CH{0,1,2}_POC, XSPI_POC, ETH{0,1}_POC, I3C_SET.POC Add support for selecting voltages using OTHER_POC register for setting I/O domain voltage for WDT, ISO and AWO. Signed-off-by: Biju Das --- v2->v3: * No change v1->v2: * No change --- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 40 +++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/drivers/pinctrl/renesas/pinctrl-rzg2l.c b/drivers/pinctrl/rene= sas/pinctrl-rzg2l.c index 3e5436acdbbe..8163232a36dc 100644 --- a/drivers/pinctrl/renesas/pinctrl-rzg2l.c +++ b/drivers/pinctrl/renesas/pinctrl-rzg2l.c @@ -63,10 +63,18 @@ #define PIN_CFG_SMT BIT(16) /* Schmitt-trigger input control */ #define PIN_CFG_ELC BIT(17) #define PIN_CFG_IOLH_RZV2H BIT(18) +#define PIN_CFG_PVDD1833_OTH_AWO_POC BIT(19) /* known on RZ/G3L only */ +#define PIN_CFG_PVDD1833_OTH_ISO_POC BIT(20) /* known on RZ/G3L only */ +#define PIN_CFG_WDTOVF_N_POC BIT(21) /* known on RZ/G3L only */ =20 #define RZG2L_SINGLE_PIN BIT_ULL(63) /* Dedicated pin */ #define RZG2L_VARIABLE_CFG BIT_ULL(62) /* Variable cfg for port pins */ =20 +#define PIN_CFG_OTHER_POC_MASK \ + (PIN_CFG_PVDD1833_OTH_AWO_POC | \ + PIN_CFG_PVDD1833_OTH_ISO_POC | \ + PIN_CFG_WDTOVF_N_POC) + #define RZG2L_MPXED_COMMON_PIN_FUNCS(group) \ (PIN_CFG_IOLH_##group | \ PIN_CFG_PUPD | \ @@ -146,6 +154,7 @@ #define SD_CH(off, ch) ((off) + (ch) * 4) #define ETH_POC(off, ch) ((off) + (ch) * 4) #define QSPI (0x3008) +#define OTHER_POC (0x3028) /* known on RZ/G3L only */ =20 #define PVDD_2500 2 /* I/O domain voltage 2.5V */ #define PVDD_1800 1 /* I/O domain voltage <=3D 1.8V */ @@ -906,6 +915,12 @@ static int rzg2l_caps_to_pwr_reg(const struct rzg2l_re= gister_offsets *regs, u32 return ETH_POC(regs->eth_poc, 1); if (caps & PIN_CFG_IO_VMC_QSPI) return QSPI; + if (caps & PIN_CFG_PVDD1833_OTH_AWO_POC) + return OTHER_POC; + if (caps & PIN_CFG_PVDD1833_OTH_ISO_POC) + return OTHER_POC; + if (caps & PIN_CFG_WDTOVF_N_POC) + return OTHER_POC; =20 return -EINVAL; } @@ -925,6 +940,13 @@ static int rzg2l_get_power_source(struct rzg2l_pinctrl= *pctrl, u32 pin, u32 caps return pwr_reg; =20 val =3D readb(pctrl->base + pwr_reg); + if (pwr_reg =3D=3D OTHER_POC) { + u32 poc =3D FIELD_GET(PIN_CFG_OTHER_POC_MASK, caps); + u8 offs =3D ffs(poc) - 1; + + val =3D (val >> offs) & 0x1; + } + switch (val) { case PVDD_1800: return 1800; @@ -943,6 +965,7 @@ static int rzg2l_set_power_source(struct rzg2l_pinctrl = *pctrl, u32 pin, u32 caps const struct rzg2l_hwcfg *hwcfg =3D pctrl->data->hwcfg; const struct rzg2l_register_offsets *regs =3D &hwcfg->regs; int pwr_reg; + u8 poc_val; u8 val; =20 if (caps & PIN_CFG_SOFT_PS) { @@ -952,15 +975,15 @@ static int rzg2l_set_power_source(struct rzg2l_pinctr= l *pctrl, u32 pin, u32 caps =20 switch (ps) { case 1800: - val =3D PVDD_1800; + poc_val =3D PVDD_1800; break; case 2500: if (!(caps & (PIN_CFG_IO_VMC_ETH0 | PIN_CFG_IO_VMC_ETH1))) return -EINVAL; - val =3D PVDD_2500; + poc_val =3D PVDD_2500; break; case 3300: - val =3D PVDD_3300; + poc_val =3D PVDD_3300; break; default: return -EINVAL; @@ -970,6 +993,17 @@ static int rzg2l_set_power_source(struct rzg2l_pinctrl= *pctrl, u32 pin, u32 caps if (pwr_reg < 0) return pwr_reg; =20 + if (pwr_reg =3D=3D OTHER_POC) { + u32 poc =3D FIELD_GET(PIN_CFG_OTHER_POC_MASK, caps); + u8 offs =3D ffs(poc) - 1; + + val =3D readb(pctrl->base + pwr_reg); + val &=3D ~BIT(offs); + val |=3D (poc_val << offs); + } else { + val =3D poc_val; + } + writeb(val, pctrl->base + pwr_reg); pctrl->settings[pin].power_source =3D ps; =20 --=20 2.43.0