From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753137AbcHADT2 (ORCPT ); Sun, 31 Jul 2016 23:19:28 -0400 Received: from mail-co1nam03on0069.outbound.protection.outlook.com ([104.47.40.69]:53888 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750857AbcHADTU (ORCPT ); Sun, 31 Jul 2016 23:19:20 -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;nxp.com; dkim=none (message not signed) header.d=none; From: Zhao Qiang To: CC: , , , , Zhao Qiang Subject: [PATCH v4 3/3] irqchip/qeic: merge qeic_of_init into qe_ic_init Date: Mon, 1 Aug 2016 10:53:20 +0800 Message-ID: <1470020000-12197-3-git-send-email-qiang.zhao@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1470020000-12197-1-git-send-email-qiang.zhao@nxp.com> References: <1470020000-12197-1-git-send-email-qiang.zhao@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131144942845761020;(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)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(77096005)(50226002)(33646002)(36756003)(104016004)(8936002)(4326007)(50986999)(76176999)(50466002)(2950100001)(189998001)(105606002)(97736004)(110136002)(92566002)(81166006)(81156014)(8676002)(47776003)(2906002)(48376002)(68736007)(5003940100001)(586003)(85426001)(87936001)(86362001)(106466001)(8666005)(229853001)(2351001)(356003)(19580405001)(19580395003)(7846002)(305945005)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR0301MB0695;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD006;1:YPDFtBoewE38BSrFIFGZ0kDe25vYpNxg4npE8CrhiWFzSqfdk4/L5h/LLSmxVMu628AhMQjj1KeWSXDKA5Dhv8A5uuzLGoVkGqfUmAaDZ6gk457XWSncJYMhN/jEIF1Pd55KmRrjIPBhyHAdu+s9SdWKUralz+0J9k3ckzI8Shsw60ox4kf50bV7zHSuRVbmP6s+ItdmET9KKvqj5/4NCzfPe7mTq4QFg1+7tY5k18CIlk9K3Yi9yGxVfqLrhn4V4ntUl72dsHMPRbrno1dHLWo4pZY6KWXCYOLfXC7Do82+lsD4K/7reOHFmkOM3XZC41zNOOETe776Ep+h0SUQlGk1Z9FzKoIWYWtND5QDQgkNoSGM3+4qE/Imxras6aoxWMPCTQkqRZbRO+8iFnbVFtovClSr0z6QtQwXPzwb9VWTU5I1RNU66PuISueCJYudWJ9wJqzyH3L+NQ6nOP9H1eR7eq/AMlEOgVzegKcwqEDaaOgG9Jeif5HVjjBavy7YOHYmGB7fZ3VotBO5Ne/zQvTy2nIkqnedT8qC2PiANQbjPF22Tj7XHai/a2xTbQQZVBU2NitsLixxlxIEz0JxsFKQVIhxNBQo3EnjeLRYYVASm0NHFJr/9YJHbwMTGxMLswwOgqW3rsDaxJHtOqQ4kVBslMeXGodScHsz3q9326ZrCCwUdcRDLHOLY5F6NYb6ljPpuijqNsPRa9ZRDXbPuyHm81+8YBIL87zU6YvlXLk= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 28de393d-803a-430f-15fc-08d3b9b896e0 X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0695;2:Z4XoAcc4YRAyCL33zKapI6aK/ti+Nbv5IHGxG6PoQsypl+N/iYphjAAzAZMTcTgkoDmJWu6UOS20ElBcz3FrBa6yIZ1ChZm7eRuTXTgRZdMT8tk088O3SGM3qhq0/FjWkqBesVW+UdPkpnk1ReC++iMV0/UUz/wXxKZupS1HL0smUf6H6mYiWKTTGSasWvQ/;3:5bk/mk/PFC2Cv3CFp7es9npnNu9Ejipqx9JnyLv4CyiVPIzFm/dZxHJJfBqLrkR94+ZWFL0bH0GlMXIm0LePbKeFBdsWlS8caCa6FhNjLj+AsVz1LX3q6c3ZPD2RwbIZZRGPg0P70TJxIMT1MCcPkeaefIdEZRCZgPRtzKs/AOpwF8E23neyahXhFOUSIl10pUvdDFTiy3cLcpi/1xygFf0QvMCAP6aCsjb8EwTynxU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB0695; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0695;25:lHBZpfy62dNgApMVYDVaeztyaTbnUbHYhXcVksjjOTC/2y8q+RoMmRJKZrWBG9D4ekLzy+CgbJOwkz9LApWnWVaJhHtbvYchv8Ea56uHzTpOtEfXAJ2WbDIKxSLfx8tTPxhLvgWfw9kUUXiyUd+2WPVUV4AmFZsQKkE/mLp4dEN4UOSK6LfPk/e294HtEZCgWImbwCO6yfB+2KD7LG7JYr9cqsTkFRaQikFt2bNcsjc8ZNXNe/rHh1vDM5dtHQAsOPBXsQD2c+qeDp9LiZbXL5voH2XA8FfcObpPNi0ruQir4OX34iTYeI19p9AjScG/X/459CyCBICTtR1fTpmK6MIDRWXAA6dhx7H4i1Av9g/ueKJlqK6zldHADlwiBg0YqLrSZdDmXSdZSn9FgJF7xUYgmZ3N6WFiAgPgvOjIdr8slDoW8ComKxWlkVzrZJ9C9cp7t387Xv8c9Zmk2DEhDoTjuecFftkxmFyJB8sxT9QyS0xctnzWZmRbKKog7OGq22pEUgglorY9rNmwrhKGTOMuv3MuVLKQoD7jjP8Vns/1Kd1cga7Zroo2RlWkagQgveeaa48Vv/nwPtPDq2qdWWCib/PcdM8I2uKzwqDIcJRLogCaQ2Z94UefVvuR51WZG7JMJxI+G69XrsSq5lxdw5xhr8h+Og4RVA0MsdkMnw8PbP/C0opkA1Fxvzo7v3pp0WYT8zt7j3FeeZmHMYE8IQ==;31:xUk7FDA6DfxKhtPj6Azjh7DQlNZQWbIlOmk4pbIo6uH+TZP+QOJ/DVwfPUxIeERi4r6/j/nOlHV40/1z+TL/PbB9zuLrOahDrqRkWyyxAdx2dEHvOdwujTx3/tjNUfXeZ+Ubom6uwHaOiCzxKOcOuyFJxCigl5JRQvri4F01IqcGIYpnrd79oPeO9ZPEvdQT3t2DLFIMUVced9UNodRMVg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13018025)(13024025)(13023025)(13017025)(13015025)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:BY2PR0301MB0695;BCL:0;PCL:0;RULEID:(400006);SRVR:BY2PR0301MB0695; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0695;4:KcwcEY8LYZm7UdL1XkvKldRfNvtJQYYUQYvR6av2oArk7YAvqo9DOB7hIKyFm3gpNSEkkzoueJAHJzK398GWSwBLFxQxTFdsc1+XL5N4cLRXLf423NBleKwYC8bVah4w2eD3GESyF99ARZUTUv0Hek16WoPHOxQWtZuNMeXKlM77JWQXotCD7mHbvR+D17Pn82VlRR0mJVEbQfQOlNOt7sWGcRQjD5mG8pHeJFTJAJBkuQrbhdUjPFug1wE6LfgCchXIxZZJC3+JddfU1+k0NwUNiHG4LQ9As9Ahpfk7e0mL4yTom1wu9ghzq3pbQMcrlljtDCxVIl+z/DxSpsxqHFLNV+mqxEy70xRUSKNdS9F+krRMagNNRQfOJYtWEABI1ET+cinhW1/NZBKuj2f4LmFLEigF5IHUUW0YCHxtEUeCdD9z94CxI6o+uTfWoUjVIjh5rO3z/Siqg68cT72ZRSG/tnSRJ/K5JuDDnA/qaeK8sFo1Cwc02xkSBYJRa32MRShnv7ToBGN0QlnKCViYPQ== X-Forefront-PRVS: 0021920B5A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0301MB0695;23:VzbLsfkmxyWaZb6jv9CAXUUo2GBSCB0YCtyukPy?= =?us-ascii?Q?BqAxA9VL1X6ym+b5t5jc7oyc4XANUDSArzp7ySq75NfGT7J5f4HdwYQVkv19?= =?us-ascii?Q?GncLRtNGOf/vnu444p1bXZCRT5mW1iID56G/YSjDw/hmDDhJS7lvg3yeTbW4?= =?us-ascii?Q?atpwqPCh42hH9Kp6WAronHni6LEOTq68GdGG/0moFXgjrVYW6cWJTCnzGAoz?= =?us-ascii?Q?y7pbjnk6S3TLTLrS7vNQkumRIqRETV6Q5k8L54Ly0PnZzVEd7ypWApRwoD+H?= =?us-ascii?Q?Cd7TdxSib1n1epaPFAuShcu7Dn39gBjk5TCRQ2Pqq34DMvjkrCijzs28IhMp?= =?us-ascii?Q?K79k12RWIaBol14h59WoqbEEBSyA0RYXjpb5PoNusdF8R9+9JTkifGfjdIeW?= =?us-ascii?Q?dDwvqhsWrGkHxJiLy/z+xHIj/pYzRWN+FJCw+o3JHlsiuCR/BvjQ9W92d904?= =?us-ascii?Q?UQfwwRkMzFieClk64mMNboOhWc+XGrZNYS2DYzOIJq4I+mufJ/cC8rP8+n3T?= =?us-ascii?Q?+5QCR+QbX09zEkB7N9y+4GpGiffuLvfUQMyRAmxb/1EHIspzkCqgCGu0orr0?= =?us-ascii?Q?zGsOLi3vLSXmzqfwJ8GE/nYMG6XenOns3G7JHxzMBPqFkNZ61f3Lbs4GAsK7?= =?us-ascii?Q?u7kZ38bi8/WEouIXZSaV50FT/Jz/FxCGih3PfuQBql1sEdQoONa3H8qwmImn?= =?us-ascii?Q?a2HixqCYj1sXEPpd09pOUmsjmOd0Ad5KpbcqWpSHfyEPrKFEgl0eaPQozvPn?= =?us-ascii?Q?4KvhrVMQ+u+Pi+vvOvx2NTEBfPhdO7WQu5h9lQsqpxIYiFBnEa8GMmcqbX57?= =?us-ascii?Q?0N6aJM6OUDvmE88XniW7rvzjuVJHlWWgmaagw4xATptyEU2FsovfOw1qdSxe?= =?us-ascii?Q?JXuDUYoJyTxc0ELvZ1e6hwH1h4j1mvytjXR4LfmtlkGExk6v4kRMB1a889Sd?= =?us-ascii?Q?Bgh9zcs47oaSr57m1ACrcs/7ClQzDDSzkfxjBeNnoRc0owadtMdFUWwkjfZj?= =?us-ascii?Q?h/TpLOCHX7eP/TmIAXlYwqSE/q9Tme5VNQb6L+uEFc87QYYSEDu7Q952kdPO?= =?us-ascii?Q?7YqMy+1lvLZU5uF4+feTPJxIh9FCfdbu3Wke5hSIYuSQele6Ykg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0695;6:vZUQT2rnkX6VaS0lXx3ecfNcl2HMEjjl8k06Hwf4LPY17aTCikSlT++hWfodnalrrqUY0PX2k/tZPA29z6dgBtIyoZQnnzYcZfy6tudleKC4LnYdCzimlIarfDeWiWtH5N/MCun3qL2t+Env645lTsTdTQPcQACT1TGKREZM83dUj0OBpe9gDJeSZn7Vqg76fF2RJkrJ4FxsfYjWvUlKXxfLC+nblZ9fGq7Hpi854+SDYjA7IRxLVy2C7Vqgo4V/Twc8BNZuFVYzG3SRQymiro0wnwcRej/f/zoxbDAde70=;5:CqltdJPxbAT8Ei9CUyTCVHrKZSAU+IGDAYJ9s3z5pMRKvZRIbN0UitoF8I5Ph5OdTCXPypVOvXPpSF0ylx6zcvClxta+MjcaElcxaR4VrsK/z36MXmcvfZBd7rn3BAaVjD+GQ7fN6Kre4aOOFp4v/7DSjV0nc0FK+BA44+GkXs0=;24:htPa5fjAfwlW86mHnTMrysOAjarba+rMxiMVu5a3s0gmymTsQEfr8C4VsA0Q40KbV4QpezDfXDDcBB4D5e39p69MIuLwNJk8WjFjL5rIuP8=;7:omPbetgnsATppxNpXjK9W37z5mQjKlqOdGUNYZUNQKOfwyZTxpu8oSNkYbPzQe7tzxM2eQW+/EXSWo95iy49UPk96pc9AiYgczjDFqSegUVRw8m5u/4NuBAqbetW7L5jNTGUMahZ/FtD4JizMMtNoCW6ZcSWdUMLocG3GJqxsKi9tr51noKcK3n+5BjfKKcbFWd4YBmrMz6NFg+OUmkuJ3PvEUS/0vp/zWvl4iosSzhUpNKjsaiYk9vbDk7UMR42 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2016 03:04:44.3889 (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: BY2PR0301MB0695 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 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