Skip to contentSkip to conversation

Fix calculation of I2C clock for some 86xx chips

PATCH New Timur Tabi 3 participants 6 messages Apr 4, 2008 – Apr 30, 2008

lore
Share & tools
lore

Timur Tabi

author
#0 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

Some 86xx chips use CCB as the base clock for the I2C, and others used CCB/2. There is no pattern that can be used to determine which chips use which frequency, so the only way to determine is to look up the actual SOC designation and use the right value for that SOC.

---

Yes, this is ugly and stupid, but the only alternative is to update each board configuration file with another CONFIG_ option. And yes, this does mean that as new 86xx variants are announced, cpu/mpc86xx/speed.c may need to be updated.

 cpu/mpc86xx/speed.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
cpu/mpc86xx/speed.c +13 -1
index 7e884f8..da5b58b 100644
@@ -105,8 +105,20 @@ int get_clocks(void)
 	get_sys_info(&sys_info);
 	gd->cpu_clk = sys_info.freqProcessor;
 	gd->bus_clk = sys_info.freqSystemBus;
+
+	/*
+	 * The base clock for I2C depends on the actual SOC.  Unfortunately,
+	 * there is no pattern that can be used to determine the frequency, so
+	 * the only choice is to look up the actual SOC number and use the value
+	 * for that SOC. This information is taken from application note
+	 * AN2919.
+	 */
+#ifdef CONFIG_MPC8610
 	gd->i2c1_clk = sys_info.freqSystemBus;
-	gd->i2c2_clk = sys_info.freqSystemBus;
+#else
+	gd->i2c1_clk = sys_info.freqSystemBus / 2;
+#endif
+	gd->i2c2_clk = gd->i2c1_clk;
 
 	if (gd->cpu_clk != 0)
 		return 0;
Signature · 1 line
1.5.4
#1 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

Quoted 6 lines · In message <[email protected]> you wrote:

Some 86xx chips use CCB as the base clock for the I2C, and others used CCB/2. There is no pattern that can be used to determine which chips use which frequency, so the only way to determine is to look up the actual SOC designation and use the right value for that SOC.

Will this goin through the 86xx custodian repo, or should I pull this directly?

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"In the long run, every program becomes rococo, and then rubble."
- Alan Perlis
#2 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

Quoted 6 lines · Wolfgang Denk
Quoted 5 lines · In message <[email protected]> you wrote:

Some 86xx chips use CCB as the base clock for the I2C, and others used CCB/2. There is no pattern that can be used to determine which chips use which frequency, so the only way to determine is to look up the actual SOC designation and use the right value for that SOC.

Quoted 9 lines
Quoted 1 line

Will this goin through the 86xx custodian repo, or should I pull this directly?

Best regards,

Wolfgang Denk

Please pick this up directly.

Thanks,
jdl

author
#3 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

Wolfgang, I think you forgot this one.

Quoted 23 lines · Jon Loeliger
Quoted 6 lines · Wolfgang Denk
Quoted 5 lines · In message <[email protected]> you wrote:

Some 86xx chips use CCB as the base clock for the I2C, and others used CCB/2. There is no pattern that can be used to determine which chips use which frequency, so the only way to determine is to look up the actual SOC designation and use the right value for that SOC.

Quoted 8 lines
Quoted 1 line

Will this goin through the 86xx custodian repo, or should I pull this directly?

Best regards,

Wolfgang Denk

Please pick this up directly.

Thanks,
jdl

Signature · 2 lines
Timur Tabi
Linux kernel developer at Freescale
#4 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

Quoted 1 line · In message <[email protected]> you wrote:

Wolfgang, I think you forgot this one.

Indeed. I missed that there were actually two very similar messages.

Thanks for pointing out.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Don't think; let the machine do it for you!"        - E. C. Berkeley
#5 lore raw

PATCH 1/1 Fix calculation of I2C clock for some 86xx chips

In reply to Timur Tabi
Quoted 8 lines · In message <[email protected]> you wrote:

Some 86xx chips use CCB as the base clock for the I2C, and others used CCB/2. There is no pattern that can be used to determine which chips use which frequency, so the only way to determine is to look up the actual SOC designation and use the right value for that SOC.

---

Quoted 7 lines

Yes, this is ugly and stupid, but the only alternative is to update each board configuration file with another CONFIG_ option. And yes, this does mean that as new 86xx variants are announced, cpu/mpc86xx/speed.c may need to be updated.

 cpu/mpc86xx/speed.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
An expert is a person who avoids the small errors while  sweeping  on
to the grand fallacy.