All of lore.kernel.org
 help / color / mirror / Atom feed
From: Walter Goossens <waltergoossens@home.nl>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: Thomas Chou <thomas@wytron.com.tw>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	linux-kernel@vger.kernel.org, nios2-dev@sopc.et.ntust.edu.tw,
	linux-input@vger.kernel.org, devicetree-discuss@lists.ozlabs.org
Subject: Re: [PATCH] alter_ps2: Add devicetree support
Date: Tue, 18 Jan 2011 00:27:02 +0100	[thread overview]
Message-ID: <4D34D046.20708@home.nl> (raw)
In-Reply-To: <20110117220244.GA17963@angua.secretlab.ca>

On 1/17/11 11:02 PM, Grant Likely wrote:
> On Mon, Jan 17, 2011 at 10:04:03PM +0100, Walter Goossens wrote:
>> On 1/17/11 7:59 AM, Grant Likely wrote:
>>> On Sun, Jan 16, 2011 at 11:29 PM, Thomas Chou<thomas@wytron.com.tw>  wrote:
>>>> @@ -173,6 +176,16 @@ static int __devexit altera_ps2_remove(struct platform_device *pdev)
>>>>         return 0;
>>>>   }
>>>>
>>>> +#ifdef CONFIG_OF
>>>> +static struct of_device_id altera_ps2_match[] = {
>>>> +       {
>>>> +               .compatible = "altera,altera_ps2",
>>>> +       },
>>> So is this an FPGA soft core PS2 device?  Is there any kind of version
>>> attached to the soft core?  The compatible value should specify an
>>> exact version of the implementation that this driver works with.
>>> (Newer core versions can claim compatibility with older ones, so the
>>> driver's compatible list doesn't need to be exhaustive).
>>>
>> What's the preferred way of versioning components in a device-tree?
>> Quite a few components inside an fpga will get a new version number with
>> every release of the tools. For example components supplied by Altera
>> will get a new number with every release of their IP library (approx.
>> twice a year) even when (at least from a software point of view) there
>> is nothing changed in the core. Should we add the number to the
>> "compatible" name and possibly get slightly more bulky drivers, or add a
>> version tag to the components where a driver can make decisions based on
>> the version of the core (if needed)?
>> Another way to reduce the number of lines in a compatible section would
>> be to add both their versioned and unversioned compatible entry in the
>> dts so drivers not needing a specific version don't need to supply the
>> entire list.
>> We do have the version numbers available when generating the DTS and
>> NiosII is still quite new to device-tree so we are still flexible in
>> fixing this in the best possible way.
> A good rule of thumb is to always choose compatible values that
> reflect real working hardware.  ie. "xlnx,xps-uartlite-1.00.a" instead
> of trying to define a generic "xlnx,uartlite".  You can see this value
> in drivers/serial/uartlite.c, and write the driver to match the value
> of the device that you actually worked with.
>
> Then, when you produce a .dts for a design, each device must specify
> exactly what it is (the specific version) plus an optional list of
> devices that it is 100% register-level backwards compatible with.  In
> the example above, the uartlite has retained the exact same interface,
> so all designs claim compatibility with xlnx,xps-uartlite-1.00.a
> regardless of the actual version.
>
> To take the example of the altera ps2 core; say altera has released
> versions 1, 2, 3, 4 and 5 of the core, and say the behaviour changed
> in a non-compatible way in version 3.  Then the driver might do
> something like:
>
>
> static struct of_device_id altera_ps2_match[] = {
>         { .compatible = "altera,altera_ps2-1", .data = altera_ps2_1_ops, },
>         { .compatible = "altera,altera_ps2-3", .data = altera_ps2_3_ops, },
>         { }
> };
>
> Then the compatible values for each version in a .dts file would be:
>
> v1: compatible = "altera,altera_ps2-1";
> v2: compatible = "altera,altera_ps2-2", "altera,altera_ps2-1";
> v3: compatible = "altera,altera_ps2-3";
> v4: compatible = "altera,altera_ps2-4", "altera,altera_ps2-3";
> v5: compatible = "altera,altera_ps2-5", "altera,altera_ps2-3";
>
> so, instead of trying to us a 'generic' value like "altera,altera_ps2"
> which has a bunch of ambiguity about which hardware actually
> implements the behaviour, the values "altera,altera_ps2-1" and
> "altera,altera_ps2-3" become the de-facto 'generic' values without any
> messiness or ambiguity about what they mean.
>
> Plus, each .dts file still specifies the exact version that is
> implemented on the board so that the driver can still fixup
> version-specific bugs if any are discovered in the future.
>
Ahh ok.
That does look like a good solution. I'll try and cook something up for 
that.
Thanks for the explanation!

Walter

> g.
>
>>> Otherwise, this patch looks correct.
>>>
>>> g.
>>>
>>>> +       {},
>>>> +}
>>>> +MODULE_DEVICE_TABLE(of, altera_jtaguart_match);
>>>> +#endif /* CONFIG_OF */
>>>> +
>>>>   /*
>>>>   * Our device driver structure
>>>>   */
>>>> @@ -182,6 +195,9 @@ static struct platform_driver altera_ps2_driver = {
>>>>         .driver = {
>>>>                 .name   = DRV_NAME,
>>>>                 .owner  = THIS_MODULE,
>>>> +#ifdef CONFIG_OF
>>>> +               .of_match_table = altera_ps2_match,
>>>> +#endif
>>>>         },
>>>>   };
>>>>
>>>> --
>>>> 1.7.3.4
>>>>
>>>>
>>>

  reply	other threads:[~2011-01-17 23:27 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4D040D1C.2020705@home.nl>
     [not found] ` <4D040D1C.2020705-CmkmPbn3yAE@public.gmane.org>
2011-01-17  6:29   ` [PATCH] alter_ps2: Add devicetree support Thomas Chou
2011-01-17  6:29     ` Thomas Chou
2011-01-17  6:59     ` Grant Likely
     [not found]       ` <AANLkTi=8+Q5dm+5Pa-cYkmaBWQ4S7jgjZOL0ovtmrdxB-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-01-17 21:04         ` Walter Goossens
2011-01-17 21:04           ` Walter Goossens
2011-01-17 22:02           ` Grant Likely
2011-01-17 23:27             ` Walter Goossens [this message]
2011-01-18 14:26               ` Thomas Chou
2011-01-17 21:31     ` Dmitry Torokhov
     [not found]       ` <20110117213100.GC27245-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-01-17 22:04         ` Grant Likely
2011-01-17 22:04           ` Grant Likely
2011-01-24  5:58           ` [PATCH v2] altera_ps2: " Thomas Chou
2011-02-02  4:31             ` Grant Likely
2011-02-02  4:36               ` Grant Likely
     [not found]                 ` <AANLkTikxSrwOfU=m_h+6G5hQMk6drOpqOPSfbBdzg53g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-02-03  3:05                   ` [PATCH v3] " Thomas Chou
2011-02-03  3:05                     ` Thomas Chou
2011-02-12  9:26                     ` Grant Likely
2011-02-12 13:23                       ` Thomas Chou
2011-02-14  2:06                       ` [PATCH v4] " Thomas Chou
2011-02-14  2:20                         ` Dmitry Torokhov
2011-02-16  4:40                         ` Grant Likely
     [not found]               ` <20110202043121.GF29148-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2011-02-02  4:45                 ` [PATCH v2] " Dmitry Torokhov
2011-02-02  4:45                   ` Dmitry Torokhov
2011-02-02 11:48               ` Thomas Chou
2011-02-02 12:11                 ` [Nios2-dev] " Tobias Klauser
2011-02-02 12:11                   ` Tobias Klauser
2011-02-02 15:38                 ` Grant Likely
     [not found]                   ` <20110202153803.GC20275-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2011-02-02 23:32                     ` Thomas Chou
2011-02-02 23:32                       ` Thomas Chou
2011-02-02 15:39                 ` Grant Likely
2011-02-02 23:35                   ` Thomas Chou
     [not found]                   ` <20110202153959.GD20275-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2011-02-03 22:27                     ` Walter Goossens
2011-02-03 22:27                       ` Walter Goossens
     [not found]                       ` <4D4B2BC9.1030000-CmkmPbn3yAE@public.gmane.org>
2011-02-03 22:53                         ` Mitch Bradley
2011-02-03 22:53                           ` Mitch Bradley
2011-02-03 23:02                           ` Walter Goossens

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=4D34D046.20708@home.nl \
    --to=waltergoossens@home.nl \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=grant.likely@secretlab.ca \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nios2-dev@sopc.et.ntust.edu.tw \
    --cc=thomas@wytron.com.tw \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.