Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

imx233: add power debug screen

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31100 a1c6a512-1295-4272-9138-f99709370657

+126 -1
+37 -1
firmware/target/arm/imx233/debug-imx233.c
··· 27 27 #include "font.h" 28 28 #include "adc.h" 29 29 #include "adc-imx233.h" 30 + #include "power-imx233.h" 30 31 #include "powermgmt.h" 31 32 32 33 static struct ··· 81 82 } 82 83 } 83 84 85 + bool dbg_hw_info_power(void) 86 + { 87 + lcd_setfont(FONT_SYSFIXED); 88 + 89 + while(1) 90 + { 91 + int button = get_action(CONTEXT_STD, HZ / 25); 92 + switch(button) 93 + { 94 + case ACTION_STD_NEXT: 95 + case ACTION_STD_PREV: 96 + case ACTION_STD_OK: 97 + case ACTION_STD_MENU: 98 + lcd_setfont(FONT_UI); 99 + return true; 100 + case ACTION_STD_CANCEL: 101 + lcd_setfont(FONT_UI); 102 + return false; 103 + } 104 + 105 + lcd_clear_display(); 106 + 107 + struct imx233_power_info_t info = imx233_power_get_info(POWER_INFO_ALL); 108 + lcd_putsf(0, 0, "VDDD: %d mV linreg: %d", info.vddd, info.vddd_linreg); 109 + lcd_putsf(0, 1, "VDDA: %d mV linreg: %d", info.vdda, info.vdda_linreg); 110 + lcd_putsf(0, 2, "VDDIO: %d mV", info.vddio); 111 + lcd_putsf(0, 3, "VDDMEM: %d mV linreg: %d", info.vddmem, info.vddmem_linreg); 112 + lcd_putsf(0, 4, "DC-DC: pll: %d freq: %d", info.dcdc_sel_pllclk, info.dcdc_freqsel); 113 + 114 + lcd_update(); 115 + yield(); 116 + } 117 + } 118 + 84 119 bool dbg_hw_info_adc(void) 85 120 { 86 121 lcd_setfont(FONT_SYSFIXED); ··· 118 153 119 154 bool dbg_hw_info(void) 120 155 { 121 - return dbg_hw_info_dma() && dbg_hw_info_adc() && dbg_hw_target_info(); 156 + return dbg_hw_info_dma() && dbg_hw_info_adc() && dbg_hw_info_power() && 157 + dbg_hw_target_info(); 122 158 } 123 159 124 160 bool dbg_ports(void)
+41
firmware/target/arm/imx233/power-imx233.c
··· 22 22 #include "config.h" 23 23 #include "system.h" 24 24 #include "power.h" 25 + #include "string.h" 25 26 #include "system-target.h" 26 27 #include "usb-target.h" 27 28 ··· 70 71 { 71 72 return false; 72 73 } 74 + 75 + struct imx233_power_info_t imx233_power_get_info(unsigned flags) 76 + { 77 + static int dcdc_freqsel[8] = { 78 + [HW_POWER_MISC__FREQSEL__RES] = 0, 79 + [HW_POWER_MISC__FREQSEL__20MHz] = 20000, 80 + [HW_POWER_MISC__FREQSEL__24MHz] = 24000, 81 + [HW_POWER_MISC__FREQSEL__19p2MHz] = 19200, 82 + [HW_POWER_MISC__FREQSEL__14p4MHz] = 14200, 83 + [HW_POWER_MISC__FREQSEL__18MHz] = 18000, 84 + [HW_POWER_MISC__FREQSEL__21p6MHz] = 21600, 85 + [HW_POWER_MISC__FREQSEL__17p28MHz] = 17280, 86 + }; 87 + 88 + struct imx233_power_info_t s; 89 + memset(&s, 0, sizeof(s)); 90 + if(flags & POWER_INFO_VDDD) 91 + { 92 + s.vddd = HW_POWER_VDDDCTRL__TRG_MIN + HW_POWER_VDDDCTRL__TRG_STEP * __XTRACT(HW_POWER_VDDDCTRL, TRG); 93 + s.vddd_linreg = HW_POWER_VDDDCTRL & HW_POWER_VDDDCTRL__ENABLE_LINREG; 94 + } 95 + if(flags & POWER_INFO_VDDA) 96 + { 97 + s.vdda = HW_POWER_VDDACTRL__TRG_MIN + HW_POWER_VDDACTRL__TRG_STEP * __XTRACT(HW_POWER_VDDACTRL, TRG); 98 + s.vdda_linreg = HW_POWER_VDDACTRL & HW_POWER_VDDACTRL__ENABLE_LINREG; 99 + } 100 + if(flags & POWER_INFO_VDDIO) 101 + s.vddio = HW_POWER_VDDIOCTRL__TRG_MIN + HW_POWER_VDDIOCTRL__TRG_STEP * __XTRACT(HW_POWER_VDDIOCTRL, TRG); 102 + if(flags & POWER_INFO_VDDMEM) 103 + { 104 + s.vddmem = HW_POWER_VDDMEMCTRL__TRG_MIN + HW_POWER_VDDMEMCTRL__TRG_STEP * __XTRACT(HW_POWER_VDDMEMCTRL, TRG); 105 + s.vddmem_linreg = HW_POWER_VDDMEMCTRL & HW_POWER_VDDMEMCTRL__ENABLE_LINREG; 106 + } 107 + if(flags & POWER_INFO_DCDC) 108 + { 109 + s.dcdc_sel_pllclk = HW_POWER_MISC & HW_POWER_MISC__SEL_PLLCLK; 110 + s.dcdc_freqsel = dcdc_freqsel[__XTRACT(HW_POWER_MISC, FREQSEL)]; 111 + } 112 + return s; 113 + }
+48
firmware/target/arm/imx233/power-imx233.h
··· 52 52 #define HW_POWER_VDDDCTRL__TRG_BM 0x1f 53 53 #define HW_POWER_VDDDCTRL__TRG_STEP 25 /* mV */ 54 54 #define HW_POWER_VDDDCTRL__TRG_MIN 800 /* mV */ 55 + #define HW_POWER_VDDDCTRL__ENABLE_LINREG (1 << 21) 55 56 56 57 #define HW_POWER_VDDACTRL (*(volatile uint32_t *)(HW_POWER_BASE + 0x50)) 58 + #define HW_POWER_VDDACTRL__TRG_BP 0 59 + #define HW_POWER_VDDACTRL__TRG_BM 0x1f 60 + #define HW_POWER_VDDACTRL__TRG_STEP 25 /* mV */ 61 + #define HW_POWER_VDDACTRL__TRG_MIN 1500 /* mV */ 62 + #define HW_POWER_VDDACTRL__ENABLE_LINREG (1 << 17) 57 63 58 64 #define HW_POWER_VDDIOCTRL (*(volatile uint32_t *)(HW_POWER_BASE + 0x60)) 65 + #define HW_POWER_VDDIOCTRL__TRG_BP 0 66 + #define HW_POWER_VDDIOCTRL__TRG_BM 0x1f 67 + #define HW_POWER_VDDIOCTRL__TRG_STEP 25 /* mV */ 68 + #define HW_POWER_VDDIOCTRL__TRG_MIN 2800 /* mV */ 59 69 60 70 #define HW_POWER_VDDMEMCTRL (*(volatile uint32_t *)(HW_POWER_BASE + 0x70)) 71 + #define HW_POWER_VDDMEMCTRL__TRG_BP 0 72 + #define HW_POWER_VDDMEMCTRL__TRG_BM 0x1f 73 + #define HW_POWER_VDDMEMCTRL__TRG_STEP 50 /* mV */ 74 + #define HW_POWER_VDDMEMCTRL__TRG_MIN 1700 /* mV */ 75 + #define HW_POWER_VDDMEMCTRL__ENABLE_LINREG (1 << 8) 61 76 62 77 #define HW_POWER_MISC (*(volatile uint32_t *)(HW_POWER_BASE + 0x90)) 78 + #define HW_POWER_MISC__SEL_PLLCLK 1 79 + #define HW_POWER_MISC__FREQSEL_BP 4 80 + #define HW_POWER_MISC__FREQSEL_BM (0x7 << 4) 81 + #define HW_POWER_MISC__FREQSEL__RES 0 82 + #define HW_POWER_MISC__FREQSEL__20MHz 1 83 + #define HW_POWER_MISC__FREQSEL__24MHz 2 84 + #define HW_POWER_MISC__FREQSEL__19p2MHz 3 85 + #define HW_POWER_MISC__FREQSEL__14p4MHz 4 86 + #define HW_POWER_MISC__FREQSEL__18MHz 5 87 + #define HW_POWER_MISC__FREQSEL__21p6MHz 6 88 + #define HW_POWER_MISC__FREQSEL__17p28MHz 7 63 89 64 90 #define HW_POWER_STS (*(volatile uint32_t *)(HW_POWER_BASE + 0xc0)) 65 91 #define HW_POWER_STS__VBUSVALID (1 << 1) ··· 73 99 #define HW_POWER_RESET (*(volatile uint32_t *)(HW_POWER_BASE + 0x100)) 74 100 #define HW_POWER_RESET__UNLOCK 0x3E770000 75 101 #define HW_POWER_RESET__PWD 0x1 102 + 103 + struct imx233_power_info_t 104 + { 105 + int vddd; /* in mV */ 106 + bool vddd_linreg; /* VDDD source: linreg from VDDA or DC-DC */ 107 + int vdda; /* in mV */ 108 + bool vdda_linreg; /* VDDA source: linreg from VDDIO or DC-DC */ 109 + int vddio; /* in mV */ 110 + int vddmem; /* in mV */ 111 + bool vddmem_linreg; /* VDDMEM source: linreg from VDDIO or off */ 112 + bool dcdc_sel_pllclk; /* clock source of DC-DC: pll or 24MHz xtal */ 113 + int dcdc_freqsel; 114 + }; 115 + 116 + #define POWER_INFO_VDDD (1 << 0) 117 + #define POWER_INFO_VDDA (1 << 1) 118 + #define POWER_INFO_VDDIO (1 << 2) 119 + #define POWER_INFO_VDDMEM (1 << 3) 120 + #define POWER_INFO_DCDC (1 << 4) 121 + #define POWER_INFO_ALL 0x1f 122 + 123 + struct imx233_power_info_t imx233_power_get_info(unsigned flags); 76 124 77 125 #endif /* __POWER_IMX233__ */