summaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2010-08-31 14:46:41 +0900
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-09-01 11:17:49 +0100
commit6d86577124bd674209954517a074a472456c758b (patch)
tree2f8d768d6e76adf7dd9090eed9dac3f3fc9b8716 /drivers/video
parentc88e7b93a80bd46899c4cb09a9b2d52bb04d79bd (diff)
downloadlinux-6d86577124bd674209954517a074a472456c758b.tar.bz2
fbdev: sh-mobile: Add HDMI sound type selection
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/sh_mobile_hdmi.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 2fde08cc66bf..8a05c5b0b9b8 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -318,6 +318,9 @@ static void sh_hdmi_video_config(struct sh_hdmi *hdmi)
*/
static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
{
+ u8 data;
+ struct sh_mobile_hdmi_info *pdata = hdmi->dev->platform_data;
+
/*
* [7:4] L/R data swap control
* [3:0] appropriate N[19:16]
@@ -335,7 +338,23 @@ static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
* [6:5] set required down sampling rate if required
* [4:3] set required audio source
*/
- hdmi_write(hdmi, 0x00, HDMI_AUDIO_SETTING_1);
+ switch (pdata->flags & HDMI_SRC_MASK) {
+ default:
+ /* FALL THROUGH */
+ case HDMI_SRC_I2S:
+ data = (0x0 << 3);
+ break;
+ case HDMI_SRC_SPDIF:
+ data = (0x1 << 3);
+ break;
+ case HDMI_SRC_DSD:
+ data = (0x2 << 3);
+ break;
+ case HDMI_SRC_HBR:
+ data = (0x3 << 3);
+ break;
+ }
+ hdmi_write(hdmi, data, HDMI_AUDIO_SETTING_1);
/* [3:0] set sending channel number for channel status */
hdmi_write(hdmi, 0x40, HDMI_AUDIO_SETTING_2);