3 #include <linux/interrupt.h>
4 #include <linux/gpio.h>
5 #include <asm/mach-bcm47xx/bcm47xx.h>
7 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
8 #define ssb_bcm47xx bcm47xx_bus.ssb
11 static inline u32
__ssb_write32_masked(struct ssb_device
*dev
, u16 offset
,
15 value
|= ssb_read32(dev
, offset
) & ~mask
;
16 ssb_write32(dev
, offset
, value
);
20 static void gpio_set_irqenable(int enabled
, irqreturn_t (*handler
)(int, void *))
25 if (irq
== -EINVAL
) return;
28 if (request_irq(irq
, handler
, IRQF_SHARED
| IRQF_SAMPLE_RANDOM
, "gpio", handler
))
31 free_irq(irq
, handler
);
34 if (ssb_bcm47xx
.chipco
.dev
)
35 __ssb_write32_masked(ssb_bcm47xx
.chipco
.dev
, SSB_CHIPCO_IRQMASK
, SSB_CHIPCO_IRQ_GPIO
, (enabled
? SSB_CHIPCO_IRQ_GPIO
: 0));
38 #define EXTIF_ADDR 0x1f000000
39 #define EXTIF_UART (EXTIF_ADDR + 0x00800000)
41 #define GPIO_TYPE_NORMAL (0x0 << 24)
42 #define GPIO_TYPE_EXTIF (0x1 << 24)
43 #define GPIO_TYPE_MASK (0xf << 24)
45 static inline void gpio_set_extif(int gpio
, int value
)
47 volatile u8
*addr
= (volatile u8
*) KSEG1ADDR(EXTIF_UART
) + (gpio
& ~GPIO_TYPE_MASK
);
54 #endif /* __DIAG_GPIO_H */
This page took 0.042302 seconds and 5 git commands to generate.