From mboxrd@z Thu Jan 1 00:00:00 1970 From: laurent.pinchart@ideasonboard.com (Laurent Pinchart) Date: Sun, 26 Feb 2012 18:34:28 +0100 Subject: [PATCH] ARM: OMAP: make iommu subsys_initcall to fix builtin omap3isp In-Reply-To: <1330251254-14693-1-git-send-email-ohad@wizery.com> References: <1330251254-14693-1-git-send-email-ohad@wizery.com> Message-ID: <3215700.hj2jFm3b0A@avalon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Ohad, On Sunday 26 February 2012 12:14:14 Ohad Ben-Cohen wrote: > omap3isp depends on omap's iommu and will fail to probe if > initialized before it (which always happen if they are builtin). > > Make omap's iommu subsys_initcall as an interim solution until > the probe deferral mechanism is merged. How will that fix the problem ? I'm fine with this patch, as it fixes the problem as well, although I still believe modifying the link order would be a better fix in this case. > Reported-by: James > Debugged-by: Laurent Pinchart > Signed-off-by: Ohad Ben-Cohen > Cc: stable > Cc: Tony Lindgren > Cc: Hiroshi Doyu > Cc: Joerg Roedel > --- > arch/arm/mach-omap2/mailbox.c | 3 ++- > drivers/iommu/omap-iommu.c | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c > index 609ea2d..a6db1e4 100644 > --- a/arch/arm/mach-omap2/mailbox.c > +++ b/arch/arm/mach-omap2/mailbox.c > @@ -412,7 +412,8 @@ static void __exit omap2_mbox_exit(void) > platform_driver_unregister(&omap2_mbox_driver); > } > > -module_init(omap2_mbox_init); > +/* must be ready before omap3isp is probed */ The problem is not limited to the omap3isp driver, the DSP driver could be affected as well. > +subsys_initcall(omap2_mbox_init); > module_exit(omap2_mbox_exit); > > MODULE_LICENSE("GPL v2"); > diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c > index 4e661f0..821062a 100644 > --- a/drivers/iommu/omap-iommu.c > +++ b/drivers/iommu/omap-iommu.c > @@ -1222,7 +1222,8 @@ static int __init omap_iommu_init(void) > > return platform_driver_register(&omap_iommu_driver); > } > -module_init(omap_iommu_init); > +/* must be ready before omap3isp is probed */ > +subsys_initcall(omap_iommu_init); > > static void __exit omap_iommu_exit(void) > { -- Regards, Laurent Pinchart