#include <linux/ioport.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/gpio/driver.h>
#include <linux/pci.h>
#include <linux/spinlock.h>
#define PMBASE_OFFSET …
#define PMBASE_SIZE …
#define AMD_REG_GPIO(i) …
#define AMD_GPIO_LTCH_STS …
#define AMD_GPIO_RTIN …
#define AMD_GPIO_DEBOUNCE …
#define AMD_GPIO_MODE_MASK …
#define AMD_GPIO_MODE_IN …
#define AMD_GPIO_MODE_OUT …
#define AMD_GPIO_MODE_ALTFN …
#define AMD_GPIO_X_MASK …
#define AMD_GPIO_X_IN_ACTIVEHI …
#define AMD_GPIO_X_IN_LATCH …
#define AMD_GPIO_X_OUT_LOW …
#define AMD_GPIO_X_OUT_HI …
#define AMD_GPIO_X_OUT_CLK0 …
#define AMD_GPIO_X_OUT_CLK1 …
static const struct pci_device_id pci_tbl[] = …;
MODULE_DEVICE_TABLE(pci, pci_tbl);
struct amd_gpio { … };
static int amd_gpio_request(struct gpio_chip *chip, unsigned offset)
{ … }
static void amd_gpio_free(struct gpio_chip *chip, unsigned offset)
{ … }
static void amd_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
{ … }
static int amd_gpio_get(struct gpio_chip *chip, unsigned offset)
{ … }
static int amd_gpio_dirout(struct gpio_chip *chip, unsigned offset, int value)
{ … }
static int amd_gpio_dirin(struct gpio_chip *chip, unsigned offset)
{ … }
static struct amd_gpio gp = …;
static int __init amd_gpio_init(void)
{ … }
static void __exit amd_gpio_exit(void)
{ … }
module_init(…) …;
module_exit(amd_gpio_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;