devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Walter Goossens <waltergoossens@home.nl>
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: Mon, 17 Jan 2011 15:02:44 -0700	[thread overview]
Message-ID: <20110117220244.GA17963@angua.secretlab.ca> (raw)
In-Reply-To: <4D34AEC3.60801@home.nl>

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.

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 22:02 UTC|newest]

Thread overview: 27+ 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: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 22:02           ` Grant Likely [this message]
2011-01-17 23:27             ` Walter Goossens
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-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-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 11:48               ` Thomas Chou
2011-02-02 12:11                 ` [Nios2-dev] " 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 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
     [not found]                       ` <4D4B2BC9.1030000-CmkmPbn3yAE@public.gmane.org>
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=20110117220244.GA17963@angua.secretlab.ca \
    --to=grant.likely@secretlab.ca \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dmitry.torokhov@gmail.com \
    --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 \
    --cc=waltergoossens@home.nl \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).