From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752631AbbJWNgm (ORCPT ); Fri, 23 Oct 2015 09:36:42 -0400 Received: from mail-bl2on0063.outbound.protection.outlook.com ([65.55.169.63]:16714 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750938AbbJWNgk (ORCPT ); Fri, 23 Oct 2015 09:36:40 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=bestguesspass action=none header.from=xilinx.com; From: Soren Brinkmann To: Linus Walleij , Alexandre Courbot CC: , , Michal Simek , , "Soren Brinkmann" , John Linn Subject: [PATCH] gpio: zynq: Implement irq_(request|release)_resources Date: Fri, 23 Oct 2015 06:36:21 -0700 Message-ID: <1445607381-7794-1-git-send-email-soren.brinkmann@xilinx.com> X-Mailer: git-send-email 2.6.2.3.ga463a5b X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-21896.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD049;1:tg9KUu5152uW1q3RL5A8HpGTbay5gxRCLSCA5ykJHsODXGRl1wRTyj1NqpiaQX967sGRVt+e6Caq1DaN5PYQNunnnP2m4muSUsTqTt4eufMhItmE1Oaj5LUfxJuCsInQP9IvnSsyCGNXyyRTDkjrYJa5s5G2hb9Ry8ChmEWiGlS2arcCECMVID4ij2uY9Z4m+1hSG1Ee0lquLbHPK0i1UQjQ7NbhCNhLWWstoMJh5193FPDhxNctJn1uC57+y7EUdmxbuFx3MlWOeAtHQE08IStl5R6GhYmewJ5CsX3VofDxVi6QHZFRL7FzpiIrIyxvbtj2KeWLF0LFRd53ykz2Aa7LZPLbxpn7wuyOKYNAS8A= X-Forefront-Antispam-Report: CIP:149.199.60.100;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(438002)(199003)(189002)(63266004)(57986006)(19580405001)(19580395003)(48376002)(16796002)(33646002)(76506005)(5008740100001)(5007970100001)(5003940100001)(11100500001)(6806005)(47776003)(87936001)(107886002)(5001960100002)(92566002)(36756003)(86362001)(50986999)(5001920100001)(229853001)(77096005)(106466001)(50466002)(50226001)(5001770100001)(36386004)(81156007)(189998001)(107986001)(5001870100001)(4001430100001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1AFFO11HUB027;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:xapps1.xilinx.com,unknown-60-100.xilinx.com;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB027;2:K9QPk7zo+tLDARUdhPaZ2yzx5y+NNmT7zTO7X5dWUytuuXg0zZ5jvVHBFd4BTFZuDRzSdfhJqN8WNejQKb+Ur5oQxJD//Pi2C9Ln+2hGKQnBItyCn+G1kmp+nOwt+kP6Rg35DC3XvkfrTBb1WaK+wf2PJqbxNgv5tinSDkc0lbU=;3:XOe2vDdNmX6uXv7Ski2uJyQX7Hb2gsjZH9ed2SKTHCrVIk0Xaxloo58W4HIj/tGWmgirlBZ4yg3Hn1gqX/T6LsucH65JQlS3TmEbjHjlUjJzSMwv4AqvWUOrH9QQP7AcYEnq9PsH+3gngSOIMvQ4NLASXJNpxHKK8qejelVEgXQFUufrnF9wl8/TtCjYhH0GLIKK9yMzv3c/aAVXKnX1iVy1NI+HisfUIC7A6LloLFecX3T1BWsYQMJHAvr6+/98F3QrHQxkw5HP7TqBBrsGRg==;25:z8XQZduIv9s8FAHg7FbCKiiL4k5IycbVwQ0EaImeLbcKnr8nDCRMf/dPO42qO8Aghgz06elwChm/ZiiGJ0qEH0bYUF30E6bIU3Wut6juHaIbYfqgMDw7xrRiWSJVLYu1UgTEhUBtQ3WubndB6TRTpMB1Ri+8ZfcrUDQcB0oGPisG19lsviYYuUsrB0e6fEzWK/upNOy+SRQf5GwcMdBo8fxTMqWDXFdOUotbS3hQZYS2D2yNVA4+5HQc/p7cCui3Gs5oyBJuITZD7RnsyqgP6Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501001);SRVR:BN1AFFO11HUB027; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB027;20:KoL3H/K9crAmLkKArdDoe+/+tmWx0Gvc+j//Gfhq/NQaKYu7AaOeoyHm0j0PSHzyfLSwnRzlJ/9rMEEkItTmOov9B7fBgJhaXPWG1u+nbQ1YWIWCZ75p6irUKmmFTQze47wJQt/r/WQ0y2L8uDUYThHGVOdJKOxfHRhLqN2kOv3/ITFr3SByEyfRgnCiZyPj4HL1R0kE7YHj/7VrzRb3+YbcYtmDWmpmSgUFDFlEMxDr8eLsjWVhKgSWp9SrUXDKbiXBi66ejmxpolMKa3aoLpfRytmylzSF5kPSVg2MkSibathCwWFOKWLrHDjzov/dxjuTzl6w3SwjdmTrptZy2oA7s5RDD0ccr86/7OUf912Ggg5h2S+LMi1OCDgj0t/Rq/JJjLdcrLQjJY17viyWCwHbqD0/UCamRCju8/hyXtlL0ckmo10NzqS0F3tv/rF7rLsQBtsb40Qb0du/O+Ma+Jo7AUok2ikKuOikNJuMnhjCeSai0EHK+fQsyVm8rgPZ;4:3WsaU942AtYytrWz53zM/vnbDU60ea6iGeh5R4xcaZiAC3UvxNwT+htB1bAR6eqFCpjLetcGCccbQ6li7sH5PVkpfkZ4xax0ufUb+AqWn319qrlbKso3sodNKp2bt8SrXamtpiQD3tC1oP/gojM8x+Yzg8Cj3QpMNbHcyTvrelp/heNLKAgfmbn1y6EppWO4xLmpgw7Fvqj2u4EnWxsicrl6V1fd5Z12tZ1agTaeCA1lLjZ+IFndVAqCYIt62HJFngEAQlQuLLWBBRdYbc3G6IPVma2/GEZGxpp2tgo9lHX+tXXqH3Ocq4r9XFV56AFQH910AexNIivPG3YPSqHpedgJE5cwv23xNFRwljzogihk6VWkXJeELnT0DukCax1NU5huQxRHaq1f8cJE8tI5VA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001)(10201501024)(102215026);SRVR:BN1AFFO11HUB027;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB027; X-Forefront-PRVS: 0738AF4208 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1AFFO11HUB027;23:FYr5fdw7rFEjOx16RbOElEx7sMB1klQa4j1MNEd?= =?us-ascii?Q?yzq2IyT2I21ngbsEittvIP2cQFl2dTKxMF04U+BQbw37phk6yP6AZ0DM7Wfp?= =?us-ascii?Q?eiuqkSCRKFVou1uzPdCBuRQdhtNlAmNTeQBurnoGPDV3AAvCkQjOhGP6ZXPU?= =?us-ascii?Q?OBr+iUGf53Xll0tNgzooHqmM9GcTO9YXNgPV8Mh/bQuZUgSueOdTDnB8C6NB?= =?us-ascii?Q?fU/gCLniy+26yO+IoBviz0+IH6dHt5dVCRuVbL7ihZ2lkksHxV+N1rBbm9Pq?= =?us-ascii?Q?tAYpMjJo+3iEP5zMyiwWyok/dmF/HjtGD6CMZkysQMI63+iP3n/9anuOoZ97?= =?us-ascii?Q?Wv3QCNTZusau6UVYAklWs/adCba3qdJQixSMsVzAW3e8Wd2Y/f4RPZLdxojH?= =?us-ascii?Q?IhlYNT1hoRc1i+vvfW04zZptN/9tZsS6zJmeQzshGANrNS6ggvrtNqGVyB7j?= =?us-ascii?Q?Cbi7GWdPtOT0iBs5MupHhmX5nZyGldNnU19O9Icl0/dvNjU/G/xrXZvdHu/C?= =?us-ascii?Q?BRzHBTo6j01KyemhCMwCE+5YpKNHMapcwZW5NdbFCnx1DnJ3Bk+sZUzmWWvu?= =?us-ascii?Q?CR1MmFFE8s9QJ/ys8W8FUBGzgEK+EVQNXzF4R7oFTd5/3KSrsG36D8hekcj/?= =?us-ascii?Q?2niXDCqmnWsSCuPd9EzK0CrX7i3PZSOONjMr2/TxxtDYuRsEjhsGaOO76KF2?= =?us-ascii?Q?PN1+BShMxqzMgs2xEoQGGsrnfIFj+AC2yOc45NDxkhdrGNYQX7izSQjfzHdG?= =?us-ascii?Q?3T2nVqpXZnMsmcRS6pXACUvwVD19iftDqeUlXfmV4i/IVrJ150jnW7p/A32u?= =?us-ascii?Q?BrVE52A2gAa7hhI09gIQF+bHdMsZNP0cSq6UeHxk+dTrEf4k65so/oJOpi0H?= =?us-ascii?Q?hN7U5c3fJ+DQZq5X+VFACSnReykrJ84SAOOpmUWinBkT2qKjXV9uJqMRuVnz?= =?us-ascii?Q?U9Nd2+1QeY0+Wu3poKotAbY4y82VeJoYre0Szw5LHyH1se7UI3oOiKPtRQ2u?= =?us-ascii?Q?iavJMES7D6HQfFzkY/4Fnk3rXNgQURw/ENPRy9wEcYD+B4R9rIsxVM2oFcuq?= =?us-ascii?Q?awFfmLM8tuZ4utrnXBZqWdfd+BWuy7QejLZ4epLtKNC/m1Aecgw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB027;5:V8KO817wbprqYuMWlNCgDupxYWpmsJOxjd3BwwE8qGjEYI0Zc6QV1p+OqyjlTitOnk6oWyA6lWn+ijBUks2vh1WKatqGHRksaJOo6MProtLNl1PZ0nCJdNT9UM2MHtjlTxGvMQlAYW2Frx9/wHbYuQ==;24:qJsIfwADKO1dcqa2e3G6DpYzKXZH7viYkbTT7kcx/sXEd4KZVnJa85JBMMN7kRqxiz77NrwqJQbFx5QucO847QxqvewMeDG0aGKS8YlHsBw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2015 13:36:38.1805 (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: BN1AFFO11HUB027 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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 Tested-by: John Linn --- 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..0d1669416112 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; } +int zynq_gpio_irq_request_resources(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); +} + +void zynq_gpio_irq_release_resources(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_request_resources = zynq_gpio_irq_request_resources, + .irq_release_resources = zynq_gpio_irq_release_resources, .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_request_resources = zynq_gpio_irq_request_resources, + .irq_release_resources = zynq_gpio_irq_release_resources, .flags = IRQCHIP_MASK_ON_SUSPEND, }; -- 2.6.2.3.ga463a5b