void prom_init_secondary(void) { clear_c0_config(CONF_CM_CMASK); set_c0_config(0x2); clear_c0_status(ST0_IM); set_c0_status(0x1ffff); }
void au1000_restart(char *command) { /* Set all integrated peripherals to disabled states */ u32 prid = read_c0_prid(); printk(KERN_NOTICE "\n** Resetting Integrated Peripherals\n"); switch (prid & 0xFF000000) { case 0x00000000: /* Au1000 */ au_writel(0x02, 0xb0000010); /* ac97_enable */ au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); au_writel(0x00, 0xb017fffc); /* usbh_enable */ au_writel(0x00, 0xb0200058); /* usbd_enable */ au_writel(0x00, 0xb0300040); /* ir_enable */ au_writel(0x00, 0xb0520000); /* macen0 */ au_writel(0x00, 0xb0520004); /* macen1 */ au_writel(0x00, 0xb1000008); /* i2s_enable */ au_writel(0x00, 0xb1100100); /* uart0_enable */ au_writel(0x00, 0xb1200100); /* uart1_enable */ au_writel(0x00, 0xb1300100); /* uart2_enable */ au_writel(0x00, 0xb1400100); /* uart3_enable */ au_writel(0x02, 0xb1600100); /* ssi0_enable */ au_writel(0x02, 0xb1680100); /* ssi1_enable */ au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ au_writel(0x00, 0xb1900028); /* sys_clksrc */ au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; case 0x01000000: /* Au1500 */ au_writel(0x02, 0xb0000010); /* ac97_enable */ au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); au_writel(0x00, 0xb017fffc); /* usbh_enable */ au_writel(0x00, 0xb0200058); /* usbd_enable */ au_writel(0x00, 0xb1520000); /* macen0 */ au_writel(0x00, 0xb1520004); /* macen1 */ au_writel(0x00, 0xb1100100); /* uart0_enable */ au_writel(0x00, 0xb1400100); /* uart3_enable */ au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ au_writel(0x00, 0xb1900028); /* sys_clksrc */ au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; case 0x02000000: /* Au1100 */ au_writel(0x02, 0xb0000010); /* ac97_enable */ au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); au_writel(0x00, 0xb017fffc); /* usbh_enable */ au_writel(0x00, 0xb0200058); /* usbd_enable */ au_writel(0x00, 0xb0300040); /* ir_enable */ au_writel(0x00, 0xb0520000); /* macen0 */ au_writel(0x00, 0xb1000008); /* i2s_enable */ au_writel(0x00, 0xb1100100); /* uart0_enable */ au_writel(0x00, 0xb1200100); /* uart1_enable */ au_writel(0x00, 0xb1400100); /* uart3_enable */ au_writel(0x02, 0xb1600100); /* ssi0_enable */ au_writel(0x02, 0xb1680100); /* ssi1_enable */ au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ au_writel(0x00, 0xb1900028); /* sys_clksrc */ au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; default: break; } set_c0_status(ST0_BEV | ST0_ERL); set_c0_config(CONF_CM_UNCACHED); flush_cache_all(); write_c0_wired(0); #if defined(CONFIG_MIPS_PB1500) || defined(CONFIG_MIPS_PB1100) || defined(CONFIG_MIPS_DB1000) || defined(CONFIG_MIPS_DB1100) || defined(CONFIG_MIPS_DB1500) || defined(CONFIG_MIPS_VEGAS) /* Do a HW reset if the board can do it */ au_writel(0x00000000, 0xAE00001C); #endif __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); }