sh: pfc: Add gpio_read_bit() for data register access
PATCH 1/5 sh: pfc: Add gpio_read_bit() for data register access
From: Magnus Damm <[email protected]>
Introduce gpio_read_bit() for data register read access and modify sh_gpio_get_value() to make use of the new function instead of gpio_read_reg(). The purpose of this change is to update the code to only use the gpio_read_reg() function for config register access.
Signed-off-by Magnus Damm <[email protected]>
---
drivers/sh/pfc.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
drivers/sh/pfc.c +14 -1
@@ -135,6 +135,19 @@ static void gpio_write_raw_reg(void __ioBUG (); } +static int gpio_read_bit (struct pinmux_data_reg *dr, +unsigned long in_pos) +{ +unsigned long pos; + + pos = dr->reg_width - (in_pos +1 ); + +pr_debug ("read_bit: addr = %lx, pos = %ld, " +"r_width = %ld\n" , dr->reg, pos, dr->reg_width); + +return (gpio_read_raw_reg (dr->mapped_reg, dr->reg_width) >> pos) &1 ; +} +static void gpio_write_bit (struct pinmux_data_reg *dr,unsigned long in_pos,unsigned long value) {
@@ -644,7 +657,7 @@ static int sh_gpio_get_value(struct pinmif (!gpioc ||get_data_reg (gpioc, gpio, &dr, &bit) !=0 )return -EINVAL ; -return gpio_read_reg (dr->mapped_reg, dr->reg_width,1 , bit, dr->reg); +return gpio_read_bit (dr, bit); }static int sh_gpio_get (struct gpio_chip *chip,unsigned offset)