#include <linux/slab.h>
#include <linux/of.h>
#include <linux/of_device.h>
+#include <linux/version.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
#include <linux/pinctrl/pinconf.h>
.is_generic = true,
};
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 5, 0)
+#define GPIO_LINE_DIRECTION_IN 1
+#define GPIO_LINE_DIRECTION_OUT 0
+#endif
+
/*
* aw9523_get_pin_direction - Get pin direction
* @regmap: Regmap structure
*/
static int aw9523_get_pin_direction(struct regmap *regmap, u8 pin, u8 n)
{
- int ret;
+ int val, ret;
- ret = regmap_test_bits(regmap, AW9523_REG_CONF_STATE(pin), BIT(n));
+ ret = regmap_read(regmap, AW9523_REG_CONF_STATE(pin), &val);
if (ret < 0)
return ret;
- return ret ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT;
+ return (val & BIT(n)) == BIT(n);
}
/*
return regmap_read(regmap, reg, state);
}
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 5, 0)
+#undef GPIO_LINE_DIRECTION_IN
+#undef GPIO_LINE_DIRECTION_OUT
+#endif
+
static int aw9523_gpio_irq_type(struct irq_data *d, unsigned int type)
{
switch (type) {