diff options
-rw-r--r-- | apps/debug_menu.c | 65 | ||||
-rw-r--r-- | firmware/export/pp5020.h | 66 |
2 files changed, 130 insertions, 1 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 0a0627c10f..d266bef6c7 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -1022,6 +1022,8 @@ bool dbg_ports(void) | |||
1022 | #elif CONFIG_CPU == PP5020 | 1022 | #elif CONFIG_CPU == PP5020 |
1023 | 1023 | ||
1024 | unsigned int gpio_a, gpio_b, gpio_c, gpio_d; | 1024 | unsigned int gpio_a, gpio_b, gpio_c, gpio_d; |
1025 | unsigned int gpio_e, gpio_f, gpio_g, gpio_h; | ||
1026 | unsigned int gpio_i, gpio_j, gpio_k, gpio_l; | ||
1025 | 1027 | ||
1026 | char buf[128]; | 1028 | char buf[128]; |
1027 | int button; | 1029 | int button; |
@@ -1049,7 +1051,37 @@ bool dbg_ports(void) | |||
1049 | lcd_puts(0, line++, buf); | 1051 | lcd_puts(0, line++, buf); |
1050 | snprintf(buf, sizeof(buf), "GPIO_D: %02x", gpio_d); | 1052 | snprintf(buf, sizeof(buf), "GPIO_D: %02x", gpio_d); |
1051 | lcd_puts(0, line++, buf); | 1053 | lcd_puts(0, line++, buf); |
1052 | 1054 | line++; | |
1055 | |||
1056 | gpio_e = GPIOE_INPUT_VAL; | ||
1057 | gpio_f = GPIOF_INPUT_VAL; | ||
1058 | gpio_g = GPIOG_INPUT_VAL; | ||
1059 | gpio_h = GPIOH_INPUT_VAL; | ||
1060 | |||
1061 | snprintf(buf, sizeof(buf), "GPIO_E: %02x", gpio_e); | ||
1062 | lcd_puts(0, line++, buf); | ||
1063 | snprintf(buf, sizeof(buf), "GPIO_F: %02x", gpio_f); | ||
1064 | lcd_puts(0, line++, buf); | ||
1065 | snprintf(buf, sizeof(buf), "GPIO_G: %02x", gpio_g); | ||
1066 | lcd_puts(0, line++, buf); | ||
1067 | snprintf(buf, sizeof(buf), "GPIO_H: %02x", gpio_h); | ||
1068 | lcd_puts(0, line++, buf); | ||
1069 | line++; | ||
1070 | |||
1071 | gpio_i = GPIOI_INPUT_VAL; | ||
1072 | gpio_j = GPIOJ_INPUT_VAL; | ||
1073 | gpio_k = GPIOK_INPUT_VAL; | ||
1074 | gpio_l = GPIOL_INPUT_VAL; | ||
1075 | |||
1076 | snprintf(buf, sizeof(buf), "GPIO_I: %02x", gpio_i); | ||
1077 | lcd_puts(0, line++, buf); | ||
1078 | snprintf(buf, sizeof(buf), "GPIO_J: %02x", gpio_j); | ||
1079 | lcd_puts(0, line++, buf); | ||
1080 | snprintf(buf, sizeof(buf), "GPIO_K: %02x", gpio_k); | ||
1081 | lcd_puts(0, line++, buf); | ||
1082 | snprintf(buf, sizeof(buf), "GPIO_L: %02x", gpio_l); | ||
1083 | lcd_puts(0, line++, buf); | ||
1084 | |||
1053 | lcd_update(); | 1085 | lcd_update(); |
1054 | button = button_get_w_tmo(HZ/10); | 1086 | button = button_get_w_tmo(HZ/10); |
1055 | 1087 | ||
@@ -1309,9 +1341,40 @@ bool view_battery(void) | |||
1309 | lcd_puts(0, 6, buf); | 1341 | lcd_puts(0, 6, buf); |
1310 | lcd_puts(0, 7, power_message); | 1342 | lcd_puts(0, 7, power_message); |
1311 | #else /* !HAVE_CHARGE_CTRL */ | 1343 | #else /* !HAVE_CHARGE_CTRL */ |
1344 | #if defined IPOD_ARCH | ||
1345 | #if defined APPLE_IPODNANO || defined APPLE_IPODVIDEO | ||
1346 | int usb_pwr = (GPIOL_INPUT_VAL & 0x10)?true:false; | ||
1347 | int ext_pwr = (GPIOL_INPUT_VAL & 0x08)?false:true; | ||
1348 | int dock = (GPIOA_INPUT_VAL & 0x10)?true:false; | ||
1349 | int charging = (GPIOB_INPUT_VAL & 0x01)?false:true; | ||
1350 | int headphone= (GPIOA_INPUT_VAL & 0x80)?true:false; | ||
1351 | |||
1352 | snprintf(buf, 30, "USB pwr: %s", | ||
1353 | usb_pwr ? "present" : "absent"); | ||
1354 | lcd_puts(0, 3, buf); | ||
1355 | snprintf(buf, 30, "EXT pwr: %s", | ||
1356 | ext_pwr ? "present" : "absent"); | ||
1357 | lcd_puts(0, 4, buf); | ||
1358 | snprintf(buf, 30, "Battery: %s", | ||
1359 | charging ? "charging" : (usb_pwr||ext_pwr) ? "charged" : "discharging"); | ||
1360 | lcd_puts(0, 5, buf); | ||
1361 | snprintf(buf, 30, "Dock mode: %s", | ||
1362 | dock ? "enabled" : "disabled"); | ||
1363 | lcd_puts(0, 6, buf); | ||
1364 | snprintf(buf, 30, "Headphone: %s", | ||
1365 | headphone ? "connected" : "disconnected"); | ||
1366 | lcd_puts(0, 7, buf); | ||
1367 | #else | ||
1368 | /* other ipod devices go here */ | ||
1369 | snprintf(buf, 30, "Charger: %s", | ||
1370 | charger_inserted() ? "present" : "absent"); | ||
1371 | lcd_puts(0, 3, buf); | ||
1372 | #endif | ||
1373 | #elif | ||
1312 | snprintf(buf, 30, "Charger: %s", | 1374 | snprintf(buf, 30, "Charger: %s", |
1313 | charger_inserted() ? "present" : "absent"); | 1375 | charger_inserted() ? "present" : "absent"); |
1314 | lcd_puts(0, 3, buf); | 1376 | lcd_puts(0, 3, buf); |
1377 | #endif | ||
1315 | #endif /* !HAVE_CHARGE_CTRL */ | 1378 | #endif /* !HAVE_CHARGE_CTRL */ |
1316 | #endif /* HAVE_CHARGING */ | 1379 | #endif /* HAVE_CHARGING */ |
1317 | break; | 1380 | break; |
diff --git a/firmware/export/pp5020.h b/firmware/export/pp5020.h index 9e3097d1e9..cfeb8642b8 100644 --- a/firmware/export/pp5020.h +++ b/firmware/export/pp5020.h | |||
@@ -56,6 +56,72 @@ | |||
56 | #define GPIOC_INT_CLR (*(volatile unsigned long *)(0x6000d078)) | 56 | #define GPIOC_INT_CLR (*(volatile unsigned long *)(0x6000d078)) |
57 | #define GPIOD_INT_CLR (*(volatile unsigned long *)(0x6000d07c)) | 57 | #define GPIOD_INT_CLR (*(volatile unsigned long *)(0x6000d07c)) |
58 | 58 | ||
59 | #define GPIOE_ENABLE (*(volatile unsigned long *)(0x6000d080)) | ||
60 | #define GPIOF_ENABLE (*(volatile unsigned long *)(0x6000d084)) | ||
61 | #define GPIOG_ENABLE (*(volatile unsigned long *)(0x6000d088)) | ||
62 | #define GPIOH_ENABLE (*(volatile unsigned long *)(0x6000d08c)) | ||
63 | #define GPIOE_OUTPUT_EN (*(volatile unsigned long *)(0x6000d090)) | ||
64 | #define GPIOF_OUTPUT_EN (*(volatile unsigned long *)(0x6000d094)) | ||
65 | #define GPIOG_OUTPUT_EN (*(volatile unsigned long *)(0x6000d098)) | ||
66 | #define GPIOH_OUTPUT_EN (*(volatile unsigned long *)(0x6000d09c)) | ||
67 | #define GPIOE_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d0a0)) | ||
68 | #define GPIOF_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d0a4)) | ||
69 | #define GPIOG_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d0a8)) | ||
70 | #define GPIOH_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d0ac)) | ||
71 | #define GPIOE_INPUT_VAL (*(volatile unsigned long *)(0x6000d0b0)) | ||
72 | #define GPIOF_INPUT_VAL (*(volatile unsigned long *)(0x6000d0b4)) | ||
73 | #define GPIOG_INPUT_VAL (*(volatile unsigned long *)(0x6000d0b8)) | ||
74 | #define GPIOH_INPUT_VAL (*(volatile unsigned long *)(0x6000d0bc)) | ||
75 | #define GPIOE_INT_STAT (*(volatile unsigned long *)(0x6000d0c0)) | ||
76 | #define GPIOF_INT_STAT (*(volatile unsigned long *)(0x6000d0c4)) | ||
77 | #define GPIOG_INT_STAT (*(volatile unsigned long *)(0x6000d0c8)) | ||
78 | #define GPIOH_INT_STAT (*(volatile unsigned long *)(0x6000d0cc)) | ||
79 | #define GPIOE_INT_EN (*(volatile unsigned long *)(0x6000d0d0)) | ||
80 | #define GPIOF_INT_EN (*(volatile unsigned long *)(0x6000d0d4)) | ||
81 | #define GPIOG_INT_EN (*(volatile unsigned long *)(0x6000d0d8)) | ||
82 | #define GPIOH_INT_EN (*(volatile unsigned long *)(0x6000d0dc)) | ||
83 | #define GPIOE_INT_LEV (*(volatile unsigned long *)(0x6000d0e0)) | ||
84 | #define GPIOF_INT_LEV (*(volatile unsigned long *)(0x6000d0e4)) | ||
85 | #define GPIOG_INT_LEV (*(volatile unsigned long *)(0x6000d0e8)) | ||
86 | #define GPIOH_INT_LEV (*(volatile unsigned long *)(0x6000d0ec)) | ||
87 | #define GPIOE_INT_CLR (*(volatile unsigned long *)(0x6000d0f0)) | ||
88 | #define GPIOF_INT_CLR (*(volatile unsigned long *)(0x6000d0f4)) | ||
89 | #define GPIOG_INT_CLR (*(volatile unsigned long *)(0x6000d0f8)) | ||
90 | #define GPIOH_INT_CLR (*(volatile unsigned long *)(0x6000d0fc)) | ||
91 | |||
92 | #define GPIOI_ENABLE (*(volatile unsigned long *)(0x6000d100)) | ||
93 | #define GPIOJ_ENABLE (*(volatile unsigned long *)(0x6000d104)) | ||
94 | #define GPIOK_ENABLE (*(volatile unsigned long *)(0x6000d108)) | ||
95 | #define GPIOL_ENABLE (*(volatile unsigned long *)(0x6000d10c)) | ||
96 | #define GPIOI_OUTPUT_EN (*(volatile unsigned long *)(0x6000d110)) | ||
97 | #define GPIOJ_OUTPUT_EN (*(volatile unsigned long *)(0x6000d114)) | ||
98 | #define GPIOK_OUTPUT_EN (*(volatile unsigned long *)(0x6000d118)) | ||
99 | #define GPIOL_OUTPUT_EN (*(volatile unsigned long *)(0x6000d11c)) | ||
100 | #define GPIOI_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d120)) | ||
101 | #define GPIOJ_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d124)) | ||
102 | #define GPIOK_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d128)) | ||
103 | #define GPIOL_OUTPUT_VAL (*(volatile unsigned long *)(0x6000d12c)) | ||
104 | #define GPIOI_INPUT_VAL (*(volatile unsigned long *)(0x6000d130)) | ||
105 | #define GPIOJ_INPUT_VAL (*(volatile unsigned long *)(0x6000d134)) | ||
106 | #define GPIOK_INPUT_VAL (*(volatile unsigned long *)(0x6000d138)) | ||
107 | #define GPIOL_INPUT_VAL (*(volatile unsigned long *)(0x6000d13c)) | ||
108 | #define GPIOI_INT_STAT (*(volatile unsigned long *)(0x6000d140)) | ||
109 | #define GPIOJ_INT_STAT (*(volatile unsigned long *)(0x6000d144)) | ||
110 | #define GPIOK_INT_STAT (*(volatile unsigned long *)(0x6000d148)) | ||
111 | #define GPIOL_INT_STAT (*(volatile unsigned long *)(0x6000d14c)) | ||
112 | #define GPIOI_INT_EN (*(volatile unsigned long *)(0x6000d150)) | ||
113 | #define GPIOJ_INT_EN (*(volatile unsigned long *)(0x6000d154)) | ||
114 | #define GPIOK_INT_EN (*(volatile unsigned long *)(0x6000d158)) | ||
115 | #define GPIOL_INT_EN (*(volatile unsigned long *)(0x6000d15c)) | ||
116 | #define GPIOI_INT_LEV (*(volatile unsigned long *)(0x6000d160)) | ||
117 | #define GPIOJ_INT_LEV (*(volatile unsigned long *)(0x6000d164)) | ||
118 | #define GPIOK_INT_LEV (*(volatile unsigned long *)(0x6000d168)) | ||
119 | #define GPIOL_INT_LEV (*(volatile unsigned long *)(0x6000d16c)) | ||
120 | #define GPIOI_INT_CLR (*(volatile unsigned long *)(0x6000d170)) | ||
121 | #define GPIOJ_INT_CLR (*(volatile unsigned long *)(0x6000d174)) | ||
122 | #define GPIOK_INT_CLR (*(volatile unsigned long *)(0x6000d178)) | ||
123 | #define GPIOL_INT_CLR (*(volatile unsigned long *)(0x6000d17c)) | ||
124 | |||
59 | #define DEV_RS (*(volatile unsigned long *)(0x60006004)) | 125 | #define DEV_RS (*(volatile unsigned long *)(0x60006004)) |
60 | #define DEV_EN (*(volatile unsigned long *)(0x6000600c)) | 126 | #define DEV_EN (*(volatile unsigned long *)(0x6000600c)) |
61 | 127 | ||