From patchwork Tue May 24 14:33:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dragos Bogdan X-Patchwork-Id: 9133797 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0493F6075E for ; Tue, 24 May 2016 14:49:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EB2E82823B for ; Tue, 24 May 2016 14:49:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E000B2828B; Tue, 24 May 2016 14:49:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 498682823B for ; Tue, 24 May 2016 14:49:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932475AbcEXOt3 (ORCPT ); Tue, 24 May 2016 10:49:29 -0400 Received: from mail-by2on0076.outbound.protection.outlook.com ([207.46.100.76]:44839 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752519AbcEXOt2 (ORCPT ); Tue, 24 May 2016 10:49:28 -0400 X-Greylist: delayed 940 seconds by postgrey-1.27 at vger.kernel.org; Tue, 24 May 2016 10:49:28 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=JToPbgGqYyl4yJcrWB6zdzmV5/vIoivN55XNooPMzDE=; b=S6pPtjcda6zv1C+od4G/XDINNAky9bREqpgPXqliB4RMR6kBgCTJhT2QSr6HYFGzXnadW9yjb/ryNznXmo7LJkD6HgpKMSTnMVQxdrXfq7DYWyNXgVtv6KIMKa9IMbQM7lcBXLK1Z4g1b7gMf9n3CL3jvAclL/8W3ynq2HYK24s= Received: from BY2PR03CA077.namprd03.prod.outlook.com (10.141.249.50) by BY2PR03MB157.namprd03.prod.outlook.com (10.242.36.12) with Microsoft SMTP Server (TLS) id 15.1.492.11; Tue, 24 May 2016 14:33:46 +0000 Received: from BL2FFO11FD018.protection.gbl (2a01:111:f400:7c09::148) by BY2PR03CA077.outlook.office365.com (2a01:111:e400:2c5d::50) with Microsoft SMTP Server (TLS) id 15.1.497.12 via Frontend Transport; Tue, 24 May 2016 14:33:46 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.57) smtp.mailfrom=analog.com; metafoo.de; dkim=none (message not signed) header.d=none;metafoo.de; dmarc=bestguesspass action=none header.from=analog.com; Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2FFO11FD018.mail.protection.outlook.com (10.173.161.36) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Tue, 24 May 2016 14:33:44 +0000 Received: from NWD2HUBCAS9.ad.analog.com (nwd2hubcas9.ad.analog.com [10.64.69.109]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id u4OIWROR009889 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Tue, 24 May 2016 14:32:28 -0400 Received: from zeus.spd.analog.com (10.64.82.11) by NWD2HUBCAS9.ad.analog.com (10.64.69.109) with Microsoft SMTP Server id 14.3.210.2; Tue, 24 May 2016 10:33:43 -0400 Received: from debian.analog.com ([10.50.1.215]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id u4OEXe8t012098; Tue, 24 May 2016 10:33:41 -0400 From: Dragos Bogdan To: Hans Verkuil , Mauro Carvalho Chehab CC: Lars-Peter Clausen , , Dragos Bogdan Subject: [PATCH v2] [media] adv7604: Add support for hardware reset Date: Tue, 24 May 2016 17:33:27 +0300 Message-ID: <1464100407-5935-1-git-send-email-dragos.bogdan@analog.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:137.71.25.57; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(438002)(189002)(199003)(50986999)(8676002)(106466001)(48376002)(5008740100001)(36756003)(86362001)(4326007)(11100500001)(50226002)(2906002)(53416004)(8936002)(33646002)(92566002)(6806005)(19580395003)(1220700001)(47776003)(5001970100001)(229853001)(107886002)(586003)(87936001)(77096005)(50466002)(5003940100001)(19580405001)(5001770100001)(5003600100002)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB157; H:nwd2mta2.analog.com; FPR:; SPF:Pass; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD018; 1:wYsb+MCuZkWbTI2xJL3JwKb8ypMTnTcExk9pyhmRssbGfkg6BfD9HHx9KzlLj9Dz4MTaI8mBT1yy/+pLk9pKEREkkjiyb/qZz67ybicwigw+B7Wg30K89EuNugjtKGu1WcXvEHnAx+58xx9HsP71iNt1aLYeBhZZO1ROS33VqoH5S7iROcPFwhcgJGQ5NnS4icBbthMct+3EyJWEa32kF/Aaim9whqLLTBY6goahV26lFJsKTLKyJIjXsQtqOCx53BQreurqRhLhliDX8Tec/nJbJ5lZFxIxtYtYE7uexZ+y8xxPPGk7+xYYHEnV3IGdpXHGCEIy6BqVcS4qAYZt+SEI6gVJST9ROzDM3DDOy+BsuA+oN/FbfawDauRi5VcNUHGV1x2VKhVYeoC+QQa8j8EtKsGzgCrRNUAxGtTZQXJh5V9TNC1YVG3BTjkcav6CmvaFMWDBt0psYsAO7qSk6w5H/Tb5KbluOtyQKiW6f+nUAo6tzN892zlvaPUFugmoP/HmDx6y7QcGEFn750YbIrZ6/Ocz9UUZ21LzdB2DRbDL3Pnkin3L/Ejx4XVVwDgm X-MS-Office365-Filtering-Correlation-Id: be502aab-7f34-4770-07e1-08d383e06931 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB157; 2:v4Ca8xC6hcwNKbt7PqMAOYeeogUFF5LpxpKErEV2XVJsvsv2rmrk5QcIw7lQTadiVCVZikQfX0ZoS3uWafyAX7edXrwgje6oTbvKW6juYAZfm0fgImLTmWY0MGSZXueQprmtSQaJ3bK5ewApHM9QE1oFW4Lyg7WrkWF432J5Lf9e139U7HOMMJcqR8KfdHqZ; 3:HsP37YAlIAUhLsVEk0y3mxLw1vRu1XuRIQmzlP+md4SlohgFJGGsZVZ3ag6h86IYg9RejVKg/S3KbevpSYBu4QPsKArmWeQkbA99dPzjAvu+4UGJT06lcZLRw1FTeJkO8D2dSvQJnVfB2h9UFe5NAxKr9kL27fYMJ34WQOOjqOJIPpHF++awIRnSYLdyGAF2Au1s7vHgNz9SaZhkG8urzPlCiwpvCnK9a26CYRgCy/YZgoKUwVW72N2xeoZ8JeIczDy08mYQGxe/FkUKHWrl8A==; 25:8yBoWfoqAn1YC1ydQSzN4TdGNQYgpW7HIF68EDLBRWZSxsOexmO/xFRClDunMW5l1Q1jLKTILMhJGk8DaS8NYqWwpkpUvw7141TlCHLh7IvRWFH10T9OgmUhuw5qMYQlj9GsSgJuKI8R6JlDSLSi5ys/Jo3MXcMxjuT5tVbUcRHge2cUSOau034sqrLeRE5fmmSr2zzrDuvS3PyseUeE0sGAwYFfaP5eLtG/qPAAwVFHor/pESkCmXMYLFRKhaYVt2Vh+Avz+zJxMEUZgAC2rxlKh2t2PkEqJIbgq6pfV0vRdIQ/VruD0irsCfhYZN96DGCcIUWlU0Og7eInyGoKwpjtWnqNhQt4bKtQEVtjlOI12Vwuw0Xj3RFk4IqXcb65MLqTGJRZM0fAGvKLDTMiP58EJrqQOk2Fvw4IJs7jjok= X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501002); SRVR:BY2PR03MB157; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB157; 20:ChhdlOpOayItCN1XUGhb9crO6E77pNT1z8tkdqQMprBJyd9K2Ac1gxVkfCdGrqBzzJeCDXg6srQS/FuB1cJ6phxx1c9lRK4op1qDrGPFBYrt94R9qx/4eyls/71eMfapNU8fOpMrrTeFz3RcNeyx5ObJ3NPodSwZ+dddg418bW2XqrhbRe2mSAKHCatpte3oszwdsFKWmI85EhLyuhDBzFfvxTlN70XjIFQQhLHCsRvzbD6XCayBb4VOSGAj8x54FW3DF42xdGJIRx86+nWhFy4C1zQnl5zXh9Er+n2kTPMAW0tf4a1y2HscvRywzca4r4dazRHEQX+Bh5h8MdrMU/BXbsdAKO/Z6/sY1mm9jvm3rhwUHP2DqnvZ9IawF/S8LeKUZ2qQ/oufwL2NrM+N5ncW19mWINjXPhCRqgRWiBcl3HihNxXMqcv7GRhS2Caljd/mDOTtEOfpR7bXBxqzH9O2kpiC/NlxnwMnkQne6c4Q1TIZkBgdu7YogwuXY8zb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13015025)(13024025)(13023025)(13018025)(13017025)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:BY2PR03MB157; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB157; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB157; 4:0k4waIOATz3geXwRfifB7IFTL75L06rzKBo/7YA6qSbVaKyrnQM5t1hwY26aoYV0C9u21dKUWvQkWCyGvN9LjQ3zrBab2iQWBdxEn8Giha46XDjJmIqCmAnq02wIZNLCVON3a/dFKdVxnERJR22laATEpmFHUvcwJSq8agrrfi2ZJpH9LOO3944OEtQ2emoVWElYA+xnN6c1dhx6ZtsbW9uPOM+WQWcklSwOKDRSfU75za5y2LlIqCbqOHywl3DNckjP52iuj8DdDI8gu2YzfoAyRuzu7virs/eqJejR9A/oLel1SoBFMF24l5Xg8+Q/s8u18PjMIoz3RyyDLlmT4RdGyDudSxkVNl+xfOvnb+bNlNSZZAcxPoIiBqLZ7cqNjVf/gJqrW8uBJ5cv61TkLxFjyoVaUTDgdO50Kvcmnc8GMC60q/fxu4n14Fgeixon8c4MBWbCGDiEIc/QvFhlYrCyh31uL55hdasmnRhfzso= X-Forefront-PRVS: 09525C61DB X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB157; 23:3uukqRUxnZ8xlSHiNez55/2sRbqd0VRZeiZmxfSOHW?= =?us-ascii?Q?ubWa63TNiHC7HbdtWgtGb9wOgcIxEEogt31ylbcdyX5sDyquo0p7zovGnbHV?= =?us-ascii?Q?HmbMycMPCK/gDhfnZvDMgRnlPp3p0lLvYuge72Q0VFS/Rz4ZZ6hKNV9ncRHK?= =?us-ascii?Q?nN/GDQ0hOw0AOW2XlMe8lHTjN3FBwbHkic+CtHsiud0B1lbeutE+e1bVDYGH?= =?us-ascii?Q?azjBiJBGRUJDnbyHvWYpC7pot2UOlCE8R/FUU8P/KQSdxm6DmlbMl3jLoHe/?= =?us-ascii?Q?/hby5UBGHph+/JYJWb57gHlXBcC/+qPRpJHK1ZF4A9i+OzyG+t8JY3/pM7iF?= =?us-ascii?Q?pxpSYO0nNHVzt6YPbA27nUX0hNWvVa2z1HIpLprQCVwv3lrin18gy+bi7Jcg?= =?us-ascii?Q?02DhWiNzea0GcHF+uKT3nFIK4gw2FTjUZc3HGg0BRus9s2P91N8w5gLPYE1l?= =?us-ascii?Q?ULYj5nIH9WnO+EoO7r3y9L5gJc3elBVtL6YxCa3UP5Ff/nndS5kXqdsE+DmV?= =?us-ascii?Q?ruljR+UksqmiB31MCrJFEkwqKR++AZK+iA/x/VsYgG5plBmPnkVVRKRqifrD?= =?us-ascii?Q?y2VBPio983wzFPKrk1CSioUyz340CG1k+p2TzrxY/R+kW26mI4W9pBwQXLC1?= =?us-ascii?Q?yRPpbs8GhoNTq5lo+wdK939IfTe4eYIeYgc5tIEXuwnAeHitaLkPgAokHjL7?= =?us-ascii?Q?48WRB9ajaRT+kWHjvpOAKudevTZnJgDgA0yTTQjbJ6Os7/p1smmffDrE7psm?= =?us-ascii?Q?5QglXgJCE5PVcmq2CFu+9Hc91rRkmZb6iBL7/wBSEoON317souF1OooIk7X2?= =?us-ascii?Q?nWD7udH586F9ArirjrWWKLKzluFca9NCV/CcFY+gw/a5hxL9vw28gZpsNIF7?= =?us-ascii?Q?ThbvyTUy6De8tYuYHIDm0v4W33/e3wzHXdv8gR1xVwneU92gZGSAigvsgCtO?= =?us-ascii?Q?boFQWf9vSwEzP5bmwcpO+UIbQky7mcB2OGLbj+v3vFrGDuVk5E4pOlrS7fxm?= =?us-ascii?Q?U=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB157; 5:S0qJXm6jVPRxcfoZKfP/w78jDCLzCCw2rbE3VuMiSahCInJbgMggVqXLXeOZVgGPsIUAalu8xs/KJGEIMq8mU+5F4Bci4PlOFskz2vCsqLEvY2iWclxwwXEuqVeD2rR7BIEtxBXPZB7Cgs00u7LoXw==; 24:jKXm7fIb8qW+s14EH62jAiPB5RVqZmHGD2eji26lgatoKXONWRhTuBWRlLhfBhQmRCMeo4ZIc/FyVINTP0LFzn8XTAIeP5n1UkCB8ztcYX0=; 7:zH67xIzk924YWvhs2lbmKkbtQ4R2pTEO8IDsSa5S3h06BWe6RXWs0MBYKUnM+A0qhSXU4GCI2/OcmTUV3Sk3lIzT7+uKXiS67y5ydtotkx7hS1n9/qBhtQAUsUntds5xBv3rodE2iLwNBNKrl0Ts/HzrMxDrNr7YVVMUFuyYkcylnkRdeIFCGVrVlLy2NXX8 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2016 14:33:44.8857 (UTC) X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a; Ip=[137.71.25.57]; Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB157 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The part can be reset by a low pulse on the RESET pin (i.e. a hardware reset) with a minimum width of 5 ms. It is recommended to wait 5 ms after the low pulse before an I2C write is performed to the part. For safety reasons, the delays will be between 5 and 10 ms. The RESET pin can be tied high, so the GPIO is optional. Signed-off-by: Dragos Bogdan Acked-by: Laurent Pinchart --- Changes since v1: - Replace mdelay() with usleep_range(); - Limit the comments to 75 characters per line. drivers/media/i2c/adv7604.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c index 41a1bfc..73c79bb 100644 --- a/drivers/media/i2c/adv7604.c +++ b/drivers/media/i2c/adv7604.c @@ -164,6 +164,7 @@ struct adv76xx_state { struct adv76xx_platform_data pdata; struct gpio_desc *hpd_gpio[4]; + struct gpio_desc *reset_gpio; struct v4l2_subdev sd; struct media_pad pads[ADV76XX_PAD_MAX]; @@ -2996,6 +2997,21 @@ static int configure_regmaps(struct adv76xx_state *state) return 0; } +static int adv76xx_reset(struct adv76xx_state *state) +{ + if (state->reset_gpio) { + /* ADV76XX can be reset by a low reset pulse of minimum 5 ms. */ + gpiod_set_value_cansleep(state->reset_gpio, 0); + usleep_range(5000, 10000); + gpiod_set_value_cansleep(state->reset_gpio, 1); + /* It is recommended to wait 5 ms after the low pulse before */ + /* an I2C write is performed to the ADV76XX. */ + usleep_range(5000, 10000); + } + + return 0; +} + static int adv76xx_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -3059,6 +3075,12 @@ static int adv76xx_probe(struct i2c_client *client, if (state->hpd_gpio[i]) v4l_info(client, "Handling HPD %u GPIO\n", i); } + state->reset_gpio = devm_gpiod_get_optional(&client->dev, "reset", + GPIOD_OUT_HIGH); + if (IS_ERR(state->reset_gpio)) + return PTR_ERR(state->reset_gpio); + + adv76xx_reset(state); state->timings = cea640x480; state->format = adv76xx_format_info(state, MEDIA_BUS_FMT_YUYV8_2X8);