static void tb10x_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { struct tb10x_gpio *tb10x_gpio = to_tb10x_gpio(chip); int mask = BIT(offset); int val = value << offset; tb10x_set_bits(tb10x_gpio, OFFSET_TO_REG_DATA, mask, val); }
static int tb10x_gpio_direction_in(struct gpio_chip *chip, unsigned offset) { struct tb10x_gpio *tb10x_gpio = to_tb10x_gpio(chip); int mask = BIT(offset); int val = TB10X_GPIO_DIR_IN << offset; tb10x_set_bits(tb10x_gpio, OFFSET_TO_REG_DDR, mask, val); return 0; }
static int tb10x_gpio_direction_out(struct gpio_chip *chip, unsigned offset, int value) { struct tb10x_gpio *tb10x_gpio = gpiochip_get_data(chip); int mask = BIT(offset); int val = TB10X_GPIO_DIR_OUT << offset; tb10x_gpio_set(chip, offset, value); tb10x_set_bits(tb10x_gpio, OFFSET_TO_REG_DDR, mask, val); return 0; }