summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/debug_menu.c65
-rw-r--r--firmware/export/pp5020.h66
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