diff mbox

[U-Boot,2/6] ARM: tegra: rename MASK_BITS_29_28 to MASK_BITS_31_28

Message ID 1390422036-31947-2-git-send-email-swarren@wwwdotorg.org
State Accepted
Delegated to: Tom Warren
Headers show

Commit Message

Stephen Warren Jan. 22, 2014, 8:20 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

The only place where the MASK_BITS_* values are used is in
adjust_periph_pll(), which interprets the value 4 (old MASK_BITS_29_28,
new MASK_BITS_31_28) as being associated with mask OUT_CLK_SOURCE4_MASK,
i.e. bits 31:28. Rename the MASK_BITS_ macro to reflect how it's actually
implemented.

Note that no Tegra clock register actually uses all of bits 31:28 as
the mux field. Rather, bits 30:28, 29:28, or 28 are used. However, in
those cases, nothing is stored in the bits about the mux field, so it's
safe to pretend that the mux field extends all the way to the end of the
register. As such, the U-Boot clock driver is currently a bit lazy, and
doesn't distinguish between 31:28, 30:28, 29:29 and 29; it just lumps
them all together and pretends they're all 31:28. This patch doesn't
cause this issue; it was pre-existing. Hopefully, future patches will
clean this up.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 arch/arm/cpu/tegra114-common/clock.c    |  2 +-
 arch/arm/cpu/tegra30-common/clock.c     |  2 +-
 arch/arm/include/asm/arch-tegra/clock.h | 11 ++++++++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

Comments

Thierry Reding Jan. 24, 2014, 1:44 p.m. UTC | #1
On Wed, Jan 22, 2014 at 01:20:32PM -0700, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> The only place where the MASK_BITS_* values are used is in
> adjust_periph_pll(), which interprets the value 4 (old MASK_BITS_29_28,
> new MASK_BITS_31_28) as being associated with mask OUT_CLK_SOURCE4_MASK,
> i.e. bits 31:28. Rename the MASK_BITS_ macro to reflect how it's actually
> implemented.
> 
> Note that no Tegra clock register actually uses all of bits 31:28 as
> the mux field. Rather, bits 30:28, 29:28, or 28 are used. However, in
> those cases, nothing is stored in the bits about the mux field, so it's

s/about/above/ perhaps?

> safe to pretend that the mux field extends all the way to the end of the
> register. As such, the U-Boot clock driver is currently a bit lazy, and
> doesn't distinguish between 31:28, 30:28, 29:29 and 29; it just lumps

Shouldn't that list be: "31:28, 30:28, 29:28 and 28"?

> them all together and pretends they're all 31:28. This patch doesn't
> cause this issue; it was pre-existing. Hopefully, future patches will
> clean this up.

Yes, that'd be nice.

> diff --git a/arch/arm/include/asm/arch-tegra/clock.h b/arch/arm/include/asm/arch-tegra/clock.h
[...]
> +/*
> + * Note that no Tegra clock register actually uses all of bits 31:28 as
> + * the mux field. Rather, bits 30:28, 29:28, or 28 are used. However, in
> + * those cases, nothing is stored in the bits about the mux field, so it's
> + * safe to pretend that the mux field extends all the way to the end of the
> + * register. As such, the U-Boot clock driver is currently a bit lazy, and
> + * doesn't distinguish between 31:28, 30:28, 29:29 and 29; it just lumps

The list seems wrong here as well, but it looks like it's copy/pasted to
or from the commit message.

>  enum {
>  	MASK_BITS_31_30	= 2,	/* num of bits used to specify clock source */
>  	MASK_BITS_31_29,
> -	MASK_BITS_29_28,
> +	MASK_BITS_31_28,
>  };

If this ever gets cleaned up I think it'd be clearer to explicitly
define them to the number of bits that they use by turning them into
#defines.

Thierry
Stephen Warren Jan. 24, 2014, 5:08 p.m. UTC | #2
On 01/24/2014 06:44 AM, Thierry Reding wrote:
> On Wed, Jan 22, 2014 at 01:20:32PM -0700, Stephen Warren wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> The only place where the MASK_BITS_* values are used is in
>> adjust_periph_pll(), which interprets the value 4 (old MASK_BITS_29_28,
>> new MASK_BITS_31_28) as being associated with mask OUT_CLK_SOURCE4_MASK,
>> i.e. bits 31:28. Rename the MASK_BITS_ macro to reflect how it's actually
>> implemented.

>>  enum {
>>  	MASK_BITS_31_30	= 2,	/* num of bits used to specify clock source */
>>  	MASK_BITS_31_29,
>> -	MASK_BITS_29_28,
>> +	MASK_BITS_31_28,
>>  };
> 
> If this ever gets cleaned up I think it'd be clearer to explicitly
> define them to the number of bits that they use by turning them into
> #defines.

The specific values are actually removed later in the series. I'll fix
the other issues you found.
diff mbox

Patch

diff --git a/arch/arm/cpu/tegra114-common/clock.c b/arch/arm/cpu/tegra114-common/clock.c
index 47612e12d262..3bede71a7a1f 100644
--- a/arch/arm/cpu/tegra114-common/clock.c
+++ b/arch/arm/cpu/tegra114-common/clock.c
@@ -103,7 +103,7 @@  static enum clock_id clock_source[CLOCK_TYPE_COUNT][CLOCK_MAX_MUX+1] = {
 		MASK_BITS_31_29},
 	{ CLK(PERIPH),	CLK(CGENERAL),	CLK(SFROM32KHZ),	CLK(OSC),
 		CLK(NONE),	CLK(NONE),	CLK(NONE),	CLK(NONE),
-		MASK_BITS_29_28}
+		MASK_BITS_31_28}
 };
 
 /*
diff --git a/arch/arm/cpu/tegra30-common/clock.c b/arch/arm/cpu/tegra30-common/clock.c
index 89c3529c885b..33528702185e 100644
--- a/arch/arm/cpu/tegra30-common/clock.c
+++ b/arch/arm/cpu/tegra30-common/clock.c
@@ -102,7 +102,7 @@  static enum clock_id clock_source[CLOCK_TYPE_COUNT][CLOCK_MAX_MUX+1] = {
 		MASK_BITS_31_29},
 	{ CLK(PERIPH),  CLK(CGENERAL),  CLK(SFROM32KHZ), CLK(OSC),
 		CLK(NONE),      CLK(NONE),      CLK(NONE),      CLK(NONE),
-		MASK_BITS_29_28}
+		MASK_BITS_31_28}
 };
 
 /*
diff --git a/arch/arm/include/asm/arch-tegra/clock.h b/arch/arm/include/asm/arch-tegra/clock.h
index 052c0208b18a..cb89bd91f40c 100644
--- a/arch/arm/include/asm/arch-tegra/clock.h
+++ b/arch/arm/include/asm/arch-tegra/clock.h
@@ -20,10 +20,19 @@  enum clock_osc_freq {
 	CLOCK_OSC_FREQ_COUNT,
 };
 
+/*
+ * Note that no Tegra clock register actually uses all of bits 31:28 as
+ * the mux field. Rather, bits 30:28, 29:28, or 28 are used. However, in
+ * those cases, nothing is stored in the bits about the mux field, so it's
+ * safe to pretend that the mux field extends all the way to the end of the
+ * register. As such, the U-Boot clock driver is currently a bit lazy, and
+ * doesn't distinguish between 31:28, 30:28, 29:29 and 29; it just lumps
+ * them all together and pretends they're all 31:28.
+ */
 enum {
 	MASK_BITS_31_30	= 2,	/* num of bits used to specify clock source */
 	MASK_BITS_31_29,
-	MASK_BITS_29_28,
+	MASK_BITS_31_28,
 };
 
 #include <asm/arch/clock-tables.h>