Hi Peter,
On Tue, Apr 02, 2019 at 04:10:41PM +0300, Peter Ujfalusi wrote:
On 02/04/2019 14.21, Laurent Pinchart wrote:
On Mon, Apr 01, 2019 at 03:33:42PM +0300, Peter Ujfalusi wrote:
In case either the HPD gpio is not specified or when the HPD gpio can not be used as interrupt we should tell the core that the HPD needs to be polled for detecting hotplug.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
drivers/gpu/drm/bridge/ti-tfp410.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c index 285be4a0f4bd..6fc831eb3804 100644 --- a/drivers/gpu/drm/bridge/ti-tfp410.c +++ b/drivers/gpu/drm/bridge/ti-tfp410.c @@ -31,6 +31,7 @@ struct tfp410 {
struct i2c_adapter *ddc; struct gpio_desc *hpd;
- int hpd_irq; struct delayed_work hpd_work; struct gpio_desc *powerdown;
@@ -124,8 +125,10 @@ static int tfp410_attach(struct drm_bridge *bridge) return -ENODEV; }
- if (dvi->hpd)
- if (dvi->hpd_irq >= 0)
Do you need a new hpd_irq field ? Can't you just test dvi->hpd as done today, simply adding the else clause to this if ?
We can have hpd GPIO, but the GPIO might not be usable for interrupt.
Ah, good point. I hadn't understood that from the commit message. Maybe an additional sentence pointing out that not all GPIOs can be used as IRQs would be useful.
Reviewed-by: Laurent Pinchart laurent.pinchart@ideasonboard.com
dvi->connector.polled = DRM_CONNECTOR_POLL_HPD;
else
dvi->connector.polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
drm_connector_helper_add(&dvi->connector, &tfp410_con_helper_funcs);
@@ -324,10 +327,15 @@ static int tfp410_init(struct device *dev, bool i2c) return PTR_ERR(dvi->powerdown); }
- if (dvi->hpd) {
- if (dvi->hpd)
dvi->hpd_irq = gpiod_to_irq(dvi->hpd);
- else
dvi->hpd_irq = -ENXIO;
- if (dvi->hpd_irq >= 0) { INIT_DELAYED_WORK(&dvi->hpd_work, tfp410_hpd_work_func);
ret = devm_request_threaded_irq(dev, gpiod_to_irq(dvi->hpd),
ret = devm_request_threaded_irq(dev, dvi->hpd_irq, NULL, tfp410_hpd_irq_thread, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "hdmi-hpd", dvi);