diff options
author | Archit Taneja <archit@ti.com> | 2012-05-07 09:20:27 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-05-09 06:42:58 -0400 |
commit | 3c7de24771cbc4546728875dc77016bbfc0195df (patch) | |
tree | 6584fa596bdf2fc6e481ac53ee579357407f438d /drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | |
parent | 8b53d9911982794b3f6d5513741495c3f70962cd (diff) |
OMAPDSS: HDMI: Fix ti_hdmi_4xxx_core_dump
The function ti_hdmi_4xxx_core_dump has some bugs, the following mention the
bugs and the solutions:
- The macros DUMPCORE and DUMPCOREAV in ti_hdmi_4xxx_core_dump() use
hdmi_pll_base() for the offsets needed to calculate register addresses, use
functions hdmi_core_sys_base() amd hdmi_av_base() to calculate the correct
offsets for CORE_SYS and CORE_AV registers.
- Many of the CORE_AV registers use the DUMPCORE macro, and hence the register
addresses are calculated incorrectly. Rename the current DUMPCOREAV macro as
DUMPCOREAV2 as it takes 2 arguments to dump indexed CORE_AV registers, create
a new macro called DUMPCOREAV which is now used for dumping non-indexed
CORE_AV registers.
Thanks to Ancy Tom <ancytom@gmail.com> for pointing out the issues.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c')
-rw-r--r-- | drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 142 |
1 files changed, 72 insertions, 70 deletions
diff --git a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c index bfe6fe65c8b..e266b8e1aa9 100644 --- a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c +++ b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | |||
@@ -886,10 +886,12 @@ void ti_hdmi_4xxx_core_dump(struct hdmi_ip_data *ip_data, struct seq_file *s) | |||
886 | 886 | ||
887 | #define CORE_REG(i, name) name(i) | 887 | #define CORE_REG(i, name) name(i) |
888 | #define DUMPCORE(r) seq_printf(s, "%-35s %08x\n", #r,\ | 888 | #define DUMPCORE(r) seq_printf(s, "%-35s %08x\n", #r,\ |
889 | hdmi_read_reg(hdmi_pll_base(ip_data), r)) | 889 | hdmi_read_reg(hdmi_core_sys_base(ip_data), r)) |
890 | #define DUMPCOREAV(i, r) seq_printf(s, "%s[%d]%*s %08x\n", #r, i, \ | 890 | #define DUMPCOREAV(r) seq_printf(s, "%-35s %08x\n", #r,\ |
891 | hdmi_read_reg(hdmi_av_base(ip_data), r)) | ||
892 | #define DUMPCOREAV2(i, r) seq_printf(s, "%s[%d]%*s %08x\n", #r, i, \ | ||
891 | (i < 10) ? 32 - strlen(#r) : 31 - strlen(#r), " ", \ | 893 | (i < 10) ? 32 - strlen(#r) : 31 - strlen(#r), " ", \ |
892 | hdmi_read_reg(hdmi_pll_base(ip_data), CORE_REG(i, r))) | 894 | hdmi_read_reg(hdmi_av_base(ip_data), CORE_REG(i, r))) |
893 | 895 | ||
894 | DUMPCORE(HDMI_CORE_SYS_VND_IDL); | 896 | DUMPCORE(HDMI_CORE_SYS_VND_IDL); |
895 | DUMPCORE(HDMI_CORE_SYS_DEV_IDL); | 897 | DUMPCORE(HDMI_CORE_SYS_DEV_IDL); |
@@ -924,85 +926,85 @@ void ti_hdmi_4xxx_core_dump(struct hdmi_ip_data *ip_data, struct seq_file *s) | |||
924 | DUMPCORE(HDMI_CORE_DDC_DATA); | 926 | DUMPCORE(HDMI_CORE_DDC_DATA); |
925 | DUMPCORE(HDMI_CORE_DDC_SEGM); | 927 | DUMPCORE(HDMI_CORE_DDC_SEGM); |
926 | 928 | ||
927 | DUMPCORE(HDMI_CORE_AV_HDMI_CTRL); | 929 | DUMPCOREAV(HDMI_CORE_AV_HDMI_CTRL); |
928 | DUMPCORE(HDMI_CORE_AV_DPD); | 930 | DUMPCOREAV(HDMI_CORE_AV_DPD); |
929 | DUMPCORE(HDMI_CORE_AV_PB_CTRL1); | 931 | DUMPCOREAV(HDMI_CORE_AV_PB_CTRL1); |
930 | DUMPCORE(HDMI_CORE_AV_PB_CTRL2); | 932 | DUMPCOREAV(HDMI_CORE_AV_PB_CTRL2); |
931 | DUMPCORE(HDMI_CORE_AV_AVI_TYPE); | 933 | DUMPCOREAV(HDMI_CORE_AV_AVI_TYPE); |
932 | DUMPCORE(HDMI_CORE_AV_AVI_VERS); | 934 | DUMPCOREAV(HDMI_CORE_AV_AVI_VERS); |
933 | DUMPCORE(HDMI_CORE_AV_AVI_LEN); | 935 | DUMPCOREAV(HDMI_CORE_AV_AVI_LEN); |
934 | DUMPCORE(HDMI_CORE_AV_AVI_CHSUM); | 936 | DUMPCOREAV(HDMI_CORE_AV_AVI_CHSUM); |
935 | 937 | ||
936 | for (i = 0; i < HDMI_CORE_AV_AVI_DBYTE_NELEMS; i++) | 938 | for (i = 0; i < HDMI_CORE_AV_AVI_DBYTE_NELEMS; i++) |
937 | DUMPCOREAV(i, HDMI_CORE_AV_AVI_DBYTE); | 939 | DUMPCOREAV2(i, HDMI_CORE_AV_AVI_DBYTE); |
938 | 940 | ||
939 | for (i = 0; i < HDMI_CORE_AV_SPD_DBYTE_NELEMS; i++) | 941 | for (i = 0; i < HDMI_CORE_AV_SPD_DBYTE_NELEMS; i++) |
940 | DUMPCOREAV(i, HDMI_CORE_AV_SPD_DBYTE); | 942 | DUMPCOREAV2(i, HDMI_CORE_AV_SPD_DBYTE); |
941 | 943 | ||
942 | for (i = 0; i < HDMI_CORE_AV_AUD_DBYTE_NELEMS; i++) | 944 | for (i = 0; i < HDMI_CORE_AV_AUD_DBYTE_NELEMS; i++) |
943 | DUMPCOREAV(i, HDMI_CORE_AV_AUD_DBYTE); | 945 | DUMPCOREAV2(i, HDMI_CORE_AV_AUD_DBYTE); |
944 | 946 | ||
945 | for (i = 0; i < HDMI_CORE_AV_MPEG_DBYTE_NELEMS; i++) | 947 | for (i = 0; i < HDMI_CORE_AV_MPEG_DBYTE_NELEMS; i++) |
946 | DUMPCOREAV(i, HDMI_CORE_AV_MPEG_DBYTE); | 948 | DUMPCOREAV2(i, HDMI_CORE_AV_MPEG_DBYTE); |
947 | 949 | ||
948 | for (i = 0; i < HDMI_CORE_AV_GEN_DBYTE_NELEMS; i++) | 950 | for (i = 0; i < HDMI_CORE_AV_GEN_DBYTE_NELEMS; i++) |
949 | DUMPCOREAV(i, HDMI_CORE_AV_GEN_DBYTE); | 951 | DUMPCOREAV2(i, HDMI_CORE_AV_GEN_DBYTE); |
950 | 952 | ||
951 | for (i = 0; i < HDMI_CORE_AV_GEN2_DBYTE_NELEMS; i++) | 953 | for (i = 0; i < HDMI_CORE_AV_GEN2_DBYTE_NELEMS; i++) |
952 | DUMPCOREAV(i, HDMI_CORE_AV_GEN2_DBYTE); | 954 | DUMPCOREAV2(i, HDMI_CORE_AV_GEN2_DBYTE); |
953 | 955 | ||
954 | DUMPCORE(HDMI_CORE_AV_ACR_CTRL); | 956 | DUMPCOREAV(HDMI_CORE_AV_ACR_CTRL); |
955 | DUMPCORE(HDMI_CORE_AV_FREQ_SVAL); | 957 | DUMPCOREAV(HDMI_CORE_AV_FREQ_SVAL); |
956 | DUMPCORE(HDMI_CORE_AV_N_SVAL1); | 958 | DUMPCOREAV(HDMI_CORE_AV_N_SVAL1); |
957 | DUMPCORE(HDMI_CORE_AV_N_SVAL2); | 959 | DUMPCOREAV(HDMI_CORE_AV_N_SVAL2); |
958 | DUMPCORE(HDMI_CORE_AV_N_SVAL3); | 960 | DUMPCOREAV(HDMI_CORE_AV_N_SVAL3); |
959 | DUMPCORE(HDMI_CORE_AV_CTS_SVAL1); | 961 | DUMPCOREAV(HDMI_CORE_AV_CTS_SVAL1); |
960 | DUMPCORE(HDMI_CORE_AV_CTS_SVAL2); | 962 | DUMPCOREAV(HDMI_CORE_AV_CTS_SVAL2); |
961 | DUMPCORE(HDMI_CORE_AV_CTS_SVAL3); | 963 | DUMPCOREAV(HDMI_CORE_AV_CTS_SVAL3); |
962 | DUMPCORE(HDMI_CORE_AV_CTS_HVAL1); | 964 | DUMPCOREAV(HDMI_CORE_AV_CTS_HVAL1); |
963 | DUMPCORE(HDMI_CORE_AV_CTS_HVAL2); | 965 | DUMPCOREAV(HDMI_CORE_AV_CTS_HVAL2); |
964 | DUMPCORE(HDMI_CORE_AV_CTS_HVAL3); | 966 | DUMPCOREAV(HDMI_CORE_AV_CTS_HVAL3); |
965 | DUMPCORE(HDMI_CORE_AV_AUD_MODE); | 967 | DUMPCOREAV(HDMI_CORE_AV_AUD_MODE); |
966 | DUMPCORE(HDMI_CORE_AV_SPDIF_CTRL); | 968 | DUMPCOREAV(HDMI_CORE_AV_SPDIF_CTRL); |
967 | DUMPCORE(HDMI_CORE_AV_HW_SPDIF_FS); | 969 | DUMPCOREAV(HDMI_CORE_AV_HW_SPDIF_FS); |
968 | DUMPCORE(HDMI_CORE_AV_SWAP_I2S); | 970 | DUMPCOREAV(HDMI_CORE_AV_SWAP_I2S); |
969 | DUMPCORE(HDMI_CORE_AV_SPDIF_ERTH); | 971 | DUMPCOREAV(HDMI_CORE_AV_SPDIF_ERTH); |
970 | DUMPCORE(HDMI_CORE_AV_I2S_IN_MAP); | 972 | DUMPCOREAV(HDMI_CORE_AV_I2S_IN_MAP); |
971 | DUMPCORE(HDMI_CORE_AV_I2S_IN_CTRL); | 973 | DUMPCOREAV(HDMI_CORE_AV_I2S_IN_CTRL); |
972 | DUMPCORE(HDMI_CORE_AV_I2S_CHST0); | 974 | DUMPCOREAV(HDMI_CORE_AV_I2S_CHST0); |
973 | DUMPCORE(HDMI_CORE_AV_I2S_CHST1); | 975 | DUMPCOREAV(HDMI_CORE_AV_I2S_CHST1); |
974 | DUMPCORE(HDMI_CORE_AV_I2S_CHST2); | 976 | DUMPCOREAV(HDMI_CORE_AV_I2S_CHST2); |
975 | DUMPCORE(HDMI_CORE_AV_I2S_CHST4); | 977 | DUMPCOREAV(HDMI_CORE_AV_I2S_CHST4); |
976 | DUMPCORE(HDMI_CORE_AV_I2S_CHST5); | 978 | DUMPCOREAV(HDMI_CORE_AV_I2S_CHST5); |
977 | DUMPCORE(HDMI_CORE_AV_ASRC); | 979 | DUMPCOREAV(HDMI_CORE_AV_ASRC); |
978 | DUMPCORE(HDMI_CORE_AV_I2S_IN_LEN); | 980 | DUMPCOREAV(HDMI_CORE_AV_I2S_IN_LEN); |
979 | DUMPCORE(HDMI_CORE_AV_HDMI_CTRL); | 981 | DUMPCOREAV(HDMI_CORE_AV_HDMI_CTRL); |
980 | DUMPCORE(HDMI_CORE_AV_AUDO_TXSTAT); | 982 | DUMPCOREAV(HDMI_CORE_AV_AUDO_TXSTAT); |
981 | DUMPCORE(HDMI_CORE_AV_AUD_PAR_BUSCLK_1); | 983 | DUMPCOREAV(HDMI_CORE_AV_AUD_PAR_BUSCLK_1); |
982 | DUMPCORE(HDMI_CORE_AV_AUD_PAR_BUSCLK_2); | 984 | DUMPCOREAV(HDMI_CORE_AV_AUD_PAR_BUSCLK_2); |
983 | DUMPCORE(HDMI_CORE_AV_AUD_PAR_BUSCLK_3); | 985 | DUMPCOREAV(HDMI_CORE_AV_AUD_PAR_BUSCLK_3); |
984 | DUMPCORE(HDMI_CORE_AV_TEST_TXCTRL); | 986 | DUMPCOREAV(HDMI_CORE_AV_TEST_TXCTRL); |
985 | DUMPCORE(HDMI_CORE_AV_DPD); | 987 | DUMPCOREAV(HDMI_CORE_AV_DPD); |
986 | DUMPCORE(HDMI_CORE_AV_PB_CTRL1); | 988 | DUMPCOREAV(HDMI_CORE_AV_PB_CTRL1); |
987 | DUMPCORE(HDMI_CORE_AV_PB_CTRL2); | 989 | DUMPCOREAV(HDMI_CORE_AV_PB_CTRL2); |
988 | DUMPCORE(HDMI_CORE_AV_AVI_TYPE); | 990 | DUMPCOREAV(HDMI_CORE_AV_AVI_TYPE); |
989 | DUMPCORE(HDMI_CORE_AV_AVI_VERS); | 991 | DUMPCOREAV(HDMI_CORE_AV_AVI_VERS); |
990 | DUMPCORE(HDMI_CORE_AV_AVI_LEN); | 992 | DUMPCOREAV(HDMI_CORE_AV_AVI_LEN); |
991 | DUMPCORE(HDMI_CORE_AV_AVI_CHSUM); | 993 | DUMPCOREAV(HDMI_CORE_AV_AVI_CHSUM); |
992 | DUMPCORE(HDMI_CORE_AV_SPD_TYPE); | 994 | DUMPCOREAV(HDMI_CORE_AV_SPD_TYPE); |
993 | DUMPCORE(HDMI_CORE_AV_SPD_VERS); | 995 | DUMPCOREAV(HDMI_CORE_AV_SPD_VERS); |
994 | DUMPCORE(HDMI_CORE_AV_SPD_LEN); | 996 | DUMPCOREAV(HDMI_CORE_AV_SPD_LEN); |
995 | DUMPCORE(HDMI_CORE_AV_SPD_CHSUM); | 997 | DUMPCOREAV(HDMI_CORE_AV_SPD_CHSUM); |
996 | DUMPCORE(HDMI_CORE_AV_AUDIO_TYPE); | 998 | DUMPCOREAV(HDMI_CORE_AV_AUDIO_TYPE); |
997 | DUMPCORE(HDMI_CORE_AV_AUDIO_VERS); | 999 | DUMPCOREAV(HDMI_CORE_AV_AUDIO_VERS); |
998 | DUMPCORE(HDMI_CORE_AV_AUDIO_LEN); | 1000 | DUMPCOREAV(HDMI_CORE_AV_AUDIO_LEN); |
999 | DUMPCORE(HDMI_CORE_AV_AUDIO_CHSUM); | 1001 | DUMPCOREAV(HDMI_CORE_AV_AUDIO_CHSUM); |
1000 | DUMPCORE(HDMI_CORE_AV_MPEG_TYPE); | 1002 | DUMPCOREAV(HDMI_CORE_AV_MPEG_TYPE); |
1001 | DUMPCORE(HDMI_CORE_AV_MPEG_VERS); | 1003 | DUMPCOREAV(HDMI_CORE_AV_MPEG_VERS); |
1002 | DUMPCORE(HDMI_CORE_AV_MPEG_LEN); | 1004 | DUMPCOREAV(HDMI_CORE_AV_MPEG_LEN); |
1003 | DUMPCORE(HDMI_CORE_AV_MPEG_CHSUM); | 1005 | DUMPCOREAV(HDMI_CORE_AV_MPEG_CHSUM); |
1004 | DUMPCORE(HDMI_CORE_AV_CP_BYTE1); | 1006 | DUMPCOREAV(HDMI_CORE_AV_CP_BYTE1); |
1005 | DUMPCORE(HDMI_CORE_AV_CEC_ADDR_ID); | 1007 | DUMPCOREAV(HDMI_CORE_AV_CEC_ADDR_ID); |
1006 | } | 1008 | } |
1007 | 1009 | ||
1008 | void ti_hdmi_4xxx_phy_dump(struct hdmi_ip_data *ip_data, struct seq_file *s) | 1010 | void ti_hdmi_4xxx_phy_dump(struct hdmi_ip_data *ip_data, struct seq_file *s) |