On Mon, Jul 29, 2019 at 12:49:55AM +0200, Linus Walleij wrote: > On Mon, Jul 8, 2019 at 1:01 PM Brian Masney <masneyb@xxxxxxxxxxxxx> wrote: > > +static void gpiochip_add_default_irq_domain_ops(struct irq_domain_ops *ops) > > +{ > > + if (!ops->activate) > > + ops->activate = gpiochip_irq_domain_activate; > > + > > + if (!ops->deactivate) > > + ops->deactivate = gpiochip_irq_domain_deactivate; > > + > > + if (!ops->translate) > > + ops->translate = gpiochip_hierarchy_irq_domain_translate; > > + > > + if (!ops->alloc) > > + ops->alloc = gpiochip_hierarchy_irq_domain_alloc; > > + > > + if (!ops->free) > > + ops->free = irq_domain_free_irqs_common; > > +} > > I'm fine with translate(), this seems to be what Lina needs too. > > But do we really need to make them all optional? activate() and > deactivate() will require the driver to lock the irq etc which is hairy. I can't think of a reason right now that we'd need to override the others. Since the structure was there, I made all of them optional to try to future proof this a little bit. It probably would be better to only make translate optional at this point. If needed, someone can submit a patch for one or more of the others with their use case. Brian