From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751586AbdKFFzp (ORCPT ); Mon, 6 Nov 2017 00:55:45 -0500 Received: from mail-by2nam01on0063.outbound.protection.outlook.com ([104.47.34.63]:60784 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751350AbdKFFzl (ORCPT ); Mon, 6 Nov 2017 00:55:41 -0500 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; From: Zhao Qiang To: , , CC: , Zhao Qiang Subject: [Patch v12 3/4] irqchip/qeic: merge qeic_of_init into qe_ic_init Date: Mon, 6 Nov 2017 13:36:52 +0800 Message-ID: <20171106053653.23961-4-qiang.zhao@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171106053653.23961-1-qiang.zhao@nxp.com> References: <20171106053653.23961-1-qiang.zhao@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131544213396950320;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(336005)(39380400002)(346002)(39860400002)(376002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(48376002)(16586007)(6666003)(50466002)(2950100002)(50226002)(54906003)(110136005)(316002)(5660300001)(105606002)(2906002)(77096006)(1076002)(97736004)(76176999)(85426001)(53936002)(356003)(305945005)(8936002)(86362001)(50986999)(8656006)(2201001)(81156014)(81166006)(8676002)(104016004)(106466001)(33646002)(5003940100001)(68736007)(36756003)(189998001)(47776003)(498600001)(4326008);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR03MB2698;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD016;1:Wi21N9zCigwF9HbaalVG1KTSCDJlA/S838Pwgf+8GijoCbJ2JnZIk31O/NPlYXetfcJZRXyNnAauZaioO3w9BvYfrmMUUHJ+DkgcV+EKfLDfenAu0JNN6DDpao/fDBKQ MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5ed3d607-2ed8-4f18-8228-08d524db022c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603199);SRVR:DM5PR03MB2698; X-Microsoft-Exchange-Diagnostics: 1;DM5PR03MB2698;3:VlP/C/Za+LhhjEuccbkO/pF3OD1hgaJX5SW7R4N8tI537xVouUsCCGb6Z1SevgwzPnnLkRh3n6ELEIxgM625CpRxq47Y5v4vcWYk2cbOzk3D1gALBylrRKubS6TQmb0dQeXsLe38lQBueUeRnlSfIjkwXTcZc1sJ6RuzlQAc2EWw8sjUlwmKgbnmHdqKoEk7iS/ddq/eWjXPb4RpN63NclVu/MTNRoEiDYIwYCmT+OhAqLWrFvk58zE7CgblqBfStxZzYYxdqfETe/e25mxQ4TdwIbSQNUHWrob7ly2xSbdZDX+nFevyEL6v/dnTcKvdyeWlFtCSW+wveKJcoUusdhOaTpILUZkAisPoMKaJSsc=;25:JKtwZ0b5h+KLs926BuCr/pCqXwJ86Lsfvljh3D7/DJpc0ig3RMnjwOwYfZoQvYR4a7YdBG77gn6ehV1zYppnyyaXPYatP5XvEX35ZFreXSzrsptePGn84MKhf/DsjMn6ktAXxwOa3DPhENyVJKk5b6Hq25mm5HecxkrJ7OPKZJrXuEO3je/Q/nptGq41oVFBhM3qwPsSdgrSXMWvfTR7/fdvQPkKS1pODNDDCdiEv/a8pOUJAQPKY0LIo5frC2qqGdNIsMP3P0CO8NEuQXt+t/bFovqthHYQ5j/aQb/XlndsdLisWWhfz5gf4Mjk/OvoolvCZ2hHoDuKscUrk0RQpg== X-MS-TrafficTypeDiagnostic: DM5PR03MB2698: X-Microsoft-Exchange-Diagnostics: 1;DM5PR03MB2698;31:KPGWDT/EYV81ROHfcm90cDJ6sXzDG4X1ClB6r1VHdwtB7sFlSOLR/4xXKroMBc/PcpxVUZpZjvfklJAXShbDM7hQj8IrwD3rpNhM+fkUjGn/R88Zej28i30oUfOxJoO0BIWJAvtUadhQ6mjnBmRX/BA7YLkOIxRZb+9Owg+qnZwC0m4YS1fh0s/175Cx62gpYNSBCzbLhMUcTjngBBHDCYw3l3p0rqwFJ2T0UCnFERo=;4:qRZQ8q2OE4LnWp3JFfz2EZDMzepetDY3XhAaS/jPFpAWvowfcHdelLp5gvjX9CSKbooESfjqB2TkxlrHneX4s7zXGb4xoRCyEk/FAPoyACMze5dPfgKpRMZIyWp7TaEdqWbewlFmm5WRgqra+uLHk69sdYnAL7ikyRJoBbwcve4FUlwyMQuP/byeg5fyPHEyysGc4Aq0SJKrLXWO59Nwt/6elBVD3cEfDh/CbidoWWiEGjSZmdonJVCvwMju/Q1N89/PXS89ZQ1ujSVSIkWiZyV3Yz5xCrtfvktrCwFbi8zo3wWGvTf2sBjiejeU0zJB X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(3231021)(100000703101)(100105400095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123565025)(20161123556025)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM5PR03MB2698;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM5PR03MB2698; X-Forefront-PRVS: 048396AFA0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM5PR03MB2698;23:8yIvdV+jHhYMk8JFk/a3+CjnYLiiFBX8Iu6VipWv0?= =?us-ascii?Q?dMfy9mV7Dv0TmEkWPZUZCbTsdLpmsmg+fxKJ80/A0psdeDHF15xS990z5VqA?= =?us-ascii?Q?dNqHKujLGTZ5gZ5B2oRzN1a5inVUcmLZX1udvw1qvZLqEFKJqcZr+6NC6c6W?= =?us-ascii?Q?xuyhlI8DDaBmPNALJoY+BczpGfk7U+RXtqAG1Cl8cufu40dobiEy9yEquK/p?= =?us-ascii?Q?3l58W36DJ+K1AqrH44glthxBNtBTs3ADbKqmWjsOlO7WMK/z6JyB/TBWbXtl?= =?us-ascii?Q?5bx16j01gOiFIz7ZcSD47+e69854G5xnqq6HL9ihtg7X6L2EvT24M69gMNaq?= =?us-ascii?Q?j4+loNBIWw6NigZpWBxTc3oevAtt+pj4Eli7PelCw986NptDK+QLJr2dMMVr?= =?us-ascii?Q?JtWbEhYA221sz0ZrsGwbY+65Ggc7GPhCzbbr7cU/p/X9p5eRhaNdRyMKdTyN?= =?us-ascii?Q?ZoU64blqANtGy2+myzxW3ZWdSVG+MLSE37nwC2pKUCjeR4EX8topLZ3jMw3u?= =?us-ascii?Q?LN24n0qFdw1BuXiTfZOambIGGz7bLd10gK8ChRUihG3wb8AZXV2vlGvr8hlW?= =?us-ascii?Q?hPlaNAHgAmAvnXisw3WoDWV74ynZ2/nLmlCwQNJQSF9+JgjI2G0RqS0J26KH?= =?us-ascii?Q?tdCx203bGIsc7SKiZr3dbxUlxCWpJYwKYy794ljyPbTrMx/F9HFO6CwR+iCm?= =?us-ascii?Q?CuFGOHDNEguSjWJTzeo5yGLDgmzJAm1j/2ytPjiYeZnlMIKfg5CiY6esRK+z?= =?us-ascii?Q?iQrQ4ecA7eAwNWT7BYjIYBEIwBDItHKVI+ofokpIR8aFuB8soo1bdj7U6l5l?= =?us-ascii?Q?070L+VvL8a61U6nkKffFWK/0FL81+LgNxYvof4JW6L/sjQjM/aFaitoAqsbu?= =?us-ascii?Q?OP/7WvjSgS0yYnqNggvAWnoduiwFx8i3JA13+NTuCifPCbu6hyz3daZBq96r?= =?us-ascii?Q?u48+pgz0siBxwhmk+WyX3vKxSGiC4EFGEQpEN0tFrzoKXuZIQ29lfRqGmtD2?= =?us-ascii?Q?L00ECBff1+FsSX2N29bkDAoMPoiqSfhCKtQ9gZdwWvp3PtLribCRcIT3xCR5?= =?us-ascii?Q?92g6MZxIMl4obvcfAZxBAp8lwCWu5Tf9VUdeTlq/8KaCNIoO3oPkye32bEsA?= =?us-ascii?Q?de/ajuC6RPys9Fzajh8lO/4gBV5gAfCM/O8MHlEcEaQu0RHzEh9xxDwrjxVP?= =?us-ascii?Q?1jAFyO7kOPhzVs=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR03MB2698;6:Ds9EGDH7sCiWuNQYkC9z+TKcD2jOR0os6VK5RP/EjsXOoLiNm4oIz64yBPpW2aQ3Y5rLhtQWXWC5B68VOUwOJmwmqTqfyXF8F+suqPukdZaPSp0I+xUZMUNUNlz2npBijUAqhBFjw5PjvJVAbjZ26KnO8ifIdPIdy9UXZd9sU3lKD2aApKjm5wNdmq132PAkfTvBL+uRYKa885tfiwiSwKdi3ThpZvciSQKYxacRVKxbBhGxrwG9PbkdiUFGMO+/xUSWMwe3IlV0v76zthZD0nMtmoZoyMJVVcxnBP/Vw9wyIpQRr1rzQI8IIj0ig4pEhGZy633R4oxKMxvoFsYVrmtksA+lsTqQiRxLWOWdz/U=;5:45wzLKeQB3XXFapdFVF5nspjAHlXQ0QbsoDqyHpanEicyZTazoh1H6rKRShC8h+6h2sttFYS5esk+5tP3k6NPNQJyWqpRxvb56C/rwUC1lXTHyvLT3er4RTie00wn10Fqyi11wRouqnLDKvDhOjElHo/fDpY8afc8SR7q4gnZWU=;24:yDRdIhnviWv5k2vJWjWeCIA3736yd7tmlnFtuYs7ceSzS/iGXQwwxvaRgo1YRkxTyQZHxqPdB7yOEVhBIX3heN0aFUNZETqP4r3BYem1oLE=;7:0MVnO6SrocdNuCpEb+PfKu4/vSoJtSVHvtrBUagB6bXSn1Frimc/gfKpw36eZevJb1PLY4r7iHE4OA3f+Xojx1JpbJrumTJ0X95Qzx8l5oRafsI3hZPn20QemTrexiOx6FoFFGf/SOhlAbNDkPDCDtiT8hFPDQiA/G3d/OMra1dIJ00ctK7ttnKeP4WSS2PtLiurHJd9qWLkGxWb+x7vCNMEsW0TCfnzbURA5IZ5LxzrZglfkf+OlsVFYUooJP18 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2017 05:55:39.2114 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5ed3d607-2ed8-4f18-8228-08d524db022c X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2698 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 --- drivers/irqchip/irq-qeic.c | 109 ++++++++++++--------------------------------- include/soc/fsl/qe/qe_ic.h | 7 --- 2 files changed, 29 insertions(+), 87 deletions(-) diff --git a/drivers/irqchip/irq-qeic.c b/drivers/irqchip/irq-qeic.c index 8287c22d954a..465009911ce7 100644 --- a/drivers/irqchip/irq-qeic.c +++ b/drivers/irqchip/irq-qeic.c @@ -407,27 +407,29 @@ 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(struct device_node *node, struct device_node *parent) { struct qe_ic *qe_ic; struct resource res; - u32 temp = 0, ret, high_active = 0; + int ret = 0; 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)); @@ -438,42 +440,30 @@ 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; - } - - /* default priority scheme is grouped. If spread mode is */ - /* required, configure cicr accordingly. */ - if (flags & QE_IC_SPREADMODE_GRP_W) - temp |= CICR_GWCC; - if (flags & QE_IC_SPREADMODE_GRP_X) - temp |= CICR_GXCC; - if (flags & QE_IC_SPREADMODE_GRP_Y) - temp |= CICR_GYCC; - if (flags & QE_IC_SPREADMODE_GRP_Z) - temp |= CICR_GZCC; - if (flags & QE_IC_SPREADMODE_GRP_RISCA) - temp |= CICR_GRTA; - if (flags & QE_IC_SPREADMODE_GRP_RISCB) - temp |= CICR_GRTB; - - /* choose destination signal for highest priority interrupt */ - if (flags & QE_IC_HIGH_SIGNAL) { - temp |= (SIGNAL_HIGH << CICR_HPIT_SHIFT); - high_active = 1; + pr_err("Failed to map QE_IC low IRQ\n"); + ret = -ENOMEM; + goto err_domain_remove; } - 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) @@ -570,45 +560,4 @@ int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high) return 0; } -static struct bus_type qe_ic_subsys = { - .name = "qe_ic", - .dev_name = "qe_ic", -}; - -static struct device device_qe_ic = { - .id = 0, - .bus = &qe_ic_subsys, -}; - -static int __init init_qe_ic_sysfs(void) -{ - int rc; - - printk(KERN_DEBUG "Registering qe_ic with sysfs...\n"); - - rc = subsys_system_register(&qe_ic_subsys, NULL); - if (rc) { - printk(KERN_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"); - return -ENODEV; - } - return 0; -} - -static int __init qeic_of_init(struct device_node *node, - struct device_node *parent) -{ - if (!node) - return -ENODEV; - qe_ic_init(node, 0, qe_ic_cascade_low_mpic, - qe_ic_cascade_high_mpic); - of_node_put(node); - return 0; -} - -IRQCHIP_DECLARE(qeic, "fsl,qe-ic", qeic_of_init); -subsys_initcall(init_qe_ic_sysfs); +IRQCHIP_DECLARE(qeic, "fsl,qe-ic", qe_ic_init); diff --git a/include/soc/fsl/qe/qe_ic.h b/include/soc/fsl/qe/qe_ic.h index 1e155ca6d33c..611369904f6e 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.14.1