Commit 6d865771 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

fbdev: sh-mobile: Add HDMI sound type selection

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent c88e7b93
...@@ -318,6 +318,9 @@ static void sh_hdmi_video_config(struct sh_hdmi *hdmi) ...@@ -318,6 +318,9 @@ static void sh_hdmi_video_config(struct sh_hdmi *hdmi)
*/ */
static void sh_hdmi_audio_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 * [7:4] L/R data swap control
* [3:0] appropriate N[19:16] * [3:0] appropriate N[19:16]
...@@ -335,7 +338,23 @@ static void sh_hdmi_audio_config(struct sh_hdmi *hdmi) ...@@ -335,7 +338,23 @@ static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
* [6:5] set required down sampling rate if required * [6:5] set required down sampling rate if required
* [4:3] set required audio source * [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 */ /* [3:0] set sending channel number for channel status */
hdmi_write(hdmi, 0x40, HDMI_AUDIO_SETTING_2); hdmi_write(hdmi, 0x40, HDMI_AUDIO_SETTING_2);
......
...@@ -14,9 +14,25 @@ ...@@ -14,9 +14,25 @@
struct sh_mobile_lcdc_chan_cfg; struct sh_mobile_lcdc_chan_cfg;
struct device; struct device;
/*
* flags format
*
* 0x0000000A
*
* A: Audio source select
*/
/* Audio source select */
#define HDMI_SRC_MASK (0xF << 0)
#define HDMI_SRC_I2S (0 << 0) /* default */
#define HDMI_SRC_SPDIF (1 << 0)
#define HDMI_SRC_DSD (2 << 0)
#define HDMI_SRC_HBR (3 << 0)
struct sh_mobile_hdmi_info { struct sh_mobile_hdmi_info {
struct sh_mobile_lcdc_chan_cfg *lcd_chan; struct sh_mobile_lcdc_chan_cfg *lcd_chan;
struct device *lcd_dev; struct device *lcd_dev;
unsigned int flags;
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment