From patchwork Wed Nov 4 20:16:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soren Brinkmann X-Patchwork-Id: 540166 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E464C140B0F for ; Thu, 5 Nov 2015 07:17:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030260AbbKDURe (ORCPT ); Wed, 4 Nov 2015 15:17:34 -0500 Received: from mail-bn1on0083.outbound.protection.outlook.com ([157.56.110.83]:60048 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1030583AbbKDURL (ORCPT ); Wed, 4 Nov 2015 15:17:11 -0500 Received: from BN1AFFO11FD032.protection.gbl (10.58.52.30) by BN1AFFO11HUB024.protection.gbl (10.58.52.134) with Microsoft SMTP Server (TLS) id 15.1.318.9; Wed, 4 Nov 2015 20:17:09 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; linutronix.de; dkim=none (message not signed) header.d=none;linutronix.de; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by BN1AFFO11FD032.mail.protection.outlook.com (10.58.52.186) with Microsoft SMTP Server (TLS) id 15.1.318.9 via Frontend Transport; Wed, 4 Nov 2015 20:17:09 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:56571 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1Zu4UW-0002vO-19; Wed, 04 Nov 2015 12:17:08 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1Zu4US-0002ok-Dm; Wed, 04 Nov 2015 12:17:04 -0800 Received: from [172.19.74.49] (helo=localhost) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1Zu4U1-0002Gr-MS; Wed, 04 Nov 2015 12:16:37 -0800 From: Soren Brinkmann To: Thomas Gleixner , Lars-Peter Clausen CC: Linus Walleij , Alexandre Courbot , Michal Simek , Grygorii Strashko , , , , Soren Brinkmann , John Linn Subject: [PATCH v2 2/2] gpio: zynq: Implement irq_pm_(get|put) Date: Wed, 4 Nov 2015 12:16:00 -0800 Message-ID: <1446668160-17522-3-git-send-email-soren.brinkmann@xilinx.com> X-Mailer: git-send-email 2.6.2.3.ga463a5b In-Reply-To: <1446668160-17522-1-git-send-email-soren.brinkmann@xilinx.com> References: <1446668160-17522-1-git-send-email-soren.brinkmann@xilinx.com> X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-21920.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD032; 1:hZbh4i/ZStt4HiCfVojPUeneoV+tE5z+mlewgd0Xj4v4qADcDxMulBiqGg0HwjfN774Bw7JwNkAI8m7aK0vnKxrpn565q1iqwJ5klPMVP42MwtH1EEloMSioFrRg4UjvJGOCFI1fMDo+b68QDMzVbVtDfD39evlWOgKXWs+mAorVTyKy72DdXi3jwOlYk6rHGyRRYMojoDzh46yfyiNyBz4S3pT2hwML0haXGUTH21gOrDlOZI6ifSpx3iOmqJ0RExGb9CvFazJAXGH3fuTLF+JLfV198BESiwE8qnqAMaIfB66ToyoLOqDbcUQl7xeXQ5KWd0yKHvfysGOQ4WrJnVyZSYHx3z5FktG9Il7l19kbxW70NPiui21u9c/T7oaV X-Forefront-Antispam-Report: CIP:149.199.60.100; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(438002)(189002)(199003)(50226001)(77096005)(2950100001)(50986999)(76176999)(86362001)(189998001)(5003940100001)(5001960100002)(87936001)(5007970100001)(33646002)(106466001)(57986006)(76506005)(48376002)(63266004)(11100500001)(16796002)(4001430100002)(6806005)(5008740100001)(19580405001)(19580395003)(229853001)(50466002)(47776003)(36756003)(107886002)(81156007)(92566002)(36386004)(5001770100001)(5001920100001)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1AFFO11HUB024; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB024; 2:xFX+DL70C3dttZ3glp8Vy7aNlJKAeaIfk/eFZ8oDH1IqYOpf8VYscx3QlD2uTDe4yfhOX5/k6Ejnp8NcHOhYK+9bkDGd+CSCEcok35DQxQqSQJ+5cKUZlPOGnczPnqyASrriXo9ejU3OYQGFazY0PSkce1MxQLkbtBegozpgdeM=; 3:cL9KZ6V6j2JFO+O1UJHFhb+6B+kDyCdjKcfyqg2U0KA5eUzGFUg3HZbxn+XgNWWIW7tKPk48mMiM7o31qDhr3kEPvZqjjjgKrDwOxlewFWrn/Mw2g+0xyRg8kMb58wdeOk2cuyt76cgkgGl9d/BH3pF5NK+f6G57YQodBra3wrt5kfyfbd3EIXfEcag+nR0ncJpM/e6rUOdzWSwgVPqSh92o3Bzsb9NSBfTLq5R9MSG3Iy7yqQNqCJLE0hpKCTpQ5AaBZPy9usCOSBBE/lqeWg==; 25:Ejw3Cv6EApgeOzl8FRk5ddEF87RuJ+24mqJqZY7pGGtsk57n4DurhIEXP07eA5DmLsoubBv5i38dFBzOt20Rl22p+FQMLFhzREvG/9uenG6sLqmHh6uXhaIG8XRmQqnAQJms2a/QPd9euLp6eEJNkmWjcW77lg57Img1prrmrYk9R3XRukKg0xxh36Bxtb/2KXMBq6F5cSKsDhFFWMEAN6/o0rUMoggJ5VbWuQBIUoJUxXvs7u8BMu7SPJP7iB0C8Geuc1Cu8VUxYa3GvhpdBQ== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501001); SRVR:BN1AFFO11HUB024; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB024; 20:/gLCz/tIwBaj9uRgixGFgK/W4PnbzWmMFDmutXWEJU3AsKv3iAAalG8IwHxIejjJTSJd0wkP8XxJGoWzLGQekNOSMygeVb6dvJPP5QcoRItxQgolVTVTMqSepUES0KUW3TzZjFE/lsOlKpnk7whvIsgOPaGscLwllp1gWh9yD9Tvyn6BAC9WHZZWMK2drC1xbiK774x6jfmTXW7UN2YfEv8K6GZQcCjS5ioVjd8h7Hcz4kI1fn+PkonhXBe55+OT+gz0NMwaVqMemTLDfMK7zl39paNZAExmHkv5JPtm0P3CKLqjQHpiMzT28Gjt2r0kdKisFzk+b3UjOhnZd3qMcaXiG49B9zyVSLF4qOPm/lSw6oiXfdKtLWevfdlYq1ILWS9UkFrrAWZ+NuhD+cHuycFB/4+f5Oj6zyjjMUAhdYYFSUzk3Op6glR4Dzwql12d+9U/6DV1gdMV112ThSb1vy/OHfYyQXnh9EEJNKKHa02zrRFQnP5jQajRlFv/s6PL; 4:hrVImNWCP9mP7i1LTt9hx8zcwWTLSfdx3u9ckqspJ7NwkQhFBgpYPPGeBEqhGsAtf1tUcD9iionrBiGvRCQF4ofmyyJ1f/VI4R2aJMo3qW34qZkTWtFdf/O4kX3lry8PGfz/xJExDYpGUUhWVKBC1Wi2VpIjL23hCHbLPvQXqIemweU9pmdKK2aXgHDShcvwBHp20adxZB4gSHRbuJQUAd45eFCDkAFCRWkykGVF6XWgoT02xZx6aSXiKHLuOlQ5597k1PG8HBKo60B6CAHp8wAt3o/ANIMFL+nc60YjRzh4wo6y4wJlwIGr39p1bnL1WeY52a6U2pZdThH3vhW8tav5NZwPN/QFvzI357qvaWPsqKBh3+ZL9kwnTfZaltv3 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001); SRVR:BN1AFFO11HUB024; BCL:0; PCL:0; RULEID:; SRVR:BN1AFFO11HUB024; X-Forefront-PRVS: 0750463DC9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1AFFO11HUB024; 23:8TIvVrnt4ImFuSUvB/wuxHm/WERy/b+hgP1r6xp?= =?us-ascii?Q?4Gpwh+/k/OCT2Gc/tKX4qJWvh3LVFzCKdnGLKsUWSbfXOUWHNz4mWIi+c1XG?= =?us-ascii?Q?MfBFJW8CI4V+bkGf0HKWALSXpkCGuUj2h+Ki3PrbiQmpmehEJ7fo4yafgAE2?= =?us-ascii?Q?Yex+zCtvXAk7gTXlHfzXY8dxRegQl+iY943yaeIl5LxFe84AGyRfV8lqoRM+?= =?us-ascii?Q?tvsfL83q59jFQdN8cYl65hsjqzfxlZ0DOhTm1M1O3VOWiCX/M3osr9T2rPqZ?= =?us-ascii?Q?DnUeM/ma4AuVqfPZWQITi6jiDpyQ8QdAXnmJOG3czneNfqlMmpzC3xO/ByOA?= =?us-ascii?Q?LXMpL2L39cdfa680AXQAOW1TnTR7e+rjp85SCtvL6GET7DDgLvhlaQM8x1Yq?= =?us-ascii?Q?1f+lnRSxrAjbm95q9rtOPxRWYS+cnNxlS6nEaA0n7MWgUp9Ss0F6PYyrlJ7l?= =?us-ascii?Q?IU4hPbbpLkdsVBhSoKQsgHikCgO6AsWMpb+moqjeHtPaOM5N7U8cV5goSBae?= =?us-ascii?Q?HKwvX8MPBZPtUZUkcZIvDlQRZTOFxAGW2GxvFn8Zj2Gl+mIe0WbbEeh9fKHB?= =?us-ascii?Q?2v6ybaYWeNFo3EgAHBZ0y3HwMIbEMk46dQOio2w/zDth1z1+TJg5n5nxnlO4?= =?us-ascii?Q?CKNgnJYkg82p657s0uwNJOOINi3iwkbJI6tmPo2N+k335xLjX8+V/Vhlm1/t?= =?us-ascii?Q?jWXtXkDx8Nd7iY0ZqycLBnjtB0elE49wQDdPnoehoW65HigRoDCvVLdgmTn6?= =?us-ascii?Q?mp2e8ZLyJYLOni6MWFx24J/l/H7IOMDS4vEh9gioKVXvOaRUWFw7iR3oEECm?= =?us-ascii?Q?D9JypnVAE3HfMWiUcsm+9CEr6TjziQxO7PkXdWhW9M+hBPWJ9CioUMp4SEVm?= =?us-ascii?Q?/ASz0mI3Uu60l9rpBnM3oK3w5hHEdcIuqy17fa15PACfNk+yUhrDKAPZ+aye?= =?us-ascii?Q?K9RYHa3DFewEy+Cr8M1v6FSoYr3SgMJQrG9Baqbp4KH7rA2npVOWnkTB6Srn?= =?us-ascii?Q?Ges9je4FLkYAT5nrZEJ1a+tgyb7slNnL+YiWsFmCFTmpQnnawCI48bQZRl1E?= =?us-ascii?Q?/2+j6buYv+h3lfZN7QRm9OvaF37eSVa/lXtFonhGPeq72xPtSDj9UzdzjuNI?= =?us-ascii?Q?5lSpnMADiEErAZ3/Naq3oft1M4HrQRfGk?= X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB024; 5:0bgB50fmzcdXDOflIR6d06iEk5nSWs2WuhPrp40H5abSnUEBmCwp0Cxrw2ar5T5uu7RGaX4EG5Qims0wrU3Bj41LEfP2ouRTgmr0vHiQVBERdzsv//a9HxvdlgrVdIeSsiUjmkG/mUOE1ItwC+uuug==; 24:HzGQ/dpIDF4DssHcz/nRcPffnFG+JPNrpFbSi9/kUeCTT0Na++D3482AYsV0nYRjb5uTB1QyqxQ92J6tHOS4xk4zzfI57OmuFk8X/FEQBQ8= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2015 20:17:09.2008 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1AFFO11HUB024 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The driver uses runtime PM to leverage low power techniques. For use-cases using GPIO as interrupt the device needs to be in an appropriate state. Reported-by: John Linn Signed-off-by: Soren Brinkmann --- v2: - declare callbacks static --- drivers/gpio/gpio-zynq.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c index 8abeacac5885..98197f778694 100644 --- a/drivers/gpio/gpio-zynq.c +++ b/drivers/gpio/gpio-zynq.c @@ -471,6 +471,22 @@ static int zynq_gpio_set_wake(struct irq_data *data, unsigned int on) return 0; } +static int zynq_gpio_irq_pm_get(struct irq_data *data) +{ + struct zynq_gpio *gpio = irq_data_get_irq_chip_data(data); + struct device *dev = gpio->chip.dev; + + return pm_runtime_get_sync(dev); +} + +static void zynq_gpio_irq_pm_put(struct irq_data *data) +{ + struct zynq_gpio *gpio = irq_data_get_irq_chip_data(data); + struct device *dev = gpio->chip.dev; + + pm_runtime_put(dev); +} + /* irq chip descriptor */ static struct irq_chip zynq_gpio_level_irqchip = { .name = DRIVER_NAME, @@ -480,6 +496,8 @@ static struct irq_chip zynq_gpio_level_irqchip = { .irq_unmask = zynq_gpio_irq_unmask, .irq_set_type = zynq_gpio_set_irq_type, .irq_set_wake = zynq_gpio_set_wake, + .irq_pm_get = zynq_gpio_irq_pm_get, + .irq_pm_put = zynq_gpio_irq_pm_put, .flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED | IRQCHIP_MASK_ON_SUSPEND, }; @@ -492,6 +510,8 @@ static struct irq_chip zynq_gpio_edge_irqchip = { .irq_unmask = zynq_gpio_irq_unmask, .irq_set_type = zynq_gpio_set_irq_type, .irq_set_wake = zynq_gpio_set_wake, + .irq_pm_get = zynq_gpio_irq_pm_get, + .irq_pm_put = zynq_gpio_irq_pm_put, .flags = IRQCHIP_MASK_ON_SUSPEND, };