From patchwork Wed Jan 13 15:15:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulrich Hecht X-Patchwork-Id: 8026351 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 238C19F32E for ; Wed, 13 Jan 2016 15:15:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3CEE5204F6 for ; Wed, 13 Jan 2016 15:15:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4B0A320445 for ; Wed, 13 Jan 2016 15:15:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754932AbcAMPPu (ORCPT ); Wed, 13 Jan 2016 10:15:50 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35819 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752067AbcAMPPt (ORCPT ); Wed, 13 Jan 2016 10:15:49 -0500 Received: by mail-wm0-f67.google.com with SMTP id f206so37416743wmf.2; Wed, 13 Jan 2016 07:15:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id; bh=2Tdp4hCN2oUiubht7d+JESYVgc+qQi4yX9WK1AdPJ+Q=; b=Qcs89tPkvcVr/5r/dY0hl1Wstd6/wP3IkgkEmooqJADj1fE6nJbkltmpN/L5nQ2k3e U4JUjRffaOH5ML4/cv+bNJ5uNuPlsC/umRu4Qp2KmRSOujh5ZYyDNnIuceES6lH8j7fx i2m1Zeza4bHrmfErkHLekzWLpfAYA7UMyYdlIbCQ+/2XJEFDOgIzSRDZ31Myr7m/i9wA 4N04F5YT6NV0MyVlTy3/LdSxieIhyqtcXxWK3R9xFOkZNSVNmivPlEGXF8noKYwmaWkO f/VUF60LfZSD3jQfj/l9aDBN9flsyG+rKkLjSchaWvQQ1iFL6k7P9SJ2tJTDk/7ApCUE Zkaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=2Tdp4hCN2oUiubht7d+JESYVgc+qQi4yX9WK1AdPJ+Q=; b=RCB+5EbYqs9/2GVM/Ne2cVneh2NXsrPo2FVdmhS9y5ysya/pC80Ny1+gLz4o9zRT7M 3RE+hYbEW1RD3AijoBx02eK9a92th8gZoYveeC2biN2hBqfsnO38qGjx8nGpKXfGXagK 3zlkoDREY2OzJRKDuuzWmLm+sUH5HQe0ZIOGGp8Wo2TCMw/MakNMbJjyYMlXifdCG8Kz 7Ho960Sc9OssKsYzyauPZXiRmiLAgxIujX5pQB2mFxgwT3WhdlTyUIznIGSq3wuvsVkW W/GSOhyiIXcM7JU8Ivep7ZNVitFE9gQMlU+U8Utw2JZ2kFjA2oW/Hb35MuDkqv8Q3i4y WjzQ== X-Gm-Message-State: ALoCoQkrdz+DdMFDeYvKOBW0s4a1fLyxK4Y5Mzaf7l8JI5DLbOLpoB4Dq2qZl/H5rZdV/EvcFVNJsjgr9l1YbDDFcRFCUCwM5A== X-Received: by 10.28.225.132 with SMTP id y126mr27157500wmg.98.1452698148252; Wed, 13 Jan 2016 07:15:48 -0800 (PST) Received: from groucho.site (ip9234e209.dynamic.kabel-deutschland.de. [146.52.226.9]) by smtp.gmail.com with ESMTPSA id e2sm16453491wma.1.2016.01.13.07.15.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 13 Jan 2016 07:15:47 -0800 (PST) From: Ulrich Hecht To: linux-media@vger.kernel.org, linux-sh@vger.kernel.org Cc: magnus.damm@gmail.com, laurent.pinchart@ideasonboard.com, hans.verkuil@cisco.com, ian.molton@codethink.co.uk, lars@metafoo.de, william.towle@codethink.co.uk, sergei.shtylyov@cogentembedded.com, Ulrich Hecht Subject: [PATCH v3] adv7604: add direct interrupt handling Date: Wed, 13 Jan 2016 16:15:43 +0100 Message-Id: <1452698143-31897-1-git-send-email-ulrich.hecht+renesas@gmail.com> X-Mailer: git-send-email 2.6.4 Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When probed from device tree, the i2c client driver can handle the interrupt on its own. Signed-off-by: Ulrich Hecht Reviewed-by: Laurent Pinchart --- v3: uses IRQ_RETVAL v2: implements the suggested style changes and drops the IRQF_TRIGGER_LOW flag, which is handled in the device tree. drivers/media/i2c/adv7604.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c index 5bd81bd..ab4cb25 100644 --- a/drivers/media/i2c/adv7604.c +++ b/drivers/media/i2c/adv7604.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -1971,6 +1972,16 @@ static int adv76xx_isr(struct v4l2_subdev *sd, u32 status, bool *handled) return 0; } +static irqreturn_t adv76xx_irq_handler(int irq, void *devid) +{ + struct adv76xx_state *state = devid; + bool handled; + + adv76xx_isr(&state->sd, 0, &handled); + + return IRQ_RETVAL(handled); +} + static int adv76xx_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) { struct adv76xx_state *state = to_state(sd); @@ -2844,8 +2855,7 @@ static int adv76xx_parse_dt(struct adv76xx_state *state) state->pdata.op_656_range = 1; } - /* Disable the interrupt for now as no DT-based board uses it. */ - state->pdata.int1_config = ADV76XX_INT1_CONFIG_DISABLED; + state->pdata.int1_config = ADV76XX_INT1_CONFIG_ACTIVE_LOW; /* Use the default I2C addresses. */ state->pdata.i2c_addresses[ADV7604_PAGE_AVLINK] = 0x42; @@ -3235,6 +3245,16 @@ static int adv76xx_probe(struct i2c_client *client, v4l2_info(sd, "%s found @ 0x%x (%s)\n", client->name, client->addr << 1, client->adapter->name); + if (client->irq) { + err = devm_request_threaded_irq(&client->dev, + client->irq, + NULL, adv76xx_irq_handler, + IRQF_ONESHOT, + dev_name(&client->dev), state); + if (err) + goto err_entity; + } + err = v4l2_async_register_subdev(sd); if (err) goto err_entity;