static int vx855gpio_get(struct gpio_chip *gpio, unsigned int nr) { struct vx855_gpio *vg = container_of(gpio, struct vx855_gpio, gpio); u_int32_t reg_in; int ret = 0; if (nr < NR_VX855_GPI) { reg_in = inl(vg->io_gpi); if (reg_in & gpi_i_bit(nr)) ret = 1; } else if (nr < NR_VX855_GPInO) { /* GPO don't have an input bit, we need to read it * back from the output register */ reg_in = inl(vg->io_gpo); if (reg_in & gpo_o_bit(nr - NR_VX855_GPI)) ret = 1; } else { reg_in = inl(vg->io_gpi); if (reg_in & gpio_i_bit(nr - NR_VX855_GPInO)) ret = 1; } return ret; }
static int vx855gpio_get(struct gpio_chip *gpio, unsigned int nr) { struct vx855_gpio *vg = container_of(gpio, struct vx855_gpio, gpio); u_int32_t reg_in; int ret = 0; if (nr < NR_VX855_GPI) { reg_in = inl(vg->io_gpi); if (reg_in & gpi_i_bit(nr)) ret = 1; } else if (nr < NR_VX855_GPInO) { /* */ reg_in = inl(vg->io_gpo); if (reg_in & gpo_o_bit(nr - NR_VX855_GPI)) ret = 1; } else { reg_in = inl(vg->io_gpi); if (reg_in & gpio_i_bit(nr - NR_VX855_GPInO)) ret = 1; } return ret; }