On Wed, 2015-11-25 at 10:46 -0800, Curt Brune wrote:
> Currently for PowerPC systems using device tree, the legacy serial
> ports are allocated in the order by which they are found in the device
> tree structure.
> 
> This can cause problems in cases where the device tree nodes are
> sysnthesized by an external program (kexec for example), which may not
> preserve the original order of the device tree nodes.  This in turn
> can result in the serial console changing from ttyS0 to ttyS1
> unexpectedly.
> 
> This patch uses the 'cell-index' property (if present) to map UART
> device tree nodes to legacy serial port number.  The cell-index
> property is widely used in all the Freescale .dts files for PowerPC.
> 
> Signed-off-by: Curt Brune <[email protected]>
> ---
>  arch/powerpc/kernel/legacy_serial.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/legacy_serial.c
> b/arch/powerpc/kernel/legacy_serial.c
> index 7b750c4..b717133 100644
> --- a/arch/powerpc/kernel/legacy_serial.c
> +++ b/arch/powerpc/kernel/legacy_serial.c
> @@ -164,6 +164,8 @@ static int __init add_legacy_soc_port(struct device_node
> *np,
>       u64 addr;
>       const __be32 *addrp;
>       struct device_node *tsi = of_get_parent(np);
> +     int index = -1, len;
> +     u32 *indexp;
>  
>       /* We only support ports that have a clock frequency properly
>        * encoded in the device-tree.
> @@ -188,14 +190,19 @@ static int __init add_legacy_soc_port(struct
> device_node *np,
>       if (addr == OF_BAD_ADDR)
>               return -1;
>  
> +     /* Check if the ports have an ordering, defined by 'cell-index' */
> +     if (((indexp = (u32*)of_get_property(np, "cell-index", &len)) !=
> NULL) &&
> +         (len == sizeof(u32)))
> +             index = *indexp;

const u32 *

Or better, use of_read_number() or similar.

-Scott

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to