diff options
author | Xin Ji <xji@analogixsemi.com> | 2022-07-26 11:30:58 +0800 |
---|---|---|
committer | Robert Foss <robert.foss@linaro.org> | 2022-08-29 15:52:34 +0200 |
commit | f8e1fa0fc8bd13122324da7d1e80d66641220680 (patch) | |
tree | eacbcb0fd1e9ac7c50fb4be00a12b644416abde7 | |
parent | 291f269a49916a8494526edca92afed69270241f (diff) | |
download | linux-stable-f8e1fa0fc8bd13122324da7d1e80d66641220680.tar.gz linux-stable-f8e1fa0fc8bd13122324da7d1e80d66641220680.tar.bz2 linux-stable-f8e1fa0fc8bd13122324da7d1e80d66641220680.zip |
drm/bridge: anx7625: Support HDMI_I2S audio format
1. Support HDMI_I2S audio format.
2. Return 0 if there is no sink connection in .hw_param callback.
Signed-off-by: Xin Ji <xji@analogixsemi.com>
Acked-by: Hsin-Yi Wang <hsinyi@chromium.org>
Acked-by: Jiaxin Yu<jiaxin.yu@mediatek.com>
Signed-off-by: Robert Foss <robert.foss@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220726033058.403715-1-xji@analogixsemi.com
-rw-r--r-- | drivers/gpu/drm/bridge/analogix/anx7625.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index 79fc7a50b497..c74b5df4cade 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -1797,8 +1797,13 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, int wl, ch, rate; int ret = 0; - if (fmt->fmt != HDMI_DSP_A) { - DRM_DEV_ERROR(dev, "only supports DSP_A\n"); + if (anx7625_sink_detect(ctx) == connector_status_disconnected) { + DRM_DEV_DEBUG_DRIVER(dev, "DP not connected\n"); + return 0; + } + + if (fmt->fmt != HDMI_DSP_A && fmt->fmt != HDMI_I2S) { + DRM_DEV_ERROR(dev, "only supports DSP_A & I2S\n"); return -EINVAL; } @@ -1806,10 +1811,16 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, params->sample_rate, params->sample_width, params->cea.channels); - ret |= anx7625_write_and_or(ctx, ctx->i2c.tx_p2_client, - AUDIO_CHANNEL_STATUS_6, - ~I2S_SLAVE_MODE, - TDM_SLAVE_MODE); + if (fmt->fmt == HDMI_DSP_A) + ret = anx7625_write_and_or(ctx, ctx->i2c.tx_p2_client, + AUDIO_CHANNEL_STATUS_6, + ~I2S_SLAVE_MODE, + TDM_SLAVE_MODE); + else + ret = anx7625_write_and_or(ctx, ctx->i2c.tx_p2_client, + AUDIO_CHANNEL_STATUS_6, + ~TDM_SLAVE_MODE, + I2S_SLAVE_MODE); /* Word length */ switch (params->sample_width) { |