From patchwork Mon May 3 00:02:45 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Contreras X-Patchwork-Id: 96396 X-Patchwork-Delegate: hiroshi.doyu@nokia.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o4303CTQ006217 for ; Mon, 3 May 2010 00:03:12 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754004Ab0ECADL (ORCPT ); Sun, 2 May 2010 20:03:11 -0400 Received: from mail-bw0-f219.google.com ([209.85.218.219]:51880 "EHLO mail-bw0-f219.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752604Ab0ECADG (ORCPT ); Sun, 2 May 2010 20:03:06 -0400 Received: by mail-bw0-f219.google.com with SMTP id 19so1033152bwz.21 for ; Sun, 02 May 2010 17:03:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=s2m7o+g8r4BvJFTjAaIcm0tQrpMGfEO8u3HEVEldMVI=; b=kWFzalGZxbLPStd55FUl2FnDnDwtIWFvcckQjExYFWKrgn3URiJKv2rjG+Ih3o0I6B oIQgXdnl6KACoqEBpD+mACjqfq+Srh2MpABvHRcH1WDAAiqY1jXlABiutAMJEdzGmnzX 5EMxx6jxcDPTgD1cE29tC4OFq8mxMCryHKu2E= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=a4oRHxlgSPlQGECq3rG0Q6MPnXWh4JLkVc7l8f3eYpbP6VL4q5N+yncRzpk9lgwHcu cOlqp8qJ+UyDYpHowtegAV1gRuy+Yi8CIZhUfL5xHOm8TiSsqVvkb1mlT2C/4c1ZtX8j 9G1ycHpDTaz2Q/Awf5Ae4QbDPkr0Mdbyt6qsQ= Received: by 10.204.25.8 with SMTP id x8mr9215247bkb.176.1272844986180; Sun, 02 May 2010 17:03:06 -0700 (PDT) Received: from localhost (a91-153-253-80.elisa-laajakaista.fi [91.153.253.80]) by mx.google.com with ESMTPS id 16sm1448552bwz.1.2010.05.02.17.03.05 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sun, 02 May 2010 17:03:05 -0700 (PDT) From: Felipe Contreras To: linux-omap Cc: Tony Lindgren , Hiroshi Doyu , Ohad Ben-Cohen , Felipe Contreras Subject: [RFC/PATCH 6/8] omap: mailbox: more more stuff to omap2_mbox_init Date: Mon, 3 May 2010 03:02:45 +0300 Message-Id: <1272844967-25441-2-git-send-email-felipe.contreras@gmail.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1272844798-25330-1-git-send-email-felipe.contreras@gmail.com> References: <1272844798-25330-1-git-send-email-felipe.contreras@gmail.com> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 03 May 2010 00:03:13 +0000 (UTC) diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index e9a803c..474c1e7 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c @@ -418,31 +418,6 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) res = pdev->resource; - mbox_base = ioremap(res->start, resource_size(res)); - if (!mbox_base) - return -ENOMEM; - - if (cpu_is_omap3430()) { - list.num = ARRAY_SIZE(omap3_mboxes); - list.mbox = omap3_mboxes; - - list.mbox[0]->irq = res[1].start; - } - else if (cpu_is_omap2420()) { - list.num = ARRAY_SIZE(omap2_mboxes); - list.mbox = omap2_mboxes; - - list.mbox[0]->irq = res[1].start; - list.mbox[1]->irq = res[2].start; - } - else if (cpu_is_omap44xx()) { - list.num = ARRAY_SIZE(omap4_mboxes); - list.mbox = omap4_mboxes; - - list.mbox[0]->irq = res[1].start; - list.mbox[1]->irq = res[1].start; - } - for (i = 0; i < list.num; i++) { struct omap_mbox *mbox = list.mbox[i]; ret = omap_mbox_register(&pdev->dev, mbox); @@ -454,7 +429,6 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) err_out: while (i--) omap_mbox_unregister(list.mbox[i]); - iounmap(mbox_base); return ret; } @@ -465,7 +439,6 @@ static int __devexit omap2_mbox_remove(struct platform_device *pdev) for (i = 0; i < list.num; i++) omap_mbox_unregister(list.mbox[i]); - iounmap(mbox_base); return 0; } @@ -483,18 +456,33 @@ static int __init omap2_mbox_init(void) struct platform_device *pdev; struct resource *res; unsigned num; + struct omap_mbox_list list; if (cpu_is_omap3430()) { res = omap3_mbox_resources; num = ARRAY_SIZE(omap3_mbox_resources); + list.num = ARRAY_SIZE(omap3_mboxes); + list.mbox = omap3_mboxes; + + list.mbox[0]->irq = res[1].start; } else if (cpu_is_omap2420()) { res = omap2_mbox_resources; num = ARRAY_SIZE(omap2_mbox_resources); + list.num = ARRAY_SIZE(omap2_mboxes); + list.mbox = omap2_mboxes; + + list.mbox[0]->irq = res[1].start; + list.mbox[1]->irq = res[2].start; } else if (cpu_is_omap44xx()) { res = omap4_mbox_resources; num = ARRAY_SIZE(omap4_mbox_resources); + list.num = ARRAY_SIZE(omap4_mboxes); + list.mbox = omap4_mboxes; + + list.mbox[0]->irq = res[1].start; + list.mbox[1]->irq = res[1].start; } else { pr_err("%s: platform not supported\n", __func__); @@ -515,6 +503,12 @@ static int __init omap2_mbox_init(void) if (err) goto err_out; + mbox_base = ioremap(res[0].start, resource_size(&res[0])); + if (!mbox_base) { + platform_device_put(pdev); + return -ENOMEM; + } + return platform_driver_register(&omap2_mbox_driver); err_out: @@ -524,6 +518,7 @@ err_out: static void __exit omap2_mbox_exit(void) { platform_driver_unregister(&omap2_mbox_driver); + iounmap(mbox_base); } module_init(omap2_mbox_init);