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))=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?
The Software Service Register (SWSR) is 16-bit wide. Unsigned int on the 8270 is 32-bit wide. You must not reference physical addresses directly after the MMU has been turned on. Use ioremap/iounmap to map/unmaap the CPM registers. If you're using ARCH=ppc, 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, -- 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