Hi,
I've been having trouble with my ARM based system (ipdx425), running linux 2.6.20.3, not rebooting when issuing the "reboot" command, it would simply hang after "Restarting system". After a bit of searching I was able to find that I needed to modify include/asm-arm/arch-ixp4xx/system.h.
Code:
static inline void arch_reset(char mode)
{
if ( 1 && mode == 's') {
/* Jump into RedBoot Flash ROM at address 0x50000040 */
cpu_reset(0x50000040); // This is the fix, changed from cpu_reset(0)
} else {
/* Use on-chip reset capability */
/* set the "key" register to enable access to
* "timer" and "enable" registers
*/
*IXP4XX_OSWK = IXP4XX_WDT_KEY;
/* write 0 to the timer register for an immediate reset */
*IXP4XX_OSWT = 0;
*IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE;
}
}
By changing cpu_reset(0) to cpu_reset(0x50000040) the system now reboots when the "reboot" command is issued. However it does not reset the graphic controller, any image drawn to the screen will stay there until the kernel has booted and it receives a command to draw something else. I need this to be reseted as well.
The graphic controller (SM722, Lynx3DM+) is on the PCI buss and I should be able to reset it by issuing a reset command over the PCI buss (as far as I understand all PCI devices has to respond do this command). The problem is I don't know how to do this, I'd be grateful for any help.
Regards
Leon