diff options
Diffstat (limited to 'drivers/pinctrl/sh-pfc/gpio.c')
-rw-r--r-- | drivers/pinctrl/sh-pfc/gpio.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/pinctrl/sh-pfc/gpio.c b/drivers/pinctrl/sh-pfc/gpio.c index 80f641ee4dea..f2bb7d7398cd 100644 --- a/drivers/pinctrl/sh-pfc/gpio.c +++ b/drivers/pinctrl/sh-pfc/gpio.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | struct sh_pfc_gpio_data_reg { | 22 | struct sh_pfc_gpio_data_reg { |
23 | const struct pinmux_data_reg *info; | 23 | const struct pinmux_data_reg *info; |
24 | unsigned long shadow; | 24 | u32 shadow; |
25 | }; | 25 | }; |
26 | 26 | ||
27 | struct sh_pfc_gpio_pin { | 27 | struct sh_pfc_gpio_pin { |
@@ -59,8 +59,8 @@ static void gpio_get_data_reg(struct sh_pfc_chip *chip, unsigned int offset, | |||
59 | *bit = gpio_pin->dbit; | 59 | *bit = gpio_pin->dbit; |
60 | } | 60 | } |
61 | 61 | ||
62 | static unsigned long gpio_read_data_reg(struct sh_pfc_chip *chip, | 62 | static u32 gpio_read_data_reg(struct sh_pfc_chip *chip, |
63 | const struct pinmux_data_reg *dreg) | 63 | const struct pinmux_data_reg *dreg) |
64 | { | 64 | { |
65 | void __iomem *mem = dreg->reg - chip->mem->phys + chip->mem->virt; | 65 | void __iomem *mem = dreg->reg - chip->mem->phys + chip->mem->virt; |
66 | 66 | ||
@@ -68,8 +68,7 @@ static unsigned long gpio_read_data_reg(struct sh_pfc_chip *chip, | |||
68 | } | 68 | } |
69 | 69 | ||
70 | static void gpio_write_data_reg(struct sh_pfc_chip *chip, | 70 | static void gpio_write_data_reg(struct sh_pfc_chip *chip, |
71 | const struct pinmux_data_reg *dreg, | 71 | const struct pinmux_data_reg *dreg, u32 value) |
72 | unsigned long value) | ||
73 | { | 72 | { |
74 | void __iomem *mem = dreg->reg - chip->mem->phys + chip->mem->virt; | 73 | void __iomem *mem = dreg->reg - chip->mem->phys + chip->mem->virt; |
75 | 74 | ||
@@ -162,9 +161,9 @@ static void gpio_pin_set_value(struct sh_pfc_chip *chip, unsigned offset, | |||
162 | pos = reg->info->reg_width - (bit + 1); | 161 | pos = reg->info->reg_width - (bit + 1); |
163 | 162 | ||
164 | if (value) | 163 | if (value) |
165 | set_bit(pos, ®->shadow); | 164 | reg->shadow |= BIT(pos); |
166 | else | 165 | else |
167 | clear_bit(pos, ®->shadow); | 166 | reg->shadow &= ~BIT(pos); |
168 | 167 | ||
169 | gpio_write_data_reg(chip, reg->info, reg->shadow); | 168 | gpio_write_data_reg(chip, reg->info, reg->shadow); |
170 | } | 169 | } |