From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753266AbcI1Dhf (ORCPT ); Tue, 27 Sep 2016 23:37:35 -0400 Received: from mail-bn3nam01on0088.outbound.protection.outlook.com ([104.47.33.88]:55049 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752778AbcI1Dh0 (ORCPT ); Tue, 27 Sep 2016 23:37:26 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; From: Zhao Qiang To: , CC: , , , , , Zhao Qiang Subject: [PATCH v6 3/4] irqchip/qeic: merge qeic_of_init into qe_ic_init Date: Wed, 28 Sep 2016 11:25:02 +0800 Message-ID: <1475033103-18192-3-git-send-email-qiang.zhao@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1475033103-18192-1-git-send-email-qiang.zhao@nxp.com> References: <1475033103-18192-1-git-send-email-qiang.zhao@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131195074442323226;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(8936002)(92566002)(87936001)(85426001)(33646002)(81156014)(77096005)(5001770100001)(50226002)(229853001)(47776003)(76176999)(81166006)(50986999)(86362001)(626004)(5660300001)(19580405001)(36756003)(19580395003)(2950100002)(48376002)(97736004)(5003940100001)(50466002)(305945005)(2906002)(69596002)(356003)(106466001)(104016004)(68736007)(11100500001)(4326007)(586003)(189998001)(105606002)(8676002)(8666005)(7846002)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0301MB2009;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD003;1:1Q9RU5EOSNDL0cu25CtZ0QtUAoXwlk2QZGomq8A2A5pGu0la/oVSPWyoQ5uWiSwHHfA5YHF2c6M+SbV0zbLm3GeY+AC5lRJGGkVZ7t9oIRQps7YQBkxBJ144M7BpMRugZFORZRzYDUgI3M86g76+UqddDtWy8I8q2Fg0/ehO0lp/fS36b3Mu2OXZdD4vJcvRNZpi1DJRy1bsrRS07TH5+B7QHE8GouPkbRJ/wbDWA52c8b7fi0daASMW8wR6xCK2MOwCQfQbBdNUP34OigDg6H7LYB0NkG+Zyho1IT7Ar6gx+Sr6OFkQOsUEhEmoQiJ0RTioPIRDEDKbhSHRgsoyrYzOs9kbFoGOhzDcQ9F0oA7m3tUj5Fgc6T5HeFhWrusaWyTy3wdzb3lnKTxTy19mPuSkwCBmNfFL90ZBPsyt+Mk4FIau4MDaKoBqBnqA1xyA4yOAZV6v2/4IEHFRq6jtmzjSb20AdqzIWTZMiVyI3FKIYll4qgKPjqQgydKKKxHA2D8CIV4TxcxuKDJJj7XhGc/AUyueBpnws092+5GEBHO5sCuB784VoEij7gj+L66IpS5yrJhBakeQJRfQc15aoLpjrhH3AlquKFcA5u7/pMCUUUH6i8Bed3kHXZUOJ/6wa84Jy0tDn+x9JvhIhiWJaYkfA6CLlhjK9pZ/enSNHXX0kFzDpylaXg8ddZlnzHUfzW2GnGat0Nxj+na1q5MtUMfhMZ9m5UlOGVAwG3RrUVDqmFirqPHP29B0FoMm+JLr MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 48455075-6b4c-405d-651a-08d3e750c2e1 X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2009;2:PQG6ntLWCv5M+oBZ5kgoDZbntc2m3PVrUYZThvUdJiy6cUaW/Um0i5umWAqZzxFKbXvbr6j+NrFv0b9OQ1fLheA4i58iB9Gr2WXKnzeBnpD41T1vOiewtZFoqVmPZ8bz+gSC6sUVxFoMJ72m5OXuGv12DG/Sp4d8Ezfj+tNEbo8lNnw/OfMbZjZ/h5ihCLJv;3:FM2aSzq3p3+Bsb8MDsqV2YCUngbwUYhUpC6yyTLgS5bQJqOwYvPXs9NqkEAdvGgvHht/RLgMVAK6lpxtumgInJ9RwHZMRrJPWEUSZ5iAId1a4NC2MBO5qRuRmANb7P68FqQwy9NTTGplPc8Qc6KTOcTH4aBbD2uDacVDtCVB2370Kn5kGNHLdP/oNWyR8R35sn6tA4n5ZaA567u01pYklPClhGLGCpThzDCXpmLgIwU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB2009; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2009;25:Zz2yf4e+sN4J67suv7Rtf0S+0j3Hc/WDD1vVkY4TS6xhcwyd6rSeRfQPQfYqHDf4ytBP7yst0VJJInv4DLVcSfoTCGQgnjMpVoEIh57ZhpekvO3Mxm+mciV3kGcANVKMrSeoOHGHwcqjlx/J+x+boPz1gKVGcWDIgx+7XB1qS4hgbfsMBdjWUzpQzzAEPMvjio8CO9KLiGMKX2+PJp6rZyey36D+dMGIwQbaNNVa55Nkbz3kZyB8vzybRJoX0P/3jmB8QI78Ggn6b/OooFj6raQosn3C/U5HsOwE0vNNNxYwRKKxzGPL7WxYdSkDF7m9sgTRLaJeEIg+Cm76/deH51C012hoqwk9YL+5d3vQ96iIWWgvc6ULKLFlUdr/1baPAnXq1jBXwQQs9WZAeHNkvzW0mdwWq1JERhO0M6Hc1iMa12Q7lVwH3d9iXtjDAN/LDQkDvs7XWfsZ1vvCGphksqWJ/1FFHYpOAmL2jJEFWQ3Y9i0PpRsgx07F2byJG/E+8/BFD6/6ouv/BFFDdwzhu5VewFqm6lvaAaZ0GiaijwAJQ0AnxK7xTexHUXiuli1YN/NGC+oXntthpwm0uFNGlYgoXyBF6/HAGMIVO89Jkp5Ff/rTaipLEcsLk1/p7vdHOtyLhIXfb+6VM3OQdTvfznHAXU953ONmkPBSVmo4sZPd3ImZegaT+vnlHGEMPvGPA7MtTaer2VWMA1ZygAlobFuewI1PR9zlpzeVQD3e7ig= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2009;31:9+fBH/vOznjhvvGxUdhOW11kYpXsTI3GTjcQqRj+qq4I/EUEt4vyPsF05NAYEkyEIL6mbuFP/s5HVXmhE5Ar81nG/ayFpe4ICnfhhzgpSh5DV0ZTUbX7m4RpbGxAjlD5cK9Zsz52DUQTpOA7EMiVO4yQmkBqcEpLSZeNvO3+vhGSwPfc62vdnN6dJMgDZg77A9ihelWLPCb9/r9WPZkHKvH3mQGtqbaGEuFg56htr4I=;4:hGpK8BRTno4wCKsr5V0Xb1LuaJU/DRNJpgmTk2n/YSDoWJyRyI0qLD7TSof54udJGX4UnwAn93yGTemN+aYnuPxVwgIaCyM5vxHOwF1ItpnR1kQOV9MGFeTUAUe/IEyyY5NC7vuvR42nesiXd8el8veCR91UFRhyi9T9qlXVEEV2GfN8JAYG6iqplLN5XR3KdIlcfPwguwiftZpHlSqIhOvJ6ySxR8Z1+ofOm2kvPLmGF1Rnl5Ffwf8HcOOkQCUdq5VulTv0X65qT3GOQUeUmCBw8bMPgqi2Z4vpzgaNqFNSjygjeyIawKuwpgnhVbNmNZeZqdtx6/xg0rBJP+MU3x6vAn3fSFVRLV/NXpcSYUQnQOFhefiRni+hpofqtPJdY4g4PGnxqrxKS0f6XGhK5nAqCXPMtxyCYCGn7kQHzb+p0ljA4vq09OHZDUxabVG2lx8m18A08SUXNFwtxBj0Rfq3tE5LtX9xbuKbupe82gq8+AmarfWfybPGOmoC1PBrnEIdBIRGg5SrnINmKEFiC6BoznB3z7tcuCdj3g9UkuA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13023025)(8121501046)(5005006)(13018025)(13015025)(13017025)(13024025)(3002001)(10201501046)(6055026);SRVR:CY1PR0301MB2009;BCL:0;PCL:0;RULEID:(400006);SRVR:CY1PR0301MB2009; X-Forefront-PRVS: 0079056367 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR0301MB2009;23:x+TLitTtUdWH7YnQ6mrAIWwWvLwK92hjmZ7F3LK?= =?us-ascii?Q?OmlnuVrj10867Q9ZThwUXpHq8E20GqHGXxOgviElIcfVn/0mzxTTRpD9/dPz?= =?us-ascii?Q?HTQMrGyR5M4fAZrQm2nOjvb3HsHNGGRy45ku+Ve1fuByhQHEBvwB4N1U5STu?= =?us-ascii?Q?3xaxQPovJk1rqPU0eivK4XSLtFt7i5L0JPDbX6zfyiVfR+UPXNUDjKDSSVyh?= =?us-ascii?Q?8CEZiHkcBorWHAtoA/2Puwbab10lJ0S1jji14YsPHnotQETksraFl/aZCm+j?= =?us-ascii?Q?D61MzV7OygkYhUip4Tjp8/MY9fUY0AYSHmpKwkSZm+f1SqKyhdiBQI2BjFs4?= =?us-ascii?Q?AtCNVwO2Gl/PZMRDMfCnTakz0Onr2av/zIJUAVs7Vt2vFTXpfrz8ujNbJBA3?= =?us-ascii?Q?ldMYf+DtFHVn9mVKKg2hw4nNEbwpLi2F+PVzmztKQtA3mb9qQziLxAREhZjl?= =?us-ascii?Q?urcCHT7PUeBbxUKFoPz2TzYqMZHjjorTXG2HqnVKM4roTukLz5kPzaVQTqc5?= =?us-ascii?Q?EaX/42fJvSHbnyFfo4U/Ja+cy7qAZhs6MUgcqI87AfW0C2qcYBko3oe3B8WK?= =?us-ascii?Q?VzVw/wd543xd/3cok92yiofqGGplmkf8r4GT3/LudaMvsnUZ/I92dRfG9Xyw?= =?us-ascii?Q?qhbginBhh9ySkMEpgB0G32dedOkM9/8l9fXVqbW4uFtW6IpQmCa0yA81BuYI?= =?us-ascii?Q?7/n+koMlWbifvSAJ3M2+EpFJ9o/I6JfErHCkMxmlY2oiN6FRnQC+JKAOm4+s?= =?us-ascii?Q?2lFsNt4v9EmmTspduO8g9uOhCAJ9wajPojIss9TLBCNyZeQV9bbNTaJGyUJH?= =?us-ascii?Q?2xQKv5WR4zpVdkwUmLvRg7jjazMfqGKWBKveUDIchmdMeD6/3WENoVnU+7VA?= =?us-ascii?Q?hoYkVXpZEm7pY2aNe28q/NqxSv+3GqelnUxDdw8MLXYTZVrwZyL/HBCZAAhu?= =?us-ascii?Q?8q/9GhheluZJv7Fp/Lxx751QBCr0GdmMYK5CE3PPZsFAJexabAS+9rcgGE2n?= =?us-ascii?Q?cIg4MVbizBVUdu4AehQ9IyjCR176tU+4oj5Au9TSjia5K9Z6B75zUekyr6sj?= =?us-ascii?Q?eGp/JjReEIPpmUf2HQZiHwFdTUGPY3KumJsL/bkPEorwk0d0QwMbXJ6AxKx4?= =?us-ascii?Q?H7taBmX6T353ui0CuFdTp/jFU1hT/HYyL2d/PpB6FpO9Rd6ZkgCrNtjbWcpf?= =?us-ascii?Q?hABibN8lk7Q0glcc=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2009;6:s5eki6cwH2GnD27uQuh6R2vAQ0w4AVv0jMAU0E7litAfOPxJ89TURHjPoWEvOkwSLrJ7JDsShJP6FfevoMAXObjw4+lYKRGg3rCsUCKhAFPvNrxLDH7Ljvu9GZwVSNZOLHSbLSUXda0ipwTO07qE8e+PwFyahTwRTnKlb4Nyb0KUJFziYQqLEniRCPxLVTropczUomGW1Dq4BzznceZOY1Y/g38GujM+yjROXV67YCCLpQ6dM55ZOwDXPaU+WIlIJTsZxyo87a1Su0iZSYpEhErkDYF0ahu6xEuYkQ7OdrA=;5:6mGcO8obn2fsDkgcSabRGV4EnTaNB1H9wOUAVhKwdvImYnTvOP+gdORSdKAmBSdOnppoi5jxP6t5DCzc72BPnjz9Cyeh/uwNtul7zXntjHqmPo/VJmMuRA68iuDoEtg4v1Mc1vfKui4APGEap/9g3SA1NysK3Ffg2Web/4obaNw=;24:Q0ILD7iG9h3TWqXqpGg/EHRSCiDOPIaR5EBZRItDW8WUyrIPfi35UrXptXCfvSfVOteukYasK7xDtf2QZGVlcrdyDFfOf+OoxsqMGqOQBkY=;7:pO2/uZ/h+ai2WcpE7MSEmNk0wlY6zLgLijc3IsVsDwxJqkFdhW6Kki2sfAqJ/kLOhSJiQBoSCXBBsdGoiqeqm4jsEwAyi8L8Gs7hBLT3D6bJLcs2FDyEnHGTECAspt7OYw1YwOwJjwYe2l22/UdDGiq+LIeN0a50+B08H6uUaRkwSWjXXjA3WgLyyMR8qhuL2/2LMJnZYD1FKhOe1usEOAgDrfoFjTm+7U0Pm8NC8BWytCbd+ayj3DVzpiBJteMLKRvznDB7x/e2P+1t01HDpCRx6rX3q34WZSDIGbgfXpXf9bARXguOrfzJUiBv+3+h SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2016 03:37:23.9983 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB2009 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org qeic_of_init just get device_node of qeic from dtb and call qe_ic_init, pass the device_node to qe_ic_init. So merge qeic_of_init into qe_ic_init to get the qeic node in qe_ic_init. Signed-off-by: Zhao Qiang --- Changes for v2: - modify subject and commit msg - return 0 and add put node when return in qe_ic_init Changes for v3: - na Changes for v4: - na Changes for v5: - na Changes for v6: - rebase drivers/irqchip/irq-qeic.c | 91 +++++++++++++++++++++++++--------------------- include/soc/fsl/qe/qe_ic.h | 7 ---- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/drivers/irqchip/irq-qeic.c b/drivers/irqchip/irq-qeic.c index 1463731..4f49d4b 100644 --- a/drivers/irqchip/irq-qeic.c +++ b/drivers/irqchip/irq-qeic.c @@ -406,27 +406,38 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic) return irq_linear_revmap(qe_ic->irqhost, irq); } -void __init qe_ic_init(struct device_node *node, unsigned int flags, - void (*low_handler)(struct irq_desc *desc), - void (*high_handler)(struct irq_desc *desc)) +static int __init qe_ic_init(unsigned int flags) { + struct device_node *node; struct qe_ic *qe_ic; struct resource res; - u32 temp = 0, ret, high_active = 0; + u32 temp = 0, high_active = 0; + int ret = 0; + + node = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); + if (!node) { + node = of_find_node_by_type(NULL, "qeic"); + if (!node) + return -ENODEV; + } ret = of_address_to_resource(node, 0, &res); - if (ret) - return; + if (ret) { + ret = -ENODEV; + goto err_put_node; + } qe_ic = kzalloc(sizeof(*qe_ic), GFP_KERNEL); - if (qe_ic == NULL) - return; + if (qe_ic == NULL) { + ret = -ENOMEM; + goto err_put_node; + } qe_ic->irqhost = irq_domain_add_linear(node, NR_QE_IC_INTS, &qe_ic_host_ops, qe_ic); if (qe_ic->irqhost == NULL) { - kfree(qe_ic); - return; + ret = -ENOMEM; + goto err_free_qe_ic; } qe_ic->regs = ioremap(res.start, resource_size(&res)); @@ -437,9 +448,9 @@ void __init qe_ic_init(struct device_node *node, unsigned int flags, qe_ic->virq_low = irq_of_parse_and_map(node, 1); if (qe_ic->virq_low == NO_IRQ) { - printk(KERN_ERR "Failed to map QE_IC low IRQ\n"); - kfree(qe_ic); - return; + pr_err("Failed to map QE_IC low IRQ\n"); + ret = -ENOMEM; + goto err_domain_remove; } /* default priority scheme is grouped. If spread mode is */ @@ -466,13 +477,24 @@ void __init qe_ic_init(struct device_node *node, unsigned int flags, qe_ic_write(qe_ic->regs, QEIC_CICR, temp); irq_set_handler_data(qe_ic->virq_low, qe_ic); - irq_set_chained_handler(qe_ic->virq_low, low_handler); + irq_set_chained_handler(qe_ic->virq_low, qe_ic_cascade_low_mpic); if (qe_ic->virq_high != NO_IRQ && qe_ic->virq_high != qe_ic->virq_low) { irq_set_handler_data(qe_ic->virq_high, qe_ic); - irq_set_chained_handler(qe_ic->virq_high, high_handler); + irq_set_chained_handler(qe_ic->virq_high, + qe_ic_cascade_high_mpic); } + of_node_put(node); + return 0; + +err_domain_remove: + irq_domain_remove(qe_ic->irqhost); +err_free_qe_ic: + kfree(qe_ic); +err_put_node: + of_node_put(node); + return ret; } void qe_ic_set_highest_priority(unsigned int virq, int high) @@ -579,39 +601,26 @@ static struct device device_qe_ic = { .bus = &qe_ic_subsys, }; -static int __init init_qe_ic_sysfs(void) +static int __init init_qe_ic(void) { - int rc; + int ret; - printk(KERN_DEBUG "Registering qe_ic with sysfs...\n"); + ret = qe_ic_init(0); + if (ret) + return ret; - rc = subsys_system_register(&qe_ic_subsys, NULL); - if (rc) { - printk(KERN_ERR "Failed registering qe_ic sys class\n"); + ret = subsys_system_register(&qe_ic_subsys, NULL); + if (ret) { + pr_err("Failed registering qe_ic sys class\n"); return -ENODEV; } - rc = device_register(&device_qe_ic); - if (rc) { - printk(KERN_ERR "Failed registering qe_ic sys device\n"); + ret = device_register(&device_qe_ic); + if (ret) { + pr_err("Failed registering qe_ic sys device\n"); return -ENODEV; } - return 0; -} - -static int __init qeic_of_init(void) -{ - struct device_node *np; - np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); - if (!np) { - np = of_find_node_by_type(NULL, "qeic"); - if (!np) - return; - } - qe_ic_init(np, 0, qe_ic_cascade_low_mpic, - qe_ic_cascade_high_mpic); - of_node_put(np); + return 0; } -subsys_initcall(qeic_of_init); -subsys_initcall(init_qe_ic_sysfs); +subsys_initcall(init_qe_ic); diff --git a/include/soc/fsl/qe/qe_ic.h b/include/soc/fsl/qe/qe_ic.h index 1e155ca..6113699 100644 --- a/include/soc/fsl/qe/qe_ic.h +++ b/include/soc/fsl/qe/qe_ic.h @@ -58,16 +58,9 @@ enum qe_ic_grp_id { }; #ifdef CONFIG_QUICC_ENGINE -void qe_ic_init(struct device_node *node, unsigned int flags, - void (*low_handler)(struct irq_desc *desc), - void (*high_handler)(struct irq_desc *desc)); unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic); unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic); #else -static inline void qe_ic_init(struct device_node *node, unsigned int flags, - void (*low_handler)(struct irq_desc *desc), - void (*high_handler)(struct irq_desc *desc)) -{} static inline unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic) { return 0; } static inline unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic) -- 2.1.0.27.g96db324