📄 softboot.c
字号:
/* * softboot routine */#include "config.h"#define PIO0_DATA (*(volatile unsigned long *)0x00500604)void __softboot_start(void){ unsigned long pllvalue,plldiv, pllmult; // power off RAM *((volatile unsigned long *)0x00500320)=0; *((volatile unsigned long *)0x00500300)=0; // power off DVD drive (pio0 pin 4) *((volatile unsigned long *)0x00500608)=1<<20; *((volatile unsigned long *)0x00500604)=1<<20|1<<4; // Hold all the quasar stuff in reset // XXX doesnt seem to buy anything, plus thsi causes a small OSD glitch// *((volatile unsigned long *)0x00607FE0)=0xFFFF;// *((volatile unsigned long *)0x00607FE4)=0xFFFF; /* // ***** SET PLL: PLL REG ***** mov r0, #QUASAR_BASE // BASE: 0x0600000 add r0, r0, #0x7000 // generate 0x0607000 add r0, r0, #0x0010 // generate 0x0607100 = REG 0x1C04 on Quasar mov r1, #(PLLREG_VALUE & 0xFF) // 0x8e=99.9 - 0xd6=148.5 add r1, r1, #(PLLREG_VALUE & 0xFF00) // generate pattern 38E/3d6 str r1, [r0, #0] // write to DBUS_pll_control*/ pllmult=0; plldiv=3; pllvalue = (plldiv<<8)+(pllmult<<2)+2; *((volatile unsigned long *)0x0607010)=pllvalue; // wait for IR activity SAR_BASE // BASE: 0x //set pio direction - input *((volatile unsigned long *)0x00500608)=1<<17; // wait pio0 pin 1 to 0 while((PIO0_DATA & 2) == 0); // wait pio0 pin 1 to 1 while((PIO0_DATA & 2) != 0); // power on RAM *((volatile unsigned long *)0x00500320)=1; return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -