Loading arch/arm/mach-msm/include/mach/ocmem_priv.h +1 −2 Original line number Diff line number Diff line /* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -227,7 +227,6 @@ int process_shrink(int, struct ocmem_handle *, unsigned long); int process_dump(int, struct ocmem_handle *, unsigned long); int ocmem_rdm_transfer(int, struct ocmem_map_list *, unsigned long, int); int ocmem_clear(unsigned long, unsigned long); unsigned long process_quota(int); int ocmem_memory_off(int, unsigned long, unsigned long); int ocmem_memory_on(int, unsigned long, unsigned long); Loading arch/arm/mach-msm/ocmem_core.c +9 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ struct ocmem_hw_region { static struct ocmem_hw_region *region_ctrl; static struct mutex region_ctrl_lock; static void *ocmem_base; static void *ocmem_vbase; #define OCMEM_V1_MACROS 8 #define OCMEM_V1_MACRO_SZ (SZ_64K) Loading Loading @@ -562,6 +563,13 @@ static void ocmem_gfx_mpu_remove(void) ocmem_write(0x0, ocmem_base + OC_GFX_MPU_END); } int ocmem_clear(unsigned long start, unsigned long size) { memset((ocmem_vbase + start), 0x4D4D434F, size); mb(); return 0; } static int do_lock(enum ocmem_client id, unsigned long offset, unsigned long len, enum region_mode mode) { Loading Loading @@ -1144,6 +1152,7 @@ int ocmem_core_init(struct platform_device *pdev) pdata = platform_get_drvdata(pdev); ocmem_base = pdata->reg_base; ocmem_vbase = pdata->vbase; rc = ocmem_enable_core_clock(); Loading arch/arm/mach-msm/ocmem_rdm.c +1 −33 Original line number Diff line number Diff line /* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -149,38 +149,6 @@ static irqreturn_t ocmem_dm_irq_handler(int irq, void *dev_id) return IRQ_HANDLED; } #ifdef CONFIG_MSM_OCMEM_NONSECURE int ocmem_clear(unsigned long start, unsigned long size) { INIT_COMPLETION(dm_clear_event); /* Clear DM Mask */ ocmem_write(DM_MASK_RESET, dm_base + DM_INTR_MASK); /* Clear DM Interrupts */ ocmem_write(DM_INTR_RESET, dm_base + DM_INTR_CLR); /* DM CLR offset */ ocmem_write(start, dm_base + DM_CLR_OFFSET); /* DM CLR size */ ocmem_write(size, dm_base + DM_CLR_SIZE); /* Wipe out memory as "OCMM" */ ocmem_write(0x4D4D434F, dm_base + DM_CLR_PATTERN); /* The offset, size and pattern for clearing must be set * before triggering the clearing engine */ mb(); /* Trigger Data Clear */ ocmem_write(DM_CLR_ENABLE, dm_base + DM_CLR_TRIGGER); wait_for_completion(&dm_clear_event); return 0; } #else int ocmem_clear(unsigned long start, unsigned long size) { return 0; } #endif /* Lock during transfers */ int ocmem_rdm_transfer(int id, struct ocmem_map_list *clist, unsigned long start, int direction) Loading Loading
arch/arm/mach-msm/include/mach/ocmem_priv.h +1 −2 Original line number Diff line number Diff line /* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -227,7 +227,6 @@ int process_shrink(int, struct ocmem_handle *, unsigned long); int process_dump(int, struct ocmem_handle *, unsigned long); int ocmem_rdm_transfer(int, struct ocmem_map_list *, unsigned long, int); int ocmem_clear(unsigned long, unsigned long); unsigned long process_quota(int); int ocmem_memory_off(int, unsigned long, unsigned long); int ocmem_memory_on(int, unsigned long, unsigned long); Loading
arch/arm/mach-msm/ocmem_core.c +9 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ struct ocmem_hw_region { static struct ocmem_hw_region *region_ctrl; static struct mutex region_ctrl_lock; static void *ocmem_base; static void *ocmem_vbase; #define OCMEM_V1_MACROS 8 #define OCMEM_V1_MACRO_SZ (SZ_64K) Loading Loading @@ -562,6 +563,13 @@ static void ocmem_gfx_mpu_remove(void) ocmem_write(0x0, ocmem_base + OC_GFX_MPU_END); } int ocmem_clear(unsigned long start, unsigned long size) { memset((ocmem_vbase + start), 0x4D4D434F, size); mb(); return 0; } static int do_lock(enum ocmem_client id, unsigned long offset, unsigned long len, enum region_mode mode) { Loading Loading @@ -1144,6 +1152,7 @@ int ocmem_core_init(struct platform_device *pdev) pdata = platform_get_drvdata(pdev); ocmem_base = pdata->reg_base; ocmem_vbase = pdata->vbase; rc = ocmem_enable_core_clock(); Loading
arch/arm/mach-msm/ocmem_rdm.c +1 −33 Original line number Diff line number Diff line /* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -149,38 +149,6 @@ static irqreturn_t ocmem_dm_irq_handler(int irq, void *dev_id) return IRQ_HANDLED; } #ifdef CONFIG_MSM_OCMEM_NONSECURE int ocmem_clear(unsigned long start, unsigned long size) { INIT_COMPLETION(dm_clear_event); /* Clear DM Mask */ ocmem_write(DM_MASK_RESET, dm_base + DM_INTR_MASK); /* Clear DM Interrupts */ ocmem_write(DM_INTR_RESET, dm_base + DM_INTR_CLR); /* DM CLR offset */ ocmem_write(start, dm_base + DM_CLR_OFFSET); /* DM CLR size */ ocmem_write(size, dm_base + DM_CLR_SIZE); /* Wipe out memory as "OCMM" */ ocmem_write(0x4D4D434F, dm_base + DM_CLR_PATTERN); /* The offset, size and pattern for clearing must be set * before triggering the clearing engine */ mb(); /* Trigger Data Clear */ ocmem_write(DM_CLR_ENABLE, dm_base + DM_CLR_TRIGGER); wait_for_completion(&dm_clear_event); return 0; } #else int ocmem_clear(unsigned long start, unsigned long size) { return 0; } #endif /* Lock during transfers */ int ocmem_rdm_transfer(int id, struct ocmem_map_list *clist, unsigned long start, int direction) Loading