Subject: Re: [PATCH] [V2] powerpc: legacy_serial: reg-offset & shift aren't used

From: Benjamin Herrenschmidt <[email-masked]>
Date: Mon, 07 Jul 2008 16:47:08 +1000

On Tue, 2008-07-01 at 10:52 -0700, John Linn wrote:
> The legacy serial driver does not work with an 8250
> type UART that uses reg-offset and reg-shift. This
> change updates the driver so it doesn't find the UART
> when those properties are present on the UART in the
> device tree for soc devices.
> 
> Signed-off-by: John Linn <[email-masked]>
> Acked-by: Grant Likely <[email-masked]>
> ---
> V2
> 
> Corrected logic to use "||" rather than "&&".

I have some problems with this patch:

 - First if the properties are present but their value match the
register layout of a standard UART, we will bail out... not nice.

 - Why don't we just implement support for the reg-shift and
offset instead ?

Cheers,
Ben.

>  arch/powerpc/kernel/legacy_serial.c |    5 +++++
>  1 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c
> index 61dd174..cf37f5c 100644
> --- a/arch/powerpc/kernel/legacy_serial.c
> +++ b/arch/powerpc/kernel/legacy_serial.c
> @@ -136,6 +136,11 @@ static int __init add_legacy_soc_port(struct device_node *np,
>  	if (of_get_property(np, "clock-frequency", NULL) == NULL)
>  		return -1;
>  
> +	/* if reg-shift or offset, don't try to use it */
> +	if ((of_get_property(np, "reg-shift", NULL) != NULL) ||
> +		(of_get_property(np, "reg-offset", NULL) != NULL))
> +		return -1;
> +
>  	/* if rtas uses this device, don't try to use it as well */
>  	if (of_get_property(np, "used-by-rtas", NULL) != NULL)
>  		return -1;