aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss
diff options
context:
space:
mode:
authorRicardo Neri <ricardo.neri@ti.com>2012-03-19 14:27:41 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-05-11 08:15:23 -0400
commitc1164ed87ea592c2001a0040ffbf9a75cf501d1c (patch)
tree9a64206f353c349323d225dd88a7cf1ff7985742 /drivers/video/omap2/dss
parent7e151f7f6abdd75831797ae45ec2aa3d0a648416 (diff)
OMAPDSS: HDMI: OMAP4: Expand configuration for IEC-60958 audio
Utilize a snd_aes_iec958 struct to write the parameters of the IEC-60958 channel status word into the HDMI IP registers. Hence, the user of the driver has full control of what parameters are written in the word. Also, some of the parameters of the I2S structure have been removed as they are actually IEC-60958 parameters. Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss')
-rw-r--r--drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c29
-rw-r--r--drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h4
2 files changed, 20 insertions, 13 deletions
diff --git a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
index f503c9d12b2f..b572101c1d03 100644
--- a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
+++ b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
@@ -1112,10 +1112,25 @@ void hdmi_core_audio_config(struct hdmi_ip_data *ip_data,
1112 REG_FLD_MOD(av_base, HDMI_CORE_AV_SPDIF_CTRL, 1112 REG_FLD_MOD(av_base, HDMI_CORE_AV_SPDIF_CTRL,
1113 cfg->fs_override, 1, 1); 1113 cfg->fs_override, 1, 1);
1114 1114
1115 /* I2S parameters */ 1115 /*
1116 REG_FLD_MOD(av_base, HDMI_CORE_AV_I2S_CHST4, 1116 * Set IEC-60958-3 channel status word. It is passed to the IP
1117 cfg->freq_sample, 3, 0); 1117 * just as it is received. The user of the driver is responsible
1118 1118 * for its contents.
1119 */
1120 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST0,
1121 cfg->iec60958_cfg->status[0]);
1122 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST1,
1123 cfg->iec60958_cfg->status[1]);
1124 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST2,
1125 cfg->iec60958_cfg->status[2]);
1126 /* yes, this is correct: status[3] goes to CHST4 register */
1127 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST4,
1128 cfg->iec60958_cfg->status[3]);
1129 /* yes, this is correct: status[4] goes to CHST5 register */
1130 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST5,
1131 cfg->iec60958_cfg->status[4]);
1132
1133 /* set I2S parameters */
1119 r = hdmi_read_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL); 1134 r = hdmi_read_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL);
1120 r = FLD_MOD(r, cfg->i2s_cfg.sck_edge_mode, 6, 6); 1135 r = FLD_MOD(r, cfg->i2s_cfg.sck_edge_mode, 6, 6);
1121 r = FLD_MOD(r, cfg->i2s_cfg.vbit, 4, 4); 1136 r = FLD_MOD(r, cfg->i2s_cfg.vbit, 4, 4);
@@ -1124,12 +1139,6 @@ void hdmi_core_audio_config(struct hdmi_ip_data *ip_data,
1124 r = FLD_MOD(r, cfg->i2s_cfg.shift, 0, 0); 1139 r = FLD_MOD(r, cfg->i2s_cfg.shift, 0, 0);
1125 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL, r); 1140 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL, r);
1126 1141
1127 r = hdmi_read_reg(av_base, HDMI_CORE_AV_I2S_CHST5);
1128 r = FLD_MOD(r, cfg->freq_sample, 7, 4);
1129 r = FLD_MOD(r, cfg->i2s_cfg.word_length, 3, 1);
1130 r = FLD_MOD(r, cfg->i2s_cfg.word_max_length, 0, 0);
1131 hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST5, r);
1132
1133 REG_FLD_MOD(av_base, HDMI_CORE_AV_I2S_IN_LEN, 1142 REG_FLD_MOD(av_base, HDMI_CORE_AV_I2S_IN_LEN,
1134 cfg->i2s_cfg.in_length_bits, 3, 0); 1143 cfg->i2s_cfg.in_length_bits, 3, 0);
1135 1144
diff --git a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h
index 914be3dbf71d..4510edba4406 100644
--- a/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h
+++ b/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h
@@ -407,8 +407,6 @@ struct hdmi_audio_dma {
407}; 407};
408 408
409struct hdmi_core_audio_i2s_config { 409struct hdmi_core_audio_i2s_config {
410 u8 word_max_length;
411 u8 word_length;
412 u8 in_length_bits; 410 u8 in_length_bits;
413 u8 justification; 411 u8 justification;
414 u8 sck_edge_mode; 412 u8 sck_edge_mode;
@@ -420,7 +418,7 @@ struct hdmi_core_audio_i2s_config {
420 418
421struct hdmi_core_audio_config { 419struct hdmi_core_audio_config {
422 struct hdmi_core_audio_i2s_config i2s_cfg; 420 struct hdmi_core_audio_i2s_config i2s_cfg;
423 u32 freq_sample; 421 struct snd_aes_iec958 *iec60958_cfg;
424 bool fs_override; 422 bool fs_override;
425 u32 n; 423 u32 n;
426 u32 cts; 424 u32 cts;