From d4a7fd1d0a3fa73e4bc97f2329c0924580d0d5ad Mon Sep 17 00:00:00 2001 From: Ricardo Neri Date: Mon, 19 Mar 2012 12:27:41 -0600 Subject: [PATCH] --- yaml --- r: 310357 b: refs/heads/master c: c1164ed87ea592c2001a0040ffbf9a75cf501d1c h: refs/heads/master i: 310355: f387ba4cc90ffc589c1bda9ee2a46a6646c982f6 v: v3 --- [refs] | 2 +- .../drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 29 ++++++++++++------- .../drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h | 4 +-- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 083f77961261..4eb8670ebf02 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7e151f7f6abdd75831797ae45ec2aa3d0a648416 +refs/heads/master: c1164ed87ea592c2001a0040ffbf9a75cf501d1c diff --git a/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c b/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c index f503c9d12b2f..b572101c1d03 100644 --- a/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c +++ b/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c @@ -1112,10 +1112,25 @@ void hdmi_core_audio_config(struct hdmi_ip_data *ip_data, REG_FLD_MOD(av_base, HDMI_CORE_AV_SPDIF_CTRL, cfg->fs_override, 1, 1); - /* I2S parameters */ - REG_FLD_MOD(av_base, HDMI_CORE_AV_I2S_CHST4, - cfg->freq_sample, 3, 0); - + /* + * Set IEC-60958-3 channel status word. It is passed to the IP + * just as it is received. The user of the driver is responsible + * for its contents. + */ + hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST0, + cfg->iec60958_cfg->status[0]); + hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST1, + cfg->iec60958_cfg->status[1]); + hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST2, + cfg->iec60958_cfg->status[2]); + /* yes, this is correct: status[3] goes to CHST4 register */ + hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST4, + cfg->iec60958_cfg->status[3]); + /* yes, this is correct: status[4] goes to CHST5 register */ + hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST5, + cfg->iec60958_cfg->status[4]); + + /* set I2S parameters */ r = hdmi_read_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL); r = FLD_MOD(r, cfg->i2s_cfg.sck_edge_mode, 6, 6); 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, r = FLD_MOD(r, cfg->i2s_cfg.shift, 0, 0); hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_IN_CTRL, r); - r = hdmi_read_reg(av_base, HDMI_CORE_AV_I2S_CHST5); - r = FLD_MOD(r, cfg->freq_sample, 7, 4); - r = FLD_MOD(r, cfg->i2s_cfg.word_length, 3, 1); - r = FLD_MOD(r, cfg->i2s_cfg.word_max_length, 0, 0); - hdmi_write_reg(av_base, HDMI_CORE_AV_I2S_CHST5, r); - REG_FLD_MOD(av_base, HDMI_CORE_AV_I2S_IN_LEN, cfg->i2s_cfg.in_length_bits, 3, 0); diff --git a/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h b/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h index 914be3dbf71d..4510edba4406 100644 --- a/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h +++ b/trunk/drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h @@ -407,8 +407,6 @@ struct hdmi_audio_dma { }; struct hdmi_core_audio_i2s_config { - u8 word_max_length; - u8 word_length; u8 in_length_bits; u8 justification; u8 sck_edge_mode; @@ -420,7 +418,7 @@ struct hdmi_core_audio_i2s_config { struct hdmi_core_audio_config { struct hdmi_core_audio_i2s_config i2s_cfg; - u32 freq_sample; + struct snd_aes_iec958 *iec60958_cfg; bool fs_override; u32 n; u32 cts;