AMS Sansa: Adjust View HW info page to display SD and uSD MCICLK freqs instead

of 400 khz Ident freq.  Also misc formatting changes.

Displaying the 400 khz ident frequency for the SD and uSD cards was not really
useful information.  This change displays the MCICLK frequency that we are
running the cards at.  The page now displays 0MHz until a card access and then
will displays the set frequency and the actual frequency.  The uSD display is
now only displayed for those players with a uSD

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22684 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jack Halpin 2009-09-12 20:50:11 +00:00
parent 2544b001b8
commit 589e1f0072

View file

@ -55,8 +55,8 @@
#define CLK_I2SI 8 #define CLK_I2SI 8
#define CLK_I2SO 9 #define CLK_I2SO 9
#define CLK_DBOP 10 #define CLK_DBOP 10
#define CLK_SD_IDENT_NAND 11 #define CLK_SD_MCLK_NAND 11
#define CLK_SD_IDENT_MSD 12 #define CLK_SD_MCLK_MSD 12
#define CLK_USB 13 #define CLK_USB 13
#define I2C2_CPSR0 *((volatile unsigned int *)(I2C_AUDIO_BASE + 0x1C)) #define I2C2_CPSR0 *((volatile unsigned int *)(I2C_AUDIO_BASE + 0x1C))
@ -121,11 +121,13 @@ int calc_freq(int clk)
case CLK_FCLK: case CLK_FCLK:
switch(CGU_PROC & 3) { switch(CGU_PROC & 3) {
case 0: case 0:
return (CLK_MAIN * (8 - prediv)) / (8*(postdiv + 1)); return (CLK_MAIN * (8 - prediv)) / (8 * (postdiv + 1));
case 1: case 1:
return (calc_freq(CLK_PLLA) * (8 - prediv)) / (8*(postdiv + 1)); return (calc_freq(CLK_PLLA) * (8 - prediv)) /
(8 * (postdiv + 1));
case 2: case 2:
return (calc_freq(CLK_PLLB) * (8 - prediv)) / (8*(postdiv + 1)); return (calc_freq(CLK_PLLB) * (8 - prediv)) /
(8 * (postdiv + 1));
default: default:
return 0; return 0;
} }
@ -181,20 +183,20 @@ int calc_freq(int clk)
} }
case CLK_DBOP: case CLK_DBOP:
return calc_freq(CLK_PCLK)/((CGU_DBOP & 7)+1); return calc_freq(CLK_PCLK)/((CGU_DBOP & 7)+1);
case CLK_SD_IDENT_NAND: case CLK_SD_MCLK_NAND:
if(!(MCI_NAND & (1<<8))) if(!(MCI_NAND & (1<<8)))
return 0; return 0;
else if(MCI_NAND & (1<<10)) else if(MCI_NAND & (1<<10))
return calc_freq(CLK_PCLK); return calc_freq(CLK_PCLK);
else else
return calc_freq(CLK_PCLK)/(((MCI_NAND & 0xff)*2)+1); return calc_freq(CLK_PCLK)/(((MCI_NAND & 0xff)+1)*2);
case CLK_SD_IDENT_MSD: case CLK_SD_MCLK_MSD:
if(!(MCI_SD & (1<<8))) if(!(MCI_SD & (1<<8)))
return 0; return 0;
else if(MCI_SD & (1<<10)) else if(MCI_SD & (1<<10))
return calc_freq(CLK_PCLK); return calc_freq(CLK_PCLK);
else else
return calc_freq(CLK_PCLK)/(((MCI_SD & 0xff)*2)+1); return calc_freq(CLK_PCLK)/(((MCI_SD & 0xff)+1)*2);
case CLK_USB: case CLK_USB:
switch(CGU_USB & 3) { /* 0-> div=1 other->div=1/(2*n) */ switch(CGU_USB & 3) { /* 0-> div=1 other->div=1/(2*n) */
case 0: case 0:
@ -224,6 +226,10 @@ bool __dbg_hw_info(void)
{ {
char buf[50]; char buf[50];
int line; int line;
int last_nand = 0;
#if defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_C200V2)
int last_sd = 0;
#endif
lcd_clear_display(); lcd_clear_display();
lcd_setfont(FONT_SYSFIXED); lcd_setfont(FONT_SYSFIXED);
@ -236,10 +242,12 @@ bool __dbg_hw_info(void)
line = 0; line = 0;
_DEBUG_PRINTF("[Clock Frequencies:]"); _DEBUG_PRINTF("[Clock Frequencies:]");
_DEBUG_PRINTF(" SET ACTUAL"); _DEBUG_PRINTF(" SET ACTUAL");
_DEBUG_PRINTF("922T:%s %3dMHz", (!(read_cp15()>>30)) ? "FAST " : _DEBUG_PRINTF("922T:%s %3dMHz",
(read_cp15()>>31) ? "ASYNC" : "SYNC " , (!(read_cp15()>>30)) ? "FAST " :
(read_cp15()>>31) ? "ASYNC" : "SYNC ",
calc_freq(CLK_922T)/1000000); calc_freq(CLK_922T)/1000000);
_DEBUG_PRINTF("PLLA:%3dMHz %3dMHz", AS3525_PLLA_FREQ/1000000, calc_freq(CLK_PLLA)/1000000); _DEBUG_PRINTF("PLLA:%3dMHz %3dMHz", AS3525_PLLA_FREQ/1000000,
calc_freq(CLK_PLLA)/1000000);
_DEBUG_PRINTF("PLLB: %3dMHz", calc_freq(CLK_PLLB)/1000000); _DEBUG_PRINTF("PLLB: %3dMHz", calc_freq(CLK_PLLB)/1000000);
_DEBUG_PRINTF("FCLK: %3dMHz", calc_freq(CLK_FCLK)/1000000); _DEBUG_PRINTF("FCLK: %3dMHz", calc_freq(CLK_FCLK)/1000000);
@ -257,12 +265,18 @@ bool __dbg_hw_info(void)
line = 0; line = 0;
#endif /* LCD_HEIGHT < 176 */ #endif /* LCD_HEIGHT < 176 */
_DEBUG_PRINTF("DRAM:%3dMHz %3dMHz", AS3525_PCLK_FREQ/1000000, calc_freq(CLK_EXTMEM)/1000000); _DEBUG_PRINTF("DRAM:%3dMHz %3dMHz", AS3525_PCLK_FREQ/1000000,
_DEBUG_PRINTF("PCLK:%3dMHz %3dMHz", AS3525_PCLK_FREQ/1000000, calc_freq(CLK_PCLK)/1000000); calc_freq(CLK_EXTMEM)/1000000);
_DEBUG_PRINTF("IDE :%3dMHz %3dMHz", AS3525_IDE_FREQ/1000000,calc_freq(CLK_IDE)/1000000); _DEBUG_PRINTF("PCLK:%3dMHz %3dMHz", AS3525_PCLK_FREQ/1000000,
_DEBUG_PRINTF("DBOP:%3dMHz %3dMHz", AS3525_DBOP_FREQ/1000000,calc_freq(CLK_DBOP)/1000000); calc_freq(CLK_PCLK)/1000000);
_DEBUG_PRINTF("I2C :%3dkHz %3dkHz", AS3525_I2C_FREQ/1000,calc_freq(CLK_I2C)/1000); _DEBUG_PRINTF("IDE :%3dMHz %3dMHz", AS3525_IDE_FREQ/1000000,
_DEBUG_PRINTF("I2SI: %s %3dMHz", (CGU_AUDIO & (1<<23)) ? "on " : "off" ,calc_freq(CLK_I2SI)/1000000); calc_freq(CLK_IDE)/1000000);
_DEBUG_PRINTF("DBOP:%3dMHz %3dMHz", AS3525_DBOP_FREQ/1000000,
calc_freq(CLK_DBOP)/1000000);
_DEBUG_PRINTF("I2C :%3dkHz %3dkHz", AS3525_I2C_FREQ/1000,
calc_freq(CLK_I2C)/1000);
_DEBUG_PRINTF("I2SI: %s %3dMHz", (CGU_AUDIO & (1<<23)) ?
"on " : "off" , calc_freq(CLK_I2SI)/1000000);
#if LCD_HEIGHT < 176 /* clip */ #if LCD_HEIGHT < 176 /* clip */
lcd_update(); lcd_update();
@ -278,14 +292,29 @@ bool __dbg_hw_info(void)
line = 0; line = 0;
#endif /* LCD_HEIGHT < 176 */ #endif /* LCD_HEIGHT < 176 */
_DEBUG_PRINTF("I2SO: %s %3dMHz", (CGU_AUDIO & (1<<11)) ? "on " : "off", calc_freq(CLK_I2SO)/1000000); _DEBUG_PRINTF("I2SO: %s %3dMHz", (CGU_AUDIO & (1<<11)) ?
_DEBUG_PRINTF("SD :%3dkHz %3dkHz", AS3525_SD_IDENT_FREQ/1000,calc_freq(CLK_SD_IDENT_NAND)/1000); "on " : "off", calc_freq(CLK_I2SO)/1000000);
_DEBUG_PRINTF("MSD :%3dkHz %3dkHz", AS3525_SD_IDENT_FREQ/1000,calc_freq(CLK_SD_IDENT_MSD)/1000); if(MCI_NAND)
_DEBUG_PRINTF("USB: %3dMHz", calc_freq(CLK_USB)/1000000); last_nand = MCI_NAND;
_DEBUG_PRINTF("MMU: %s CVDDP:%4d", (read_cp15() & CP15_MMU) ? " op" : "nop", /* MCLK == PCLK */
adc_read(ADC_CVDD) * 25); _DEBUG_PRINTF("SD :%3dMHz %3dMHz",
_DEBUG_PRINTF("Icache:%s Dcache:%s",(read_cp15() & CP15_IC) ? " op" : "nop", ((last_nand ? (AS3525_PCLK_FREQ/ 1000000): 0) /
(read_cp15() & CP15_DC) ? " op" : "nop"); ((last_nand & MCI_CLOCK_BYPASS)? 1:(((last_nand & 0xff)+1) * 2))),
calc_freq(CLK_SD_MCLK_NAND)/1000000);
#if defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_C200V2)
if(MCI_SD)
last_sd = MCI_SD;
_DEBUG_PRINTF("uSD :%3dMHz %3dMHz",
((last_sd ? (AS3525_PCLK_FREQ/ 1000000): 0) /
((last_sd & MCI_CLOCK_BYPASS) ? 1: (((last_sd & 0xff) + 1) * 2))),
calc_freq(CLK_SD_MCLK_MSD)/1000000);
#endif
_DEBUG_PRINTF("USB : %3dMHz", calc_freq(CLK_USB)/1000000);
_DEBUG_PRINTF("MMU : %s CVDDP:%4d", (read_cp15() & CP15_MMU) ?
" on" : "off", adc_read(ADC_CVDD) * 25);
_DEBUG_PRINTF("Icache:%s Dcache:%s",
(read_cp15() & CP15_IC) ? " on" : "off",
(read_cp15() & CP15_DC) ? " on" : "off");
lcd_update(); lcd_update();
int btn = button_get_w_tmo(HZ/10); int btn = button_get_w_tmo(HZ/10);
@ -322,7 +351,8 @@ bool __dbg_hw_info(void)
_DEBUG_PRINTF("CGU_AUDIO :%8x", (unsigned int)(CGU_AUDIO)); _DEBUG_PRINTF("CGU_AUDIO :%8x", (unsigned int)(CGU_AUDIO));
_DEBUG_PRINTF("CGU_USB :%8x", (unsigned int)(CGU_USB)); _DEBUG_PRINTF("CGU_USB :%8x", (unsigned int)(CGU_USB));
_DEBUG_PRINTF("I2C2_CPSR :%8x", (unsigned int)(I2C2_CPSR1<<8 | I2C2_CPSR0)); _DEBUG_PRINTF("I2C2_CPSR :%8x", (unsigned int)(I2C2_CPSR1<<8 |
I2C2_CPSR0));
_DEBUG_PRINTF("MCI_NAND :%8x", (unsigned int)(MCI_NAND)); _DEBUG_PRINTF("MCI_NAND :%8x", (unsigned int)(MCI_NAND));
_DEBUG_PRINTF("MCI_SD :%8x", (unsigned int)(MCI_SD)); _DEBUG_PRINTF("MCI_SD :%8x", (unsigned int)(MCI_SD));