1#ifndef _GPIO_BBB_MOD_H_
2#define _GPIO_BBB_MOD_H_
4#include "gpio_bbb_if.h"
9static int __init gpio_bbb_start (
void);
10static int my_dev_uevent(
struct device *dev,
struct kobj_uevent_env *env);
11static void __exit gpio_bbb_end(
void);
16static int device_open (
struct inode *inode,
struct file *file);
17static int device_release (
struct inode *inode,
struct file *file);
18static ssize_t device_read (
struct file *filp,
char *buff,
19 size_t len, loff_t *off);
20static ssize_t device_write(
struct file *filp,
const char *buff,
21 size_t len, loff_t *off);
22long device_ioctl(
struct file *file,
23 unsigned int ioctl_num,
24 unsigned long ioctl_param);
29static int _gpioMode(u8 gpio_num, u16 flags);
30static int _gpioRead(u8 gpio_num);
31static int _gpioWrite (u8 gpio_num,
int value);
32static int _gpioToggle (u8 gpio_num);
33static int _gpioAttachIrq(u8 gpio_num, u16 flags);
34static int _gpioDetachIrq(u8 gpio_num);
35static int _gpioEnableIrq(u8 gpio_num);
36static int _gpioDisableIrq(u8 gpio_num);
41static void _ioset32 (u32 v,
void __iomem *addr);
42static void _ioclear32(u32 v,
void __iomem *addr);
44static int _map_memory(
void);
45static void _unmap_memory(
void);
47static u16 _gpio_to_offset(u8 gpio_num);
48static u8 _irq_to_gpio(
int irq);
50static void _release_irq(u8 gpio_num);
51static void _release_all_irqs(
void);
52irqreturn_t _gpio_irq_handler(
int irq,
void *dev_id);