diff options
-rw-r--r-- | MAINTAINERS | 1 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-baytrail.c | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index f155c2a1255e..5d6136b8959e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -7180,6 +7180,7 @@ F: drivers/crypto/picoxcell* | |||
7180 | 7180 | ||
7181 | PIN CONTROL SUBSYSTEM | 7181 | PIN CONTROL SUBSYSTEM |
7182 | M: Linus Walleij <linus.walleij@linaro.org> | 7182 | M: Linus Walleij <linus.walleij@linaro.org> |
7183 | L: linux-gpio@vger.kernel.org | ||
7183 | S: Maintained | 7184 | S: Maintained |
7184 | F: drivers/pinctrl/ | 7185 | F: drivers/pinctrl/ |
7185 | F: include/linux/pinctrl/ | 7186 | F: include/linux/pinctrl/ |
diff --git a/drivers/pinctrl/pinctrl-baytrail.c b/drivers/pinctrl/pinctrl-baytrail.c index e12e5b07f6d7..9dc38140194b 100644 --- a/drivers/pinctrl/pinctrl-baytrail.c +++ b/drivers/pinctrl/pinctrl-baytrail.c | |||
@@ -227,10 +227,14 @@ static int byt_irq_type(struct irq_data *d, unsigned type) | |||
227 | spin_lock_irqsave(&vg->lock, flags); | 227 | spin_lock_irqsave(&vg->lock, flags); |
228 | value = readl(reg); | 228 | value = readl(reg); |
229 | 229 | ||
230 | WARN(value & BYT_DIRECT_IRQ_EN, | ||
231 | "Bad pad config for io mode, force direct_irq_en bit clearing"); | ||
232 | |||
230 | /* For level trigges the BYT_TRIG_POS and BYT_TRIG_NEG bits | 233 | /* For level trigges the BYT_TRIG_POS and BYT_TRIG_NEG bits |
231 | * are used to indicate high and low level triggering | 234 | * are used to indicate high and low level triggering |
232 | */ | 235 | */ |
233 | value &= ~(BYT_TRIG_POS | BYT_TRIG_NEG | BYT_TRIG_LVL); | 236 | value &= ~(BYT_DIRECT_IRQ_EN | BYT_TRIG_POS | BYT_TRIG_NEG | |
237 | BYT_TRIG_LVL); | ||
234 | 238 | ||
235 | switch (type) { | 239 | switch (type) { |
236 | case IRQ_TYPE_LEVEL_HIGH: | 240 | case IRQ_TYPE_LEVEL_HIGH: |
@@ -318,7 +322,7 @@ static int byt_gpio_direction_output(struct gpio_chip *chip, | |||
318 | "Potential Error: Setting GPIO with direct_irq_en to output"); | 322 | "Potential Error: Setting GPIO with direct_irq_en to output"); |
319 | 323 | ||
320 | reg_val = readl(reg) | BYT_DIR_MASK; | 324 | reg_val = readl(reg) | BYT_DIR_MASK; |
321 | reg_val &= ~BYT_OUTPUT_EN; | 325 | reg_val &= ~(BYT_OUTPUT_EN | BYT_INPUT_EN); |
322 | 326 | ||
323 | if (value) | 327 | if (value) |
324 | writel(reg_val | BYT_LEVEL, reg); | 328 | writel(reg_val | BYT_LEVEL, reg); |