aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/include/asm
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2009-01-05 09:36:12 -0500
committerIngo Molnar <mingo@elte.hu>2009-01-06 08:06:50 -0500
commit4d9b977ca674dd40cfc1409a75cb73fca2cee423 (patch)
tree417f80889ab49c61c2258b157cfe993bdf8d8357 /arch/ia64/include/asm
parentc82e4417ace9a3a4dddf3332379c771c41040040 (diff)
set up dma_ops appropriately
This patch introduces a global pointer, dma_ops, which points to an appropriate dma_mapping_ops that the kernel should use. This is a common way to handle multiple dma_mapping_ops (X86, POWER, and SPARC). dma_ops is set in platform_dma_init. We also set it by hand where machvec_init is callev via subsys_initcall. - IA64_DIG_VTD uses vtd_dma_ops. - IA64_HP_ZX1 uses sba_dma_ops. - IA64_HP_ZX1_SWIOTLB uses hwsw_dma_ops. - IA64_SGI_SN2 uses sn_dma_ops. - The rest use swiotlb_dma_ops. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/ia64/include/asm')
-rw-r--r--arch/ia64/include/asm/machvec.h4
-rw-r--r--arch/ia64/include/asm/machvec_hpzx1.h3
-rw-r--r--arch/ia64/include/asm/machvec_sn2.h3
3 files changed, 7 insertions, 3 deletions
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
index 59c17e446683..d40722c386b4 100644
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@ -298,6 +298,8 @@ extern void machvec_init_from_cmdline(const char *cmdline);
298# error Unknown configuration. Update arch/ia64/include/asm/machvec.h. 298# error Unknown configuration. Update arch/ia64/include/asm/machvec.h.
299# endif /* CONFIG_IA64_GENERIC */ 299# endif /* CONFIG_IA64_GENERIC */
300 300
301extern void swiotlb_dma_init(void);
302
301/* 303/*
302 * Define default versions so we can extend machvec for new platforms without having 304 * Define default versions so we can extend machvec for new platforms without having
303 * to update the machvec files for all existing platforms. 305 * to update the machvec files for all existing platforms.
@@ -328,7 +330,7 @@ extern void machvec_init_from_cmdline(const char *cmdline);
328# define platform_kernel_launch_event machvec_noop 330# define platform_kernel_launch_event machvec_noop
329#endif 331#endif
330#ifndef platform_dma_init 332#ifndef platform_dma_init
331# define platform_dma_init swiotlb_init 333# define platform_dma_init swiotlb_dma_init
332#endif 334#endif
333#ifndef platform_dma_alloc_coherent 335#ifndef platform_dma_alloc_coherent
334# define platform_dma_alloc_coherent swiotlb_alloc_coherent 336# define platform_dma_alloc_coherent swiotlb_alloc_coherent
diff --git a/arch/ia64/include/asm/machvec_hpzx1.h b/arch/ia64/include/asm/machvec_hpzx1.h
index 2f57f5144b9f..dd4140b4dd2f 100644
--- a/arch/ia64/include/asm/machvec_hpzx1.h
+++ b/arch/ia64/include/asm/machvec_hpzx1.h
@@ -2,6 +2,7 @@
2#define _ASM_IA64_MACHVEC_HPZX1_h 2#define _ASM_IA64_MACHVEC_HPZX1_h
3 3
4extern ia64_mv_setup_t dig_setup; 4extern ia64_mv_setup_t dig_setup;
5extern ia64_mv_dma_init sba_dma_init;
5extern ia64_mv_dma_alloc_coherent sba_alloc_coherent; 6extern ia64_mv_dma_alloc_coherent sba_alloc_coherent;
6extern ia64_mv_dma_free_coherent sba_free_coherent; 7extern ia64_mv_dma_free_coherent sba_free_coherent;
7extern ia64_mv_dma_map_single_attrs sba_map_single_attrs; 8extern ia64_mv_dma_map_single_attrs sba_map_single_attrs;
@@ -20,7 +21,7 @@ extern ia64_mv_dma_mapping_error sba_dma_mapping_error;
20 */ 21 */
21#define platform_name "hpzx1" 22#define platform_name "hpzx1"
22#define platform_setup dig_setup 23#define platform_setup dig_setup
23#define platform_dma_init machvec_noop 24#define platform_dma_init sba_dma_init
24#define platform_dma_alloc_coherent sba_alloc_coherent 25#define platform_dma_alloc_coherent sba_alloc_coherent
25#define platform_dma_free_coherent sba_free_coherent 26#define platform_dma_free_coherent sba_free_coherent
26#define platform_dma_map_single_attrs sba_map_single_attrs 27#define platform_dma_map_single_attrs sba_map_single_attrs
diff --git a/arch/ia64/include/asm/machvec_sn2.h b/arch/ia64/include/asm/machvec_sn2.h
index 781308ea7b88..c1f6f871da81 100644
--- a/arch/ia64/include/asm/machvec_sn2.h
+++ b/arch/ia64/include/asm/machvec_sn2.h
@@ -55,6 +55,7 @@ extern ia64_mv_readb_t __sn_readb_relaxed;
55extern ia64_mv_readw_t __sn_readw_relaxed; 55extern ia64_mv_readw_t __sn_readw_relaxed;
56extern ia64_mv_readl_t __sn_readl_relaxed; 56extern ia64_mv_readl_t __sn_readl_relaxed;
57extern ia64_mv_readq_t __sn_readq_relaxed; 57extern ia64_mv_readq_t __sn_readq_relaxed;
58extern ia64_mv_dma_init sn_dma_init;
58extern ia64_mv_dma_alloc_coherent sn_dma_alloc_coherent; 59extern ia64_mv_dma_alloc_coherent sn_dma_alloc_coherent;
59extern ia64_mv_dma_free_coherent sn_dma_free_coherent; 60extern ia64_mv_dma_free_coherent sn_dma_free_coherent;
60extern ia64_mv_dma_map_single_attrs sn_dma_map_single_attrs; 61extern ia64_mv_dma_map_single_attrs sn_dma_map_single_attrs;
@@ -110,7 +111,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus;
110#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem 111#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem
111#define platform_pci_legacy_read sn_pci_legacy_read 112#define platform_pci_legacy_read sn_pci_legacy_read
112#define platform_pci_legacy_write sn_pci_legacy_write 113#define platform_pci_legacy_write sn_pci_legacy_write
113#define platform_dma_init machvec_noop 114#define platform_dma_init sn_dma_init
114#define platform_dma_alloc_coherent sn_dma_alloc_coherent 115#define platform_dma_alloc_coherent sn_dma_alloc_coherent
115#define platform_dma_free_coherent sn_dma_free_coherent 116#define platform_dma_free_coherent sn_dma_free_coherent
116#define platform_dma_map_single_attrs sn_dma_map_single_attrs 117#define platform_dma_map_single_attrs sn_dma_map_single_attrs