#define pr_fmt(fmt) …
#include <linux/dmi.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/types.h>
#include <linux/uaccess.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define PMBASE …
#define GPIO_BASE …
#define GPIO_CTRL …
#define GPIO_EN …
#define ICH7_GPIO_SIZE …
#define GPIO_USE_SEL …
#define GP_IO_SEL …
#define GP_LVL …
#define GPO_BLINK …
#define GPI_INV …
#define GPIO_USE_SEL2 …
#define GP_IO_SEL2 …
#define GP_LVL2 …
static const struct pci_device_id ich7_lpc_pci_id[] = …;
MODULE_DEVICE_TABLE(pci, ich7_lpc_pci_id);
static int __init ss4200_led_dmi_callback(const struct dmi_system_id *id)
{ … }
static bool nodetect;
module_param_named(nodetect, nodetect, bool, 0);
MODULE_PARM_DESC(…) …;
static const struct dmi_system_id nas_led_whitelist[] __initconst = …;
static u32 g_pm_io_base;
static u32 nas_gpio_io_base;
static struct resource *gp_gpio_resource;
struct nasgpio_led { … };
static struct nasgpio_led nasgpio_leds[] = …;
#define NAS_RECOVERY …
static struct nasgpio_led *
led_classdev_to_nasgpio_led(struct led_classdev *led_cdev)
{ … }
static struct nasgpio_led *get_led_named(char *name)
{ … }
static DEFINE_SPINLOCK(nasgpio_gpio_lock);
static void __nasgpio_led_set_attr(struct led_classdev *led_cdev,
u32 port, u32 value)
{ … }
static void nasgpio_led_set_attr(struct led_classdev *led_cdev,
u32 port, u32 value)
{ … }
static u32 nasgpio_led_get_attr(struct led_classdev *led_cdev, u32 port)
{ … }
static void nasgpio_led_set_brightness(struct led_classdev *led_cdev,
enum led_brightness brightness)
{ … }
static int nasgpio_led_set_blink(struct led_classdev *led_cdev,
unsigned long *delay_on,
unsigned long *delay_off)
{ … }
static int ich7_gpio_init(struct device *dev)
{ … }
static void ich7_lpc_cleanup(struct device *dev)
{ … }
static struct pci_dev *nas_gpio_pci_dev;
static int ich7_lpc_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static void ich7_lpc_remove(struct pci_dev *dev)
{ … }
static struct pci_driver nas_gpio_pci_driver = …;
static struct led_classdev *get_classdev_for_led_nr(int nr)
{ … }
static void set_power_light_amber_noblink(void)
{ … }
static ssize_t blink_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t blink_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
{ … }
static DEVICE_ATTR_RW(blink);
static struct attribute *nasgpio_led_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static int register_nasgpio_led(int led_nr)
{ … }
static void unregister_nasgpio_led(int led_nr)
{ … }
static int __init nas_gpio_init(void)
{ … }
static void __exit nas_gpio_exit(void)
{ … }
module_init(…) …;
module_exit(nas_gpio_exit);