drm/bridge/sii8620: use I2C to parse interrupt DT properties 07/92507/2
authorAndrzej Hajda <a.hajda@samsung.com>
Fri, 14 Oct 2016 13:52:22 +0000 (15:52 +0200)
committerAndrzej Hajda <a.hajda@samsung.com>
Mon, 17 Oct 2016 09:12:09 +0000 (11:12 +0200)
Interrupts should be handled by I2C core instead of private gpios.

Change-Id: Ib4d3b107f398d77c549d2334c4508f69b26427f9
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
drivers/gpu/drm/bridge/sii8620.c

index 3217f463388052c5202cf6fa78addf281f93db8c..863f859fd93077069c985e6038d0106982562f51 100644 (file)
@@ -70,7 +70,6 @@ struct sii8620 {
        u8 avif[19];
        struct edid *edid;
        unsigned int gen2_write_burst:1;
-       int irq;
        enum sii8620_mt_state mt_state;
        struct list_head mt_queue;
 
@@ -1439,12 +1438,12 @@ static void sii8620_cable_in(struct sii8620 *ctx)
                REG_DPD, BIT_DPD_PWRON_PLL | BIT_DPD_PDNTX12 | BIT_DPD_OSC_EN,
        );
 
-       enable_irq(ctx->irq);
+       enable_irq(to_i2c_client(ctx->dev)->irq);
 }
 
 static void sii8620_cable_out(struct sii8620 *ctx)
 {
-       disable_irq(ctx->irq);
+       disable_irq(to_i2c_client(ctx->dev)->irq);
        clk_disable_unprepare(ctx->clk_xtal);
        sii8620_hw_off(ctx);
 }
@@ -1582,20 +1581,14 @@ static int sii8620_probe(struct i2c_client *client,
                return PTR_ERR(ctx->clk_xtal);
        }
 
-       ctx->gpio_int = devm_gpiod_get(dev, "int", GPIOD_ASIS);
-       if (IS_ERR(ctx->gpio_int)) {
-               dev_err(dev, "failed to get int gpio from DT\n");
-               return PTR_ERR(ctx->gpio_int);
+       if (!client->irq) {
+               dev_err(dev, "no irq provided\n");
+               return -EINVAL;
        }
-
-       ctx->irq = gpiod_to_irq(ctx->gpio_int);
-       if (ctx->irq < 0) {
-               dev_err(dev, "failed to get irq\n");
-               return ctx->irq;
-       }
-       irq_set_status_flags(ctx->irq, IRQ_NOAUTOEN);
-       ret = devm_request_threaded_irq(dev, ctx->irq, NULL, sii8620_irq_thread,
-                       IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "sii8620", ctx);
+       irq_set_status_flags(client->irq, IRQ_NOAUTOEN);
+       ret = devm_request_threaded_irq(dev, client->irq, NULL,
+                       sii8620_irq_thread, IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
+                       "sii8620", ctx);
 
        ctx->gpio_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
        if (IS_ERR(ctx->gpio_reset)) {