Lines Matching full:irq
79 /* not irq supported */ in ssb_irqflag()
96 /* Get the MIPS IRQ assignment for a specified device.
108 unsigned int irq; in ssb_mips_irq() local
114 for (irq = 1; irq <= 4; irq++) { in ssb_mips_irq()
115 tmp = ((ipsflag & ipsflag_irq_mask[irq]) >> ipsflag_irq_shift[irq]); in ssb_mips_irq()
119 if (irq == 5) { in ssb_mips_irq()
121 irq = 0; in ssb_mips_irq()
124 return irq; in ssb_mips_irq()
127 static void clear_irq(struct ssb_bus *bus, unsigned int irq) in clear_irq() argument
131 /* Clear the IRQ in the MIPScore backplane registers */ in clear_irq()
132 if (irq == 0) { in clear_irq()
137 ipsflag_irq_mask[irq]); in clear_irq()
141 static void set_irq(struct ssb_device *dev, unsigned int irq) in set_irq() argument
150 dev->irq = irq + 2; in set_irq()
152 /* clear the old irq */ in set_irq()
159 if (irq == 0) { in set_irq()
163 if ((ipsflag & ipsflag_irq_mask[irq]) != ipsflag_irq_mask[irq]) { in set_irq()
164 u32 oldipsflag = (ipsflag & ipsflag_irq_mask[irq]) >> ipsflag_irq_shift[irq]; in set_irq()
169 irqflag <<= ipsflag_irq_shift[irq]; in set_irq()
170 irqflag |= (ipsflag & ~ipsflag_irq_mask[irq]); in set_irq()
173 dev_dbg(dev->dev, "set_irq: core 0x%04x, irq %d => %d\n", in set_irq()
174 dev->id.coreid, oldirq+2, irq+2); in set_irq()
177 static void print_irq(struct ssb_device *dev, unsigned int irq) in print_irq() argument
181 "core 0x%04x, irq : %s%s %s%s %s%s %s%s %s%s %s%s %s%s\n", in print_irq()
183 irq_name[0], irq == 0 ? "*" : " ", in print_irq()
184 irq_name[1], irq == 1 ? "*" : " ", in print_irq()
185 irq_name[2], irq == 2 ? "*" : " ", in print_irq()
186 irq_name[3], irq == 3 ? "*" : " ", in print_irq()
187 irq_name[4], irq == 4 ? "*" : " ", in print_irq()
188 irq_name[5], irq == 5 ? "*" : " ", in print_irq()
189 irq_name[6], irq == 6 ? "*" : " "); in print_irq()
298 unsigned int irq, i; in ssb_mipscore_init() local
316 /* Assign IRQs to all cores on the bus, start with irq line 2, because serial usually takes 1 */ in ssb_mipscore_init()
317 for (irq = 2, i = 0; i < bus->nr_devices; i++) { in ssb_mipscore_init()
322 dev->irq = 0; in ssb_mipscore_init()
324 dev->irq = mips_irq + 2; in ssb_mipscore_init()
325 if (dev->irq > 5) in ssb_mipscore_init()
329 /* shouldn't need a separate irq line for non-4710, most of them have a proper in ssb_mipscore_init()
331 if ((bus->chip_id == 0x4710) && (irq <= 4)) { in ssb_mipscore_init()
332 set_irq(dev, irq++); in ssb_mipscore_init()
340 /* These devices get their own IRQ line if available, the rest goes on IRQ0 */ in ssb_mipscore_init()
341 if (irq <= 4) { in ssb_mipscore_init()
342 set_irq(dev, irq++); in ssb_mipscore_init()
351 dev_dbg(mcore->dev->dev, "after irq reconfiguration\n"); in ssb_mipscore_init()