Skip to content

Commit 1ad41b5

Browse files
committed
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>
2 parents 4c078b0 + 80538a5 commit 1ad41b5

3 files changed

Lines changed: 18 additions & 14 deletions

File tree

drivers/pinctrl/renesas/pinctrl-rzg2l.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -361,16 +361,16 @@ struct rzg2l_pinctrl_pin_settings {
361361
* @pmc: PMC registers cache
362362
* @pfc: PFC registers cache
363363
* @iolh: IOLH registers cache
364-
* @pupd: PUPD registers cache
365364
* @ien: IEN registers cache
365+
* @pupd: PUPD registers cache
366366
* @smt: SMT registers cache
367367
* @sr: SR registers cache
368368
* @nod: NOD registers cache
369369
* @clone: Clone register cache
370370
* @sd_ch: SD_CH registers cache
371371
* @eth_poc: ET_POC registers cache
372-
* @other_poc: OTHER_POC register cache
373372
* @oen: Output Enable register cache
373+
* @other_poc: OTHER_POC register cache
374374
* @qspi: QSPI registers cache
375375
*/
376376
struct rzg2l_pinctrl_reg_cache {
@@ -388,7 +388,7 @@ struct rzg2l_pinctrl_reg_cache {
388388
u8 sd_ch[2];
389389
u8 eth_poc[2];
390390
u8 oen;
391-
u8 other_poc;
391+
u8 other_poc;
392392
u8 qspi;
393393
};
394394

@@ -1281,7 +1281,7 @@ static int rzg2l_read_oen(struct rzg2l_pinctrl *pctrl, unsigned int _pin)
12811281
int bit;
12821282

12831283
if (!pctrl->data->pin_to_oen_bit)
1284-
return -EOPNOTSUPP;
1284+
return -ENOTSUPP;
12851285

12861286
bit = pctrl->data->pin_to_oen_bit(pctrl, _pin);
12871287
if (bit < 0)
@@ -1323,7 +1323,7 @@ static int rzg2l_write_oen(struct rzg2l_pinctrl *pctrl, unsigned int _pin, u8 oe
13231323
u8 val;
13241324

13251325
if (!pctrl->data->pin_to_oen_bit)
1326-
return -EOPNOTSUPP;
1326+
return -ENOTSUPP;
13271327

13281328
bit = pctrl->data->pin_to_oen_bit(pctrl, _pin);
13291329
if (bit < 0)
@@ -1754,7 +1754,7 @@ static int rzg2l_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
17541754
break;
17551755

17561756
default:
1757-
return -EOPNOTSUPP;
1757+
return -ENOTSUPP;
17581758
}
17591759
}
17601760

@@ -1837,7 +1837,7 @@ static int rzg2l_pinctrl_pinconf_group_get(struct pinctrl_dev *pctldev,
18371837

18381838
/* Check config matching between to pin */
18391839
if (i && prev_config != *config)
1840-
return -EOPNOTSUPP;
1840+
return -ENOTSUPP;
18411841

18421842
prev_config = *config;
18431843
}
@@ -3212,6 +3212,7 @@ static int rzg2l_gpio_register(struct rzg2l_pinctrl *pctrl)
32123212
chip->direction_output = rzg2l_gpio_direction_output;
32133213
chip->get = rzg2l_gpio_get;
32143214
chip->set = rzg2l_gpio_set;
3215+
chip->set_config = gpiochip_generic_config;
32153216
chip->label = name;
32163217
chip->parent = pctrl->dev;
32173218
chip->owner = THIS_MODULE;

drivers/pinctrl/renesas/pinctrl-rzt2h.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ static void rzt2h_pinctrl_set_pfc_mode(struct rzt2h_pinctrl *pctrl,
191191

192192
guard(raw_spinlock_irqsave)(&pctrl->lock);
193193

194+
reg64 = rzt2h_pinctrl_readq(pctrl, port, PFC(port));
195+
/* Check if pin is already configured to the desired function */
196+
if ((rzt2h_pinctrl_readb(pctrl, port, PMC(port)) & BIT(pin)) &&
197+
field_get(PFC_PIN_MASK(pin), reg64) == func)
198+
return;
199+
194200
/* Set pin to 'Non-use (Hi-Z input protection)' */
195201
reg16 = rzt2h_pinctrl_readw(pctrl, port, PM(port));
196202
reg16 &= ~PM_PIN_MASK(pin);
@@ -200,7 +206,6 @@ static void rzt2h_pinctrl_set_pfc_mode(struct rzt2h_pinctrl *pctrl,
200206
rzt2h_pinctrl_set_gpio_en(pctrl, port, pin, true);
201207

202208
/* Select Pin function mode with PFC register */
203-
reg64 = rzt2h_pinctrl_readq(pctrl, port, PFC(port));
204209
reg64 &= ~PFC_PIN_MASK(pin);
205210
rzt2h_pinctrl_writeq(pctrl, port, reg64 | ((u64)func << (pin * 8)), PFC(port));
206211

@@ -1140,7 +1145,7 @@ static int rzt2h_pinctrl_register(struct rzt2h_pinctrl *pctrl)
11401145
struct pinctrl_desc *desc = &pctrl->desc;
11411146
struct device *dev = pctrl->dev;
11421147
struct pinctrl_pin_desc *pins;
1143-
unsigned int i, j;
1148+
unsigned int i;
11441149
int ret;
11451150

11461151
desc->name = DRV_NAME;
@@ -1157,11 +1162,9 @@ static int rzt2h_pinctrl_register(struct rzt2h_pinctrl *pctrl)
11571162
pctrl->pins = pins;
11581163
desc->pins = pins;
11591164

1160-
for (i = 0, j = 0; i < pctrl->data->n_port_pins; i++) {
1165+
for (i = 0; i < pctrl->data->n_port_pins; i++) {
11611166
pins[i].number = i;
11621167
pins[i].name = rzt2h_gpio_names[i];
1163-
if (i && !(i % RZT2H_PINS_PER_PORT))
1164-
j++;
11651168
}
11661169

11671170
ret = devm_pinctrl_register_and_init(dev, desc, pctrl, &pctrl->pctl);

drivers/pinctrl/renesas/pinctrl-rzv2m.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ static int rzv2m_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
661661
}
662662

663663
default:
664-
return -EOPNOTSUPP;
664+
return -ENOTSUPP;
665665
}
666666
}
667667

@@ -711,7 +711,7 @@ static int rzv2m_pinctrl_pinconf_group_get(struct pinctrl_dev *pctldev,
711711

712712
/* Check config matches previous pins */
713713
if (i && prev_config != *config)
714-
return -EOPNOTSUPP;
714+
return -ENOTSUPP;
715715

716716
prev_config = *config;
717717
}

0 commit comments

Comments
 (0)