linux/drivers/gpio/gpio-virtio.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * GPIO driver for virtio-based virtual GPIO controllers
 *
 * Copyright (C) 2021 metux IT consult
 * Enrico Weigelt, metux IT consult <[email protected]>
 *
 * Copyright (C) 2021 Linaro.
 * Viresh Kumar <[email protected]>
 */

#include <linux/completion.h>
#include <linux/err.h>
#include <linux/gpio/driver.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/virtio_config.h>
#include <uapi/linux/virtio_gpio.h>
#include <uapi/linux/virtio_ids.h>

struct virtio_gpio_line {};

struct vgpio_irq_line {};

struct virtio_gpio {};

static int _virtio_gpio_req(struct virtio_gpio *vgpio, u16 type, u16 gpio,
			    u8 txvalue, u8 *rxvalue, void *response, u32 rxlen)
{}

static int virtio_gpio_req(struct virtio_gpio *vgpio, u16 type, u16 gpio,
			   u8 txvalue, u8 *rxvalue)
{}

static void virtio_gpio_free(struct gpio_chip *gc, unsigned int gpio)
{}

static int virtio_gpio_get_direction(struct gpio_chip *gc, unsigned int gpio)
{}

static int virtio_gpio_direction_input(struct gpio_chip *gc, unsigned int gpio)
{}

static int virtio_gpio_direction_output(struct gpio_chip *gc, unsigned int gpio,
					int value)
{}

static int virtio_gpio_get(struct gpio_chip *gc, unsigned int gpio)
{}

static void virtio_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
{}

/* Interrupt handling */
static void virtio_gpio_irq_prepare(struct virtio_gpio *vgpio, u16 gpio)
{}

static void virtio_gpio_irq_enable(struct irq_data *d)
{}

static void virtio_gpio_irq_disable(struct irq_data *d)
{}

static void virtio_gpio_irq_mask(struct irq_data *d)
{}

static void virtio_gpio_irq_unmask(struct irq_data *d)
{}

static int virtio_gpio_irq_set_type(struct irq_data *d, unsigned int type)
{}

static void virtio_gpio_irq_bus_lock(struct irq_data *d)
{}

static void virtio_gpio_irq_bus_sync_unlock(struct irq_data *d)
{}

static struct irq_chip vgpio_irq_chip =;

static bool ignore_irq(struct virtio_gpio *vgpio, int gpio,
		       struct vgpio_irq_line *irq_line)
{}

static void virtio_gpio_event_vq(struct virtqueue *vq)
{}

static void virtio_gpio_request_vq(struct virtqueue *vq)
{}

static void virtio_gpio_free_vqs(struct virtio_device *vdev)
{}

static int virtio_gpio_alloc_vqs(struct virtio_gpio *vgpio,
				 struct virtio_device *vdev)
{}

static const char **virtio_gpio_get_names(struct virtio_gpio *vgpio,
					  u32 gpio_names_size, u16 ngpio)
{}

static int virtio_gpio_probe(struct virtio_device *vdev)
{}

static void virtio_gpio_remove(struct virtio_device *vdev)
{}

static const struct virtio_device_id id_table[] =;
MODULE_DEVICE_TABLE(virtio, id_table);

static const unsigned int features[] =;

static struct virtio_driver virtio_gpio_driver =;
module_virtio_driver();

MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();