summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Walleij <linusw@kernel.org>2026-06-01 16:24:47 +0300
committerLinus Walleij <linusw@kernel.org>2026-06-01 16:24:47 +0300
commit1ad41b54b21a950890e499fafc2facda134ec6ed (patch)
treeea4595d3cc23d3a1fef9cd71d2fa4ccfdf371acb
parent4c078b060e476709a044114baef9fbe2618854d8 (diff)
parent80538a53978bb9788080caea6e5ee3393dfb6a72 (diff)
downloadlinux-1ad41b54b21a950890e499fafc2facda134ec6ed.tar.xz
Merge tag 'renesas-pinctrl-for-v7.2-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel
pinctrl: renesas: Updates for v7.2 (take two) - Add GPIO config support on RZ/G2L, - Miscellaneous fixes and improvements. Signed-off-by: Linus Walleij <linusw@kernel.org>
-rw-r--r--drivers/pinctrl/renesas/pinctrl-rzg2l.c15
-rw-r--r--drivers/pinctrl/renesas/pinctrl-rzt2h.c13
-rw-r--r--drivers/pinctrl/renesas/pinctrl-rzv2m.c4
3 files changed, 18 insertions, 14 deletions
diff --git a/drivers/pinctrl/renesas/pinctrl-rzg2l.c b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
index a106e087c224..83c61dcb24b1 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzg2l.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
@@ -361,16 +361,16 @@ struct rzg2l_pinctrl_pin_settings {
* @pmc: PMC registers cache
* @pfc: PFC registers cache
* @iolh: IOLH registers cache
- * @pupd: PUPD registers cache
* @ien: IEN registers cache
+ * @pupd: PUPD registers cache
* @smt: SMT registers cache
* @sr: SR registers cache
* @nod: NOD registers cache
* @clone: Clone register cache
* @sd_ch: SD_CH registers cache
* @eth_poc: ET_POC registers cache
- * @other_poc: OTHER_POC register cache
* @oen: Output Enable register cache
+ * @other_poc: OTHER_POC register cache
* @qspi: QSPI registers cache
*/
struct rzg2l_pinctrl_reg_cache {
@@ -388,7 +388,7 @@ struct rzg2l_pinctrl_reg_cache {
u8 sd_ch[2];
u8 eth_poc[2];
u8 oen;
- u8 other_poc;
+ u8 other_poc;
u8 qspi;
};
@@ -1281,7 +1281,7 @@ static int rzg2l_read_oen(struct rzg2l_pinctrl *pctrl, unsigned int _pin)
int bit;
if (!pctrl->data->pin_to_oen_bit)
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
bit = pctrl->data->pin_to_oen_bit(pctrl, _pin);
if (bit < 0)
@@ -1323,7 +1323,7 @@ static int rzg2l_write_oen(struct rzg2l_pinctrl *pctrl, unsigned int _pin, u8 oe
u8 val;
if (!pctrl->data->pin_to_oen_bit)
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
bit = pctrl->data->pin_to_oen_bit(pctrl, _pin);
if (bit < 0)
@@ -1754,7 +1754,7 @@ static int rzg2l_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
break;
default:
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
}
}
@@ -1837,7 +1837,7 @@ static int rzg2l_pinctrl_pinconf_group_get(struct pinctrl_dev *pctldev,
/* Check config matching between to pin */
if (i && prev_config != *config)
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
prev_config = *config;
}
@@ -3212,6 +3212,7 @@ static int rzg2l_gpio_register(struct rzg2l_pinctrl *pctrl)
chip->direction_output = rzg2l_gpio_direction_output;
chip->get = rzg2l_gpio_get;
chip->set = rzg2l_gpio_set;
+ chip->set_config = gpiochip_generic_config;
chip->label = name;
chip->parent = pctrl->dev;
chip->owner = THIS_MODULE;
diff --git a/drivers/pinctrl/renesas/pinctrl-rzt2h.c b/drivers/pinctrl/renesas/pinctrl-rzt2h.c
index 4ba11a83b604..eb70aee39f1a 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzt2h.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzt2h.c
@@ -191,6 +191,12 @@ static void rzt2h_pinctrl_set_pfc_mode(struct rzt2h_pinctrl *pctrl,
guard(raw_spinlock_irqsave)(&pctrl->lock);
+ reg64 = rzt2h_pinctrl_readq(pctrl, port, PFC(port));
+ /* Check if pin is already configured to the desired function */
+ if ((rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(pin)) &&
+ field_get(PFC_PIN_MASK(pin), reg64) == func)
+ return;
+
/* Set pin to 'Non-use (Hi-Z input protection)' */
reg16 = rzt2h_pinctrl_readw(pctrl, port, PM(port));
reg16 &= ~PM_PIN_MASK(pin);
@@ -200,7 +206,6 @@ static void rzt2h_pinctrl_set_pfc_mode(struct rzt2h_pinctrl *pctrl,
rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, true);
/* Select Pin function mode with PFC register */
- reg64 = rzt2h_pinctrl_readq(pctrl, port, PFC(port));
reg64 &= ~PFC_PIN_MASK(pin);
rzt2h_pinctrl_writeq(pctrl, port, reg64 | ((u64)func << (pin * 8)), PFC(port));
@@ -1140,7 +1145,7 @@ static int rzt2h_pinctrl_register(struct rzt2h_pinctrl *pctrl)
struct pinctrl_desc *desc = &pctrl->desc;
struct device *dev = pctrl->dev;
struct pinctrl_pin_desc *pins;
- unsigned int i, j;
+ unsigned int i;
int ret;
desc->name = DRV_NAME;
@@ -1157,11 +1162,9 @@ static int rzt2h_pinctrl_register(struct rzt2h_pinctrl *pctrl)
pctrl->pins = pins;
desc->pins = pins;
- for (i = 0, j = 0; i < pctrl->data->n_port_pins; i++) {
+ for (i = 0; i < pctrl->data->n_port_pins; i++) {
pins[i].number = i;
pins[i].name = rzt2h_gpio_names[i];
- if (i && !(i % RZT2H_PINS_PER_PORT))
- j++;
}
ret = devm_pinctrl_register_and_init(dev, desc, pctrl, &pctrl->pctl);
diff --git a/drivers/pinctrl/renesas/pinctrl-rzv2m.c b/drivers/pinctrl/renesas/pinctrl-rzv2m.c
index 827b3e91a6cc..9029d1947bbb 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzv2m.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzv2m.c
@@ -661,7 +661,7 @@ static int rzv2m_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
}
default:
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
}
}
@@ -711,7 +711,7 @@ static int rzv2m_pinctrl_pinconf_group_get(struct pinctrl_dev *pctldev,
/* Check config matches previous pins */
if (i && prev_config != *config)
- return -EOPNOTSUPP;
+ return -ENOTSUPP;
prev_config = *config;
}