From: linux@roeck-us.net (Guenter Roeck)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] clk: si570: Add a driver for SI570 oscillators
Date: Fri, 13 Sep 2013 12:48:22 -0700 [thread overview]
Message-ID: <20130913194822.GA12117@roeck-us.net> (raw)
In-Reply-To: <c6755ff6-104d-40fe-a753-0e165cff1e10@AM1EHSMHS004.ehs.local>
On Fri, Sep 13, 2013 at 10:26:04AM -0700, S?ren Brinkmann wrote:
> On Fri, Sep 13, 2013 at 10:00:05AM -0700, Guenter Roeck wrote:
> > On Thu, Sep 12, 2013 at 05:55:37PM -0700, Soren Brinkmann wrote:
> > > Add a driver for SILabs 570, 571, 598, 599 programmable oscillators.
> > > The devices generate low-jitter clock signals and are reprogrammable via
> > > an I2C interface.
> > >
> > > Cc: Guenter Roeck <linux@roeck-us.net>
> > > Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
> > > ---
[ ... ]
> > > + /* Applying a new frequency can take up to 10ms */
> > > + usleep_range(10000, 10001);
> >
> > One microsecond range doesn't really buy anything besides forcing the compiler
> > to generate extra code. Why not just use 10000 ?
> That's due to checkpatch. I originally had 'msleep(10)' and checkpatch
> suggested to use 'usleep_range()'. Then I put
> 'usleep_range(10000, 10000)' and checkpatch suggested to not use the
> same values for MIN and MAX, so I added the 1 to the MAX value.
> If it is considered to be safe and okay to put in MIN=MAX=10000, I'll
> change it accordingly.
>
Guess what checkpatch means is to put in something resonable,
such as maybe (10000, 12000). (10000, 10001) just defeats checkpatch
which doesn't really provide any value. So either provide a reasonable
and acceptable range or use a single value.
[ ... ]
> > > + match = of_match_node(clk_si570_of_match, client->dev.of_node);
> > > + if (!match)
> > > + return -EINVAL;
> >
> > Seems unusual. Is this really needed ? It precludes the driver from being used
> > in a non-devicetree environment, for example. I would guess that there is a match
> > if client->dev.of_node is set. Otherwise, this code would be needed in every
> > driver supporting devicetree, and I don't recall seeing that.
> >
> > > + ddata = match->data;
> > > +
> > You should be able to get this information (ie the pointer to si570_device_data)
> > from id->driver_data. That would be more consistent with other i2c devices.
> I think I copied this approach from the other clk-si... driver. I'll
> do some research on your suggestion and change it. Could you point me to
> an example for your proposal?
>
drivers/hwmon/lm90.c or drivers/hwmon/max6697.c.
> > > +
> > > + if (of_property_read_u32(client->dev.of_node, "factory-fout",
> > > + &factory_fout)) {
> > > + dev_warn(&client->dev,
> > > + "DTS does not contain factory-fout, using default\n");
> >
> > Is that really worth a warning ?
> My understanding is, that the default output frequency is part-specific
> and required to calculate the frequency of the internal crystal. Hence,
> if you do not provide the correct default output frequency for your part, all
> frequencies generated by this driver will be off, unless the here used
> default matches your part. Please correct me if I'm wrong, otherwise, I
> think it's worth a warning.
>
Maybe the property should be mandatory ?
Thanks,
Guenter
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: "Sören Brinkmann" <soren.brinkmann@xilinx.com>
Cc: Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Rob Landley <rob@landley.net>,
Mike Turquette <mturquette@linaro.org>,
Grant Likely <grant.likely@linaro.org>,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Hyun Kwon <hyunk@xilinx.com>
Subject: Re: [PATCH] clk: si570: Add a driver for SI570 oscillators
Date: Fri, 13 Sep 2013 12:48:22 -0700 [thread overview]
Message-ID: <20130913194822.GA12117@roeck-us.net> (raw)
In-Reply-To: <c6755ff6-104d-40fe-a753-0e165cff1e10@AM1EHSMHS004.ehs.local>
On Fri, Sep 13, 2013 at 10:26:04AM -0700, Sören Brinkmann wrote:
> On Fri, Sep 13, 2013 at 10:00:05AM -0700, Guenter Roeck wrote:
> > On Thu, Sep 12, 2013 at 05:55:37PM -0700, Soren Brinkmann wrote:
> > > Add a driver for SILabs 570, 571, 598, 599 programmable oscillators.
> > > The devices generate low-jitter clock signals and are reprogrammable via
> > > an I2C interface.
> > >
> > > Cc: Guenter Roeck <linux@roeck-us.net>
> > > Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
> > > ---
[ ... ]
> > > + /* Applying a new frequency can take up to 10ms */
> > > + usleep_range(10000, 10001);
> >
> > One microsecond range doesn't really buy anything besides forcing the compiler
> > to generate extra code. Why not just use 10000 ?
> That's due to checkpatch. I originally had 'msleep(10)' and checkpatch
> suggested to use 'usleep_range()'. Then I put
> 'usleep_range(10000, 10000)' and checkpatch suggested to not use the
> same values for MIN and MAX, so I added the 1 to the MAX value.
> If it is considered to be safe and okay to put in MIN=MAX=10000, I'll
> change it accordingly.
>
Guess what checkpatch means is to put in something resonable,
such as maybe (10000, 12000). (10000, 10001) just defeats checkpatch
which doesn't really provide any value. So either provide a reasonable
and acceptable range or use a single value.
[ ... ]
> > > + match = of_match_node(clk_si570_of_match, client->dev.of_node);
> > > + if (!match)
> > > + return -EINVAL;
> >
> > Seems unusual. Is this really needed ? It precludes the driver from being used
> > in a non-devicetree environment, for example. I would guess that there is a match
> > if client->dev.of_node is set. Otherwise, this code would be needed in every
> > driver supporting devicetree, and I don't recall seeing that.
> >
> > > + ddata = match->data;
> > > +
> > You should be able to get this information (ie the pointer to si570_device_data)
> > from id->driver_data. That would be more consistent with other i2c devices.
> I think I copied this approach from the other clk-si... driver. I'll
> do some research on your suggestion and change it. Could you point me to
> an example for your proposal?
>
drivers/hwmon/lm90.c or drivers/hwmon/max6697.c.
> > > +
> > > + if (of_property_read_u32(client->dev.of_node, "factory-fout",
> > > + &factory_fout)) {
> > > + dev_warn(&client->dev,
> > > + "DTS does not contain factory-fout, using default\n");
> >
> > Is that really worth a warning ?
> My understanding is, that the default output frequency is part-specific
> and required to calculate the frequency of the internal crystal. Hence,
> if you do not provide the correct default output frequency for your part, all
> frequencies generated by this driver will be off, unless the here used
> default matches your part. Please correct me if I'm wrong, otherwise, I
> think it's worth a warning.
>
Maybe the property should be mandatory ?
Thanks,
Guenter
next prev parent reply other threads:[~2013-09-13 19:48 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-13 0:55 [PATCH] SI570 clock driver Soren Brinkmann
2013-09-13 0:55 ` Soren Brinkmann
2013-09-13 0:55 ` [PATCH] clk: si570: Add a driver for SI570 oscillators Soren Brinkmann
2013-09-13 0:55 ` Soren Brinkmann
2013-09-13 0:55 ` Soren Brinkmann
2013-09-13 17:00 ` Guenter Roeck
2013-09-13 17:00 ` Guenter Roeck
2013-09-13 17:26 ` Sören Brinkmann
2013-09-13 17:26 ` Sören Brinkmann
2013-09-13 17:26 ` Sören Brinkmann
2013-09-13 19:48 ` Guenter Roeck [this message]
2013-09-13 19:48 ` Guenter Roeck
2013-09-13 21:05 ` Sören Brinkmann
2013-09-13 21:05 ` Sören Brinkmann
2013-09-13 21:05 ` Sören Brinkmann
2013-09-13 21:14 ` Guenter Roeck
2013-09-13 21:14 ` Guenter Roeck
2013-09-14 8:01 ` Sebastian Hesselbarth
2013-09-14 8:01 ` Sebastian Hesselbarth
2013-09-14 8:01 ` Sebastian Hesselbarth
2013-09-16 16:34 ` Stephen Warren
2013-09-16 16:34 ` Stephen Warren
2013-09-16 16:49 ` Guenter Roeck
2013-09-16 16:49 ` Guenter Roeck
2013-09-16 16:59 ` Stephen Warren
2013-09-16 16:59 ` Stephen Warren
2013-09-16 16:59 ` Stephen Warren
2013-09-16 17:35 ` Guenter Roeck
2013-09-16 17:35 ` Guenter Roeck
2013-09-16 17:35 ` Guenter Roeck
2013-09-16 18:37 ` Stephen Warren
2013-09-16 18:37 ` Stephen Warren
2013-09-16 18:37 ` Stephen Warren
2013-09-16 19:14 ` Guenter Roeck
2013-09-16 19:14 ` Guenter Roeck
2013-09-17 7:59 ` Sebastian Hesselbarth
2013-09-17 7:59 ` Sebastian Hesselbarth
2013-09-17 13:08 ` Guenter Roeck
2013-09-17 13:08 ` Guenter Roeck
2013-09-17 16:14 ` Stephen Warren
2013-09-17 16:14 ` Stephen Warren
2013-09-18 20:41 ` Sören Brinkmann
2013-09-18 20:41 ` Sören Brinkmann
2013-09-18 20:41 ` Sören Brinkmann
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=20130913194822.GA12117@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-arm-kernel@lists.infradead.org \
/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.