Thread (27 messages) flat view 27 messages, 9 authors, 2014-10-21

[PATCH v2 2/4] ARM: mediatek: Add Pinctrl/GPIO driver for mt8135.

From: Linus Walleij <hidden>
Date: 2014-10-21 09:08:45
Also in: linux-devicetree, lkml

On Mon, Oct 6, 2014 at 12:35 PM, Joe.C [off-list ref] wrote:
On Thu, 2014-10-02 at 15:38 +0200, Linus Walleij wrote:
(...)
quoted
quoted
+static struct mt_desc_function *
+mt_pctrl_desc_find_irq_by_name(struct mt_pinctrl *pctl,
+                                        const char *pin_name)
Why is it called *find_irq_by_name if it returns a
function? Seems more like find_function_from_pin_name
really.

And I don't know if that is such a good idea.
In 8135 & 6589, not every gpio pin support interrupt function. For those
support interrupt, it will have a EINT function and use a different EINT
offset number.
In 8127, EINT support is merged into gpio function, but they still use a
different EINT offset number.
(...)
This function is used to find EINT function for the pin. Maybe we should
name this mt_pctrl_desc_find_irq_function_from_name to make it more
clear.
OK such translation is usually the work of the irqdomain. Is there
some reason why it is not used in this driver then?
quoted
quoted
+                       for (j = 0; j < PINMUX_MAX_VAL; j++) {
+                               if (func->irqnum != 255)
So why does it end at 255? Seems pretty arbitrary.
If a function support interrupt, we put its interrupt number in irqnum,
otherwise it will be 255. Does it make it more clear if we use macro
name MT_NO_EINT_SUPPORT?
Yes.
We use a different interrupt number than gpio pin number. I think it
more nature to use EINT interrupt number as the hw_number, so I think we
can't use gpiochip_irqchip_add and we still need to provide our
own .to_irq mapping function.
You should be able to use irqdomain to translate I think.
While it might still be possible to generate group+function array based
on datasheet, IMHO the structure will be more complicate and harder to
prove the correctness.

So we choose to use descriptor array + macros in device tree because it
is quite simple to generate the pin descriptors and easier to notice if
there's error in device tree pin groups description.
There is a parallel discussion on this, or two maybe.

The number of pin control bindings is exploding and I need to
push back.

Please help out defining generic pin control bindings for this
use case and we can move forward.

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help