From: Philipp Zabel <p.zabel@pengutronix.de> To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Grant Likely <grant.likely@secretlab.ca>, Rob Herring <rob.herring@calxeda.com>, Paul Gortmaker <paul.gortmaker@windriver.com>, Shawn Guo <shawn.guo@linaro.org>, Richard Zhao <richard.zhao@freescale.com>, Huang Shijie <shijie8@gmail.com>, Dong Aisheng <dong.aisheng@linaro.org>, kernel@pengutronix.de, devicetree-discuss@lists.ozlabs.org Cc: Philipp Zabel <p.zabel@pengutronix.de> Subject: [PATCH v2 9/9] ARM i.MX: remove IRAM_ALLOC facility Date: Fri, 31 Aug 2012 11:27:04 +0200 [thread overview] Message-ID: <1346405224-20399-10-git-send-email-p.zabel@pengutronix.de> (raw) In-Reply-To: <1346405224-20399-1-git-send-email-p.zabel@pengutronix.de> A generic on-chip SRAM allocator driver can be used instead. Users of the iram_alloc/free API should convert to the genalloc API: - virt = iram_alloc(SIZE, &phys); + gen_pool_alloc(iram_pool, SIZE); + phys = gen_pool_virt_to_phys(iram_pool, virt); /* ... */ - iram_free(virt, SIZE); + gen_pool_free(iram_pool, virt, SIZE); Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- arch/arm/plat-mxc/Kconfig | 4 -- arch/arm/plat-mxc/Makefile | 1 - arch/arm/plat-mxc/include/mach/iram.h | 35 ---------- arch/arm/plat-mxc/iram_alloc.c | 116 --------------------------------- 4 files changed, 156 deletions(-) delete mode 100644 arch/arm/plat-mxc/include/mach/iram.h delete mode 100644 arch/arm/plat-mxc/iram_alloc.c diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index baf9064..8e63f10 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -82,8 +82,4 @@ config IMX_HAVE_IOMUX_V1 config ARCH_MXC_IOMUX_V3 bool -config IRAM_ALLOC - bool - select GENERIC_ALLOCATOR - endif diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile index 6ac7200..bdf370f 100644 --- a/arch/arm/plat-mxc/Makefile +++ b/arch/arm/plat-mxc/Makefile @@ -10,7 +10,6 @@ obj-$(CONFIG_MXC_AVIC) += avic.o obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o -obj-$(CONFIG_IRAM_ALLOC) += iram_alloc.o obj-$(CONFIG_MXC_ULPI) += ulpi.o obj-$(CONFIG_MXC_USE_EPIT) += epit.o obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o diff --git a/arch/arm/plat-mxc/include/mach/iram.h b/arch/arm/plat-mxc/include/mach/iram.h deleted file mode 100644 index d5c863f..0000000 --- a/arch/arm/plat-mxc/include/mach/iram.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2010 Freescale Semiconductor, Inc. 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - */ -#include <linux/errno.h> - -#ifdef CONFIG_IRAM_ALLOC - -void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr); -void iram_free(unsigned long dma_addr, unsigned int size); - -#else - -static inline void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) -{ - return NULL; -} - -static inline void iram_free(unsigned long base, unsigned long size) {} - -#endif diff --git a/arch/arm/plat-mxc/iram_alloc.c b/arch/arm/plat-mxc/iram_alloc.c deleted file mode 100644 index 343e96d..0000000 --- a/arch/arm/plat-mxc/iram_alloc.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2010 Freescale Semiconductor, Inc. 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - */ - -#include <linux/kernel.h> -#include <linux/io.h> -#include <linux/module.h> -#include <linux/spinlock.h> -#include <linux/genalloc.h> -#include <linux/of.h> -#include <linux/platform_device.h> -#include <mach/iram.h> - -static struct gen_pool *iram_pool; - -void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) -{ - unsigned long virt; - - if (!iram_pool) - return NULL; - - virt = gen_pool_alloc(iram_pool, size); - pr_debug("iram alloc - %dB@0x%lX\n", size, *dma_addr); - if (!virt) - return NULL; - - *dma_addr = gen_pool_virt_to_phys(iram_pool, virt); - return (void __iomem *)virt; -} -EXPORT_SYMBOL(iram_alloc); - -void iram_free(unsigned long addr, unsigned int size) -{ - if (!iram_pool) - return; - - gen_pool_free(iram_pool, addr, size); -} -EXPORT_SYMBOL(iram_free); - -static int __devinit iram_probe(struct platform_device *pdev) -{ - void __iomem *virt_base; - struct resource *res; - unsigned long size; - int ret; - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) - return -EINVAL; - - if (iram_pool) - return -EBUSY; - - size = resource_size(res); - - virt_base = devm_ioremap(&pdev->dev, res->start, size); - if (!virt_base) - return -ENOMEM; - - iram_pool = gen_pool_create(PAGE_SHIFT, -1); - if (!iram_pool) - return -ENOMEM; - - ret = gen_pool_add_virt(iram_pool, (unsigned long)virt_base, - res->start, size, -1); - if (ret < 0) { - gen_pool_destroy(iram_pool); - iram_pool = NULL; - return ret; - } - - pr_debug("i.MX IRAM pool: %ld KB@0x%p\n", size / 1024, virt_base); - return 0; -} - -static int __devexit iram_remove(struct platform_device *pdev) -{ - gen_pool_destroy(iram_pool); - iram_pool = NULL; - return 0; -} - -#ifdef CONFIG_OF -static struct of_device_id iram_dt_ids[] = { - { .compatible = "fsl,imx-iram" }, - { /* sentinel */ } -}; -#endif - -static struct platform_driver iram_driver = { - .driver = { - .name = "imx-iram", - .of_match_table = of_match_ptr(iram_dt_ids), - }, - .probe = iram_probe, - .remove = __devexit_p(iram_remove), -}; - -module_platform_driver(iram_driver); -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: p.zabel@pengutronix.de (Philipp Zabel) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 9/9] ARM i.MX: remove IRAM_ALLOC facility Date: Fri, 31 Aug 2012 11:27:04 +0200 [thread overview] Message-ID: <1346405224-20399-10-git-send-email-p.zabel@pengutronix.de> (raw) In-Reply-To: <1346405224-20399-1-git-send-email-p.zabel@pengutronix.de> A generic on-chip SRAM allocator driver can be used instead. Users of the iram_alloc/free API should convert to the genalloc API: - virt = iram_alloc(SIZE, &phys); + gen_pool_alloc(iram_pool, SIZE); + phys = gen_pool_virt_to_phys(iram_pool, virt); /* ... */ - iram_free(virt, SIZE); + gen_pool_free(iram_pool, virt, SIZE); Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- arch/arm/plat-mxc/Kconfig | 4 -- arch/arm/plat-mxc/Makefile | 1 - arch/arm/plat-mxc/include/mach/iram.h | 35 ---------- arch/arm/plat-mxc/iram_alloc.c | 116 --------------------------------- 4 files changed, 156 deletions(-) delete mode 100644 arch/arm/plat-mxc/include/mach/iram.h delete mode 100644 arch/arm/plat-mxc/iram_alloc.c diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index baf9064..8e63f10 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -82,8 +82,4 @@ config IMX_HAVE_IOMUX_V1 config ARCH_MXC_IOMUX_V3 bool -config IRAM_ALLOC - bool - select GENERIC_ALLOCATOR - endif diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile index 6ac7200..bdf370f 100644 --- a/arch/arm/plat-mxc/Makefile +++ b/arch/arm/plat-mxc/Makefile @@ -10,7 +10,6 @@ obj-$(CONFIG_MXC_AVIC) += avic.o obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o -obj-$(CONFIG_IRAM_ALLOC) += iram_alloc.o obj-$(CONFIG_MXC_ULPI) += ulpi.o obj-$(CONFIG_MXC_USE_EPIT) += epit.o obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o diff --git a/arch/arm/plat-mxc/include/mach/iram.h b/arch/arm/plat-mxc/include/mach/iram.h deleted file mode 100644 index d5c863f..0000000 --- a/arch/arm/plat-mxc/include/mach/iram.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2010 Freescale Semiconductor, Inc. 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - */ -#include <linux/errno.h> - -#ifdef CONFIG_IRAM_ALLOC - -void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr); -void iram_free(unsigned long dma_addr, unsigned int size); - -#else - -static inline void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) -{ - return NULL; -} - -static inline void iram_free(unsigned long base, unsigned long size) {} - -#endif diff --git a/arch/arm/plat-mxc/iram_alloc.c b/arch/arm/plat-mxc/iram_alloc.c deleted file mode 100644 index 343e96d..0000000 --- a/arch/arm/plat-mxc/iram_alloc.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2010 Freescale Semiconductor, Inc. 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - */ - -#include <linux/kernel.h> -#include <linux/io.h> -#include <linux/module.h> -#include <linux/spinlock.h> -#include <linux/genalloc.h> -#include <linux/of.h> -#include <linux/platform_device.h> -#include <mach/iram.h> - -static struct gen_pool *iram_pool; - -void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) -{ - unsigned long virt; - - if (!iram_pool) - return NULL; - - virt = gen_pool_alloc(iram_pool, size); - pr_debug("iram alloc - %dB at 0x%lX\n", size, *dma_addr); - if (!virt) - return NULL; - - *dma_addr = gen_pool_virt_to_phys(iram_pool, virt); - return (void __iomem *)virt; -} -EXPORT_SYMBOL(iram_alloc); - -void iram_free(unsigned long addr, unsigned int size) -{ - if (!iram_pool) - return; - - gen_pool_free(iram_pool, addr, size); -} -EXPORT_SYMBOL(iram_free); - -static int __devinit iram_probe(struct platform_device *pdev) -{ - void __iomem *virt_base; - struct resource *res; - unsigned long size; - int ret; - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) - return -EINVAL; - - if (iram_pool) - return -EBUSY; - - size = resource_size(res); - - virt_base = devm_ioremap(&pdev->dev, res->start, size); - if (!virt_base) - return -ENOMEM; - - iram_pool = gen_pool_create(PAGE_SHIFT, -1); - if (!iram_pool) - return -ENOMEM; - - ret = gen_pool_add_virt(iram_pool, (unsigned long)virt_base, - res->start, size, -1); - if (ret < 0) { - gen_pool_destroy(iram_pool); - iram_pool = NULL; - return ret; - } - - pr_debug("i.MX IRAM pool: %ld KB@0x%p\n", size / 1024, virt_base); - return 0; -} - -static int __devexit iram_remove(struct platform_device *pdev) -{ - gen_pool_destroy(iram_pool); - iram_pool = NULL; - return 0; -} - -#ifdef CONFIG_OF -static struct of_device_id iram_dt_ids[] = { - { .compatible = "fsl,imx-iram" }, - { /* sentinel */ } -}; -#endif - -static struct platform_driver iram_driver = { - .driver = { - .name = "imx-iram", - .of_match_table = of_match_ptr(iram_dt_ids), - }, - .probe = iram_probe, - .remove = __devexit_p(iram_remove), -}; - -module_platform_driver(iram_driver); -- 1.7.10.4
next prev parent reply other threads:[~2012-08-31 9:28 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-08-31 9:26 [PATCH v2 0/9] Add device tree support for on-chip SRAM Philipp Zabel 2012-08-31 9:26 ` Philipp Zabel 2012-08-31 9:26 ` [PATCH v2 1/9] ARM i.MX: Switch IRAM allocator to device tree initialization Philipp Zabel 2012-08-31 9:26 ` Philipp Zabel 2012-08-31 9:26 ` [PATCH v2 2/9] ARM i.MX53: Add OCRAM to device tree Philipp Zabel 2012-08-31 9:26 ` Philipp Zabel 2012-08-31 9:26 ` [PATCH v2 3/9] ARM i.MX6: " Philipp Zabel 2012-08-31 9:26 ` Philipp Zabel 2012-08-31 9:26 ` [PATCH v2 4/9] iram_alloc: store the virt and phys mem address in gen_pool chunks Philipp Zabel 2012-08-31 9:26 ` Philipp Zabel 2012-08-31 9:27 ` [PATCH v2 5/9] genalloc: add a global pool list, allow to find pools by phys address Philipp Zabel 2012-08-31 9:27 ` Philipp Zabel 2012-09-03 2:09 ` Shawn Guo 2012-09-03 2:09 ` Shawn Guo 2012-09-03 2:09 ` Shawn Guo 2012-08-31 9:27 ` [PATCH v2 6/9] misc: Generic on-chip SRAM allocation driver Philipp Zabel 2012-08-31 9:27 ` Philipp Zabel 2012-08-31 9:37 ` Jan Lübbe 2012-08-31 9:37 ` Jan Lübbe 2012-08-31 9:40 ` Shilimkar, Santosh 2012-08-31 9:40 ` Shilimkar, Santosh 2012-09-03 2:19 ` Shawn Guo 2012-09-03 2:19 ` Shawn Guo 2012-08-31 9:27 ` [PATCH v2 7/9] ARM: i.MX53: use generic on-chip SRAM allocator driver for OCRAM Philipp Zabel 2012-08-31 9:27 ` Philipp Zabel 2012-08-31 9:27 ` [PATCH v2 8/9] ARM: i.MX6: " Philipp Zabel 2012-08-31 9:27 ` Philipp Zabel 2012-08-31 9:27 ` Philipp Zabel [this message] 2012-08-31 9:27 ` [PATCH v2 9/9] ARM i.MX: remove IRAM_ALLOC facility Philipp Zabel 2012-09-03 1:53 ` [PATCH v2 0/9] Add device tree support for on-chip SRAM Shawn Guo 2012-09-03 1:53 ` Shawn Guo 2012-09-03 15:42 ` Philipp Zabel 2012-09-03 15:42 ` Philipp Zabel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1346405224-20399-10-git-send-email-p.zabel@pengutronix.de \ --to=p.zabel@pengutronix.de \ --cc=devicetree-discuss@lists.ozlabs.org \ --cc=dong.aisheng@linaro.org \ --cc=grant.likely@secretlab.ca \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=paul.gortmaker@windriver.com \ --cc=richard.zhao@freescale.com \ --cc=rob.herring@calxeda.com \ --cc=shawn.guo@linaro.org \ --cc=shijie8@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.