diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2009-01-05 09:36:12 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-06 08:06:50 -0500 |
commit | 4d9b977ca674dd40cfc1409a75cb73fca2cee423 (patch) | |
tree | 417f80889ab49c61c2258b157cfe993bdf8d8357 /arch/ia64/include/asm | |
parent | c82e4417ace9a3a4dddf3332379c771c41040040 (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.h | 4 | ||||
-rw-r--r-- | arch/ia64/include/asm/machvec_hpzx1.h | 3 | ||||
-rw-r--r-- | arch/ia64/include/asm/machvec_sn2.h | 3 |
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 | ||
301 | extern 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 | ||
4 | extern ia64_mv_setup_t dig_setup; | 4 | extern ia64_mv_setup_t dig_setup; |
5 | extern ia64_mv_dma_init sba_dma_init; | ||
5 | extern ia64_mv_dma_alloc_coherent sba_alloc_coherent; | 6 | extern ia64_mv_dma_alloc_coherent sba_alloc_coherent; |
6 | extern ia64_mv_dma_free_coherent sba_free_coherent; | 7 | extern ia64_mv_dma_free_coherent sba_free_coherent; |
7 | extern ia64_mv_dma_map_single_attrs sba_map_single_attrs; | 8 | extern 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; | |||
55 | extern ia64_mv_readw_t __sn_readw_relaxed; | 55 | extern ia64_mv_readw_t __sn_readw_relaxed; |
56 | extern ia64_mv_readl_t __sn_readl_relaxed; | 56 | extern ia64_mv_readl_t __sn_readl_relaxed; |
57 | extern ia64_mv_readq_t __sn_readq_relaxed; | 57 | extern ia64_mv_readq_t __sn_readq_relaxed; |
58 | extern ia64_mv_dma_init sn_dma_init; | ||
58 | extern ia64_mv_dma_alloc_coherent sn_dma_alloc_coherent; | 59 | extern ia64_mv_dma_alloc_coherent sn_dma_alloc_coherent; |
59 | extern ia64_mv_dma_free_coherent sn_dma_free_coherent; | 60 | extern ia64_mv_dma_free_coherent sn_dma_free_coherent; |
60 | extern ia64_mv_dma_map_single_attrs sn_dma_map_single_attrs; | 61 | extern 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 |