#include <linux/bitops.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/of_platform.h>
#include <linux/of_gpio.h>
#include <linux/gpio/driver.h>
#define XGPIO_DATA_OFFSET (0x0)
#define XGPIO_TRI_OFFSET (0x4)
#define XGPIO_CHANNEL_OFFSET 0x8
#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_X86)
# define xgpio_readreg(offset) readl(offset)
# define xgpio_writereg(offset, val) writel(val, offset)
# define xgpio_readreg(offset) __raw_readl(offset)
# define xgpio_writereg(offset, val) __raw_writel(val, offset)
struct of_mm_gpio_chip mmchip;
unsigned int gpio_width[2];
static inline int xgpio_index(struct xgpio_instance *chip, int gpio)
if (gpio >= chip->gpio_width[0])