Re: [PATCH 1/3 v2] GPIO: gpio-dwapb: Enable platform driver binding to MFD driver

From: Shevchenko, Andriy
Date: Fri Sep 05 2014 - 08:04:19 EST


On Fri, 2014-09-05 at 10:20 +0000, Chen, Alvin wrote:
> > > - port->bgc.gc.ngpio = ngpio;
> > > - port->bgc.gc.of_node = port_np;
> > > +#ifdef CONFIG_OF_GPIO
> >
> > Do we really need this #ifdef ?
> > of_node will be NULL anyway, or I missed something?
> Yes, otherwise, can't compile it. Please refer 'struct gpio_chip', 'gc.of_node' is in OF_GPIO micro also.

Ah, okay. Thus, it depends to Linus opinion, since I, for example, would
like to see this field present in the structure independently of
OF_GPIO.

>
> > > + if (pp->irq)
> >
> > irq == 0 is a valid hwirq (hardware irq) number. Yes, there is unlikely we have it
> > somewhere, but still it's possible. And yes, IRQ framework doesn't work with
> > virq == 0 (*virtual* irq), but accepts hwirq == 0. I recommend to use int type for
> > irq line number, and recognize negative value (usually -1) as no irq needed /
> > found.
> Understand. But if you refer the original code, you can see:
> irq = irq_of_parse_and_map(node, 0);
> If (!irq) {
> ......
> return;
> }
> From above code, if irq=0, it indicates irq is not supported for OF devices. If we use '-1' to indicate irq is not supported. To make OF work, then our code should be:

Yes, like I said above. You introduce hw irq in the pdata, which could
be 0.


> irq = irq_of_parse_and_map(node, 0);
> If (!irq) {
> pp->irq = -1;
> return;
> } else {
> pp->irq = irq;
> }
> Then the code looks strange.
>
> How do you think?

If I understood correctly you messed up with hwirq vs. virq.
Otherwise you have mention that you are using virq everywhere (I guess
you may rename the field in the structure), but in this case the field
in the platform_data looks a bit strange. Linus, what do you think?


P.S. Please, remove my Reviewed-by tag since code is changed enough.

--
Andy Shevchenko <andriy.shevchenko@xxxxxxxxx>
Intel Finland Oy
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
N‹§²æ¸›yú²X¬¶ÇvØ–)Þ{.nlj·¥Š{±‘êX§¶›¡Ü}©ž²ÆzÚj:+v‰¨¾«‘êZ+€Êzf£¢·hšˆ§~†­†Ûÿû®w¥¢¸?™¨è&¢)ßf”ùy§m…á«a¶Úÿ 0¶ìå