#include <linux/clk.h>
#include <linux/gpio/driver.h>
#include <linux/io.h>
#include <linux/irqdomain.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
#define LPC18XX_REG_DIR(n) …
#define LPC18XX_MAX_PORTS …
#define LPC18XX_PINS_PER_PORT …
#define LPC18XX_GPIO_PIN_IC_ISEL …
#define LPC18XX_GPIO_PIN_IC_IENR …
#define LPC18XX_GPIO_PIN_IC_SIENR …
#define LPC18XX_GPIO_PIN_IC_CIENR …
#define LPC18XX_GPIO_PIN_IC_IENF …
#define LPC18XX_GPIO_PIN_IC_SIENF …
#define LPC18XX_GPIO_PIN_IC_CIENF …
#define LPC18XX_GPIO_PIN_IC_RISE …
#define LPC18XX_GPIO_PIN_IC_FALL …
#define LPC18XX_GPIO_PIN_IC_IST …
#define NR_LPC18XX_GPIO_PIN_IC_IRQS …
struct lpc18xx_gpio_pin_ic { … };
struct lpc18xx_gpio_chip { … };
static inline void lpc18xx_gpio_pin_ic_isel(struct lpc18xx_gpio_pin_ic *ic,
u32 pin, bool set)
{ … }
static inline void lpc18xx_gpio_pin_ic_set(struct lpc18xx_gpio_pin_ic *ic,
u32 pin, u32 reg)
{ … }
static void lpc18xx_gpio_pin_ic_mask(struct irq_data *d)
{ … }
static void lpc18xx_gpio_pin_ic_unmask(struct irq_data *d)
{ … }
static void lpc18xx_gpio_pin_ic_eoi(struct irq_data *d)
{ … }
static int lpc18xx_gpio_pin_ic_set_type(struct irq_data *d, unsigned int type)
{ … }
static struct irq_chip lpc18xx_gpio_pin_ic = …;
static int lpc18xx_gpio_pin_ic_domain_alloc(struct irq_domain *domain,
unsigned int virq,
unsigned int nr_irqs, void *data)
{ … }
static const struct irq_domain_ops lpc18xx_gpio_pin_ic_domain_ops = …;
static int lpc18xx_gpio_pin_ic_probe(struct lpc18xx_gpio_chip *gc)
{ … }
static void lpc18xx_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
{ … }
static int lpc18xx_gpio_get(struct gpio_chip *chip, unsigned offset)
{ … }
static int lpc18xx_gpio_direction(struct gpio_chip *chip, unsigned offset,
bool out)
{ … }
static int lpc18xx_gpio_direction_input(struct gpio_chip *chip,
unsigned offset)
{ … }
static int lpc18xx_gpio_direction_output(struct gpio_chip *chip,
unsigned offset, int value)
{ … }
static const struct gpio_chip lpc18xx_chip = …;
static int lpc18xx_gpio_probe(struct platform_device *pdev)
{ … }
static void lpc18xx_gpio_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id lpc18xx_gpio_match[] = …;
MODULE_DEVICE_TABLE(of, lpc18xx_gpio_match);
static struct platform_driver lpc18xx_gpio_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;