#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/gpio/driver.h>
#include <linux/mutex.h>
#include <linux/greybus.h>
#include "gbphy.h"
struct gb_gpio_line { … };
struct gb_gpio_controller { … };
static inline struct gb_gpio_controller *gpio_chip_to_gb_gpio_controller(struct gpio_chip *chip)
{ … }
static struct gpio_chip *irq_data_to_gpio_chip(struct irq_data *d)
{ … }
static int gb_gpio_line_count_operation(struct gb_gpio_controller *ggc)
{ … }
static int gb_gpio_activate_operation(struct gb_gpio_controller *ggc, u8 which)
{ … }
static void gb_gpio_deactivate_operation(struct gb_gpio_controller *ggc,
u8 which)
{ … }
static int gb_gpio_get_direction_operation(struct gb_gpio_controller *ggc,
u8 which)
{ … }
static int gb_gpio_direction_in_operation(struct gb_gpio_controller *ggc,
u8 which)
{ … }
static int gb_gpio_direction_out_operation(struct gb_gpio_controller *ggc,
u8 which, bool value_high)
{ … }
static int gb_gpio_get_value_operation(struct gb_gpio_controller *ggc,
u8 which)
{ … }
static void gb_gpio_set_value_operation(struct gb_gpio_controller *ggc,
u8 which, bool value_high)
{ … }
static int gb_gpio_set_debounce_operation(struct gb_gpio_controller *ggc,
u8 which, u16 debounce_usec)
{ … }
static void _gb_gpio_irq_mask(struct gb_gpio_controller *ggc, u8 hwirq)
{ … }
static void _gb_gpio_irq_unmask(struct gb_gpio_controller *ggc, u8 hwirq)
{ … }
static void _gb_gpio_irq_set_type(struct gb_gpio_controller *ggc,
u8 hwirq, u8 type)
{ … }
static void gb_gpio_irq_mask(struct irq_data *d)
{ … }
static void gb_gpio_irq_unmask(struct irq_data *d)
{ … }
static int gb_gpio_irq_set_type(struct irq_data *d, unsigned int type)
{ … }
static void gb_gpio_irq_bus_lock(struct irq_data *d)
{ … }
static void gb_gpio_irq_bus_sync_unlock(struct irq_data *d)
{ … }
static int gb_gpio_request_handler(struct gb_operation *op)
{ … }
static int gb_gpio_request(struct gpio_chip *chip, unsigned int offset)
{ … }
static void gb_gpio_free(struct gpio_chip *chip, unsigned int offset)
{ … }
static int gb_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
{ … }
static int gb_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
{ … }
static int gb_gpio_direction_output(struct gpio_chip *chip, unsigned int offset,
int value)
{ … }
static int gb_gpio_get(struct gpio_chip *chip, unsigned int offset)
{ … }
static void gb_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{ … }
static int gb_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
unsigned long config)
{ … }
static int gb_gpio_controller_setup(struct gb_gpio_controller *ggc)
{ … }
static int gb_gpio_probe(struct gbphy_device *gbphy_dev,
const struct gbphy_device_id *id)
{ … }
static void gb_gpio_remove(struct gbphy_device *gbphy_dev)
{ … }
static const struct gbphy_device_id gb_gpio_id_table[] = …;
MODULE_DEVICE_TABLE(gbphy, gb_gpio_id_table);
static struct gbphy_driver gpio_driver = …;
module_gbphy_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;