On 17:42-20150107, Marc Zyngier wrote: a few more minor comments follow: [..] > --- a/drivers/irqchip/irq-crossbar.c > +++ b/drivers/irqchip/irq-crossbar.c [..] > @@ -33,6 +34,7 @@ > * @write: register write function pointer > */ > struct crossbar_device { > + raw_spinlock_t lock; ^^ kernel doc missing. [...] > +static int crossbar_domain_alloc(struct irq_domain *d, unsigned int virq, > + unsigned int nr_irqs, void *data) > { > - if (needs_crossbar_write(hw)) > - cb->write(hw - GIC_IRQ_START, cb->irq_map[hw - GIC_IRQ_START]); > + struct of_phandle_args *args = data; > + irq_hw_number_t hwirq; > + int i; > + > + if (args->args_count != 3) > + return -EINVAL; /* Not GIC compliant */ > + if (args->args[0] != 0) > + return -EINVAL; /* No PPI should point to this domain */ > + > + hwirq = args->args[1]; > + if ((hwirq + nr_irqs) > cb->max_crossbar_sources) > + return -EINVAL; /* Can't deal with this */ > + > + for (i = 0; i < nr_irqs; i++) { > + int err = allocate_gic_irq(d, virq + i, hwirq + i); ^^ add a blank line here? > + if (err) > + return err; > + > + irq_domain_set_hwirq_and_chip(d, virq + i, hwirq + i, > + &crossbar_chip, NULL); > + } > > return 0; > } > > /** > - * crossbar_domain_unmap - unmap a crossbar<->irq connection > + * crossbar_domain_free - unmap/free a crossbar<->irq connection > * @d: domain of irq to unmap ^^ should be @domain? > - * @irq: virq number > + * @virq: virq number > + * @nr_irqs: number of irqs to free > * > * We do not maintain a use count of total number of map/unmap > * calls for a particular irq to find out if a irq can be really > @@ -117,14 +144,19 @@ static int crossbar_domain_map(struct irq_domain *d, unsigned int irq, > * after which irq is anyways unusable. So an explicit map has to be called > * after that. > */ > -static void crossbar_domain_unmap(struct irq_domain *d, unsigned int irq) > +static void crossbar_domain_free(struct irq_domain *domain, unsigned int virq, > + unsigned int nr_irqs) > { > - irq_hw_number_t hw = irq_get_irq_data(irq)->hwirq; > + int i; > > - if (needs_crossbar_write(hw)) { > - cb->irq_map[hw - GIC_IRQ_START] = IRQ_FREE; > - cb->write(hw - GIC_IRQ_START, cb->safe_map); > + raw_spin_lock(&cb->lock); > + for (i = 0; i < nr_irqs; i++) { > + struct irq_data *d = irq_domain_get_irq_data(domain, virq + i); ^^ Add a blank line here. -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html