25 #include <linux/types.h>
26 #include <linux/ptrace.h>
31 #include <asm/addrspace.h>
32 #include <asm/bootinfo.h>
36 static void emma2rh_irq_enable(
struct irq_data *
d)
39 u32 reg_value, reg_bitmask, reg_index;
43 reg_value = emma2rh_in32(reg_index);
44 reg_bitmask = 0x1 << (irq % 32);
45 emma2rh_out32(reg_index, reg_value | reg_bitmask);
48 static void emma2rh_irq_disable(
struct irq_data *
d)
51 u32 reg_value, reg_bitmask, reg_index;
55 reg_value = emma2rh_in32(reg_index);
56 reg_bitmask = 0x1 << (irq % 32);
57 emma2rh_out32(reg_index, reg_value & ~reg_bitmask);
61 .name =
"emma2rh_irq",
62 .irq_mask = emma2rh_irq_disable,
63 .irq_unmask = emma2rh_irq_enable,
72 &emma2rh_irq_controller,
76 static void emma2rh_sw_irq_enable(
struct irq_data *
d)
86 static void emma2rh_sw_irq_disable(
struct irq_data *
d)
97 .name =
"emma2rh_sw_irq",
98 .irq_mask = emma2rh_sw_irq_disable,
99 .irq_unmask = emma2rh_sw_irq_enable,
108 &emma2rh_sw_irq_controller,
112 static void emma2rh_gpio_irq_enable(
struct irq_data *
d)
122 static void emma2rh_gpio_irq_disable(
struct irq_data *
d)
132 static void emma2rh_gpio_irq_ack(
struct irq_data *
d)
139 static void emma2rh_gpio_irq_mask_ack(
struct irq_data *d)
152 .name =
"emma2rh_gpio_irq",
153 .irq_ack = emma2rh_gpio_irq_ack,
154 .irq_mask = emma2rh_gpio_irq_disable,
155 .irq_mask_ack = emma2rh_gpio_irq_mask_ack,
156 .irq_unmask = emma2rh_gpio_irq_enable,
165 &emma2rh_gpio_irq_controller,
189 #ifdef EMMA2RH_SW_CASCADE
194 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
195 if (swIntStatus & bitmask) {
205 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
206 if (intStatus & bitmask) {
215 #ifdef EMMA2RH_GPIO_CASCADE
220 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
221 if (gpioIntStatus & bitmask) {
231 for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) {
232 if (intStatus & bitmask) {
241 for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) {
242 if (intStatus & bitmask) {
262 clear_c0_status(0xff00);
263 set_c0_status(0x0400);
265 #define GPIO_PCI (0xf<<15)