From nobody Fri Dec 19 21:53:30 2025 Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 431641E9B0D for ; Tue, 21 Jan 2025 10:54:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737456864; cv=none; b=pvgkICmy9V5Ak9tFMJFZCpOPqMkx7D29mVtIqB0lxH3X3escMmxoz4gU5JXuu1FiJTwK+9Yd/gT/YSq+4xlFNcN6zxCLv2fUhgKcIyxMNeE5xR1AdXA4+8Q5HNlXxumOVfo7XBStWbO/jTiMvJ92T3mU4PJC5g+T+SCouwp/l6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737456864; c=relaxed/simple; bh=xNvHGxwSfSqDIZKXejaLr+KpTGqLiTZ/e712/smvfnY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c/U7u2Q2R5nBIaX41kuf87ZgYTSmeSQ54LazcXq6lUNBWXfjkMNYbO5Qw7w1XCnj0s2sbop09OUIvCyeyJeGEN/+vN/CY3uFHGZJtARUG6nTGtRXWsQIAUYKjuEQIBL4eXZEmqjVCMx3SWit3SD8T+Pf0oD6a7vQdRBHCGq8UcQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=yoseli.org; spf=none smtp.mailfrom=yoseli.org; dkim=pass (2048-bit key) header.d=yoseli.org header.i=@yoseli.org header.b=dE0lHmcb; arc=none smtp.client-ip=217.70.183.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=yoseli.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=yoseli.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=yoseli.org header.i=@yoseli.org header.b="dE0lHmcb" Received: by mail.gandi.net (Postfix) with ESMTPSA id 1B8571C0007; Tue, 21 Jan 2025 10:54:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yoseli.org; s=gm1; t=1737456860; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eoMWLhM3iDGuRQ9oMTFZDDvzAMlU+XpxLw3TWq5QhN4=; b=dE0lHmcbtfZe5mwY3wShXH5UeUfeC/0/OdCy2t05qMiSz2ITVMYxa6Ys3x7lnF8ggtBFM0 xOC821jCR28jrSVEO7pJBbBLWJL2+mhrfVB9fHrtOhasbpDQncNgYSIyqc1CYsKtWRO5nY 0o6Q5u3bS8/MNrQ/dvn14cL8cOfwHMcYaQNPkKH8Qzrn29tYiHMz72wkowxpMxbrOFU+lq W6uUaEl4hEeAIFv4OUny05FPQGu4UrsAD7I5KUAj/2z+rsuzjfTSz+BCQOgi7wQ0sgrP5x KoStuRbm3TNQrE+OOXx3r6joUt7kZZh96dpRVX8H8eeE0IOfidJEwpv+MHBpPA== From: Jean-Michel Hautbois Date: Tue, 21 Jan 2025 11:54:13 +0100 Subject: [PATCH 1/2] m68k: Enable DMA support for Coldfire M5441x Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250121-coldfire-global-pool-v1-1-382a7235c2aa@yoseli.org> References: <20250121-coldfire-global-pool-v1-0-382a7235c2aa@yoseli.org> In-Reply-To: <20250121-coldfire-global-pool-v1-0-382a7235c2aa@yoseli.org> To: Geert Uytterhoeven , Greg Ungerer Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1737456859; l=4153; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=xNvHGxwSfSqDIZKXejaLr+KpTGqLiTZ/e712/smvfnY=; b=wFvFmmNWbvdyBHT2gzGXTtoAZz2qV0zcme93k3z1zySlBLUmqEDxvt0C5B8TNF+lHt2XvE4cK FFIWV20G6mcCsnRPWDrFVHZRIFN4N7r5wJIYGB+GpgDRGbx+SA4e/wQ X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-GND-Sasl: jeanmichel.hautbois@yoseli.org Add DMA support for the Coldfire M5441x platform with a global DMA pool and coherent DMA operations. Reserve a configurable DRAM pool (default 16MB with CONFIG_DMASIZE) and initialize it with the dedicated helper. Signed-off-by: Jean-Michel Hautbois --- arch/m68k/Kconfig.cpu | 2 ++ arch/m68k/Kconfig.machine | 8 ++++++++ arch/m68k/coldfire/Makefile | 2 ++ arch/m68k/include/asm/dma.h | 1 + arch/m68k/kernel/dma.c | 10 ++++++++++ arch/m68k/mm/mcfmmu.c | 5 +++++ 6 files changed, 28 insertions(+) diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu index c9a7e602d8a4da8e5094762e90c7b1a1ab1acfdf..66e5f62a0eb280f6029e7501f4f= a152f422b76b4 100644 --- a/arch/m68k/Kconfig.cpu +++ b/arch/m68k/Kconfig.cpu @@ -303,6 +303,8 @@ config M5441x select COLDFIRE_PIT_TIMER select MMU_COLDFIRE if MMU select HAVE_CACHE_CB + select DMA_GLOBAL_POOL + select ARCH_HAS_DMA_OPS help Freescale Coldfire 54410/54415/54416/54417/54418 processor support. =20 diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index de39f23b180ee21d3d3a028ad46f815f3690b1ad..1467d1ff349bb26714a3c99f593= a2a71c9ad273d 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -405,6 +405,14 @@ config KERNELBASE a system with the RAM based at address 0, and leaving enough room for the theoretical maximum number of 256 vectors. =20 +config DMASIZE + hex "Size of DRAM (in bytes) reserved pool" + default "0x1000000" + depends on DMA_GLOBAL_POOL + help + Define the DMA pool size, allocated at init time, which can then + be used by DMA engine. Defaults to 16MB. + comment "ROM configuration" =20 config ROM diff --git a/arch/m68k/coldfire/Makefile b/arch/m68k/coldfire/Makefile index c56bc0dc7f2e338c8275cfd15656f80e78825254..b30c55ec722401822651cb329a9= 910cfc2d1d788 100644 --- a/arch/m68k/coldfire/Makefile +++ b/arch/m68k/coldfire/Makefile @@ -31,6 +31,8 @@ obj-$(CONFIG_M5407) +=3D m5407.o intc.o reset.o obj-$(CONFIG_M54xx) +=3D m54xx.o intc-2.o obj-$(CONFIG_M5441x) +=3D m5441x.o intc-simr.o reset.o =20 +obj-$(CONFIG_ARCH_HAS_DMA_OPS) +=3D dma_ops.o + obj-$(CONFIG_COLDFIRE_PIT_TIMER) +=3D pit.o obj-$(CONFIG_COLDFIRE_TIMERS) +=3D timers.o obj-$(CONFIG_COLDFIRE_SLTIMERS) +=3D sltimers.o diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h index 1c8d9c5bc2fadeb425965974bdfb497577ebcc3b..53f9c1570ce62ddaa521d85d9ef= 64523e8ad0919 100644 --- a/arch/m68k/include/asm/dma.h +++ b/arch/m68k/include/asm/dma.h @@ -6,4 +6,5 @@ bootmem allocator (but this should do it for this) */ #define MAX_DMA_ADDRESS PAGE_OFFSET =20 +extern size_t dma_coldfire_base; #endif /* _M68K_DMA_H */ diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c index 16063783aa80c6ef200567543f98f011a2ac4dd2..bc66b012de79be842b55f3d8272= 6a00c929416b9 100644 --- a/arch/m68k/kernel/dma.c +++ b/arch/m68k/kernel/dma.c @@ -43,3 +43,13 @@ void arch_sync_dma_for_device(phys_addr_t handle, size_t= size, break; } } + +#ifdef CONFIG_DMA_GLOBAL_POOL +static int __init coldfire_dma_init(void) +{ + return dma_init_global_coherent(PFN_PHYS(PFN_DOWN(coldfire_dma_base)), + CONFIG_DMASIZE); +} + +core_initcall(coldfire_dma_init); +#endif diff --git a/arch/m68k/mm/mcfmmu.c b/arch/m68k/mm/mcfmmu.c index 9a6fa342e872e32ca9566ebfe247531c808f49d6..f6c560ea17a68ff6546b0683461= b6b9ffb587db7 100644 --- a/arch/m68k/mm/mcfmmu.c +++ b/arch/m68k/mm/mcfmmu.c @@ -156,6 +156,8 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dt= lb, int extension_word) return ret; } =20 +size_t coldfire_dma_base =3D _ramend - CONFIG_DMASIZE; + void __init cf_bootmem_alloc(void) { unsigned long memstart; @@ -179,6 +181,9 @@ void __init cf_bootmem_alloc(void) /* Reserve kernel text/data/bss */ memblock_reserve(_rambase, memstart - _rambase); =20 + /* Reserve DMA */ + memblock_reserve(coldfire_dma_base, CONFIG_DMASIZE); + m68k_virt_to_node_shift =3D fls(_ramend - 1) - 6; module_fixup(NULL, __start_fixup, __stop_fixup); =20 --=20 2.39.5 From nobody Fri Dec 19 21:53:30 2025 Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3DD31F0E4B for ; Tue, 21 Jan 2025 10:54:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737456864; cv=none; b=Bb6w48TkyXdibnVWLWJo6N7JLxMOOK4RtM15Gxm7oCpsg+FDNfcfb9a4j/ZetiOxmeLjAyqU/nTAmWde92jYXZnuKd2u1Pq/iS1P51/jAWQqpWR1LT+Ot0F3BkKqgIdueTYbefnfFENDTYGycblF1N2A8x+qJiruGSreQVb3/W0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737456864; c=relaxed/simple; bh=lDw8iApPj68eVXyPTbAmxy75v6PBAhP04SWIBVcMLcI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m/Tifi6HxDgW4g44fP+rJdb5a7KQisFkZ4KC+va5INi+dJH+Qt1Ju1/ZuaadpkyX3yJSb5gv50lQrs5l0OGQgVvV8sAyjs7UbUhPtgRPbmyrW/jM2ZRBZ5IPisbcybHAvF8IxfHHiNKxT2gNIMuApgfkFF9k51P5pPcA9lxwo7w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=yoseli.org; spf=none smtp.mailfrom=yoseli.org; dkim=pass (2048-bit key) header.d=yoseli.org header.i=@yoseli.org header.b=Az0xrEpz; arc=none smtp.client-ip=217.70.183.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=yoseli.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=yoseli.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=yoseli.org header.i=@yoseli.org header.b="Az0xrEpz" Received: by mail.gandi.net (Postfix) with ESMTPSA id A19191C0012; Tue, 21 Jan 2025 10:54:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yoseli.org; s=gm1; t=1737456861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kENU2Jqq+aqgOtn0XMY8jG+Z80/iI1WRzO/OIaBPIbc=; b=Az0xrEpziV1SzM19uHILrFecu+HRoacCcD4RucvHtpS1Hfsczcl4mddikxYSF7j/eIJNQn APPHOpk1LBotzP5Vu3QcYQAaZj+ff/xDnzAt8zVOYgW625rLVu121YxlRmO5PWQs93wjDh nyOfanF0gFY5owSpJ0pNAxY+xQuA2SWhdWuWrdAeMsFJaBLLsO1uQjaDrQFQPyfEE9wiJ6 rhZ0xR14vl3njLqlkDzBLPlRVbeyPDUs+w7KB8nuI7zzJxVYz/HaP+ZD7uBYBb09Dd3D4v 1+mcGQy1TPdHQvDIwdbIT36XjjV4pf3auYSHURUSWYXZWKCs++sKYyTrMXtspg== From: Jean-Michel Hautbois Date: Tue, 21 Jan 2025 11:54:14 +0100 Subject: [PATCH 2/2] arch: m68k: Add DMA mapping operations for Coldfire M5441x Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250121-coldfire-global-pool-v1-2-382a7235c2aa@yoseli.org> References: <20250121-coldfire-global-pool-v1-0-382a7235c2aa@yoseli.org> In-Reply-To: <20250121-coldfire-global-pool-v1-0-382a7235c2aa@yoseli.org> To: Geert Uytterhoeven , Greg Ungerer Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1737456859; l=7822; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=lDw8iApPj68eVXyPTbAmxy75v6PBAhP04SWIBVcMLcI=; b=04vV1O8tySmpC5DC5Tlbv2MMeRxoAxwYBhTcP8TrGlIdYVQyfxpjKVHRNOVWxdYtctx2Shwk4 LUqi4IY9NhACu4b/ClQ0GGXiEMddnNBVcTlJO6RFxtRQpxRimrZRGdF X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-GND-Sasl: jeanmichel.hautbois@yoseli.org Introduce `dma_ops` for the Coldfire M5441x platform, enabling both coherent and streaming DMA operations. This addition should fill the gap for DMA support integrates with the existing kernel DMA framework. The key operations implemented include: - Custom allocation using the global coherent DMA pool - Mapping and unmapping functions for pages - Scatter-gather support - Resource mapping Signed-off-by: Jean-Michel Hautbois --- arch/m68k/Kconfig.machine | 19 +++++-- arch/m68k/coldfire/dma_ops.c | 131 +++++++++++++++++++++++++++++++++++++++= ++++ arch/m68k/include/asm/dma.h | 2 - arch/m68k/kernel/dma.c | 2 +- arch/m68k/mm/mcfmmu.c | 6 +- 5 files changed, 148 insertions(+), 12 deletions(-) diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index 1467d1ff349bb26714a3c99f593a2a71c9ad273d..9cecc5025401976897f815505e0= bc74cba28eb0d 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -406,12 +406,19 @@ config KERNELBASE for the theoretical maximum number of 256 vectors. =20 config DMASIZE - hex "Size of DRAM (in bytes) reserved pool" - default "0x1000000" - depends on DMA_GLOBAL_POOL - help - Define the DMA pool size, allocated at init time, which can then - be used by DMA engine. Defaults to 16MB. + hex "Size of DRAM (in bytes) reserved pool" + default "0x1000000" + depends on DMA_GLOBAL_POOL + help + Define the DMA pool size, allocated at init time, which can then + be used by DMA engine. Defaults to 16MB. + +config DMABASE + hex "Address of the base of RAM" + default RAMBASE + depends on DMA_GLOBAL_POOL + help + Define the DMA base address for the global pool. =20 comment "ROM configuration" =20 diff --git a/arch/m68k/coldfire/dma_ops.c b/arch/m68k/coldfire/dma_ops.c new file mode 100644 index 0000000000000000000000000000000000000000..e9967adc8821fb06c828e010ef5= 1ef4e9702925b --- /dev/null +++ b/arch/m68k/coldfire/dma_ops.c @@ -0,0 +1,131 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dma_timer.c -- Freescale ColdFire DMA Ops helpers. + * + * Copyright (C) 2024 Jean-Michel Hautbois, Yoseli + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void *coldfire_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp, + unsigned long attrs) +{ + void *vaddr; + + vaddr =3D dma_alloc_from_global_coherent(dev, size, dma_handle); + if (!vaddr) { + dev_err(dev, "Failed to allocate %zu bytes\n", size); + return NULL; + } + + dev_dbg(dev, "Allocated %zu bytes at %p (dma %pad)\n", size, vaddr, dma_h= andle); + + return vaddr; +} + +static void coldfire_free_coherent(struct device *dev, size_t size, void *= vaddr, + dma_addr_t dma_handle, unsigned long attrs) +{ + unsigned int page_order =3D get_order(size); + + if (!dma_release_from_global_coherent(page_order, vaddr)) + WARN_ON_ONCE(1); +} + +static dma_addr_t coldfire_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, + enum dma_data_direction dir, unsigned long attrs) +{ + phys_addr_t phys =3D page_to_phys(page) + offset; + dma_addr_t dma_addr =3D phys_to_dma(dev, phys); + + if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) + arch_sync_dma_for_device(phys, size, dir); + return dma_addr; +} + +static void coldfire_unmap_page(struct device *dev, dma_addr_t dma_handle, + size_t size, enum dma_data_direction dir, + unsigned long attrs) +{ + phys_addr_t phys =3D dma_to_phys(dev, dma_handle); + + if (!dev_is_dma_coherent(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) + arch_sync_dma_for_cpu(phys, size, dir); +} + +static int coldfire_map_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, + unsigned long attrs) +{ + struct scatterlist *s; + dma_addr_t dma_handle; + int i; + + if (!sg) { + dev_err(dev, "Invalid scatterlist, cannot map memory\n"); + return 0; + } + + for_each_sg(sg, s, nents, i) { + dma_handle =3D page_to_phys(sg_page(s)) + sg->offset; + dev_dbg(dev, "Mapped scatterlist %p (offset %u) to DMA address %pad\n", + sg_page(s), sg->offset, &dma_handle); + } + + return nents; +} + +static void coldfire_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, + unsigned long attrs) +{ +} + +static dma_addr_t coldfire_map_resource(struct device *dev, phys_addr_t ph= ys, + size_t size, enum dma_data_direction dir, + unsigned long attrs) +{ + dma_addr_t dma_handle; + + if (!phys) { + dev_err(dev, "Invalid physical address, cannot map memory\n"); + return 0; + } + + dma_handle =3D phys; + dev_dbg(dev, "Mapped physical address %pa (size %zu) to DMA address %pad\= n", + &phys, size, &dma_handle); + return dma_handle; +} + +static void coldfire_unmap_resource(struct device *dev, dma_addr_t dma_han= dle, + size_t size, enum dma_data_direction dir, + unsigned long attrs) +{ +} + +const struct dma_map_ops coldfire_dma_ops =3D { + .alloc =3D coldfire_alloc_coherent, + .free =3D coldfire_free_coherent, + .map_page =3D coldfire_map_page, + .unmap_page =3D coldfire_unmap_page, + .map_sg =3D coldfire_map_sg, + .unmap_sg =3D coldfire_unmap_sg, + .map_resource =3D coldfire_map_resource, + .unmap_resource =3D coldfire_unmap_resource, + .alloc_pages_op =3D dma_common_alloc_pages, + .free_pages =3D dma_common_free_pages, +}; +EXPORT_SYMBOL(coldfire_dma_ops); diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h index 53f9c1570ce62ddaa521d85d9ef64523e8ad0919..fc029b710c30bf23f8bf2657ea7= 4a1c146b3f8b1 100644 --- a/arch/m68k/include/asm/dma.h +++ b/arch/m68k/include/asm/dma.h @@ -5,6 +5,4 @@ /* it's useless on the m68k, but unfortunately needed by the new bootmem allocator (but this should do it for this) */ #define MAX_DMA_ADDRESS PAGE_OFFSET - -extern size_t dma_coldfire_base; #endif /* _M68K_DMA_H */ diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c index bc66b012de79be842b55f3d82726a00c929416b9..6d41fdc4991589c30f9cad783fc= 43f56e8f8b99b 100644 --- a/arch/m68k/kernel/dma.c +++ b/arch/m68k/kernel/dma.c @@ -47,7 +47,7 @@ void arch_sync_dma_for_device(phys_addr_t handle, size_t = size, #ifdef CONFIG_DMA_GLOBAL_POOL static int __init coldfire_dma_init(void) { - return dma_init_global_coherent(PFN_PHYS(PFN_DOWN(coldfire_dma_base)), + return dma_init_global_coherent(PFN_PHYS(PFN_DOWN(CONFIG_DMABASE)), CONFIG_DMASIZE); } =20 diff --git a/arch/m68k/mm/mcfmmu.c b/arch/m68k/mm/mcfmmu.c index f6c560ea17a68ff6546b0683461b6b9ffb587db7..f8006a70e0f58828bedb18690f9= eecfa924c8059 100644 --- a/arch/m68k/mm/mcfmmu.c +++ b/arch/m68k/mm/mcfmmu.c @@ -156,8 +156,6 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dt= lb, int extension_word) return ret; } =20 -size_t coldfire_dma_base =3D _ramend - CONFIG_DMASIZE; - void __init cf_bootmem_alloc(void) { unsigned long memstart; @@ -181,8 +179,10 @@ void __init cf_bootmem_alloc(void) /* Reserve kernel text/data/bss */ memblock_reserve(_rambase, memstart - _rambase); =20 +#ifdef CONFIG_DMA_GLOBAL_POOL /* Reserve DMA */ - memblock_reserve(coldfire_dma_base, CONFIG_DMASIZE); + memblock_reserve(CONFIG_DMABASE, CONFIG_DMASIZE); +#endif =20 m68k_virt_to_node_shift =3D fls(_ramend - 1) - 6; module_fixup(NULL, __start_fixup, __stop_fixup); --=20 2.39.5