Re: [PATCHv3 2/2] tty: of_serial: support for 32 bit accesses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 27, 2011 at 6:32 AM, Jamie Iles <jamie@xxxxxxxxxxxxx> wrote:
> Some platforms e.g. TI Davinci require 32-bit accesses to the UARTs.
> The of_serial driver currently registers all UARTs as UPIO_MEM.  Add a
> new attribute "io-width" to allow the port to be registered with
> different IO width requirements.
>
> Acked-by: Alan Cox <alan@xxxxxxxxxxxxxxx>
> Acked-by: Grant Likely <grant.likely@xxxxxxxxxxxx>
> Signed-off-by: Jamie Iles <jamie@xxxxxxxxxxxxx>
> ---
>  .../devicetree/bindings/tty/serial/of-serial.txt   |    3 +++
>  drivers/tty/serial/of_serial.c                     |   17 +++++++++++++++++
>  2 files changed, 20 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
> index 35e53ae..93260d0 100644
> --- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt
> +++ b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
> @@ -21,6 +21,9 @@ Optional properties:
>  - reg-shift : quantity to shift the register offsets by.
>  - used-by-rtas : set to indicate that the port is in use by the OpenFirmware
>   RTAS and should not be registered.
> +- io-width : the size (in bytes) of the IO accesses that should be performed

I know I've already picked this up into linux-next, but I'm going to
change the property name (unless there are objections).  This should
be okay since it hasn't appeared in any mainline kernels yet.  I'd
like this to be named 'reg-io-width' instead to be more consistent
with the existing 'reg-shift' and 'reg-offset' properties.

g.

> +  on the device.  There are some systems that require 32-bit accesses to the
> +  UART (e.g. TI davinci).
>
>  Example:
>
> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
> index c911b24..dfcad6f 100644
> --- a/drivers/tty/serial/of_serial.c
> +++ b/drivers/tty/serial/of_serial.c
> @@ -65,6 +65,23 @@ static int __devinit of_platform_serial_setup(struct platform_device *ofdev,
>
>        port->irq = irq_of_parse_and_map(np, 0);
>        port->iotype = UPIO_MEM;
> +       prop = of_get_property(np, "io-width", &prop_size);
> +       if (prop && (prop_size == sizeof(u32))) {
> +               switch (be32_to_cpup(prop)) {
> +               case 1:
> +                       port->iotype = UPIO_MEM;
> +                       break;
> +               case 4:
> +                       port->iotype = UPIO_MEM32;
> +                       break;
> +               default:
> +                       dev_warn(&ofdev->dev,
> +                                "unsupported io width (%d bytes)\n",
> +                                be32_to_cpup(prop));
> +                       return -EINVAL;
> +               }
> +       }
> +
>        port->type = type;
>        port->uartclk = be32_to_cpup(clk);
>        port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP
> --
> 1.7.4.1
>
> _______________________________________________
> devicetree-discuss mailing list
> devicetree-discuss@xxxxxxxxxxxxxxxx
> https://lists.ozlabs.org/listinfo/devicetree-discuss
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux