Loading drivers/sh/pfc.c +10 −12 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ static void write_config_reg(struct pinmux_info *gpioc, unsigned long field, unsigned long value) { void __iomem *mapped_reg; unsigned long mask, pos; unsigned long mask, pos, data; config_reg_helper(gpioc, crp, field, &mapped_reg, &mask, &pos); Loading @@ -221,17 +221,15 @@ static void write_config_reg(struct pinmux_info *gpioc, mask = ~(mask << pos); value = value << pos; switch (crp->reg_width) { case 8: iowrite8((ioread8(mapped_reg) & mask) | value, mapped_reg); break; case 16: iowrite16((ioread16(mapped_reg) & mask) | value, mapped_reg); break; case 32: iowrite32((ioread32(mapped_reg) & mask) | value, mapped_reg); break; } data = gpio_read_raw_reg(mapped_reg, crp->reg_width); data &= mask; data |= value; if (gpioc->unlock_reg) gpio_write_raw_reg(pfc_phys_to_virt(gpioc, gpioc->unlock_reg), 32, ~data); gpio_write_raw_reg(mapped_reg, crp->reg_width, data); } static int setup_data_reg(struct pinmux_info *gpioc, unsigned gpio) Loading include/linux/sh_pfc.h +2 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,8 @@ struct pinmux_info { unsigned int num_resources; struct pfc_window *window; unsigned long unlock_reg; struct gpio_chip chip; }; Loading Loading
drivers/sh/pfc.c +10 −12 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ static void write_config_reg(struct pinmux_info *gpioc, unsigned long field, unsigned long value) { void __iomem *mapped_reg; unsigned long mask, pos; unsigned long mask, pos, data; config_reg_helper(gpioc, crp, field, &mapped_reg, &mask, &pos); Loading @@ -221,17 +221,15 @@ static void write_config_reg(struct pinmux_info *gpioc, mask = ~(mask << pos); value = value << pos; switch (crp->reg_width) { case 8: iowrite8((ioread8(mapped_reg) & mask) | value, mapped_reg); break; case 16: iowrite16((ioread16(mapped_reg) & mask) | value, mapped_reg); break; case 32: iowrite32((ioread32(mapped_reg) & mask) | value, mapped_reg); break; } data = gpio_read_raw_reg(mapped_reg, crp->reg_width); data &= mask; data |= value; if (gpioc->unlock_reg) gpio_write_raw_reg(pfc_phys_to_virt(gpioc, gpioc->unlock_reg), 32, ~data); gpio_write_raw_reg(mapped_reg, crp->reg_width, data); } static int setup_data_reg(struct pinmux_info *gpioc, unsigned gpio) Loading
include/linux/sh_pfc.h +2 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,8 @@ struct pinmux_info { unsigned int num_resources; struct pfc_window *window; unsigned long unlock_reg; struct gpio_chip chip; }; Loading