Thread (164 messages) 164 messages, 16 authors, 2018-10-15

Re: [RFC PATCH v2 09/12] gpiolib: Identify GPIO descriptor arrays with direct mapping

From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date: 2018-08-07 16:49:28
Also in: linux-arm-kernel, linux-doc, linux-omap, lkml

Hi Linus,

On Tuesday, August 7, 2018 1:29:43 AM CEST Linus Walleij wrote:
Hi Janusz!

On Tue, Aug 7, 2018 at 12:29 AM Janusz Krzysztofik [off-list ref] 
wrote:
quoted
Certain GPIO array lookup results may map directly to GPIO pins of a
single GPIO chip in hardware order.  If that condition is recognized
and handled efficiently, significant performance gain of get/set array
functions may be possible.

While processing a request for an array of GPIO descriptors, verify if
the descriptors just collected represent consecutive pins of a single
GPIO chip.  Pass that information with the array to the caller so it
can benefit from enhanced performance as soon as bitmap based get/set
array functions which can make efficient use of that are available.

Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
(...)
quoted
 This function returns a struct gpio_descs which contains an array of
-descriptors::
+descriptors.  It may also contain a valid descriptor of a single GPIO 
chip in
quoted
+case the array strictly matches pin hardware layout of the chip::

        struct gpio_descs {
                unsigned int ndescs;
                struct gpio_desc *desc[];
+               struct gpio_chip *chip;
This must be motivated: if the only purpose is to indicate to the consumer 
that
all GPIOs are on the same chip, why not just have a

bool all_on_same_chip;

That you set to true if these are all on the same chip?
My approach would probably save one or two instructions per get/set call, but 
I'm not stuck to it and will be happy to find a better solution.

How about folding the chip descriptor inside an additional structure, private 
to drivers, with internals not revealed to consumers?

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