Commit 2ddf6cd67cc561e40454d60126a8a7cb32f3328f

Authored by Daniel Krueger
Committed by Linus Walleij
1 parent fc860356ac

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>

Showing 1 changed file with 5 additions and 3 deletions Side-by-side Diff

drivers/gpio/gpio-pch.c
... ... @@ -138,9 +138,6 @@
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)
... ... @@ -148,6 +145,11 @@
148 145 else
149 146 reg_val &= ~(1 << nr);
150 147 iowrite32(reg_val, &chip->reg->po);
  148 +
  149 + pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1);
  150 + pm |= (1 << nr);
  151 + iowrite32(pm, &chip->reg->pm);
  152 +
151 153 spin_unlock_irqrestore(&chip->spinlock, flags);
152 154  
153 155 return 0;