From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Paul Walmsley <paul@pwsan.com>
Cc: linux-arm-kernel@lists.arm.linux.org.uk,
linux-kernel@vger.kernel.org, Tony Lindgren <tony@atomide.com>,
linux-omap@vger.kernel.org
Subject: Re: [PATCH A 01/10] OMAP2/3: Add non-CORE DPLL rate set code and M, N programming
Date: Wed, 28 Jan 2009 22:10:56 +0000 [thread overview]
Message-ID: <20090128221056.GJ23301@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <20090128021243.7244.6362.stgit@localhost.localdomain>
Since it's been posted to lists, comments are going to be made...
On Tue, Jan 27, 2009 at 07:12:47PM -0700, Paul Walmsley wrote:
> + /*
> + * According to the 12-5 CDP code from TI, "Limitation 2.5"
> + * on 3430ES1 prevents us from changing DPLL multipliers or dividers
> + * on DPLL4.
> + */
> + if (omap_rev() == OMAP3430_REV_ES1_0 &&
> + !strcmp("dpll4_ck", clk->name)) {
> + printk(KERN_ERR "clock: DPLL4 cannot change rate due to "
> + "silicon 'Limitation 2.5' on 3430ES1.\n");
> + return -EINVAL;
> + }
Yuck. That's revolting and extremely fragile. Don't play these games.
You've got plenty of free flag bits in clk->flags which could be used
to prevent the DPLL from being changed. You've also got other ways to
prevent it - eg, setting dpll_data to NULL.
To do exception handling based on strcmp(), or even worse register offset
and bit position (as is done elsewhere in the OMAP code) is utterly insane.
However, what's worse is that, below...
> +static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate)
> +{
> + u16 freqsel;
> + struct dpll_data *dd;
> +
> + if (!clk || !rate)
> + return -EINVAL;
> +
> + dd = clk->dpll_data;
> + if (!dd)
> + return -EINVAL;
> +
> + if (rate == omap2_get_dpll_rate(clk))
> + return 0;
> +
> + if (dd->last_rounded_rate != rate)
> + omap2_dpll_round_rate(clk, rate);
> +
> + if (dd->last_rounded_rate == 0)
> + return -EINVAL;
> +
> + freqsel = _omap3_dpll_compute_freqsel(clk, dd->last_rounded_n);
> + if (!freqsel)
> + WARN_ON(1);
> +
> + omap3_noncore_dpll_program(clk, dd->last_rounded_m, dd->last_rounded_n,
> + freqsel);
The return value from the above test isn't checked, so this function
will succeed even for dpll4_ck.
next prev parent reply other threads:[~2009-01-28 22:11 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-28 2:12 [PATCH A 00/10] OMAP clock, A of F: preliminaries Paul Walmsley
2009-01-28 2:12 ` [PATCH A 01/10] OMAP2/3: Add non-CORE DPLL rate set code and M, N programming Paul Walmsley
2009-01-28 22:10 ` Russell King - ARM Linux [this message]
2009-01-28 22:26 ` Russell King - ARM Linux
2009-01-29 7:21 ` Paul Walmsley
2009-01-29 14:23 ` Russell King - ARM Linux
2009-01-30 5:57 ` Paul Walmsley
2009-01-30 8:45 ` Russell King - ARM Linux
2009-01-28 2:12 ` [PATCH A 02/10] OMAP: Fix sparse, checkpatch warnings in OMAP2/3 PRCM/PM code Paul Walmsley
2009-01-28 2:12 ` [PATCH A 03/10] OMAP24xx clock: add missing SSI L4 interface clock Paul Walmsley
2009-01-28 2:12 ` [PATCH A 04/10] OMAP3: move USBHOST SAR handling from clock framework to powerdomain layer Paul Walmsley
2009-01-28 2:13 ` [PATCH A 05/10] OMAP3 clock: fix 96MHz clocks Paul Walmsley
2009-01-28 2:13 ` [PATCH A 06/10] OMAP2: Fix definition of SGX clock register bits Paul Walmsley
2009-01-28 2:13 ` [PATCH A 07/10] OMAP: Add CSI2 clock struct for handling it with clock API Paul Walmsley
2009-01-28 2:13 ` [PATCH A 08/10] OMAP: Make dpll4_m4_ck programmable with clk_set_rate() Paul Walmsley
2009-01-28 2:13 ` [PATCH A 09/10] OMAP2/3: Remove OMAP_PRM_REGADDR, OMAP_CM_REGADDR Paul Walmsley
2009-01-28 23:28 ` Russell King - ARM Linux
2009-01-29 7:40 ` Paul Walmsley
2009-01-28 2:13 ` [PATCH A 10/10] OMAP2: Implement CPUfreq frequency table based on PRCM table Paul Walmsley
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=20090128221056.GJ23301@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=tony@atomide.com \
/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
all inboxes | Powered by JetHome®