gpio: Add decode of WM8994 GPIO configuration
For the human reader. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
6f61415e9c
commit
d0ad5e8925
1 changed files with 77 additions and 2 deletions
|
@ -117,6 +117,60 @@ static int wm8994_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
|
static const char *wm8994_gpio_fn(u16 fn)
|
||||||
|
{
|
||||||
|
switch (fn) {
|
||||||
|
case WM8994_GP_FN_PIN_SPECIFIC:
|
||||||
|
return "pin-specific";
|
||||||
|
case WM8994_GP_FN_GPIO:
|
||||||
|
return "GPIO";
|
||||||
|
case WM8994_GP_FN_SDOUT:
|
||||||
|
return "SDOUT";
|
||||||
|
case WM8994_GP_FN_IRQ:
|
||||||
|
return "IRQ";
|
||||||
|
case WM8994_GP_FN_TEMPERATURE:
|
||||||
|
return "Temperature";
|
||||||
|
case WM8994_GP_FN_MICBIAS1_DET:
|
||||||
|
return "MICBIAS1 detect";
|
||||||
|
case WM8994_GP_FN_MICBIAS1_SHORT:
|
||||||
|
return "MICBIAS1 short";
|
||||||
|
case WM8994_GP_FN_MICBIAS2_DET:
|
||||||
|
return "MICBIAS2 detect";
|
||||||
|
case WM8994_GP_FN_MICBIAS2_SHORT:
|
||||||
|
return "MICBIAS2 short";
|
||||||
|
case WM8994_GP_FN_FLL1_LOCK:
|
||||||
|
return "FLL1 lock";
|
||||||
|
case WM8994_GP_FN_FLL2_LOCK:
|
||||||
|
return "FLL2 lock";
|
||||||
|
case WM8994_GP_FN_SRC1_LOCK:
|
||||||
|
return "SRC1 lock";
|
||||||
|
case WM8994_GP_FN_SRC2_LOCK:
|
||||||
|
return "SRC2 lock";
|
||||||
|
case WM8994_GP_FN_DRC1_ACT:
|
||||||
|
return "DRC1 activity";
|
||||||
|
case WM8994_GP_FN_DRC2_ACT:
|
||||||
|
return "DRC2 activity";
|
||||||
|
case WM8994_GP_FN_DRC3_ACT:
|
||||||
|
return "DRC3 activity";
|
||||||
|
case WM8994_GP_FN_WSEQ_STATUS:
|
||||||
|
return "Write sequencer";
|
||||||
|
case WM8994_GP_FN_FIFO_ERROR:
|
||||||
|
return "FIFO error";
|
||||||
|
case WM8994_GP_FN_OPCLK:
|
||||||
|
return "OPCLK";
|
||||||
|
case WM8994_GP_FN_THW:
|
||||||
|
return "Thermal warning";
|
||||||
|
case WM8994_GP_FN_DCS_DONE:
|
||||||
|
return "DC servo";
|
||||||
|
case WM8994_GP_FN_FLL1_OUT:
|
||||||
|
return "FLL1 output";
|
||||||
|
case WM8994_GP_FN_FLL2_OUT:
|
||||||
|
return "FLL1 output";
|
||||||
|
default:
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
||||||
{
|
{
|
||||||
struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
|
struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
|
||||||
|
@ -148,8 +202,29 @@ static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No decode yet; note that GPIO2 is special */
|
if (reg & WM8994_GPN_DIR)
|
||||||
seq_printf(s, "(%x)\n", reg);
|
seq_printf(s, "in ");
|
||||||
|
else
|
||||||
|
seq_printf(s, "out ");
|
||||||
|
|
||||||
|
if (reg & WM8994_GPN_PU)
|
||||||
|
seq_printf(s, "pull up ");
|
||||||
|
|
||||||
|
if (reg & WM8994_GPN_PD)
|
||||||
|
seq_printf(s, "pull down ");
|
||||||
|
|
||||||
|
if (reg & WM8994_GPN_POL)
|
||||||
|
seq_printf(s, "inverted ");
|
||||||
|
else
|
||||||
|
seq_printf(s, "noninverted ");
|
||||||
|
|
||||||
|
if (reg & WM8994_GPN_OP_CFG)
|
||||||
|
seq_printf(s, "open drain ");
|
||||||
|
else
|
||||||
|
seq_printf(s, "CMOS ");
|
||||||
|
|
||||||
|
seq_printf(s, "%s (%x)\n",
|
||||||
|
wm8994_gpio_fn(reg & WM8994_GPN_FN_MASK), reg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Reference in a new issue