pinctrl: sh-pfc: Add sh_pfc_pin_to_bias_reg() helper
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 29 Sep 2017 13:44:38 +0000 (15:44 +0200)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 20 Oct 2017 09:37:03 +0000 (11:37 +0200)
Add a helper to look up bias registers and bit number for a specific
pin, using the generic bias register description.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/pinctrl/sh-pfc/core.c
drivers/pinctrl/sh-pfc/core.h

index 8b422ac..01c408a 100644 (file)
@@ -404,6 +404,26 @@ sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info,
        return NULL;
 }
 
+const struct pinmux_bias_reg *
+sh_pfc_pin_to_bias_reg(const struct sh_pfc *pfc, unsigned int pin,
+                      unsigned int *bit)
+{
+       unsigned int i, j;
+
+       for (i = 0; pfc->info->bias_regs[i].puen; i++) {
+               for (j = 0; j < ARRAY_SIZE(pfc->info->bias_regs[i].pins); j++) {
+                       if (pfc->info->bias_regs[i].pins[j] == pin) {
+                               *bit = j;
+                               return &pfc->info->bias_regs[i];
+                       }
+               }
+       }
+
+       WARN_ONCE(1, "Pin %u is not in bias info list\n", pin);
+
+       return NULL;
+}
+
 static int sh_pfc_init_ranges(struct sh_pfc *pfc)
 {
        struct sh_pfc_pin_range *range;
index dd215d3..460d996 100644 (file)
@@ -35,5 +35,8 @@ int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type);
 const struct sh_pfc_bias_info *
 sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info,
                        unsigned int num, unsigned int pin);
+const struct pinmux_bias_reg *
+sh_pfc_pin_to_bias_reg(const struct sh_pfc *pfc, unsigned int pin,
+                      unsigned int *bit);
 
 #endif /* __SH_PFC_CORE_H__ */