public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sshtylyov@ru•mvista.com>
To: Grant Likely <grant.likely@secretlab•ca>
Cc: linuxppc-dev@ozlabs•org, John Linn <john.linn@xilinx•com>
Subject: Re: [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart 16550.
Date: Fri, 21 Mar 2008 16:00:57 +0300	[thread overview]
Message-ID: <47E3B189.6060002@ru.mvista.com> (raw)
In-Reply-To: <fa686aa40803201719i7bf02ba2qd259f1a36a24d943@mail.gmail.com>

Hello.

Grant Likely wrote:

> On Thu, Mar 20, 2008 at 8:43 AM, John Linn <john.linn@xilinx•com> wrote:

>>The Xilinx 16550 uart core is not a standard 16550, because it uses
>> word-based addressing rather than byte-based addressing.  As a result,
>> it is not compatible with the open firmware 'ns16550' compatible
>> binding.  This code introduces new bindings, which pass the correct
>> register base and regshift properties to the uart driver to enable
>> this core to be used.  Doing this cleanly required some refactoring of
>> the existing code.

> Personally, I'm not fond of this approach.  There is already some
> traction to using the reg-shift property to specify spacing, and I
> think it would be appropriate to also define a reg-offset property to
> handle the +3 offset and then let the xilinx 16550 nodes use those.

    That's making things only worse than the mere "reg-shift" idea. I think 
that both are totally wrong. Everything about the programming interface should 
be said in the "compatible" and possibly "model" properties. of_serial driver 
should recognize them and pass the necessary details to 8250.c. As for me, I'm 
strongly against plaguing the device tree with the *Linux driver 
implementation specifics* (despite I was trying this with MTD -- there it 
seemed somewhat more grounded :-).

> More comments below.

>> Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx•com>
>> Signed-off-by: John Linn <john.linn@xilinx•com>

>> diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
>> index 2efb892..910c94f 100644
>> --- a/drivers/serial/of_serial.c
>> +++ b/drivers/serial/of_serial.c

[...]

>>        return 0;
>>  }
>> @@ -81,8 +82,9 @@ static int __devinit of_platform_serial_probe(struct of_device *ofdev,
>>        if (info == NULL)
>>                return -ENOMEM;
>>
>> -       port_type = (unsigned long)id->data;
>> -       ret = of_platform_serial_setup(ofdev, port_type, &port);
>> +       memcpy(info, id->data, sizeof(struct of_serial_info));
>> +       port_type = info->type;
>> +       ret = of_platform_serial_setup(ofdev, info, &port);
>>        if (ret)
>>                goto out;
>>
>> @@ -100,7 +102,6 @@ static int __devinit of_platform_serial_probe(struct of_device *ofdev,
>>        if (ret < 0)
>>                goto out;
>>
>> -       info->type = port_type;
>>        info->line = ret;
>>        ofdev->dev.driver_data = info;
>>        return 0;
>> @@ -128,15 +129,33 @@ static int of_platform_serial_remove(struct of_device *ofdev)
>>        return 0;
>>  }
>>
>> +static struct of_serial_info __devinitdata ns8250_info = { .type = PORT_8250 };
>> +static struct of_serial_info __devinitdata ns16450_info = { .type = PORT_16450 };
>> +static struct of_serial_info __devinitdata ns16550_info = { .type = PORT_16550 };
>> +static struct of_serial_info __devinitdata ns16750_info = { .type = PORT_16750 };
>> +static struct of_serial_info __devinitdata xilinx_16550_info = {
>> +       .type = PORT_16550,
>> +       .regshift = 2,
>> +       .regoffset = 3,

    I see that the data is already encoded in the driver itself, so I agree 
with the patch.

>> +};
>> +static struct of_serial_info __devinitdata unknown_info = { .type = PORT_UNKNOWN };

> In support of my argument; the fact that you need a table of data says
> to me that this data should really be encoded in the device tree.  :-)

    Not at all.

> Cheers,
> g.

WBR, Sergei

  parent reply	other threads:[~2008-03-21 12:59 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <12060242324116-git-send-email-john.linn@xilinx.com>
2008-03-20 14:43 ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart 16550 John Linn
2008-03-21  0:19   ` Grant Likely
2008-03-21  9:21     ` Paul Mackerras
2008-03-21 11:39       ` Segher Boessenkool
2008-03-21 16:08         ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart16550 Stephen Neuendorffer
2008-03-21 16:48           ` Segher Boessenkool
2008-03-22 14:50       ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart 16550 Grant Likely
2008-03-22 16:06         ` Sergei Shtylyov
2008-03-24 14:09         ` Sergei Shtylyov
2008-03-24 14:27           ` Grant Likely
2008-03-24 16:15             ` Sergei Shtylyov
2008-03-24 16:48               ` Grant Likely
2008-03-24 17:03               ` Sergei Shtylyov
2008-03-25 22:48                 ` John Linn
2008-03-21 13:00     ` Sergei Shtylyov [this message]
2008-03-21 15:37       ` Segher Boessenkool
2008-03-21 15:54         ` Sergei Shtylyov
2008-03-21 16:45           ` Segher Boessenkool
2008-03-21 16:50             ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart16550 Stephen Neuendorffer
2008-03-21 17:01             ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart 16550 Sergei Shtylyov
2008-03-22 15:06       ` Grant Likely
2008-03-22 16:40         ` Sergei Shtylyov
2008-03-21 16:14     ` [PATCH 2/3] [POWERPC] Xilinx: of_serial support for Xilinx uart16550 Stephen Neuendorffer
     [not found] ` <1206024232655-git-send-email-john.linn@xilinx.com>
2008-03-20 14:43   ` [PATCH 3/3] [POWERPC] Xilinx: boot support for Xilinx uart 16550 John Linn
2008-03-20 14:54     ` Grant Likely
2008-03-20 16:15       ` John Linn
2008-03-20 21:18         ` Grant Likely
     [not found]       ` <20080320175601.5D86217C8055@mail127-sin.bigfish.com>
2008-03-20 21:07         ` Grant Likely
2008-03-20 22:04     ` Grant Likely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47E3B189.6060002@ru.mvista.com \
    --to=sshtylyov@ru$(echo .)mvista.com \
    --cc=grant.likely@secretlab$(echo .)ca \
    --cc=john.linn@xilinx$(echo .)com \
    --cc=linuxppc-dev@ozlabs$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox