Message ID | 20230125-tfp410_i2c-v3-3-a85d5f0f50f1@criticallink.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge: tfp410: Add i2c support | expand |
On 20/02/2023 23:10, Jonathan Cormier wrote: > From: Michael Williamson <michael.williamson@criticallink.com> > > If the I2C bus is connected on the TFP410, then use the register > status bit to determine connection state. This is needed, in particular, > for polling the state when the Hot Plug detect is not connected to > a controlling CPU via GPIO/IRQ lane. > > Signed-off-by: Michael Williamson <michael.williamson@criticallink.com> > Signed-off-by: Jonathan Cormier <jcormier@criticallink.com> > --- > drivers/gpu/drm/bridge/ti-tfp410.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c > index 41007d05d584..eeb7202452aa 100644 > --- a/drivers/gpu/drm/bridge/ti-tfp410.c > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c > @@ -28,6 +28,9 @@ > #define TFP410_BIT_BSEL BIT(2) > #define TFP410_BIT_DSEL BIT(3) > > +#define TFP410_REG_CTL_2_MODE 0x09 > +#define TFP410_BIT_HTPLG BIT(1) > + > static const struct regmap_config tfp410_regmap_config = { > .reg_bits = 8, > .val_bits = 8, > @@ -105,6 +108,15 @@ static enum drm_connector_status > tfp410_connector_detect(struct drm_connector *connector, bool force) > { > struct tfp410 *dvi = drm_connector_to_tfp410(connector); > + int ret; > + > + if (dvi->i2c) { > + ret = regmap_test_bits(dvi->regmap, TFP410_REG_CTL_2_MODE, TFP410_BIT_HTPLG); > + if (ret < 0) > + dev_err(dvi->dev, "%s failed to read HTPLG bit : %d\n", __func__, ret); > + else > + return ret ? connector_status_connected : connector_status_disconnected; > + } > > return drm_bridge_detect(dvi->next_bridge); > } > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c index 41007d05d584..eeb7202452aa 100644 --- a/drivers/gpu/drm/bridge/ti-tfp410.c +++ b/drivers/gpu/drm/bridge/ti-tfp410.c @@ -28,6 +28,9 @@ #define TFP410_BIT_BSEL BIT(2) #define TFP410_BIT_DSEL BIT(3) +#define TFP410_REG_CTL_2_MODE 0x09 +#define TFP410_BIT_HTPLG BIT(1) + static const struct regmap_config tfp410_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -105,6 +108,15 @@ static enum drm_connector_status tfp410_connector_detect(struct drm_connector *connector, bool force) { struct tfp410 *dvi = drm_connector_to_tfp410(connector); + int ret; + + if (dvi->i2c) { + ret = regmap_test_bits(dvi->regmap, TFP410_REG_CTL_2_MODE, TFP410_BIT_HTPLG); + if (ret < 0) + dev_err(dvi->dev, "%s failed to read HTPLG bit : %d\n", __func__, ret); + else + return ret ? connector_status_connected : connector_status_disconnected; + } return drm_bridge_detect(dvi->next_bridge); }