2022-07-26 03:45:57

by Xin Ji

[permalink] [raw]
Subject: [PATCH] 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 <[email protected]>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 23 +++++++++++++++++------
1 file 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) {
--
2.25.1


2022-08-10 09:46:40

by Hsin-Yi Wang

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: anx7625: Support HDMI_I2S audio format

On Tue, Jul 26, 2022 at 5:16 PM Jiaxin Yu <[email protected]> wrote:
>
> On Tue, 2022-07-26 at 11:30 +0800, Xin Ji wrote:
> > 1. Support HDMI_I2S audio format.
> > 2. Return 0 if there is no sink connection in .hw_param callback.
> >
> > Signed-off-by: Xin Ji <[email protected]>
> > ---
> > drivers/gpu/drm/bridge/analogix/anx7625.c | 23 +++++++++++++++++--
> > ----
> > 1 file changed, 17 insertions(+), 6 deletions(-)
> >
> Acked-by: Jiaxin Yu<[email protected]>
Acked-by: Hsin-Yi Wang <[email protected]>

> > 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) {
>

2022-08-29 14:51:27

by Robert Foss

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: anx7625: Support HDMI_I2S audio format

On Wed, 10 Aug 2022 at 10:58, Hsin-Yi Wang <[email protected]> wrote:
>
> On Tue, Jul 26, 2022 at 5:16 PM Jiaxin Yu <[email protected]> wrote:
> >
> > On Tue, 2022-07-26 at 11:30 +0800, Xin Ji wrote:
> > > 1. Support HDMI_I2S audio format.
> > > 2. Return 0 if there is no sink connection in .hw_param callback.
> > >
> > > Signed-off-by: Xin Ji <[email protected]>
> > > ---
> > > drivers/gpu/drm/bridge/analogix/anx7625.c | 23 +++++++++++++++++--
> > > ----
> > > 1 file changed, 17 insertions(+), 6 deletions(-)
> > >
> > Acked-by: Jiaxin Yu<[email protected]>
> Acked-by: Hsin-Yi Wang <[email protected]>
>
> > > 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) {
> >

Applied to drm-misc-next.