summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra_bb.c
diff options
context:
space:
mode:
authorHervé Fache <hfache@nvidia.com>2013-07-10 17:16:52 +0100
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 13:32:28 -0700
commite1b997e23fa3e5de21ae3427e8afbcf977f37075 (patch)
tree5ded63d066fe74215ef3accb9c6a39116602133f /arch/arm/mach-tegra/tegra_bb.c
parent3808eedd5e98c70f111ff13a3180d745ad8978a1 (diff)
ARM: tegra: bbc: increase uncached shm window to fit modem statistics
The statistics from the BBC are placed in the begining of the shared memory and need to be accessed uncached as they potentially keep changing. Bug 1273958 Signed-off-by: Hervé Fache <hfache@nvidia.com> Change-Id: I0c1e7bca11821418597c861af192d5df3d904d5a Reviewed-on: http://git-master/r/247247 (cherry picked from commit 01be97eee50b1960ba1ecdca8bc0d7b2d3a70afb) Reviewed-on: http://git-master/r/250663 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/tegra_bb.c')
-rw-r--r--arch/arm/mach-tegra/tegra_bb.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/arm/mach-tegra/tegra_bb.c b/arch/arm/mach-tegra/tegra_bb.c
index ac1cfc507cd1..7350232a904b 100644
--- a/arch/arm/mach-tegra/tegra_bb.c
+++ b/arch/arm/mach-tegra/tegra_bb.c
@@ -1010,7 +1010,7 @@ static int tegra_bb_probe(struct platform_device *pdev)
void __iomem *tegra_mc = IO_ADDRESS(TEGRA_MC_BASE);
unsigned int size, bbc_mem_regions_0;
struct clk *c;
-
+ unsigned int mb_size = SZ_4K + SZ_128K; /* config + stats */
if (!pdev) {
pr_err("%s platform device is NULL!\n", __func__);
@@ -1115,14 +1115,12 @@ static int tegra_bb_probe(struct platform_device *pdev)
pdata->bb_handle = bb;
- /* Map mb_virt uncached (first 4K of IPC) */
- bb->mb_virt = ioremap_nocache(bb->ipc_phy,
- SZ_1K*4);
+ /* Map mb_virt uncached (first 132K of IPC for config + statistics) */
+ bb->mb_virt = ioremap_nocache(bb->ipc_phy, mb_size);
pr_debug("%s: uncached IPC Virtual=0x%p\n", __func__, bb->mb_virt);
/* IPC memory is cached */
- bb->ipc_virt = ioremap_cached(bb->ipc_phy,
- bb->ipc_size);
+ bb->ipc_virt = ioremap_cached(bb->ipc_phy, bb->ipc_size);
pr_debug("%s: IPC Virtual=0x%p\n", __func__, bb->ipc_virt);
/* clear the first 4K of IPC memory */
@@ -1206,7 +1204,7 @@ static int tegra_bb_probe(struct platform_device *pdev)
bb->nvshm_pdata.ipc_base_virt = bb->ipc_virt;
bb->nvshm_pdata.ipc_size = bb->ipc_size;
bb->nvshm_pdata.mb_base_virt = bb->mb_virt;
- bb->nvshm_pdata.mb_size = 4*SZ_1K;
+ bb->nvshm_pdata.mb_size = mb_size;
bb->nvshm_pdata.bb_irq = bb->irq;
bb->nvshm_pdata.tegra_bb = pdev;
bb->nvshm_device.name = "nvshm";