Re: [PATCH 10/33] pcmcia: soc_common: switch to using gpio_descs

2016-09-14 Thread Linus Walleij
On Mon, Aug 29, 2016 at 12:24 PM, Russell King
<rmk+ker...@armlinux.org.uk> wrote:

> Switch to using the gpiod_* consumer API rather than the legacy API.
>
> Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>
(...)

> +int soc_pcmcia_request_gpiods(struct soc_pcmcia_socket *skt)
> +{
> +   int i;
> +
> +   for (i = 0; i < ARRAY_SIZE(skt->stat); i++) {
> +   struct gpio_desc *desc;
> +

Here I inserted:

/* Skip over unnamed GPIOs, assume unused */
if (!skt->stat[i].name)
continue;

to get it working again on h3600.

> +   desc = gpiod_get(skt->socket.dev.parent,
> +skt->stat[i].name, GPIOD_IN);
> +   if (IS_ERR(desc)) {
> +   dev_err(skt->socket.dev.parent,
> +   "Failed to get GPIO for %s: %ld\n",
> +   skt->stat[i].name, PTR_ERR(desc));
> +   __soc_pcmcia_hw_shutdown(skt, i);
> +   return PTR_ERR(desc);
> +   }


It bugs out for me on the legacy h3600, since it only defines
two of these pins not all of the ARRAY_SIZE(skt->stat) pins
will succeed and we get an error message like this:

sa11x0-pcmcia sa11x0-pcmcia: Failed to get GPIO for (null): -2
sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2

With the patch above it goes away and the log is silent.
The debugfs gpio file looks like this:

cat gpio
gpiochip0: GPIOs 0-27, gpio:
 gpio-0   (|Power Button) in  hi
 gpio-10  (|pcmcia1-detect  ) in  hi
 gpio-11  (|pcmcia1-ready   ) in  hi
 gpio-17  (|pcmcia0-detect  ) in  hi
 gpio-18  (|Action button   ) in  hi
 gpio-21  (|pcmcia0-ready   ) in  hi
 gpio-23  (|dcd ) in  hi
 gpio-25  (|cts ) in  lo
 gpio-26  (|rts ) out lo

gpiochip1: GPIOs 28-43, parent: platform/htc-egpio, htc-egpio:
 gpio-28  (|Flash Vpp   ) out lo
 gpio-29  (|PCMCIA CARD RESET   ) out lo
 gpio-30  (|OPT RESET   ) out lo
 gpio-32  (|OPT NVRAM ON) out lo
 gpio-33  (|OPT ON  ) out lo
 gpio-34  (|LCD power   ) out lo
 gpio-36  (|LCD control ) out lo
 gpio-42  (|LCD 5v  ) out lo
 gpio-43  (|LCD 9v/-6.5v) out lo

Which seems like before the patch series.

I still suspect the PCMCIA is not really working but I have
limited experience of the bus so I don't really know how
to test it deeply or have my PCMCIA ethernet or harddrive
probe properly.

There are no regressions however, so with something like
the above patch applied:
Tested-by: Linus Walleij <linus.wall...@linaro.org>

For the whole patch series on H3600.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 18/33] pcmcia: sa1100: provide generic CF support

2016-09-14 Thread Linus Walleij
On Wed, Sep 14, 2016 at 11:06 AM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:

> Thanks, I've included a change there, should be part of the branch by
> the time you get this email - sa1100 head should be 9ad0f8181616.  If
> not, it's probably still being pushed out over my slow 'net link.

Thanks, fetched it and tested, this fix is there things work so far.

>> (It revealed another bug in fetching GPIOs but it is an orthogobal
>> problem altogether, looking into it.)
>
> If you're referring to the generic sa1100 pcmcia code, there's a fix
> for that already in my branch.

Unfortunately not, the bug is still there, I'll point it out in the relevant
patch, just need to do a boot test.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-09-14 Thread Linus Walleij
On Thu, Sep 8, 2016 at 3:21 PM, Linus Walleij <linus.wall...@linaro.org> wrote:
> On Mon, Sep 5, 2016 at 2:26 PM, Russell King - ARM Linux
> <li...@armlinux.org.uk> wrote:
>> On Mon, Sep 05, 2016 at 11:06:28AM +0200, Linus Walleij wrote:
>>> I couldn't resist testing on the Compaq iPAQ h3600. It works the
>>> same as before so:
>>> Tested-by: Linus Walleij <linus.wall...@linaro.org> [for Compaq iPAQ H3600]
>>
>> Great news.  I've been thinking about digging out my h3600, but it's
>> very old, and hasn't been turned on for many years.  I'm not sure what
>> state it's in.
>>
>> I've been hoping to try booting some kernels with qemu-system-arm, but
>> so far I've completely failed to get qemu-system-arm to do anything
>> useful - it just sits there doing apparently nothing, irrespective of
>> which platform I choose or which kernel I give it.
>>
>>> The only news in the bootlog is this:
>>> sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2
>>
>> Not so great news - that's -ENOENT.  Did that happen before these
>> changes?  That could be that the gpiod lookup table isn't found.
>> However, if that were the case, I'd have expected an error message
>> along the lines of:
>>
>> Failed to get GPIO for xxx: -nnn
>>
>> from soc_pcmcia_request_gpiods().  The other possibility is that
>> we're not getting to sa11x0_drv_pcmcia_legacy_probe() but instead
>> trying to initialise it as a generic sa11x0 socket, and
>> sa11x0_pcmcia_hw_init() is failing as a result.
>>
>> We should be using the legacy probe on H3600, so sa11x0_pcmcia_hw_init()
>> should never be reached.
>
> However that is what happens, this is my callstack after
> adding some prints:
>
> sa11x0_pcmcia_init
> sa11x0_drv_pcmcia_probe
> soc_pcmcia_init_one
> soc_pcmcia_add_one
> soc_pcmcia_hw_init
> sa11x0_pcmcia_hw_init
> soc_pcmcia_add_one: pcmcia HW init failed
> sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2

Bah I found the cause, just a simple oneliner typo in one of
the patches. I will comment on the patch in question so you can
fix it up on your branch.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 18/33] pcmcia: sa1100: provide generic CF support

2016-09-14 Thread Linus Walleij
On Mon, Aug 29, 2016 at 12:25 PM, Russell King
<rmk+ker...@armlinux.org.uk> wrote:

> Provide generic non-voltage sensing socket support for StrongARM
> platforms using the gpiolib and regulator subsystems to obtain the
> resources to control the socket.
>
> Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>
(...)

> +static int sa11x0_drv_pcmcia_probe(struct platform_device *pdev)
> +{
> +   struct soc_pcmcia_socket *skt;
> +   struct device *dev = >dev;
> +
> +   if (dev->id == -1)
> +   return sa11x0_drv_pcmcia_legacy_probe(pdev);

There is a typo there, it should be pdev->id rather than dev->id.

After fixing this, my legacy h3600 PCMCIA started probing again.

(It revealed another bug in fetching GPIOs but it is an orthogobal
problem altogether, looking into it.)

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-09-08 Thread Linus Walleij
On Mon, Sep 5, 2016 at 2:26 PM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:
> On Mon, Sep 05, 2016 at 11:06:28AM +0200, Linus Walleij wrote:
>> I couldn't resist testing on the Compaq iPAQ h3600. It works the
>> same as before so:
>> Tested-by: Linus Walleij <linus.wall...@linaro.org> [for Compaq iPAQ H3600]
>
> Great news.  I've been thinking about digging out my h3600, but it's
> very old, and hasn't been turned on for many years.  I'm not sure what
> state it's in.
>
> I've been hoping to try booting some kernels with qemu-system-arm, but
> so far I've completely failed to get qemu-system-arm to do anything
> useful - it just sits there doing apparently nothing, irrespective of
> which platform I choose or which kernel I give it.
>
>> The only news in the bootlog is this:
>> sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2
>
> Not so great news - that's -ENOENT.  Did that happen before these
> changes?  That could be that the gpiod lookup table isn't found.
> However, if that were the case, I'd have expected an error message
> along the lines of:
>
> Failed to get GPIO for xxx: -nnn
>
> from soc_pcmcia_request_gpiods().  The other possibility is that
> we're not getting to sa11x0_drv_pcmcia_legacy_probe() but instead
> trying to initialise it as a generic sa11x0 socket, and
> sa11x0_pcmcia_hw_init() is failing as a result.
>
> We should be using the legacy probe on H3600, so sa11x0_pcmcia_hw_init()
> should never be reached.

However that is what happens, this is my callstack after
adding some prints:

sa11x0_pcmcia_init
sa11x0_drv_pcmcia_probe
soc_pcmcia_init_one
soc_pcmcia_add_one
soc_pcmcia_hw_init
sa11x0_pcmcia_hw_init
soc_pcmcia_add_one: pcmcia HW init failed
sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2

It bails out when trying to get the "reset" gpio.

I'm trying to figure out how this can happen.

On the plus side: this minor snag is all the problems I have.
All other GPIOs work exactly as they should.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 01/33] gpio: sa1100: fix irq probing for ucb1x00

2016-09-07 Thread Linus Walleij
On Mon, Aug 29, 2016 at 12:24 PM, Russell King
<rmk+ker...@armlinux.org.uk> wrote:

> ucb1x00 has used IRQ probing since it's dawn to find the GPIO interrupt
> that it's connected to.  However, commit 23393d49fb75 ("gpio: kill off
> set_irq_flags usage") broke this by disabling IRQ probing on GPIO
> interrupts.  Fix this.
>
> Fixes: 23393d49fb75 ("gpio: kill off set_irq_flags usage")
> Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>

Patch applied per Russell's request. Trying to get this tested
and upstream ASAP.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-09-05 Thread Linus Walleij
On Wed, Aug 31, 2016 at 10:49 AM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:

> git://git.armlinux.org.uk/~rmk/linux-arm.git sa1100
>
> It would be great to have this tested on Lubbock, and get the PCMCIA
> issues fixed.  Maybe we can look at converting mainstone as well?

I couldn't resist testing on the Compaq iPAQ h3600. It works the
same as before so:
Tested-by: Linus Walleij <linus.wall...@linaro.org> [for Compaq iPAQ H3600]

The only news in the bootlog is this:
sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2

This device does have a PCMCIA "sleeve" where I slotted in an
ethernet card at one time to see if I could network this thing.
But I never got the PCMCIA working. Now it seems like I could
actually start looking into that as the driver gives its first sign
of life.

I don't think PCMCIA ever worked on this thing upstream,
but I have a copy of the old linux-handheld kernel tree where
it supposedly was working at one point.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-09-04 Thread Linus Walleij
On Fri, Sep 2, 2016 at 7:00 PM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:

> Linus,
>
> There's a change I'd like to merge into patch 5 - overall it looks
> like the below, and allows us to use gpio-reg with the PXA mainstone
> MST_PCMCIA[01] registers.  Some of these GPIO signals have hardware
> interrupts associated with them, but not all.
>
> Do you approve?

Yes of course.
Acked-by: Linus Walleij <linus.wall...@linaro.org>

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-08-30 Thread Linus Walleij
On Tue, Aug 30, 2016 at 11:42 PM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:
> On Tue, Aug 30, 2016 at 11:25:19PM +0200, Linus Walleij wrote:

>> > +#define to_gpio_reg(x) container_of(x, struct gpio_reg, gc)
>>
>> You don't need that trickery anymore, just:
>>
>> > +static int gpio_reg_get_direction(struct gpio_chip *gc, unsigned offset)
>> > +{
>> > +   struct gpio_reg *r = to_gpio_reg(gc);
>>
>> struct gpio_reg *r = gpiochip_get_data(gc);
>>
>> (applied everywhere)
>
> I prefer my method by a long shot

Sure it's no strong preference. Keep it like this if you like.
I'm very happy with the series either way!

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [RFC PATCH 00/33] SA11x0/PXA GPIO rework (Core + PCMCIA only)

2016-08-30 Thread Linus Walleij
On Mon, Aug 29, 2016 at 12:23 PM, Russell King - ARM Linux
<li...@armlinux.org.uk> wrote:

> Following on from the PCMCIA fixes, this series reworks GPIO on SA11x0
> and PXA platforms.  This is a subset of a larger series, which I'm
> splitting up due to its size.  This part contains the base and PCMCIA
> updates.  Further updates for IrDA drivers, DMA engine, serial, and
> ethernet will follow in time.

For all the GPIO patches:
Acked-by: Linus Walleij <linus.wall...@linaro.org>

With the smallish changes needed to patch 5/33 that one is acked too.

In fact I would ACK it anyway, because the net total cleanup is so
nice on the kernel at large... SA11x0 has never been prettier than
after this series.

I suspect you want to keep the series together and queue it in the ARM
tree? Else tell me what to apply in the GPIO tree.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH 05/33] gpio: add generic single-register fixed-direction GPIO driver

2016-08-30 Thread Linus Walleij
On Mon, Aug 29, 2016 at 12:24 PM, Russell King
<rmk+ker...@armlinux.org.uk> wrote:

> Add a simple, generic, single register fixed-direction GPIO driver.
> This is able to support a single register where a fixed number of
> bits are used for input and a fixed number of bits used for output.
>
> Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>

Clever, I like it!

>  include/linux/gpio-reg.h |  12 

Can we put this in include/linux/gpio/gpio-reg.h?

I try to do some scopeing to  there.

> +#define to_gpio_reg(x) container_of(x, struct gpio_reg, gc)

You don't need that trickery anymore, just:

> +static int gpio_reg_get_direction(struct gpio_chip *gc, unsigned offset)
> +{
> +   struct gpio_reg *r = to_gpio_reg(gc);

struct gpio_reg *r = gpiochip_get_data(gc);

(applied everywhere)

> +   if (dev)
> +   ret = devm_gpiochip_add_data(dev, >gc, r);
> +   else
> +   ret = gpiochip_add_data(>gc, r);

Aha both device and device-less, I see.

Apart from that it looks nice, any other questionmarks were
fixed in the other replies.

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia


Re: [PATCH v2] pcmcia: db1xxx_ss: fix last irq_to_gpio user

2016-03-08 Thread Linus Walleij
On Wed, Mar 2, 2016 at 4:34 PM, Manuel Lauss <manuel.la...@gmail.com> wrote:

> remove the usage of removed irq_to_gpio() function.  On pre-DB1200
> boards, pass the actual carddetect GPIO number instead of the IRQ,
> because we need the gpio to actually test card status (inserted or
> not) and can get the irq number with gpio_to_irq() instead.
>
> Tested on DB1300 and DB1500, this patch fixes PCMCIA on the DB1500,
> which used irq_to_gpio().
>
>  sta...@vger.kernel.org # v4.3
> Fixes: 832f5dacfa0b ("MIPS: Remove all the uses of custom gpio.h")
> Acked-by: Arnd Bergmann <a...@arndb.de>
> Signed-off-by: Manuel Lauss <manuel.la...@gmail.com>
> ---
> v2: "Fixes" line, and CC stable, and added Arnd's ack.

Reviewed-by: Linus Walleij <linus.wall...@linaro.org>

Yours,
Linus Walleij

___
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia