]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
pinctrl: renesas: Move drive strength configuration into sh_pfc_soc_operations
authorHai Pham <hai.pham.ud@renesas.com>
Mon, 27 Oct 2025 16:53:53 +0000 (17:53 +0100)
committerMarek Vasut <marek.vasut+renesas@mailbox.org>
Thu, 6 Nov 2025 19:09:59 +0000 (20:09 +0100)
The upcoming Renesas R-Car Gen5 uses different mapping of bits in DRV
control register, which is incompatible with existing DRV register bit
mapping. Add .set_drive_strength callback into sh_pfc_soc_operations
and call it from sh_pfc_pinconf_set(), to allow each SoC specific PFC
driver to implement replacement .set_drive_strength. Make the current
sh_pfc_pinconf_set_drive_strength() non-static, rename it with rcar_
prefix, and pass it as .set_drive_strength for existing PFC drivers.
This is a preparatory patch for R-Car Gen5, no functional change.

Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
[Marek: Consistently use .set_drive_strength() and pass exisiting
        sh_pfc_pinconf_set_drive_strength() as its parameter for
all PFC drivers. Rewrite commit message.]

17 files changed:
drivers/pinctrl/renesas/pfc-r8a7790.c
drivers/pinctrl/renesas/pfc-r8a7791.c
drivers/pinctrl/renesas/pfc-r8a7792.c
drivers/pinctrl/renesas/pfc-r8a7794.c
drivers/pinctrl/renesas/pfc-r8a77951.c
drivers/pinctrl/renesas/pfc-r8a7796.c
drivers/pinctrl/renesas/pfc-r8a77965.c
drivers/pinctrl/renesas/pfc-r8a77970.c
drivers/pinctrl/renesas/pfc-r8a77980.c
drivers/pinctrl/renesas/pfc-r8a77990.c
drivers/pinctrl/renesas/pfc-r8a77995.c
drivers/pinctrl/renesas/pfc-r8a779a0.c
drivers/pinctrl/renesas/pfc-r8a779f0.c
drivers/pinctrl/renesas/pfc-r8a779g0.c
drivers/pinctrl/renesas/pfc-r8a779h0.c
drivers/pinctrl/renesas/pfc.c
drivers/pinctrl/renesas/sh_pfc.h

index 4d6ce06cf16790ce42d45dcce547051322f981c3..e986c9fd6c1140c32aa945042ee3c321dc7c5d08 100644 (file)
@@ -6186,6 +6186,7 @@ static const struct sh_pfc_soc_operations r8a7790_pfc_ops = {
        .pin_to_pocctrl = r8a7790_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A7742
index c6d761bb378d94185b5b74543784591aebadb490..90dedd02b69ef0e54c20e1d242c5399bd1cb1702 100644 (file)
@@ -6936,6 +6936,7 @@ static const struct sh_pfc_soc_operations r8a7791_pfc_ops = {
        .pin_to_pocctrl = r8a7791_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A7743
index d2ff1d9d1a699c9eb1c10241317a93d11ece9094..fa44028724bab00fd76f7566e6cdaf41f82c1a0e 100644 (file)
@@ -3145,6 +3145,7 @@ static const struct pinmux_bias_reg pinmux_bias_regs[] = {
 static const struct sh_pfc_soc_operations r8a7792_pfc_ops = {
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a7792_pinmux_info = {
index a1fa1776baeaadd1697630da71d5db532c1d5e9f..1ee932f9c2e10b1e738387d56655f8c867526276 100644 (file)
@@ -5887,6 +5887,7 @@ static const struct sh_pfc_soc_operations r8a7794_pfc_ops = {
        .pin_to_pocctrl = r8a7794_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A7745
index 8ddcbfbbd64f905a2f52618472219491a6a7a737..99b90e6df0da076e1299a510016c9757ec09e51a 100644 (file)
@@ -6184,6 +6184,7 @@ static const struct sh_pfc_soc_operations r8a77951_pfc_ops = {
        .pin_to_pocctrl = r8a77951_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A774E1
index 7bc9fb709eab85529cc931c561ea56d6d8827691..a587dfb89d488a8e1cf988eef9eacfde9484e39e 100644 (file)
@@ -6137,6 +6137,7 @@ static const struct sh_pfc_soc_operations r8a7796_pfc_ops = {
        .pin_to_pocctrl = r8a7796_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A774A1
index 97fde005de6f5f88e784ec17fd1ed61dabf8606e..9049d762a59e5ef3f54d60aa9a367b9abc03c49e 100644 (file)
@@ -6378,6 +6378,7 @@ static const struct sh_pfc_soc_operations r8a77965_pfc_ops = {
        .pin_to_pocctrl = r8a77965_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A774B1
index 3a0a310c5fe79338996b2792441103148fe124f1..c4fc6c8e09c4555ed59251d7f6c45d5f6ff245b6 100644 (file)
@@ -2567,6 +2567,7 @@ static const struct sh_pfc_soc_operations r8a77970_pfc_ops = {
        .pin_to_pocctrl = r8a77970_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a77970_pinmux_info = {
index 59f4bdde2028f2340a5a0f61b70389af53a30f7a..8fd7e165bbe4ad891ab1cf585dde0f3dddb6cb33 100644 (file)
@@ -3084,6 +3084,7 @@ static const struct sh_pfc_soc_operations r8a77980_pfc_ops = {
        .pin_to_pocctrl = r8a77980_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a77980_pinmux_info = {
index 75b7429bc0dafd245baf05ab35f84291d9ca2abc..3607a559c6df6d3383427993b0b331851f303ab1 100644 (file)
@@ -5336,6 +5336,7 @@ static const struct sh_pfc_soc_operations r8a77990_pfc_ops = {
        .pin_to_pocctrl = r8a77990_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 #ifdef CONFIG_PINCTRL_PFC_R8A774C0
index 6fe2d743418366e03f1c9a2793af31da64277b0c..8f2bda5d6d3118c75bfd4b6fe07e195274a18624 100644 (file)
@@ -3210,6 +3210,7 @@ static const struct sh_pfc_soc_operations r8a77995_pfc_ops = {
        .pin_to_pocctrl = r8a77995_pin_to_pocctrl,
        .get_bias = r8a77995_pinmux_get_bias,
        .set_bias = r8a77995_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a77995_pinmux_info = {
index 39690bd5d073b5c8de4fe8537c80ed6b147b7fb3..82d39a3b36615be0995d64487992f9c866d99320 100644 (file)
@@ -4382,6 +4382,7 @@ static const struct sh_pfc_soc_operations r8a779a0_pfc_ops = {
        .pin_to_pocctrl = r8a779a0_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a779a0_pinmux_info = {
index 2b629135f6954a87f9c8002bbef6cabf3602de92..78659eaa187d89484df163157375b93e5c8f8a92 100644 (file)
@@ -2094,6 +2094,7 @@ static const struct sh_pfc_soc_operations r8a779f0_pfc_ops = {
        .pin_to_pocctrl = r8a779f0_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a779f0_pinmux_info = {
index f411be8b87919b0aed06010b7a45b6155cfaf59f..ad113cd3e5d4dcf8e811b6c0877dcb7652b6cb5b 100644 (file)
@@ -4490,6 +4490,7 @@ static const struct sh_pfc_soc_operations r8a779g0_pin_ops = {
        .pin_to_pocctrl = r8a779g0_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a779g0_pinmux_info = {
index 87af037a8d3dc6b9556a6a4c34549d72a459d216..d6c2fbcf85461359f9499eef05004163191ac362 100644 (file)
@@ -4143,6 +4143,7 @@ static const struct sh_pfc_soc_operations r8a779h0_pin_ops = {
        .pin_to_pocctrl = r8a779h0_pin_to_pocctrl,
        .get_bias = rcar_pinmux_get_bias,
        .set_bias = rcar_pinmux_set_bias,
+       .set_drive_strength = rcar_pinconf_set_drive_strength,
 };
 
 const struct sh_pfc_soc_info r8a779h0_pinmux_info = {
index dfbb8457bbdc77d2526c45e20c95f65d9a4223ef..a7fd37a2177883bf97e2de27f8d9631b4837b0c2 100644 (file)
@@ -743,8 +743,8 @@ sh_pfc_pinconf_find_drive_strength_reg(struct sh_pfc *pfc, unsigned int pin,
        return NULL;
 }
 
-static int sh_pfc_pinconf_set_drive_strength(struct sh_pfc *pfc,
-                                            unsigned int pin, u16 strength)
+int rcar_pinconf_set_drive_strength(struct sh_pfc *pfc,
+                                   unsigned int pin, u16 strength)
 {
        unsigned int offset;
        unsigned int size;
@@ -831,7 +831,10 @@ static int sh_pfc_pinconf_set(struct sh_pfc_pinctrl *pmx, unsigned _pin,
                break;
 
        case PIN_CONFIG_DRIVE_STRENGTH:
-               ret = sh_pfc_pinconf_set_drive_strength(pfc, _pin, arg);
+               if (!pfc->info->ops || !pfc->info->ops->set_drive_strength)
+                       return -ENOTSUPP;
+
+               ret = pfc->info->ops->set_drive_strength(pfc, _pin, arg);
                if (ret < 0)
                        return ret;
 
index 79c6125a0d7f3ab801c5a5604a79b3dcdad24de9..505bc90983f27d4c2ec68f1994b6c5d718ac12d6 100644 (file)
@@ -245,6 +245,8 @@ struct sh_pfc_soc_operations {
                         unsigned int bias);
        int (*pin_to_pocctrl)(unsigned int pin, u32 *pocctrl);
        int (*pin_to_portcr)(unsigned int pin);
+       int (*set_drive_strength)(struct sh_pfc *pfc, unsigned int pin,
+                                 u16 strength);
 };
 
 struct sh_pfc_soc_info {
@@ -741,5 +743,7 @@ rcar_pin_to_bias_reg(const struct sh_pfc_soc_info *info, unsigned int pin,
 unsigned int rcar_pinmux_get_bias(struct sh_pfc *pfc, unsigned int pin);
 void rcar_pinmux_set_bias(struct sh_pfc *pfc, unsigned int pin,
                          unsigned int bias);
+int rcar_pinconf_set_drive_strength(struct sh_pfc *pfc,
+                                   unsigned int pin, u16 strength);
 
 #endif /* __SH_PFC_H */