[PATCH] serial/amba-pl011: move custom pin control to driver
viresh kumar
viresh.kumar at linaro.org
Mon Jun 25 07:31:00 EDT 2012
On Wed, May 23, 2012 at 8:18 PM, Linus Walleij
<linus.walleij at stericsson.com> wrote:
> From: Linus Walleij <linus.walleij at linaro.org>
>
> We had a boot regression in Ux500 in the merge window because
> two orthogonal pin control schemes for the PL011 were merged
> at the same time:
>
> - One using the .init() and .exit() hooks into the platform
> for Ux500 putting the pins into default vs sleep state
> respectively as the port was started/stopped.
> commit a09806607fd20bed2f8c41fe22793386790a14aa
> "ARM: ux500: switch to using pinctrl for uart0"
>
> - One hogging the default setting at PL011 probe()
> commit 258e055111d3cde2607e0d04eb91da2f7a59b591
> "serial: amba-pl011: adopt pinctrl support"
>
> To get a solution that works for both let's scrap the stuff
> in the platform callbacks, instead have the driver itself
> select default and sleep states when the port is
> started/stopped. Hopefully this works for all clients.
> Platform callbacks are bad for device tree migration anyway,
> so this rids us of another problem in Ux500.
>
> Cc: linux-serial at vger.kernel.org
> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> Cc: Shawn Guo <shawn.guo at linaro.org>
> Cc: Russell King <rmk+kernel at arm.linux.org.uk>
> Reported-by: Lee Jones <lee.jones at linaro.org>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
> arch/arm/mach-ux500/board-mop500.c | 54 +-----------------------------------
> drivers/tty/serial/amba-pl011.c | 45 +++++++++++++++++++++++++++---
> 2 files changed, 42 insertions(+), 57 deletions(-)
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> @@ -1869,11 +1897,20 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
> goto free;
> }
>
> - pinctrl = devm_pinctrl_get_select_default(&dev->dev);
> - if (IS_ERR(pinctrl)) {
> - ret = PTR_ERR(pinctrl);
> + uap->pinctrl = devm_pinctrl_get(&dev->dev);
> + if (IS_ERR(uap->pinctrl)) {
> + ret = PTR_ERR(uap->pinctrl);
> goto unmap;
> }
Hi Linus,
People testing SPEAr with v3.5-rc1 saw that serial devices don't show
up during boot and they
actually return with error from this point, after Shawn's last patch.
That will still happen with
this patch i believe.
What is expected from Platforms to handle this? AFAICR, we haven't
done anything special
to bind a pinctrl node to a struct dev for uart.
--
Viresh
More information about the linux-arm-kernel
mailing list