|
@@ -35,6 +35,29 @@ static inline struct wm8994_gpio *to_wm8994_gpio(struct gpio_chip *chip)
|
|
|
return container_of(chip, struct wm8994_gpio, gpio_chip);
|
|
|
}
|
|
|
|
|
|
+static int wm8994_gpio_request(struct gpio_chip *chip, unsigned offset)
|
|
|
+{
|
|
|
+ struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
|
|
|
+ struct wm8994 *wm8994 = wm8994_gpio->wm8994;
|
|
|
+
|
|
|
+ switch (wm8994->type) {
|
|
|
+ case WM8958:
|
|
|
+ switch (offset) {
|
|
|
+ case 1:
|
|
|
+ case 2:
|
|
|
+ case 3:
|
|
|
+ case 4:
|
|
|
+ case 6:
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int wm8994_gpio_direction_in(struct gpio_chip *chip, unsigned offset)
|
|
|
{
|
|
|
struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
|
|
@@ -136,6 +159,7 @@ static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|
|
static struct gpio_chip template_chip = {
|
|
|
.label = "wm8994",
|
|
|
.owner = THIS_MODULE,
|
|
|
+ .request = wm8994_gpio_request,
|
|
|
.direction_input = wm8994_gpio_direction_in,
|
|
|
.get = wm8994_gpio_get,
|
|
|
.direction_output = wm8994_gpio_direction_out,
|