Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pch_gpio: set value before enabling output direction

This ensures that the output signal does not toggle if set to high.

Signed-off-by: Daniel Krueger <daniel.krueger@systec-electronic.com>
Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Daniel Krueger and committed by
Linus Walleij
2ddf6cd6 fc860356

+5 -3
+5 -3
drivers/gpio/gpio-pch.c
··· 138 138 unsigned long flags; 139 139 140 140 spin_lock_irqsave(&chip->spinlock, flags); 141 - pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); 142 - pm |= (1 << nr); 143 - iowrite32(pm, &chip->reg->pm); 144 141 145 142 reg_val = ioread32(&chip->reg->po); 146 143 if (val) ··· 145 148 else 146 149 reg_val &= ~(1 << nr); 147 150 iowrite32(reg_val, &chip->reg->po); 151 + 152 + pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); 153 + pm |= (1 << nr); 154 + iowrite32(pm, &chip->reg->pm); 155 + 148 156 spin_unlock_irqrestore(&chip->spinlock, flags); 149 157 150 158 return 0;