Hi,
I have a custom MPC8270 board running Linux and u-boot.
Now, I enabled the watchdog on the 8270 and need to kick it regularly by
writing ;
0x556c
0xaa39
To the internal register @ 0x0x1000e.
When I am coming out from head.S to start_kernel I was thinking of
kicking
it a couple times "manually"
before a timer interrupt is inserted which will take care of it until a
"superdaemon" is taking over.
I tried to serve the register as follows;
*((volatile unsigned int*)(0xf001000e))=0x556c;
*((volatile unsigned int*)(0xf001000e))=0xaa39;
But it does not take effect. I thought that since u-boot had set up the
IMMR
to 0xf000'0000 I could
directly write to the register as above.
Any clues why this does not work?
Thx // Matias
Hi Matias,
On Thursday 20 September 2007 10:19, Matias Sundman wrote:
Hi,
I have a custom MPC8270 board running Linux and u-boot.
Now, I enabled the watchdog on the 8270 and need to kick it regularly by
writing ;
0x556c
0xaa39
To the internal register @ 0x0x1000e.
When I am coming out from head.S to start_kernel I was thinking of
kicking it a couple times "manually" before a timer interrupt is inserted
which will take care of it until a "superdaemon" is taking over.
I tried to serve the register as follows;
*((volatile unsigned int*)(0xf001000e))=3D0x556c;
*((volatile unsigned int*)(0xf001000e))=3D0xaa39;
But it does not take effect. I thought that since u-boot had set up the
IMMR to 0xf000'0000 I could directly write to the register as above.
Any clues why this does not work?
The Software Service Register (SWSR) is 16-bit wide. Unsigned int on the 82=
70=20
is 32-bit wide.
You must not reference physical addresses directly after the MMU has been=20
turned on. Use ioremap/iounmap to map/unmaap the CPM registers. If you're=20
using ARCH=3Dppc, you can also use the global CPM mapping cpm2_immr.
Use the out_* macros/functions to write to I/O space.
out_be16(&cpm2_immr->im_siu_conf.siu_82xx.sc_swsr, 0x556c);
out_be16(&cpm2_immr->im_siu_conf.siu_82xx.sc_swsr, 0xaa39);
Best regards,
=2D-=20
Laurent Pinchart
CSE Semaphore Belgium
Chauss=C3=A9e de Bruxelles, 732A
B-1410 Waterloo
Belgium
T +32 (2) 387 42 59
=46 +32 (2) 387 42 75
Hi Guys,
The Software Service Register (SWSR) is 16-bit wide which Laurent
Pinchart [laurentp@cse-semaphore.com] so nicely pointed out for me.
So it actually works with;
*((volatile unsigned short*)(0xf001000e))=0x556c;
*((volatile unsigned short*)(0xf001000e))=0xaa39;
Thx // Matias
________________________________
From: linuxppc-embedded-bounces+matias.sundman=ericsson.com@ozlabs.org
[mailto:linuxppc-embedded-bounces+matias.sundman=ericsson.com@ozlabs.org
] On Behalf Of Matias Sundman
Sent: den 20 september 2007 10:19
To: linuxppc-embedded@ozlabs.org
Subject: 8270 & Watchdog - early start
Hi,
I have a custom MPC8270 board running Linux and u-boot.
Now, I enabled the watchdog on the 8270 and need to kick it regularly by
writing ;
0x556c
0xaa39
To the internal register @ 0x0x1000e.
When I am coming out from head.S to start_kernel I was thinking of
kicking
it a couple times "manually"
before a timer interrupt is inserted which will take care of it until a
"superdaemon" is taking over.
I tried to serve the register as follows;
*((volatile unsigned int*)(0xf001000e))=0x556c;
*((volatile unsigned int*)(0xf001000e))=0xaa39;
But it does not take effect. I thought that since u-boot had set up the
IMMR
to 0xf000'0000 I could
directly write to the register as above.
Any clues why this does not work?
Thx // Matias
On Thursday 20 September 2007 12:06, Matias Sundman wrote:
Hi Guys,
The Software Service Register (SWSR) is 16-bit wide which Laurent
Pinchart [laurentp@cse-semaphore.com] so nicely pointed out for me.
So it actually works with;
*((volatile unsigned short*)(0xf001000e))=3D0x556c;
*((volatile unsigned short*)(0xf001000e))=3D0xaa39;
You still shouldn't use direct access with MMU enabled. Use the global CPM=
=20
mapping and the I/O access macros.
out_be16(&cpm2_immr->im_siu_conf.siu_82xx.sc_swsr, 0x556c);
out_be16(&cpm2_immr->im_siu_conf.siu_82xx.sc_swsr, 0xaa39);
Best regards,
=2D-=20
Laurent Pinchart
CSE Semaphore Belgium
Chauss=C3=A9e de Bruxelles, 732A
B-1410 Waterloo
Belgium
T +32 (2) 387 42 59
=46 +32 (2) 387 42 75
On Thursday 20 September 2007 13:11, samppa@sundmangroup.com wrote:
quoted
You still shouldn't use direct access with MMU enabled. Use the global
CPM mapping and the I/O access macros.
I understand, but I need to kick on the WDT before "cpm2_immr"
is initialized dur to timing constraints.
You can then probably get away with the BAT mapping. However you should sti=
ll=20
use the I/O access macro out_be16.
Best regards,
=2D-=20
Laurent Pinchart
CSE Semaphore Belgium
Chauss=E9e de Bruxelles, 732A
B-1410 Waterloo
Belgium
T +32 (2) 387 42 59
=46 +32 (2) 387 42 75
You still shouldn't use direct access with MMU enabled. Use the global
CPM
mapping and the I/O access macros.
I understand, but I need to kick on the WDT before "cpm2_immr"
is initialized dur to timing constraints.
Cheers // Matias
On Thursday 20 September 2007 12:06, Matias Sundman wrote:
quoted
Hi Guys,
The Software Service Register (SWSR) is 16-bit wide which Laurent
Pinchart [laurentp@cse-semaphore.com] so nicely pointed out for me.
So it actually works with;
*((volatile unsigned short*)(0xf001000e))=0x556c;
*((volatile unsigned short*)(0xf001000e))=0xaa39;