Skip to contentSkip to conversation

85xx io out functions need sync after write.

PATCH New Ed Swarthout 4 participants 5 messages Sep 26, 2007 – Sep 27, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 85xx io out functions need sync after write.

This fixes the mc146818 rtc_read/write functions for 85xx.

---

 cpu/mpc85xx/start.S |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
cpu/mpc85xx/start.S +5 -0
index 2c98c2a..5d65190 100644
@@ -701,6 +701,7 @@ in8:
 	.globl	out8
 out8:
 	stb	r4,0x0000(r3)
+	sync
 	blr
 
 /*------------------------------------------------------------------------------- */
@@ -710,6 +711,7 @@ out8:
 	.globl	out16
 out16:
 	sth	r4,0x0000(r3)
+	sync
 	blr
 
 /*------------------------------------------------------------------------------- */
@@ -719,6 +721,7 @@ out16:
 	.globl	out16r
 out16r:
 	sthbrx	r4,r0,r3
+	sync
 	blr
 
 /*------------------------------------------------------------------------------- */
@@ -728,6 +731,7 @@ out16r:
 	.globl	out32
 out32:
 	stw	r4,0x0000(r3)
+	sync
 	blr
 
 /*------------------------------------------------------------------------------- */
@@ -737,6 +741,7 @@ out32:
 	.globl	out32r
 out32r:
 	stwbrx	r4,r0,r3
+	sync
 	blr
 
 /*------------------------------------------------------------------------------- */
Signature · 1 line
1.5.3.1.65.g47184
#2 lore raw

PATCH 1/1 85xx io out functions need sync after write.

In reply to Ed Swarthout
Quoted 13 lines · Ed Swarthout

This fixes the mc146818 rtc_read/write functions for 85xx.

---

 cpu/mpc85xx/start.S |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
cpu/mpc85xx/start.S +0 -0
index 2c98c2a..5d65190 100644

cpu/mpc85xx/start.S in8: · line 704

Quoted 4 lines
cpu/mpc85xx/start.S +1 -0
@@ -701,6 +701,7 @@ in8:
 	.globl	out8
 out8:
 	stb	r4,0x0000(r3)
+	sync

Another way would be to use the out_be32() and friends functions defined in asm-ppc/io.h. They already have the sync/barrier included and are recommened for accessing peripheral devices.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#3 lore raw

PATCH 1/1 85xx io out functions need sync after write.

From: Stefan Roese

Quoted 12 lines · Ed Swarthout

cpu/mpc85xx/start.S in8: · line 704

Quoted 6 lines

This fixes the mc146818 rtc_read/write functions for 85xx.

--- a/cpu/mpc85xx/start.S
out8:

cpu/mpc85xx/start.S +1 -0
 	stb	r4,0x0000(r3)
+	sync

Another way would be to use the out_be32() and friends functions defined in asm-ppc/io.h. They already have the sync/barrier included and are recommened for accessing peripheral devices.

Agreed, but grep finds 132 calls to out[813] in driver and rtc files.

I only noticed the missing sync's when debugging a failing "date" command that uses rtc/mc145818.

-Ed

#4 lore raw

PATCH 1/1 85xx io out functions need sync after write.

Quoted 6 lines · In message <B52955765C54604CB1A62A9967F22C73026F7696@az33exm20.fsl.freescale.ne…
Quoted 4 lines

Another way would be to use the out_be32() and friends functions defined in asm-ppc/io.h. They already have the sync/barrier included and are recommened for accessing peripheral devices.

Agreed, but grep finds 132 calls to out[813] in driver and rtc files.

As Stefan already pointed out on #u-boot, this is just an indication that this is a pretty common error.

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
All easy problems have already been solved.