aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-wm8994.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio/gpio-wm8994.c')
-rw-r--r--drivers/gpio/gpio-wm8994.c79
1 files changed, 77 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-wm8994.c b/drivers/gpio/gpio-wm8994.c
index 96198f3fab73..92ea5350dfe9 100644
--- a/drivers/gpio/gpio-wm8994.c
+++ b/drivers/gpio/gpio-wm8994.c
@@ -117,6 +117,60 @@ static int wm8994_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
117 117
118 118
119#ifdef CONFIG_DEBUG_FS 119#ifdef CONFIG_DEBUG_FS
120static const char *wm8994_gpio_fn(u16 fn)
121{
122 switch (fn) {
123 case WM8994_GP_FN_PIN_SPECIFIC:
124 return "pin-specific";
125 case WM8994_GP_FN_GPIO:
126 return "GPIO";
127 case WM8994_GP_FN_SDOUT:
128 return "SDOUT";
129 case WM8994_GP_FN_IRQ:
130 return "IRQ";
131 case WM8994_GP_FN_TEMPERATURE:
132 return "Temperature";
133 case WM8994_GP_FN_MICBIAS1_DET:
134 return "MICBIAS1 detect";
135 case WM8994_GP_FN_MICBIAS1_SHORT:
136 return "MICBIAS1 short";
137 case WM8994_GP_FN_MICBIAS2_DET:
138 return "MICBIAS2 detect";
139 case WM8994_GP_FN_MICBIAS2_SHORT:
140 return "MICBIAS2 short";
141 case WM8994_GP_FN_FLL1_LOCK:
142 return "FLL1 lock";
143 case WM8994_GP_FN_FLL2_LOCK:
144 return "FLL2 lock";
145 case WM8994_GP_FN_SRC1_LOCK:
146 return "SRC1 lock";
147 case WM8994_GP_FN_SRC2_LOCK:
148 return "SRC2 lock";
149 case WM8994_GP_FN_DRC1_ACT:
150 return "DRC1 activity";
151 case WM8994_GP_FN_DRC2_ACT:
152 return "DRC2 activity";
153 case WM8994_GP_FN_DRC3_ACT:
154 return "DRC3 activity";
155 case WM8994_GP_FN_WSEQ_STATUS:
156 return "Write sequencer";
157 case WM8994_GP_FN_FIFO_ERROR:
158 return "FIFO error";
159 case WM8994_GP_FN_OPCLK:
160 return "OPCLK";
161 case WM8994_GP_FN_THW:
162 return "Thermal warning";
163 case WM8994_GP_FN_DCS_DONE:
164 return "DC servo";
165 case WM8994_GP_FN_FLL1_OUT:
166 return "FLL1 output";
167 case WM8994_GP_FN_FLL2_OUT:
168 return "FLL1 output";
169 default:
170 return "Unknown";
171 }
172}
173
120static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) 174static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
121{ 175{
122 struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip); 176 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)
148 continue; 202 continue;
149 } 203 }
150 204
151 /* No decode yet; note that GPIO2 is special */ 205 if (reg & WM8994_GPN_DIR)
152 seq_printf(s, "(%x)\n", reg); 206 seq_printf(s, "in ");
207 else
208 seq_printf(s, "out ");
209
210 if (reg & WM8994_GPN_PU)
211 seq_printf(s, "pull up ");
212
213 if (reg & WM8994_GPN_PD)
214 seq_printf(s, "pull down ");
215
216 if (reg & WM8994_GPN_POL)
217 seq_printf(s, "inverted ");
218 else
219 seq_printf(s, "noninverted ");
220
221 if (reg & WM8994_GPN_OP_CFG)
222 seq_printf(s, "open drain ");
223 else
224 seq_printf(s, "CMOS ");
225
226 seq_printf(s, "%s (%x)\n",
227 wm8994_gpio_fn(reg & WM8994_GPN_FN_MASK), reg);
153 } 228 }
154} 229}
155#else 230#else