Lines Matching refs:chip
37 struct virq_chip *chip; /* irq chip */ member
80 int virq_to_irq(struct virq_chip *chip, int virq) in virq_to_irq() argument
86 if (!chip) in virq_to_irq()
91 if (desc->chip == chip) { in virq_to_irq()
187 struct virq_chip *chip; in virq_chip_generic_handler() local
201 chip = desc->chip; in virq_chip_generic_handler()
205 if (!chip || !vdata || !parent) in virq_chip_generic_handler()
209 for (i = 0; i < chip->num_regs; i++) { in virq_chip_generic_handler()
210 status_reg = reg_base_get(desc, chip->status_base, i); in virq_chip_generic_handler()
211 desc->status_buf[i] = chip->read(parent, status_reg); in virq_chip_generic_handler()
219 for (i = 0; i < chip->num_irqs; i++) { in virq_chip_generic_handler()
220 if (desc->status_buf[chip->irqs[i].reg_offset] & in virq_chip_generic_handler()
221 chip->irqs[i].mask) { in virq_chip_generic_handler()
233 for (i = 0; i < chip->num_regs; i++) { in virq_chip_generic_handler()
234 status_reg = reg_base_get(desc, chip->status_base, i); in virq_chip_generic_handler()
235 ret = chip->write(parent, status_reg, ~0U); in virq_chip_generic_handler()
242 int virq_add_chip(struct udevice *dev, struct virq_chip *chip, int irq) in virq_add_chip() argument
259 vdata = (struct virq_data *)calloc(sizeof(*vdata), chip->num_irqs); in virq_add_chip()
265 status_buf = (uint *)calloc(sizeof(*status_buf), chip->num_irqs); in virq_add_chip()
271 for (i = 0; i < chip->num_irqs; i++) in virq_add_chip()
276 desc->chip = chip; in virq_add_chip()
280 desc->irq_end = vdata[chip->num_irqs - 1].irq; in virq_add_chip()
282 desc->reg_stride = chip->irq_reg_stride ? : 1; in virq_add_chip()
283 desc->unalign_reg_stride = chip->irq_unalign_reg_stride ? : 1; in virq_add_chip()
284 desc->unalign_reg_idx = chip->irq_unalign_reg_stride ? in virq_add_chip()
285 chip->irq_unalign_reg_idx : 0; in virq_add_chip()
289 for (i = 0; i < chip->num_regs; i++) { in virq_add_chip()
290 mask_reg = reg_base_get(desc, chip->mask_base, i); in virq_add_chip()
291 ret = chip->write(dev, mask_reg, ~0U); in virq_add_chip()
298 for (i = 0; i < chip->num_regs; i++) { in virq_add_chip()
299 status_reg = reg_base_get(desc, chip->status_base, i); in virq_add_chip()
300 ret = chip->write(dev, status_reg, ~0U); in virq_add_chip()
327 struct virq_chip *chip; in __virq_enable() local
341 chip = desc->chip; in __virq_enable()
342 if (!chip) in __virq_enable()
346 mask_val = chip->irqs[virq].mask; in __virq_enable()
347 mask_reg = reg_base_get(desc, chip->mask_base, in __virq_enable()
348 chip->irqs[virq].reg_offset); in __virq_enable()
349 reg_val = chip->read(desc->parent, mask_reg); in __virq_enable()
355 ret = chip->write(desc->parent, mask_reg, reg_val); in __virq_enable()