8270 & Watchdog - early start

6 messages, 3 authors, 2007-09-20 · open the first message on its own page

8270 & Watchdog - early start

From: Matias Sundman <hidden>
Date: 2007-09-20 08:41:16

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

Re: 8270 & Watchdog - early start

From: Laurent Pinchart <hidden>
Date: 2007-09-20 08:54:09

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

8270 & Watchdog - early start - II

From: Matias Sundman <hidden>
Date: 2007-09-20 11:09:58

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 

Re: 8270 & Watchdog - early start - II

From: Laurent Pinchart <hidden>
Date: 2007-09-20 11:22:13

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

Re: 8270 & Watchdog - early start - II

From: Laurent Pinchart <hidden>
Date: 2007-09-20 11:44:43

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

Re: 8270 & Watchdog - early start - II

From: <hidden>
Date: 2007-09-20 11:48:01

quoted
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.

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;
You still shouldn't use direct access with MMU enabled. Use the global CPM
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,

--
Laurent Pinchart
CSE Semaphore Belgium

Chaussée de Bruxelles, 732A
B-1410 Waterloo
Belgium

T +32 (2) 387 42 59
F +32 (2) 387 42 75
_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help