Message ID | 1349882335-6786-7-git-send-email-lee.jones@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wednesday 10 October 2012, Lee Jones wrote: > @@ -2688,7 +2688,11 @@ void __init db8500_prcmu_early_init(void) > iounmap(tcpm_base); > } > > - tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); > + if (cpu_is_u9540()) > + tcdm_base = ioremap_nocache(U8500_PRCMU_TCDM_BASE, > + SZ_4K + SZ_8K) + SZ_8K; > + else > + tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); > } else { > pr_err("prcmu: Unsupported chip version\n"); > BUG(); Would it be possible to get the base out of the device tree and always map it from there? Adding another dependency on a fixed constant is just going to make the conversion to multiplatform harder, since it was decided that device drivers should not have access to platform header files in the multiplatform case. Arnd
On Wed, 10 Oct 2012, Arnd Bergmann wrote: > On Wednesday 10 October 2012, Lee Jones wrote: > > @@ -2688,7 +2688,11 @@ void __init db8500_prcmu_early_init(void) > > iounmap(tcpm_base); > > } > > > > - tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); > > + if (cpu_is_u9540()) > > + tcdm_base = ioremap_nocache(U8500_PRCMU_TCDM_BASE, > > + SZ_4K + SZ_8K) + SZ_8K; > > + else > > + tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); > > } else { > > pr_err("prcmu: Unsupported chip version\n"); > > BUG(); > > Would it be possible to get the base out of the device tree and always > map it from there? Adding another dependency on a fixed constant is > just going to make the conversion to multiplatform harder, since it > was decided that device drivers should not have access to platform > header files in the multiplatform case. From what I understand, this code has to be called before Device Tree kicks in. Actually, this code is mearly a stand-in until Loic has finished with the PRCMU re-vamp. Once that's complete, this stuff will be passed from init_IRQ(), which is invoked directly in start_kernel().
On Thursday 11 October 2012, Lee Jones wrote: > From what I understand, this code has to be called before Device > Tree kicks in. Actually, this code is mearly a stand-in until Loic > has finished with the PRCMU re-vamp. Once that's complete, this > stuff will be passed from init_IRQ(), which is invoked directly in > start_kernel(). Ok, fair enough. Arnd
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 9d51585..fd0462a 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c @@ -2670,7 +2670,7 @@ static int db8500_irq_init(struct device_node *np) void __init db8500_prcmu_early_init(void) { - if (cpu_is_u8500v2()) { + if (cpu_is_u8500v2() || cpu_is_u9540()) { void *tcpm_base = ioremap_nocache(U8500_PRCMU_TCPM_BASE, SZ_4K); if (tcpm_base != NULL) { @@ -2688,7 +2688,11 @@ void __init db8500_prcmu_early_init(void) iounmap(tcpm_base); } - tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); + if (cpu_is_u9540()) + tcdm_base = ioremap_nocache(U8500_PRCMU_TCDM_BASE, + SZ_4K + SZ_8K) + SZ_8K; + else + tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE); } else { pr_err("prcmu: Unsupported chip version\n"); BUG();