4 typedef struct rpi_registers_mapping_t {
5 int mapping_initialized;
10 volatile unsigned *gpio_base;
11 volatile unsigned *pwm_base;
12 volatile unsigned *clk_base;
13 } rpi_registers_mapping_t;
15 extern rpi_registers_mapping_t rpi_registers_mapping;
17 #define GPIO_SET (*(rpi_registers_mapping.gpio_base+7))
18 #define GPIO_CLR (*(rpi_registers_mapping.gpio_base+10))
19 #define GPIO_INP (*(rpi_registers_mapping.gpio_base+13))
21 static inline int rpi_gpio_get_value(unsigned gpio)
23 return GPIO_INP & (1 << gpio)? 1: 0;
26 /* Set gpio pin output set to specifies level */
27 static inline void rpi_gpio_set_value(unsigned gpio, int value)
35 /* Configure gpio_base pin for input */
36 int rpi_gpio_direction_input(unsigned gpio);
38 /* Configure gpio_base pin for output */
39 int rpi_gpio_direction_output(unsigned gpio, int value);
41 /* Configure gpio_base pin for alternate function */
42 int rpi_gpio_alt_fnc(unsigned gpio, int alt_fnc);
44 int rpi_peripheral_registers_map(void);
46 #endif /*_RPI_BIDIRPWM_H*/