lkml.org 
[lkml]   [2014]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] ARM: at91: spi: request all csgpio in spi probe
    Hi Alexandre,

    On Tue, 29 Jul 2014 00:38:59 +0200
    Alexandre Belloni <alexandre.belloni@free-electrons.com> wrote:

    >
    > > >>+ if (ret < 0) {
    > > >>+ dev_err(&pdev->dev,
    > > >>+ "failed to configure csgpio#%u (%d)\n",
    > > >>+ i, ret);
    > > >>+ goto out_free;
    > > >>+ }
    > > >>+ }
    > > >>+
    >
    > Mark: maybe it would make sense to do devm_gpio_request_one() in
    > of_spi_register_master(), after of_get_named_gpio.

    Might be the cleanest way to solve this issue, but you'll have to modify
    all the drivers that request cs_gpio in their setup method/callback.

    >
    > While this solves the particular issue Jiří is seeing, this will not
    > solve the case where PA14 (CS0) is not used by the spi driver at all. It
    > will remained muxed as CS0 and toggle when the spi master needs to
    > access CS0 until another driver muxes it to something else. I still
    > believe we should explicitly ask pinctrl to mux them as gpios.
    >

    Do we really care about this case ?
    After all, if a given pin needs a specific muxing during kernel boot
    (i.e. a pin connected to a gpio-led that needs to stay in its previous
    state or a pin connected to the reset line of a device that needs to
    stay up and running during kernel boot) the bootloader/bootstrap should
    have muxed this pin appropriately before booting the kernel.

    What do you mean by "we should explicitly ask pinctrl to mux them as
    gpios" ?
    Do you mean configuring all the pins as GPIOs when the pin controller is
    probed, or just adding a new pinctrl state configuring the pin as an
    output GPIO and reference it in the pinctrl-0 property of the spi
    controller.

    If the former, you'll break devices that needs their pins to stay in
    the state they were during the bootloader/boostrap phase.
    The latter won't work if the pin you request as GPIO is later requested
    by another device (which, if I'm correct, is exactly the case you're
    trying to solve).

    Best Regards,

    Boris

    --
    Boris Brezillon, Free Electrons
    Embedded Linux and Kernel engineering
    http://free-electrons.com
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2014-07-29 10:41    [W:6.178 / U:0.736 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site