#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/gpio/driver.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/mfd/tps65218.h>
struct tps65218 *tps65218;
struct gpio_chip gpio_chip;
static int tps65218_gpio_get(struct gpio_chip *gc, unsigned offset)
struct tps65218_gpio *tps65218_gpio = gpiochip_get_data(gc);
struct tps65218 *tps65218 = tps65218_gpio->tps65218;
ret = regmap_read(tps65218->regmap, TPS65218_REG_ENABLE2, &val);
return !!(val & (TPS65218_ENABLE2_GPIO1 << offset));
static void tps65218_gpio_set(struct gpio_chip *gc, unsigned offset,
struct tps65218_gpio *tps65218_gpio = gpiochip_get_data(gc);
struct tps65218 *tps65218 = tps65218_gpio->tps65218;
tps65218_set_bits(tps65218, TPS65218_REG_ENABLE2,
TPS65218_ENABLE2_GPIO1 << offset,
TPS65218_ENABLE2_GPIO1 << offset,
tps65218_clear_bits(tps65218, TPS65218_REG_ENABLE2,
TPS65218_ENABLE2_GPIO1 << offset,
static int tps65218_gpio_output(struct gpio_chip *gc, unsigned offset,
tps65218_gpio_set(gc, offset, value);