pinctrl: qcom: print egpio mode in debugfs
authorJonathan Marek <jonathan@marek.ca>
Thu, 10 Feb 2022 13:12:09 +0000 (08:12 -0500)
committerLinus Walleij <linus.walleij@linaro.org>
Sat, 19 Feb 2022 00:53:55 +0000 (01:53 +0100)
When egpio_enable bit is cleared, the gpio is driven by SSC/LPASS TLMM and
the APSS TLMM settings are ignored. Reflect that in the debugfs dump.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Link: https://lore.kernel.org/r/20220210131210.24605-2-jonathan@marek.ca
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/qcom/pinctrl-msm.c

index 5d15d1a..966ea66 100644 (file)
@@ -615,6 +615,7 @@ static void msm_gpio_dbg_show_one(struct seq_file *s,
        int drive;
        int pull;
        int val;
+       int egpio_enable;
        u32 ctl_reg, io_reg;
 
        static const char * const pulls_keeper[] = {
@@ -641,12 +642,20 @@ static void msm_gpio_dbg_show_one(struct seq_file *s,
        func = (ctl_reg >> g->mux_bit) & 7;
        drive = (ctl_reg >> g->drv_bit) & 7;
        pull = (ctl_reg >> g->pull_bit) & 3;
+       egpio_enable = 0;
+       if (pctrl->soc->egpio_func && ctl_reg & BIT(g->egpio_present))
+               egpio_enable = !(ctl_reg & BIT(g->egpio_enable));
 
        if (is_out)
                val = !!(io_reg & BIT(g->out_bit));
        else
                val = !!(io_reg & BIT(g->in_bit));
 
+       if (egpio_enable) {
+               seq_printf(s, " %-8s: egpio\n", g->name);
+               return;
+       }
+
        seq_printf(s, " %-8s: %-3s", g->name, is_out ? "out" : "in");
        seq_printf(s, " %-4s func%d", val ? "high" : "low", func);
        seq_printf(s, " %dmA", msm_regval_to_drive(drive));