mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] pinctrl: realtek: Write the encoded slew rate value
@ 2026-10-31  8:18 Baek Kyu, Kim
  2026-11-03 12:40 ` Yu-Chun Lin [林祐君]
  0 siblings, 1 reply; 2+ messages in thread
From: Baek Kyu, Kim @ 2026-10-31  8:18 UTC (permalink / raw)
  To: Linus Walleij, Yu-Chun Lin
  Cc: Baek Kyu, Kim, James Tai, Andreas Färber, linux-arm-kernel,
	linux-realtek-soc, linux-gpio, linux-kernel

rtd_pconf_parse_conf() maps slew-rate arguments 1, 10, 20 and 30 to the
two-bit field values 0, 1, 2 and 3. However, it shifts the original
argument into the register value instead of using the computed encoding.
After masking, these arguments write 1, 2, 0 and 2 respectively. In
particular, the distinct 10 and 30 settings write the same field value.

Use set_val when constructing the register value so that both individual
pin and group configuration apply the existing conversion. Leave argument
validation, field offsets, masks and regmap error handling unchanged.

Fixes: dcc9334435b0 ("pinctrl: realtek: add support for slew rate, input voltage and high VIL")
Signed-off-by: Baek Kyu, Kim <pocj8ur4in@gmail.com>
---
An arm64 QEMU kernel exercised the RTD1625 MAIN2 pin and group
state-selection paths using the real pinctrl callbacks and a synthetic
regmap backend. A slew-rate request of 10 wrote field value 2 before
the change and 1 after it, while adjacent bits were preserved. No
board device tree, physical MMIO or signal timing was tested.

 drivers/pinctrl/realtek/pinctrl-rtd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/realtek/pinctrl-rtd.c b/drivers/pinctrl/realtek/pinctrl-rtd.c
index 60222339726b4..656c281c557ac 100644
--- a/drivers/pinctrl/realtek/pinctrl-rtd.c
+++ b/drivers/pinctrl/realtek/pinctrl-rtd.c
@@ -438,7 +438,7 @@ static int rtd_pconf_parse_conf(struct rtd_pinctrl *data,
 		sr_off = config_desc->base_bit + config_desc->slew_rate_offset;
 		reg_off = config_desc->reg_offset;
 		mask = 0x3 << sr_off;
-		val = arg << sr_off;
+		val = set_val << sr_off;
 		break;
 
 	case PIN_CONFIG_INPUT_VOLTAGE_UV:
-- 
2.55.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* RE: [PATCH] pinctrl: realtek: Write the encoded slew rate value
  2026-10-31  8:18 [PATCH] pinctrl: realtek: Write the encoded slew rate value Baek Kyu, Kim
@ 2026-11-03 12:40 ` Yu-Chun Lin [林祐君]
  0 siblings, 0 replies; 2+ messages in thread
From: Yu-Chun Lin [林祐君] @ 2026-11-03 12:40 UTC (permalink / raw)
  To: Baek Kyu, Kim, Linus Walleij
  Cc: James Tai [戴志峰],
	Andreas Färber, linux-arm-kernel, linux-realtek-soc,
	linux-gpio, linux-kernel

> rtd_pconf_parse_conf() maps slew-rate arguments 1, 10, 20 and 30 to the
> two-bit field values 0, 1, 2 and 3. However, it shifts the original argument into
> the register value instead of using the computed encoding.
> After masking, these arguments write 1, 2, 0 and 2 respectively. In particular,
> the distinct 10 and 30 settings write the same field value.
> 
> Use set_val when constructing the register value so that both individual pin
> and group configuration apply the existing conversion. Leave argument
> validation, field offsets, masks and regmap error handling unchanged.
> 
> Fixes: dcc9334435b0 ("pinctrl: realtek: add support for slew rate, input voltage
> and high VIL")
> Signed-off-by: Baek Kyu, Kim <pocj8ur4in@gmail.com>

Reviewed-by: Yu-Chun Lin <eleanor.lin@realtek.com>
Tested-by: Yu-Chun Lin <eleanor.lin@realtek.com>

Thanks!
Yu-Chun

> ---
> An arm64 QEMU kernel exercised the RTD1625 MAIN2 pin and group
> state-selection paths using the real pinctrl callbacks and a synthetic regmap
> backend. A slew-rate request of 10 wrote field value 2 before the change and 1
> after it, while adjacent bits were preserved. No board device tree, physical
> MMIO or signal timing was tested.
> 
>  drivers/pinctrl/realtek/pinctrl-rtd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pinctrl/realtek/pinctrl-rtd.c
> b/drivers/pinctrl/realtek/pinctrl-rtd.c
> index 60222339726b4..656c281c557ac 100644
> --- a/drivers/pinctrl/realtek/pinctrl-rtd.c
> +++ b/drivers/pinctrl/realtek/pinctrl-rtd.c
> @@ -438,7 +438,7 @@ static int rtd_pconf_parse_conf(struct rtd_pinctrl
> *data,
>                 sr_off = config_desc->base_bit +
> config_desc->slew_rate_offset;
>                 reg_off = config_desc->reg_offset;
>                 mask = 0x3 << sr_off;
> -               val = arg << sr_off;
> +               val = set_val << sr_off;
>                 break;
> 
>         case PIN_CONFIG_INPUT_VOLTAGE_UV:
> --
> 2.55.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-03 12:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-31  8:18 [PATCH] pinctrl: realtek: Write the encoded slew rate value Baek Kyu, Kim
2026-11-03 12:40 ` Yu-Chun Lin [林祐君]

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®