Message ID | 20250311122445.3597100-9-quic_amakhija@quicinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add DSI display support for SA8775P target | expand |
On Tue, Mar 11, 2025 at 05:54:43PM +0530, Ayushi Makhija wrote: > When device enters the suspend state, it prevents > HPD interrupts from occurring. To address this, > add an additional PM runtime vote in hpd_enable(). > This vote is removed in hpd_disable(). Is it really enough to toggle the HPD interrupts? Is there any kind of programming that should be moved to .hpd_enable() too (so that by default the bridge doesn't generate HPD interrupts)? > > Signed-off-by: Ayushi Makhija <quic_amakhija@quicinc.com> > --- > drivers/gpu/drm/bridge/analogix/anx7625.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c > index 4be34d5c7a3b..764da1c1dc11 100644 > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c > @@ -2474,6 +2474,22 @@ static const struct drm_edid *anx7625_bridge_edid_read(struct drm_bridge *bridge > return anx7625_edid_read(ctx); > } > > +static void anx7625_bridge_hpd_enable(struct drm_bridge *bridge) > +{ > + struct anx7625_data *ctx = bridge_to_anx7625(bridge); > + struct device *dev = ctx->dev; > + > + pm_runtime_get_sync(dev); > +} > + > +static void anx7625_bridge_hpd_disable(struct drm_bridge *bridge) > +{ > + struct anx7625_data *ctx = bridge_to_anx7625(bridge); > + struct device *dev = ctx->dev; > + > + pm_runtime_put_sync(dev); > +} > + > static const struct drm_bridge_funcs anx7625_bridge_funcs = { > .attach = anx7625_bridge_attach, > .detach = anx7625_bridge_detach, > @@ -2487,6 +2503,8 @@ static const struct drm_bridge_funcs anx7625_bridge_funcs = { > .atomic_reset = drm_atomic_helper_bridge_reset, > .detect = anx7625_bridge_detect, > .edid_read = anx7625_bridge_edid_read, > + .hpd_enable = anx7625_bridge_hpd_enable, > + .hpd_disable = anx7625_bridge_hpd_disable, > }; > > static int anx7625_register_i2c_dummy_clients(struct anx7625_data *ctx, > -- > 2.34.1 >
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index 4be34d5c7a3b..764da1c1dc11 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2474,6 +2474,22 @@ static const struct drm_edid *anx7625_bridge_edid_read(struct drm_bridge *bridge return anx7625_edid_read(ctx); } +static void anx7625_bridge_hpd_enable(struct drm_bridge *bridge) +{ + struct anx7625_data *ctx = bridge_to_anx7625(bridge); + struct device *dev = ctx->dev; + + pm_runtime_get_sync(dev); +} + +static void anx7625_bridge_hpd_disable(struct drm_bridge *bridge) +{ + struct anx7625_data *ctx = bridge_to_anx7625(bridge); + struct device *dev = ctx->dev; + + pm_runtime_put_sync(dev); +} + static const struct drm_bridge_funcs anx7625_bridge_funcs = { .attach = anx7625_bridge_attach, .detach = anx7625_bridge_detach, @@ -2487,6 +2503,8 @@ static const struct drm_bridge_funcs anx7625_bridge_funcs = { .atomic_reset = drm_atomic_helper_bridge_reset, .detect = anx7625_bridge_detect, .edid_read = anx7625_bridge_edid_read, + .hpd_enable = anx7625_bridge_hpd_enable, + .hpd_disable = anx7625_bridge_hpd_disable, }; static int anx7625_register_i2c_dummy_clients(struct anx7625_data *ctx,
When device enters the suspend state, it prevents HPD interrupts from occurring. To address this, add an additional PM runtime vote in hpd_enable(). This vote is removed in hpd_disable(). Signed-off-by: Ayushi Makhija <quic_amakhija@quicinc.com> --- drivers/gpu/drm/bridge/analogix/anx7625.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)