YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
gpio_bbb.h
1#ifndef _GPIO_BBB_MOD_H_
2#define _GPIO_BBB_MOD_H_
3
4#include "gpio_bbb_if.h"
5
6/****************************/
7/* module lifecycle methods */
8/****************************/
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);
12
13/****************************/
14/* character device methods */
15/****************************/
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);
25
26/****************/
27/* GPIO methods */
28/****************/
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);
37
38/*******************/
39/* Utility methods */
40/*******************/
41static void _ioset32 (u32 v, void __iomem *addr);
42static void _ioclear32(u32 v, void __iomem *addr);
43
44static int _map_memory(void);
45static void _unmap_memory(void);
46
47static u16 _gpio_to_offset(u8 gpio_num);
48static u8 _irq_to_gpio(int irq);
49
50static void _release_irq(u8 gpio_num);
51static void _release_all_irqs(void);
52irqreturn_t _gpio_irq_handler(int irq, void *dev_id);
53
54#endif