From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754379AbdCNDRu (ORCPT ); Mon, 13 Mar 2017 23:17:50 -0400 Received: from mail-cys01nam02on0081.outbound.protection.outlook.com ([104.47.37.81]:26240 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754059AbdCNDRV (ORCPT ); Mon, 13 Mar 2017 23:17:21 -0400 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 v8 3/4] irqchip/qeic: merge qeic_of_init into qe_ic_init Date: Tue, 14 Mar 2017 11:02:54 +0800 Message-ID: <1489460575-6193-4-git-send-email-qiang.zhao@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1489460575-6193-1-git-send-email-qiang.zhao@nxp.com> References: <1489460575-6193-1-git-send-email-qiang.zhao@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131339350374234232;(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)(39860400002)(39450400003)(39850400002)(39840400002)(39380400002)(39400400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(4326008)(6666003)(38730400002)(86362001)(356003)(305945005)(110136004)(6916009)(36756003)(76176999)(50986999)(2950100002)(106466001)(105606002)(5660300001)(48376002)(33646002)(189998001)(2351001)(47776003)(85426001)(104016004)(77096006)(50226002)(81166006)(54906002)(50466002)(8656002)(53936002)(2906002)(5003940100001)(8936002)(8676002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR0301MB1967;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD011;1:+v6cz/KHJLlvQ7vfL6ZwTeGiO4soKlIKbJXM/tZfFSvG30Q1AduDbu08kT544oP7x+XLbbja8ADCRHW/YDZlOrDZex1DD/Myy3VrclNx4Ah73QhHXCsOxdRQ/4eYrapO4pQDgynYTyGISN37HqDzpC3zRJZdMMZozO4aJtOi++/ECiXt8NP9EbSmEqWLM5Fjf3vqgogiksEADoVc5ndyrBdk02o0zOXCvqgF/i1yMD88b6gnu0k02gdlHXGf9WMHIjAVbtwiXwtOL/b2BjqbGYn/crZJn3WpauO4pbmfQZOer8Api3yWB/5kNu1qyWKIWkV1EFhlUDApQ6IQy03nTvQXqF5XnueomFbfoB1tWlghPDX0o8XjqjpS6vZjbdo1vdUEmoUDvZJk+yCymzQddwFa68JnFUwxJVytHgsnbGtPOO9/+lfB1y5ttRQSidhNGQEiFAMxYh5sPUjWK7v851LWomlRo9Ht/2MsN1Gn6Dj5nvmjmC93wDk+m0GFdwMoEzlI9zxbvz2GI7QTpX4VDIbpC6KzWMtbKUsmGiAyG1FqnWfeDTX6PtJ0+6HkGMF7ql6Uds2dAYGCi6h9Ttbw6mTmlHv6xrTl2mE0qIIVhEs/BjxV9RaIEYX5/AK4SgbinrHoDM0U0JWeabeCVkCRS0DaiBnjTvp9vSXsm38AnYkyVk3jvcdf5PY5/ovBSVtB666mEpQpUjl4SEbNcUqBxRIpJEwpLwFYGqoLB9eHnxc= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 06f56800-afb3-4a38-3878-08d46a889e8d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:SN1PR0301MB1967; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB1967;3:oxJibmCp+hFDZX2Bbs1/LLnE2/bJsAVeWl/m3Pp4LymVcrqqHkLvOEX6x/MLzYfOVXmVwh9JRYn5Jc6NihUsP2WACIgKHGheT6zj4hemgiO4fMtInLBe1IkJgAw5UaYDyCnUQa1DIQGKBT2184PQBfei4l5GCOLWo0r6zdHpfLpCvyHYx0ulVellPtXDK6dN9J/eAwWEr01cLEuLzHK7JJMq3YSWNzpmtvJo5uuP0w01zRhuJE1WKA/NUm19lzvPNsgEW9s9oobizVw/btGcbvOJ17GdWbdtEl+rniEnu2je3bHM1QRd/Xwfc74iZZLxs4D+GvoVcdjD//Kx2AbNK9crU9Lav2v4TfiKyrkHA+E3ShOnIZx4UGlsAW7wEFEx;25:VGKHVI7AsMnevNasaxlxTVrJVomEF2l95lgcN/qZKVWiyfFkLDuJ1qKDSlkcQx0zAwrbxrH842AA3gV0WQ8UiqZpYJoD5Rd/9Td5aLXyoU25OkaxqAEoLFIEceF1F3SPgAXx8ycE4CGBAVqnw7ZKGH4bKqd9PNnEFsW8GHnvEMlJP98V+b4Xj7xX53ZCidoytd+9Y3FRs8Eff/zZEsl8iNFcGdbl2SRuWIpDLg2g8uNEEhCgIWIz2dbsO+rxTocA6Hu/Bx1ovZyrRYls83Mi87iVmj6kEl4/1AL/6B/bQubZn7oYIAQ5SWfF1YNmeFzGJ3qvfdHn2XFddHw7nQ95WnJB2pCYYN9Yf2npjqNsLv8INNA+ss5iHejrhO0FLm8HsBH3femjjLMkDKlHmMPA93yu2u2xEoltDpKt3HyfqnJ9jldJX8Fzh/oIbf6ibyaDXrQiN2GZ9RBxnFXmnedj8Q== X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB1967;31:3Vtf44kNphVDYgHTirVRl9hOnTJp2+EgbTMGfUivJPmSlvaJPGMO1NSZqX9qYgp9dRGE09zTpkbNRdPmGmnSqcW7XTiaOe6pPqkN3aePPPBNp0Y84GT8XdDAuQJOz1JkI2IosRz6V4pePbP/S+uZMzjEiO70PmnQieWH86UOIo1I3ev7KKteK1h9CgMZVQuQodd2yTCEzyDEawaFAncV7TGYNtQ9tGE1whPobA1IwckfkmzPP9Rq/zNHOXoT1FjbQLeBx6XJdSqp6ib+riW2b+tNIKa+zkPP03pW6HIXKC0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095060)(601004)(2401047)(13024025)(13023025)(13018025)(13015025)(8121501046)(5005006)(13017025)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123565025)(20161123559025)(20161123563025)(20161123556025);SRVR:SN1PR0301MB1967;BCL:0;PCL:0;RULEID:(400006);SRVR:SN1PR0301MB1967; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB1967;4:33CO0v667umFQmVGTB5REeqr2SfJdOiivy5YMTxbOjO84EETwyhSi5yWsbl/zzW3fVQpHhm/IfD3DVcMZ4rGRd+O33NXZsqlxIs2yQKytB+L8o+sq8RN/RCSVxa4SN+N59s1zBnhGBNciufBD67tEPQWWXU3R++WBkCLR/7SGOA0aBzaHxs1Zu+yTMsotZPBiLgDX1C5srOsNwVP1eMtX7znreG2xASNGdg4EMPdEHJF1yIlMj3PuEGsFgH53nVuxYHHUbd85V9rkj6bPq1jKkKCo0crtsfWL7TXGZIA80u3XGtZjaIL0r7wP0A+4VE+DNKq0m7P+1pu1/HJuRsbkfxRSSAQKiLQooGfFu+ueAaZA7uw11RxvqfqULKv3vrgjkkUeUp0Iq+ljrp5q43brXLRwP8T121q4i29x0kev4ht3jKfGevrGfPi42Dmiw0pJerMwOSeLil8BKv4/orcPz4gJG+uVUOltUYgrHXEVlYvuLs9vKB5NonwGDx3WtFZxBucBnyKoXF9zqGk/T6DjwVTd4f/RODxZ7HDTBM/NqClnfn2lkmSXk2f1EpmI5lpavPWT+1q+gC2678Z3/BGVVkcH+JScNnVqbq5jaUaMAmHvUuz12BOujIPDsblM+8gcDRcEarTRx1ugJLxOswJJjuIQH/VqS4iXuUqbSJhDUQw/k64Qzd+tosuFhC8t5p7sY2W/fDuQv9e5oZKG/IIVLn1GUUU5PDicIDMV/Lstraw76KgHRA0yi9SLV3qyA2Q X-Forefront-PRVS: 02462830BE X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR0301MB1967;23:fKp2BJXhVOTN2pgdiRLT0MQebT948GrffYAY9NY?= =?us-ascii?Q?bHBBdEmLGtsnKRS5ZAI57SprMJ4Vbli2KCyVVdMWCnRoHRDe1lWuiOix+/jR?= =?us-ascii?Q?FLk1m2E5gPfZsjgBSV4eHqVFywCJrmNElFvXs+JwtXG7oC9bfcCgOmKFT7i7?= =?us-ascii?Q?oCzq/5PD4Ovvo5zB2fv5i2mcUILmvrc135/EEpuHCgkntQZ0oqei4jWLQ+hD?= =?us-ascii?Q?tZeISFjl1Jo/48TyAJxXqUIE0qMkpZRtl2+FTx1WR10VqJVtlZDEegPsoqv6?= =?us-ascii?Q?mISJ9AyO9hPt1MjG4MtcN52Jzk6qctBzL8nxQGu4HagUil9EzNj0lYf8b0ZF?= =?us-ascii?Q?cJkdnh3CyFStYyALkVjk3H7XnSz/lt4wDcK8Mk1BDp7Pyatk/RR2qATluWoZ?= =?us-ascii?Q?TXm4KYF3F5tvd+9MFVqcEtsl/Jz2oNHu4vZOoKXquzwiANeC3HDqI7UdWBEz?= =?us-ascii?Q?ulMDTH1MhYhyKu7acrkcVqndIsvm1WgvlNNps5Bb+7RUlTNIce4Z3JGe1qW6?= =?us-ascii?Q?x6W+lhOhodQSN9D/tZCR5/QIIy1hAQQ83VFmMyYd2p0NO/VXULgNgm9aWI8v?= =?us-ascii?Q?hCdLZYHwXCkXBOBjCswbhznrZtccxzaEfxMuLCNY9Vs8MPnGHrE0ZMUEPRmL?= =?us-ascii?Q?SS9hlS4cAcnC0agyPUEU1KdvqeRaMyRiJp2jM+q0wPAyjBXtU0ATOhKbJy4O?= =?us-ascii?Q?NS9Edk8x6wTXZZHzb3+cdudWrWQyjg2y9sHNeqp0YrBDjqNlfqxSQwQrPLKI?= =?us-ascii?Q?pKYLFU02O9IjQeyStjsEn9Kkz9rAadn96qeAImOKN1t1ehDWmKKxuxGW9Zdh?= =?us-ascii?Q?KX6pbJdDvKMt2WCLn+dUvqSebeLOvEv1ztGWrGYhMdwnVwQ9MC67yJpv0Do0?= =?us-ascii?Q?pWH9pkAL1x8uAVOKErGdSc3EzWVAV+lQ0WZl4dv8royI7flhcWhooKp1QhTK?= =?us-ascii?Q?2QOZp6CpmYCh7UQF8YSpJ3BU5CFI8A08e1x8AK7NVZKXyCjSfWml8Aj2/Ku7?= =?us-ascii?Q?jpHce6MdLxXUNHb2YcCmO7c1b8xXYjFPEx+TdnA78xLhXR/u9Df9V3/j5E63?= =?us-ascii?Q?L2gArCvfA71kdvYHppw+7M8eZA1UMtbByO16n8NzwZl75q1SsRMvc3PjhYHv?= =?us-ascii?Q?swrDd1vDUnM2GnEaEltVEbyx9JWyAYJlz5dQIDwyqeDzGTQRmP88JZavaPQa?= =?us-ascii?Q?pU8/GyDr4FsLOVSCT7n2WyXorZdpOth5NqMc2?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB1967;6:cID3TsUd8JaS8t1H7Eg+2LRAzB+IP9UZSVxIz1qpZdIxwVVUZOHUiaTyOijCEvjLPLECJpo0eLOl9O00rSrnsX2SoZ57Rd7Hoh5jmbPIXajLoruL0zhhi2i6WitBQcsN/ssOVumve/Vhe8MfE4kufaLlZkDIuC7AAcjhhqBCMgmksGGvi6/tDhZpV/Th7X+gN4goFaVyZ753DRWX8Q2nHNI6NJUW2m6Iszx+bdoPRyQsH2fxfHVF0iTn3W0Auh4rw33j6yUmNoOhKobJVfxyYMwitpPHjP1NcORdYKcbEYBaspjI9fITSTMOmxg2os36+YmHu3W5fMyp0oBnLRPutlvIutHEfpx2wOVfOa9B7z/Npp0VIQlVXlg/uKFezhJNV0bsX6GC3MzvMdvgWhFLb+Tov70O29cfc9/k9OXcYeQ=;5:siyfLjm0WB9LdkhL0JnoBrcpurYb8y5360wd3g61jIP37vgk6YrubfnkUcmRMIgx1oYMNHK8TQnBGq1LuO7h1D+Tdy0jYD+M+gyWCfvKcF5z4MWTMp8mHiAOGW18dokEQz1ex8MVAO01BzcqyCKIRWdDnOEUT1U8j9lZO3vwKlmjDMHqmDfYh1aPXyX2RQui;24:ojk2uinxi8QCaxW82kpU4d2AJsAC9CU3UoIVSSyNpAkZs+h1L+4pjQbqL67BsdbKwSROQMVk2mxAM8jv7ktAEZBt2JhJus7rQgat3Y+SLYQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB1967;7:z5PM/mk5EJBIMKd33N+M4sb47ep4w6eQuqjA6lddE449KS8xKuT3aZZ3oWbc9GGCy4aMuY+nn9NpaR9SDMTNkjQKH32f5tZ9NbgNdbePV7BSnAS19Ku9uwKbb9oAqyIkrKK0pEwuFP6G5sXH6ndcjn7ANnv506UfvCSpvA2Z5CL67XNOQzZ61dvuPcHsB45LmTGPGD00xAfxgyOIYj6KuhEh0HsHwsX451asU5S16ETLQ68DL2NS2lXhOTuabmDY+tpQ5hlKnQPT5PRAARX9TpKzWsUiCEn7L6yM3cMsbDD70eYWH0eKMsEoCY3gZTnJFSmIhoKszJ2B5nq/m7Ve7Q== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2017 03:17:17.2362 (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.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0301MB1967 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 | 82 ++++++++++++++++++++++++++-------------------- include/soc/fsl/qe/qe_ic.h | 7 ---- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/drivers/irqchip/irq-qeic.c b/drivers/irqchip/irq-qeic.c index 346a7ee..97a1f5f 100644 --- a/drivers/irqchip/irq-qeic.c +++ b/drivers/irqchip/irq-qeic.c @@ -406,27 +406,33 @@ 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, unsigned int flags) { struct qe_ic *qe_ic; struct resource res; - u32 temp = 0, ret, high_active = 0; + u32 temp = 0, high_active = 0; + int ret = 0; + + 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 +443,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 +472,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,34 +596,27 @@ static struct device device_qe_ic = { .bus = &qe_ic_subsys, }; -static int __init init_qe_ic_sysfs(void) +static int __init init_qe_ic(struct device_node *node, + struct device_node *parent) { - int rc; + int ret; - printk(KERN_DEBUG "Registering qe_ic with sysfs...\n"); + ret = qe_ic_init(node, 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(struct device_node *node, - struct device_node *parent) -{ - if (!node) - return; - 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", 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