diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2014-02-02 04:16:23 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2014-02-10 23:14:24 +0100 |
commit | ab5dfd55aaa37da65a4168d0dc46f9a3a7d8844a (patch) | |
tree | dd5876334e61b190ec833410e762bcb68600f94e /firmware/target/arm | |
parent | 4495913c289d34271197dce0dc5f6c45f5ea62e6 (diff) | |
download | rockbox-ab5dfd55aaa37da65a4168d0dc46f9a3a7d8844a.tar.gz rockbox-ab5dfd55aaa37da65a4168d0dc46f9a3a7d8844a.zip |
imx233: add timrot to debug menu
Change-Id: Id60fcd64d509445d4ab62c4a2a8f2a074727c31d
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/imx233/debug-imx233.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c index 6fe59cad20..d5d4d08b9a 100644 --- a/firmware/target/arm/imx233/debug-imx233.c +++ b/firmware/target/arm/imx233/debug-imx233.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include "emi-imx233.h" | 37 | #include "emi-imx233.h" |
38 | #include "audioin-imx233.h" | 38 | #include "audioin-imx233.h" |
39 | #include "audioout-imx233.h" | 39 | #include "audioout-imx233.h" |
40 | #include "timrot-imx233.h" | ||
40 | #include "string.h" | 41 | #include "string.h" |
41 | #include "stdio.h" | 42 | #include "stdio.h" |
42 | #include "button.h" | 43 | #include "button.h" |
@@ -872,6 +873,87 @@ bool dbg_hw_info_audio(void) | |||
872 | } | 873 | } |
873 | } | 874 | } |
874 | 875 | ||
876 | bool dbg_hw_info_timrot(void) | ||
877 | { | ||
878 | lcd_setfont(FONT_SYSFIXED); | ||
879 | |||
880 | while(1) | ||
881 | { | ||
882 | int button = my_get_action(HZ / 10); | ||
883 | switch(button) | ||
884 | { | ||
885 | case ACT_NEXT: | ||
886 | case ACT_PREV: | ||
887 | case ACT_OK: | ||
888 | lcd_setfont(FONT_UI); | ||
889 | return true; | ||
890 | case ACT_CANCEL: | ||
891 | lcd_setfont(FONT_UI); | ||
892 | return false; | ||
893 | } | ||
894 | |||
895 | lcd_clear_display(); | ||
896 | int line = 0; | ||
897 | for(int i = 0; i < 4; i++) | ||
898 | { | ||
899 | struct imx233_timrot_info_t info = imx233_timrot_get_info(i); | ||
900 | const char *unit = NULL; | ||
901 | const char *unit_prefix = ""; | ||
902 | int src_freq = 1; | ||
903 | switch(info.src) | ||
904 | { | ||
905 | case BV_TIMROT_TIMCTRLn_SELECT__NEVER_TICK: src_freq = 0; break; | ||
906 | case BV_TIMROT_TIMCTRLn_SELECT__PWM0: unit = "PWM0"; break; | ||
907 | case BV_TIMROT_TIMCTRLn_SELECT__PWM1: unit = "PWM1"; break; | ||
908 | case BV_TIMROT_TIMCTRLn_SELECT__PWM2: unit = "PWM2"; break; | ||
909 | case BV_TIMROT_TIMCTRLn_SELECT__PWM3: unit = "PWM3"; break; | ||
910 | case BV_TIMROT_TIMCTRLn_SELECT__PWM4: unit = "PWM4"; break; | ||
911 | case BV_TIMROT_TIMCTRLn_SELECT__ROTARYA: unit = "ROTA"; break; | ||
912 | case BV_TIMROT_TIMCTRLn_SELECT__ROTARYB: unit = "ROTB"; break; | ||
913 | case BV_TIMROT_TIMCTRLn_SELECT__32KHZ_XTAL: src_freq = 32000; break; | ||
914 | case BV_TIMROT_TIMCTRLn_SELECT__8KHZ_XTAL: src_freq = 8000; break; | ||
915 | case BV_TIMROT_TIMCTRLn_SELECT__4KHZ_XTAL: src_freq = 4000; break; | ||
916 | case BV_TIMROT_TIMCTRLn_SELECT__1KHZ_XTAL: src_freq = 1000; break; | ||
917 | case BV_TIMROT_TIMCTRLn_SELECT__TICK_ALWAYS: | ||
918 | default: src_freq = 24000000 / (1 << info.prescale); break; | ||
919 | } | ||
920 | int count = info.reload ? info.fixed_count + 1 : info.run_count; | ||
921 | if(src_freq == 0 || count == 0) | ||
922 | continue; | ||
923 | unsigned long long freq; | ||
924 | if(info.reload) | ||
925 | freq = (unsigned long long)src_freq * 1000 / count; | ||
926 | else | ||
927 | freq = count * 1000 / src_freq; | ||
928 | |||
929 | if(freq >= 1000000000) | ||
930 | { | ||
931 | unit_prefix = "M"; | ||
932 | freq /= 1000000; | ||
933 | } | ||
934 | else if(freq >= 1000000) | ||
935 | { | ||
936 | unit_prefix = "k"; | ||
937 | freq /= 1000; | ||
938 | } | ||
939 | char str[32]; | ||
940 | if(freq % 1000) | ||
941 | snprintf(str, sizeof(str), "%lu.%lu", (unsigned long)freq / 1000, (unsigned long)freq % 1000); | ||
942 | else | ||
943 | snprintf(str, sizeof(str), "%lu", (unsigned long)freq / 1000); | ||
944 | char str2[32]; | ||
945 | if(unit) | ||
946 | snprintf(str2, sizeof(str2), "%s%s(%s)", unit_prefix, info.reload ? "H" : "", unit); | ||
947 | else | ||
948 | snprintf(str2, sizeof(str2), "%s%s", unit_prefix, info.reload ? "Hz" : "s"); | ||
949 | lcd_putsf(0, line++, "%ctimer %d: %s %s", info.polarity ? '+' : '-', i, str, str2); | ||
950 | } | ||
951 | |||
952 | lcd_update(); | ||
953 | yield(); | ||
954 | } | ||
955 | } | ||
956 | |||
875 | static struct | 957 | static struct |
876 | { | 958 | { |
877 | const char *name; | 959 | const char *name; |
@@ -892,6 +974,7 @@ static struct | |||
892 | {"usb", dbg_hw_info_usb}, | 974 | {"usb", dbg_hw_info_usb}, |
893 | {"emi", dbg_hw_info_emi}, | 975 | {"emi", dbg_hw_info_emi}, |
894 | {"audio", dbg_hw_info_audio}, | 976 | {"audio", dbg_hw_info_audio}, |
977 | {"timrot", dbg_hw_info_timrot}, | ||
895 | {"target", dbg_hw_target_info}, | 978 | {"target", dbg_hw_target_info}, |
896 | }; | 979 | }; |
897 | 980 | ||