diff options
Diffstat (limited to 'arch/sh/include')
| -rw-r--r-- | arch/sh/include/asm/cacheflush.h | 4 | ||||
| -rw-r--r-- | arch/sh/include/asm/dma-register.h | 51 | ||||
| -rw-r--r-- | arch/sh/include/asm/dma-sh.h | 88 | ||||
| -rw-r--r-- | arch/sh/include/asm/dmaengine.h | 93 | ||||
| -rw-r--r-- | arch/sh/include/asm/io.h | 23 | ||||
| -rw-r--r-- | arch/sh/include/asm/mmu.h | 31 | ||||
| -rw-r--r-- | arch/sh/include/asm/siu.h | 2 | ||||
| -rw-r--r-- | arch/sh/include/asm/topology.h | 2 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh3/cpu/dma-register.h | 41 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh3/cpu/dma.h | 27 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh4/cpu/dma-register.h | 112 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | 62 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh4/cpu/dma.h | 36 | ||||
| -rw-r--r-- | arch/sh/include/mach-migor/mach/migor.h | 1 |
14 files changed, 339 insertions, 234 deletions
diff --git a/arch/sh/include/asm/cacheflush.h b/arch/sh/include/asm/cacheflush.h index da3ebec921a..1f4e562c5e8 100644 --- a/arch/sh/include/asm/cacheflush.h +++ b/arch/sh/include/asm/cacheflush.h | |||
| @@ -86,8 +86,8 @@ extern void copy_from_user_page(struct vm_area_struct *vma, | |||
| 86 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 86 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
| 87 | unsigned long len); | 87 | unsigned long len); |
| 88 | 88 | ||
| 89 | #define flush_cache_vmap(start, end) flush_cache_all() | 89 | #define flush_cache_vmap(start, end) local_flush_cache_all(NULL) |
| 90 | #define flush_cache_vunmap(start, end) flush_cache_all() | 90 | #define flush_cache_vunmap(start, end) local_flush_cache_all(NULL) |
| 91 | 91 | ||
| 92 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 92 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
| 93 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 93 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
diff --git a/arch/sh/include/asm/dma-register.h b/arch/sh/include/asm/dma-register.h new file mode 100644 index 00000000000..51cd78feacf --- /dev/null +++ b/arch/sh/include/asm/dma-register.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* | ||
| 2 | * Common header for the legacy SH DMA driver and the new dmaengine driver | ||
| 3 | * | ||
| 4 | * extracted from arch/sh/include/asm/dma-sh.h: | ||
| 5 | * | ||
| 6 | * Copyright (C) 2000 Takashi YOSHII | ||
| 7 | * Copyright (C) 2003 Paul Mundt | ||
| 8 | * | ||
| 9 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 10 | * License. See the file "COPYING" in the main directory of this archive | ||
| 11 | * for more details. | ||
| 12 | */ | ||
| 13 | #ifndef DMA_REGISTER_H | ||
| 14 | #define DMA_REGISTER_H | ||
| 15 | |||
| 16 | /* DMA register */ | ||
| 17 | #define SAR 0x00 | ||
| 18 | #define DAR 0x04 | ||
| 19 | #define TCR 0x08 | ||
| 20 | #define CHCR 0x0C | ||
| 21 | #define DMAOR 0x40 | ||
| 22 | |||
| 23 | /* DMAOR definitions */ | ||
| 24 | #define DMAOR_AE 0x00000004 | ||
| 25 | #define DMAOR_NMIF 0x00000002 | ||
| 26 | #define DMAOR_DME 0x00000001 | ||
| 27 | |||
| 28 | /* Definitions for the SuperH DMAC */ | ||
| 29 | #define REQ_L 0x00000000 | ||
| 30 | #define REQ_E 0x00080000 | ||
| 31 | #define RACK_H 0x00000000 | ||
| 32 | #define RACK_L 0x00040000 | ||
| 33 | #define ACK_R 0x00000000 | ||
| 34 | #define ACK_W 0x00020000 | ||
| 35 | #define ACK_H 0x00000000 | ||
| 36 | #define ACK_L 0x00010000 | ||
| 37 | #define DM_INC 0x00004000 | ||
| 38 | #define DM_DEC 0x00008000 | ||
| 39 | #define DM_FIX 0x0000c000 | ||
| 40 | #define SM_INC 0x00001000 | ||
| 41 | #define SM_DEC 0x00002000 | ||
| 42 | #define SM_FIX 0x00003000 | ||
| 43 | #define RS_IN 0x00000200 | ||
| 44 | #define RS_OUT 0x00000300 | ||
| 45 | #define TS_BLK 0x00000040 | ||
| 46 | #define TM_BUR 0x00000020 | ||
| 47 | #define CHCR_DE 0x00000001 | ||
| 48 | #define CHCR_TE 0x00000002 | ||
| 49 | #define CHCR_IE 0x00000004 | ||
| 50 | |||
| 51 | #endif | ||
diff --git a/arch/sh/include/asm/dma-sh.h b/arch/sh/include/asm/dma-sh.h index e934a2e6665..f3acb8e34c6 100644 --- a/arch/sh/include/asm/dma-sh.h +++ b/arch/sh/include/asm/dma-sh.h | |||
| @@ -11,7 +11,8 @@ | |||
| 11 | #ifndef __DMA_SH_H | 11 | #ifndef __DMA_SH_H |
| 12 | #define __DMA_SH_H | 12 | #define __DMA_SH_H |
| 13 | 13 | ||
| 14 | #include <asm/dma.h> | 14 | #include <asm/dma-register.h> |
| 15 | #include <cpu/dma-register.h> | ||
| 15 | #include <cpu/dma.h> | 16 | #include <cpu/dma.h> |
| 16 | 17 | ||
| 17 | /* DMAOR contorl: The DMAOR access size is different by CPU.*/ | 18 | /* DMAOR contorl: The DMAOR access size is different by CPU.*/ |
| @@ -53,34 +54,6 @@ static int dmte_irq_map[] __maybe_unused = { | |||
| 53 | #endif | 54 | #endif |
| 54 | }; | 55 | }; |
| 55 | 56 | ||
| 56 | /* Definitions for the SuperH DMAC */ | ||
| 57 | #define REQ_L 0x00000000 | ||
| 58 | #define REQ_E 0x00080000 | ||
| 59 | #define RACK_H 0x00000000 | ||
| 60 | #define RACK_L 0x00040000 | ||
| 61 | #define ACK_R 0x00000000 | ||
| 62 | #define ACK_W 0x00020000 | ||
| 63 | #define ACK_H 0x00000000 | ||
| 64 | #define ACK_L 0x00010000 | ||
| 65 | #define DM_INC 0x00004000 | ||
| 66 | #define DM_DEC 0x00008000 | ||
| 67 | #define DM_FIX 0x0000c000 | ||
| 68 | #define SM_INC 0x00001000 | ||
| 69 | #define SM_DEC 0x00002000 | ||
| 70 | #define SM_FIX 0x00003000 | ||
| 71 | #define RS_IN 0x00000200 | ||
| 72 | #define RS_OUT 0x00000300 | ||
| 73 | #define TS_BLK 0x00000040 | ||
| 74 | #define TM_BUR 0x00000020 | ||
| 75 | #define CHCR_DE 0x00000001 | ||
| 76 | #define CHCR_TE 0x00000002 | ||
| 77 | #define CHCR_IE 0x00000004 | ||
| 78 | |||
| 79 | /* DMAOR definitions */ | ||
| 80 | #define DMAOR_AE 0x00000004 | ||
| 81 | #define DMAOR_NMIF 0x00000002 | ||
| 82 | #define DMAOR_DME 0x00000001 | ||
| 83 | |||
| 84 | /* | 57 | /* |
| 85 | * Define the default configuration for dual address memory-memory transfer. | 58 | * Define the default configuration for dual address memory-memory transfer. |
| 86 | * The 0x400 value represents auto-request, external->external. | 59 | * The 0x400 value represents auto-request, external->external. |
| @@ -111,61 +84,4 @@ static u32 dma_base_addr[] __maybe_unused = { | |||
| 111 | #endif | 84 | #endif |
| 112 | }; | 85 | }; |
| 113 | 86 | ||
| 114 | /* DMA register */ | ||
| 115 | #define SAR 0x00 | ||
| 116 | #define DAR 0x04 | ||
| 117 | #define TCR 0x08 | ||
| 118 | #define CHCR 0x0C | ||
| 119 | #define DMAOR 0x40 | ||
| 120 | |||
| 121 | /* | ||
| 122 | * for dma engine | ||
| 123 | * | ||
| 124 | * SuperH DMA mode | ||
| 125 | */ | ||
| 126 | #define SHDMA_MIX_IRQ (1 << 1) | ||
| 127 | #define SHDMA_DMAOR1 (1 << 2) | ||
| 128 | #define SHDMA_DMAE1 (1 << 3) | ||
| 129 | |||
| 130 | enum sh_dmae_slave_chan_id { | ||
| 131 | SHDMA_SLAVE_SCIF0_TX, | ||
| 132 | SHDMA_SLAVE_SCIF0_RX, | ||
| 133 | SHDMA_SLAVE_SCIF1_TX, | ||
| 134 | SHDMA_SLAVE_SCIF1_RX, | ||
| 135 | SHDMA_SLAVE_SCIF2_TX, | ||
| 136 | SHDMA_SLAVE_SCIF2_RX, | ||
| 137 | SHDMA_SLAVE_SCIF3_TX, | ||
| 138 | SHDMA_SLAVE_SCIF3_RX, | ||
| 139 | SHDMA_SLAVE_SCIF4_TX, | ||
| 140 | SHDMA_SLAVE_SCIF4_RX, | ||
| 141 | SHDMA_SLAVE_SCIF5_TX, | ||
| 142 | SHDMA_SLAVE_SCIF5_RX, | ||
| 143 | SHDMA_SLAVE_SIUA_TX, | ||
| 144 | SHDMA_SLAVE_SIUA_RX, | ||
| 145 | SHDMA_SLAVE_SIUB_TX, | ||
| 146 | SHDMA_SLAVE_SIUB_RX, | ||
| 147 | SHDMA_SLAVE_NUMBER, /* Must stay last */ | ||
| 148 | }; | ||
| 149 | |||
| 150 | struct sh_dmae_slave_config { | ||
| 151 | enum sh_dmae_slave_chan_id slave_id; | ||
| 152 | dma_addr_t addr; | ||
| 153 | u32 chcr; | ||
| 154 | char mid_rid; | ||
| 155 | }; | ||
| 156 | |||
| 157 | struct sh_dmae_pdata { | ||
| 158 | unsigned int mode; | ||
| 159 | struct sh_dmae_slave_config *config; | ||
| 160 | int config_num; | ||
| 161 | }; | ||
| 162 | |||
| 163 | struct device; | ||
| 164 | |||
| 165 | struct sh_dmae_slave { | ||
| 166 | enum sh_dmae_slave_chan_id slave_id; /* Set by the platform */ | ||
| 167 | struct device *dma_dev; /* Set by the platform */ | ||
| 168 | struct sh_dmae_slave_config *config; /* Set by the driver */ | ||
| 169 | }; | ||
| 170 | |||
| 171 | #endif /* __DMA_SH_H */ | 87 | #endif /* __DMA_SH_H */ |
diff --git a/arch/sh/include/asm/dmaengine.h b/arch/sh/include/asm/dmaengine.h new file mode 100644 index 00000000000..bf2f30cf0a2 --- /dev/null +++ b/arch/sh/include/asm/dmaengine.h | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | /* | ||
| 2 | * Header for the new SH dmaengine driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | #ifndef ASM_DMAENGINE_H | ||
| 11 | #define ASM_DMAENGINE_H | ||
| 12 | |||
| 13 | #include <linux/dmaengine.h> | ||
| 14 | #include <linux/list.h> | ||
| 15 | |||
| 16 | #include <asm/dma-register.h> | ||
| 17 | |||
| 18 | #define SH_DMAC_MAX_CHANNELS 6 | ||
| 19 | |||
| 20 | enum sh_dmae_slave_chan_id { | ||
| 21 | SHDMA_SLAVE_SCIF0_TX, | ||
| 22 | SHDMA_SLAVE_SCIF0_RX, | ||
| 23 | SHDMA_SLAVE_SCIF1_TX, | ||
| 24 | SHDMA_SLAVE_SCIF1_RX, | ||
| 25 | SHDMA_SLAVE_SCIF2_TX, | ||
| 26 | SHDMA_SLAVE_SCIF2_RX, | ||
| 27 | SHDMA_SLAVE_SCIF3_TX, | ||
| 28 | SHDMA_SLAVE_SCIF3_RX, | ||
| 29 | SHDMA_SLAVE_SCIF4_TX, | ||
| 30 | SHDMA_SLAVE_SCIF4_RX, | ||
| 31 | SHDMA_SLAVE_SCIF5_TX, | ||
| 32 | SHDMA_SLAVE_SCIF5_RX, | ||
| 33 | SHDMA_SLAVE_SIUA_TX, | ||
| 34 | SHDMA_SLAVE_SIUA_RX, | ||
| 35 | SHDMA_SLAVE_SIUB_TX, | ||
| 36 | SHDMA_SLAVE_SIUB_RX, | ||
| 37 | SHDMA_SLAVE_NUMBER, /* Must stay last */ | ||
| 38 | }; | ||
| 39 | |||
| 40 | struct sh_dmae_slave_config { | ||
| 41 | enum sh_dmae_slave_chan_id slave_id; | ||
| 42 | dma_addr_t addr; | ||
| 43 | u32 chcr; | ||
| 44 | char mid_rid; | ||
| 45 | }; | ||
| 46 | |||
| 47 | struct sh_dmae_channel { | ||
| 48 | unsigned int offset; | ||
| 49 | unsigned int dmars; | ||
| 50 | unsigned int dmars_bit; | ||
| 51 | }; | ||
| 52 | |||
| 53 | struct sh_dmae_pdata { | ||
| 54 | struct sh_dmae_slave_config *slave; | ||
| 55 | int slave_num; | ||
| 56 | struct sh_dmae_channel *channel; | ||
| 57 | int channel_num; | ||
| 58 | unsigned int ts_low_shift; | ||
| 59 | unsigned int ts_low_mask; | ||
| 60 | unsigned int ts_high_shift; | ||
| 61 | unsigned int ts_high_mask; | ||
| 62 | unsigned int *ts_shift; | ||
| 63 | int ts_shift_num; | ||
| 64 | u16 dmaor_init; | ||
| 65 | }; | ||
| 66 | |||
| 67 | struct device; | ||
| 68 | |||
| 69 | /* Used by slave DMA clients to request DMA to/from a specific peripheral */ | ||
| 70 | struct sh_dmae_slave { | ||
| 71 | enum sh_dmae_slave_chan_id slave_id; /* Set by the platform */ | ||
| 72 | struct device *dma_dev; /* Set by the platform */ | ||
| 73 | struct sh_dmae_slave_config *config; /* Set by the driver */ | ||
| 74 | }; | ||
| 75 | |||
| 76 | struct sh_dmae_regs { | ||
| 77 | u32 sar; /* SAR / source address */ | ||
| 78 | u32 dar; /* DAR / destination address */ | ||
| 79 | u32 tcr; /* TCR / transfer count */ | ||
| 80 | }; | ||
| 81 | |||
| 82 | struct sh_desc { | ||
| 83 | struct sh_dmae_regs hw; | ||
| 84 | struct list_head node; | ||
| 85 | struct dma_async_tx_descriptor async_tx; | ||
| 86 | enum dma_data_direction direction; | ||
| 87 | dma_cookie_t cookie; | ||
| 88 | size_t partial; | ||
| 89 | int chunks; | ||
| 90 | int mark; | ||
| 91 | }; | ||
| 92 | |||
| 93 | #endif | ||
diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h index 7dab7b23a5e..f689554e17c 100644 --- a/arch/sh/include/asm/io.h +++ b/arch/sh/include/asm/io.h | |||
| @@ -291,21 +291,21 @@ unsigned long long poke_real_address_q(unsigned long long addr, | |||
| 291 | * doesn't exist, so everything must go through page tables. | 291 | * doesn't exist, so everything must go through page tables. |
| 292 | */ | 292 | */ |
| 293 | #ifdef CONFIG_MMU | 293 | #ifdef CONFIG_MMU |
| 294 | void __iomem *__ioremap_caller(unsigned long offset, unsigned long size, | 294 | void __iomem *__ioremap_caller(phys_addr_t offset, unsigned long size, |
| 295 | pgprot_t prot, void *caller); | 295 | pgprot_t prot, void *caller); |
| 296 | void __iounmap(void __iomem *addr); | 296 | void __iounmap(void __iomem *addr); |
| 297 | 297 | ||
| 298 | static inline void __iomem * | 298 | static inline void __iomem * |
| 299 | __ioremap(unsigned long offset, unsigned long size, pgprot_t prot) | 299 | __ioremap(phys_addr_t offset, unsigned long size, pgprot_t prot) |
| 300 | { | 300 | { |
| 301 | return __ioremap_caller(offset, size, prot, __builtin_return_address(0)); | 301 | return __ioremap_caller(offset, size, prot, __builtin_return_address(0)); |
| 302 | } | 302 | } |
| 303 | 303 | ||
| 304 | static inline void __iomem * | 304 | static inline void __iomem * |
| 305 | __ioremap_29bit(unsigned long offset, unsigned long size, pgprot_t prot) | 305 | __ioremap_29bit(phys_addr_t offset, unsigned long size, pgprot_t prot) |
| 306 | { | 306 | { |
| 307 | #ifdef CONFIG_29BIT | 307 | #ifdef CONFIG_29BIT |
| 308 | unsigned long last_addr = offset + size - 1; | 308 | phys_addr_t last_addr = offset + size - 1; |
| 309 | 309 | ||
| 310 | /* | 310 | /* |
| 311 | * For P1 and P2 space this is trivial, as everything is already | 311 | * For P1 and P2 space this is trivial, as everything is already |
| @@ -329,7 +329,7 @@ __ioremap_29bit(unsigned long offset, unsigned long size, pgprot_t prot) | |||
| 329 | } | 329 | } |
| 330 | 330 | ||
| 331 | static inline void __iomem * | 331 | static inline void __iomem * |
| 332 | __ioremap_mode(unsigned long offset, unsigned long size, pgprot_t prot) | 332 | __ioremap_mode(phys_addr_t offset, unsigned long size, pgprot_t prot) |
| 333 | { | 333 | { |
| 334 | void __iomem *ret; | 334 | void __iomem *ret; |
| 335 | 335 | ||
| @@ -349,35 +349,32 @@ __ioremap_mode(unsigned long offset, unsigned long size, pgprot_t prot) | |||
| 349 | #define __iounmap(addr) do { } while (0) | 349 | #define __iounmap(addr) do { } while (0) |
| 350 | #endif /* CONFIG_MMU */ | 350 | #endif /* CONFIG_MMU */ |
| 351 | 351 | ||
| 352 | static inline void __iomem * | 352 | static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size) |
| 353 | ioremap(unsigned long offset, unsigned long size) | ||
| 354 | { | 353 | { |
| 355 | return __ioremap_mode(offset, size, PAGE_KERNEL_NOCACHE); | 354 | return __ioremap_mode(offset, size, PAGE_KERNEL_NOCACHE); |
| 356 | } | 355 | } |
| 357 | 356 | ||
| 358 | static inline void __iomem * | 357 | static inline void __iomem * |
| 359 | ioremap_cache(unsigned long offset, unsigned long size) | 358 | ioremap_cache(phys_addr_t offset, unsigned long size) |
| 360 | { | 359 | { |
| 361 | return __ioremap_mode(offset, size, PAGE_KERNEL); | 360 | return __ioremap_mode(offset, size, PAGE_KERNEL); |
| 362 | } | 361 | } |
| 363 | 362 | ||
| 364 | #ifdef CONFIG_HAVE_IOREMAP_PROT | 363 | #ifdef CONFIG_HAVE_IOREMAP_PROT |
| 365 | static inline void __iomem * | 364 | static inline void __iomem * |
| 366 | ioremap_prot(resource_size_t offset, unsigned long size, unsigned long flags) | 365 | ioremap_prot(phys_addr_t offset, unsigned long size, unsigned long flags) |
| 367 | { | 366 | { |
| 368 | return __ioremap_mode(offset, size, __pgprot(flags)); | 367 | return __ioremap_mode(offset, size, __pgprot(flags)); |
| 369 | } | 368 | } |
| 370 | #endif | 369 | #endif |
| 371 | 370 | ||
| 372 | #ifdef CONFIG_IOREMAP_FIXED | 371 | #ifdef CONFIG_IOREMAP_FIXED |
| 373 | extern void __iomem *ioremap_fixed(resource_size_t, unsigned long, | 372 | extern void __iomem *ioremap_fixed(phys_addr_t, unsigned long, pgprot_t); |
| 374 | unsigned long, pgprot_t); | ||
| 375 | extern int iounmap_fixed(void __iomem *); | 373 | extern int iounmap_fixed(void __iomem *); |
| 376 | extern void ioremap_fixed_init(void); | 374 | extern void ioremap_fixed_init(void); |
| 377 | #else | 375 | #else |
| 378 | static inline void __iomem * | 376 | static inline void __iomem * |
| 379 | ioremap_fixed(resource_size_t phys_addr, unsigned long offset, | 377 | ioremap_fixed(phys_addr_t phys_addr, unsigned long size, pgprot_t prot) |
| 380 | unsigned long size, pgprot_t prot) | ||
| 381 | { | 378 | { |
| 382 | BUG(); | 379 | BUG(); |
| 383 | return NULL; | 380 | return NULL; |
diff --git a/arch/sh/include/asm/mmu.h b/arch/sh/include/asm/mmu.h index 15a05b615ba..19fe84550b4 100644 --- a/arch/sh/include/asm/mmu.h +++ b/arch/sh/include/asm/mmu.h | |||
| @@ -55,19 +55,29 @@ typedef struct { | |||
| 55 | 55 | ||
| 56 | #ifdef CONFIG_PMB | 56 | #ifdef CONFIG_PMB |
| 57 | /* arch/sh/mm/pmb.c */ | 57 | /* arch/sh/mm/pmb.c */ |
| 58 | long pmb_remap(unsigned long virt, unsigned long phys, | ||
| 59 | unsigned long size, pgprot_t prot); | ||
| 60 | void pmb_unmap(unsigned long addr); | ||
| 61 | void pmb_init(void); | ||
| 62 | bool __in_29bit_mode(void); | 58 | bool __in_29bit_mode(void); |
| 59 | |||
| 60 | void pmb_init(void); | ||
| 61 | int pmb_bolt_mapping(unsigned long virt, phys_addr_t phys, | ||
| 62 | unsigned long size, pgprot_t prot); | ||
| 63 | void __iomem *pmb_remap_caller(phys_addr_t phys, unsigned long size, | ||
| 64 | pgprot_t prot, void *caller); | ||
| 65 | int pmb_unmap(void __iomem *addr); | ||
| 66 | |||
| 63 | #else | 67 | #else |
| 64 | static inline long pmb_remap(unsigned long virt, unsigned long phys, | 68 | |
| 65 | unsigned long size, pgprot_t prot) | 69 | static inline void __iomem * |
| 70 | pmb_remap_caller(phys_addr_t phys, unsigned long size, | ||
| 71 | pgprot_t prot, void *caller) | ||
| 72 | { | ||
| 73 | return NULL; | ||
| 74 | } | ||
| 75 | |||
| 76 | static inline int pmb_unmap(void __iomem *addr) | ||
| 66 | { | 77 | { |
| 67 | return -EINVAL; | 78 | return -EINVAL; |
| 68 | } | 79 | } |
| 69 | 80 | ||
| 70 | #define pmb_unmap(addr) do { } while (0) | ||
| 71 | #define pmb_init(addr) do { } while (0) | 81 | #define pmb_init(addr) do { } while (0) |
| 72 | 82 | ||
| 73 | #ifdef CONFIG_29BIT | 83 | #ifdef CONFIG_29BIT |
| @@ -77,6 +87,13 @@ static inline long pmb_remap(unsigned long virt, unsigned long phys, | |||
| 77 | #endif | 87 | #endif |
| 78 | 88 | ||
| 79 | #endif /* CONFIG_PMB */ | 89 | #endif /* CONFIG_PMB */ |
| 90 | |||
| 91 | static inline void __iomem * | ||
| 92 | pmb_remap(phys_addr_t phys, unsigned long size, pgprot_t prot) | ||
| 93 | { | ||
| 94 | return pmb_remap_caller(phys, size, prot, __builtin_return_address(0)); | ||
| 95 | } | ||
| 96 | |||
| 80 | #endif /* __ASSEMBLY__ */ | 97 | #endif /* __ASSEMBLY__ */ |
| 81 | 98 | ||
| 82 | #endif /* __MMU_H */ | 99 | #endif /* __MMU_H */ |
diff --git a/arch/sh/include/asm/siu.h b/arch/sh/include/asm/siu.h index 57565a3b551..f1b1e6944a5 100644 --- a/arch/sh/include/asm/siu.h +++ b/arch/sh/include/asm/siu.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #ifndef ASM_SIU_H | 11 | #ifndef ASM_SIU_H |
| 12 | #define ASM_SIU_H | 12 | #define ASM_SIU_H |
| 13 | 13 | ||
| 14 | #include <asm/dma-sh.h> | 14 | #include <asm/dmaengine.h> |
| 15 | 15 | ||
| 16 | struct device; | 16 | struct device; |
| 17 | 17 | ||
diff --git a/arch/sh/include/asm/topology.h b/arch/sh/include/asm/topology.h index 37cdadd975a..88e734069fa 100644 --- a/arch/sh/include/asm/topology.h +++ b/arch/sh/include/asm/topology.h | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | 35 | ||
| 36 | #define pcibus_to_node(bus) ((void)(bus), -1) | 36 | #define pcibus_to_node(bus) ((void)(bus), -1) |
| 37 | #define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \ | 37 | #define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \ |
| 38 | CPU_MASK_ALL_PTR : \ | 38 | cpu_all_mask : \ |
| 39 | cpumask_of_node(pcibus_to_node(bus))) | 39 | cpumask_of_node(pcibus_to_node(bus))) |
| 40 | 40 | ||
| 41 | #endif | 41 | #endif |
diff --git a/arch/sh/include/cpu-sh3/cpu/dma-register.h b/arch/sh/include/cpu-sh3/cpu/dma-register.h new file mode 100644 index 00000000000..2349e488c9a --- /dev/null +++ b/arch/sh/include/cpu-sh3/cpu/dma-register.h | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | /* | ||
| 2 | * SH3 CPU-specific DMA definitions, used by both DMA drivers | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | #ifndef CPU_DMA_REGISTER_H | ||
| 11 | #define CPU_DMA_REGISTER_H | ||
| 12 | |||
| 13 | #define CHCR_TS_LOW_MASK 0x18 | ||
| 14 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 15 | #define CHCR_TS_HIGH_MASK 0 | ||
| 16 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 17 | |||
| 18 | #define DMAOR_INIT DMAOR_DME | ||
| 19 | |||
| 20 | /* | ||
| 21 | * The SuperH DMAC supports a number of transmit sizes, we list them here, | ||
| 22 | * with their respective values as they appear in the CHCR registers. | ||
| 23 | */ | ||
| 24 | enum { | ||
| 25 | XMIT_SZ_8BIT, | ||
| 26 | XMIT_SZ_16BIT, | ||
| 27 | XMIT_SZ_32BIT, | ||
| 28 | XMIT_SZ_128BIT, | ||
| 29 | }; | ||
| 30 | |||
| 31 | /* log2(size / 8) - used to calculate number of transfers */ | ||
| 32 | #define TS_SHIFT { \ | ||
| 33 | [XMIT_SZ_8BIT] = 0, \ | ||
| 34 | [XMIT_SZ_16BIT] = 1, \ | ||
| 35 | [XMIT_SZ_32BIT] = 2, \ | ||
| 36 | [XMIT_SZ_128BIT] = 4, \ | ||
| 37 | } | ||
| 38 | |||
| 39 | #define TS_INDEX2VAL(i) (((i) & 3) << CHCR_TS_LOW_SHIFT) | ||
| 40 | |||
| 41 | #endif | ||
diff --git a/arch/sh/include/cpu-sh3/cpu/dma.h b/arch/sh/include/cpu-sh3/cpu/dma.h index 207811a7a65..24e28b91c9d 100644 --- a/arch/sh/include/cpu-sh3/cpu/dma.h +++ b/arch/sh/include/cpu-sh3/cpu/dma.h | |||
| @@ -20,31 +20,4 @@ | |||
| 20 | #define TS_32 0x00000010 | 20 | #define TS_32 0x00000010 |
| 21 | #define TS_128 0x00000018 | 21 | #define TS_128 0x00000018 |
| 22 | 22 | ||
| 23 | #define CHCR_TS_LOW_MASK 0x18 | ||
| 24 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 25 | #define CHCR_TS_HIGH_MASK 0 | ||
| 26 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 27 | |||
| 28 | #define DMAOR_INIT DMAOR_DME | ||
| 29 | |||
| 30 | /* | ||
| 31 | * The SuperH DMAC supports a number of transmit sizes, we list them here, | ||
| 32 | * with their respective values as they appear in the CHCR registers. | ||
| 33 | */ | ||
| 34 | enum { | ||
| 35 | XMIT_SZ_8BIT, | ||
| 36 | XMIT_SZ_16BIT, | ||
| 37 | XMIT_SZ_32BIT, | ||
| 38 | XMIT_SZ_128BIT, | ||
| 39 | }; | ||
| 40 | |||
| 41 | #define TS_SHIFT { \ | ||
| 42 | [XMIT_SZ_8BIT] = 0, \ | ||
| 43 | [XMIT_SZ_16BIT] = 1, \ | ||
| 44 | [XMIT_SZ_32BIT] = 2, \ | ||
| 45 | [XMIT_SZ_128BIT] = 4, \ | ||
| 46 | } | ||
| 47 | |||
| 48 | #define TS_INDEX2VAL(i) (((i) & 3) << CHCR_TS_LOW_SHIFT) | ||
| 49 | |||
| 50 | #endif /* __ASM_CPU_SH3_DMA_H */ | 23 | #endif /* __ASM_CPU_SH3_DMA_H */ |
diff --git a/arch/sh/include/cpu-sh4/cpu/dma-register.h b/arch/sh/include/cpu-sh4/cpu/dma-register.h new file mode 100644 index 00000000000..55f9fec082d --- /dev/null +++ b/arch/sh/include/cpu-sh4/cpu/dma-register.h | |||
| @@ -0,0 +1,112 @@ | |||
| 1 | /* | ||
| 2 | * SH4 CPU-specific DMA definitions, used by both DMA drivers | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | #ifndef CPU_DMA_REGISTER_H | ||
| 11 | #define CPU_DMA_REGISTER_H | ||
| 12 | |||
| 13 | /* SH7751/7760/7780 DMA IRQ sources */ | ||
| 14 | |||
| 15 | #ifdef CONFIG_CPU_SH4A | ||
| 16 | |||
| 17 | #define DMAOR_INIT DMAOR_DME | ||
| 18 | |||
| 19 | #if defined(CONFIG_CPU_SUBTYPE_SH7343) || \ | ||
| 20 | defined(CONFIG_CPU_SUBTYPE_SH7730) | ||
| 21 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 22 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 23 | #define CHCR_TS_HIGH_MASK 0 | ||
| 24 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 25 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) || \ | ||
| 26 | defined(CONFIG_CPU_SUBTYPE_SH7724) | ||
| 27 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 28 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 29 | #define CHCR_TS_HIGH_MASK 0x00300000 | ||
| 30 | #define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ | ||
| 31 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ | ||
| 32 | defined(CONFIG_CPU_SUBTYPE_SH7764) | ||
| 33 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 34 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 35 | #define CHCR_TS_HIGH_MASK 0 | ||
| 36 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 37 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) | ||
| 38 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 39 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 40 | #define CHCR_TS_HIGH_MASK 0 | ||
| 41 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 42 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) | ||
| 43 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 44 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 45 | #define CHCR_TS_HIGH_MASK 0 | ||
| 46 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 47 | #else /* SH7785 */ | ||
| 48 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 49 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 50 | #define CHCR_TS_HIGH_MASK 0 | ||
| 51 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 52 | #endif | ||
| 53 | |||
| 54 | /* Transmit sizes and respective CHCR register values */ | ||
| 55 | enum { | ||
| 56 | XMIT_SZ_8BIT = 0, | ||
| 57 | XMIT_SZ_16BIT = 1, | ||
| 58 | XMIT_SZ_32BIT = 2, | ||
| 59 | XMIT_SZ_64BIT = 7, | ||
| 60 | XMIT_SZ_128BIT = 3, | ||
| 61 | XMIT_SZ_256BIT = 4, | ||
| 62 | XMIT_SZ_128BIT_BLK = 0xb, | ||
| 63 | XMIT_SZ_256BIT_BLK = 0xc, | ||
| 64 | }; | ||
| 65 | |||
| 66 | /* log2(size / 8) - used to calculate number of transfers */ | ||
| 67 | #define TS_SHIFT { \ | ||
| 68 | [XMIT_SZ_8BIT] = 0, \ | ||
| 69 | [XMIT_SZ_16BIT] = 1, \ | ||
| 70 | [XMIT_SZ_32BIT] = 2, \ | ||
| 71 | [XMIT_SZ_64BIT] = 3, \ | ||
| 72 | [XMIT_SZ_128BIT] = 4, \ | ||
| 73 | [XMIT_SZ_256BIT] = 5, \ | ||
| 74 | [XMIT_SZ_128BIT_BLK] = 4, \ | ||
| 75 | [XMIT_SZ_256BIT_BLK] = 5, \ | ||
| 76 | } | ||
| 77 | |||
| 78 | #define TS_INDEX2VAL(i) ((((i) & 3) << CHCR_TS_LOW_SHIFT) | \ | ||
| 79 | ((((i) >> 2) & 3) << CHCR_TS_HIGH_SHIFT)) | ||
| 80 | |||
| 81 | #else /* CONFIG_CPU_SH4A */ | ||
| 82 | |||
| 83 | #define DMAOR_INIT (0x8000 | DMAOR_DME) | ||
| 84 | |||
| 85 | #define CHCR_TS_LOW_MASK 0x70 | ||
| 86 | #define CHCR_TS_LOW_SHIFT 4 | ||
| 87 | #define CHCR_TS_HIGH_MASK 0 | ||
| 88 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 89 | |||
| 90 | /* Transmit sizes and respective CHCR register values */ | ||
| 91 | enum { | ||
| 92 | XMIT_SZ_8BIT = 1, | ||
| 93 | XMIT_SZ_16BIT = 2, | ||
| 94 | XMIT_SZ_32BIT = 3, | ||
| 95 | XMIT_SZ_64BIT = 0, | ||
| 96 | XMIT_SZ_256BIT = 4, | ||
| 97 | }; | ||
| 98 | |||
| 99 | /* log2(size / 8) - used to calculate number of transfers */ | ||
| 100 | #define TS_SHIFT { \ | ||
| 101 | [XMIT_SZ_8BIT] = 0, \ | ||
| 102 | [XMIT_SZ_16BIT] = 1, \ | ||
| 103 | [XMIT_SZ_32BIT] = 2, \ | ||
| 104 | [XMIT_SZ_64BIT] = 3, \ | ||
| 105 | [XMIT_SZ_256BIT] = 5, \ | ||
| 106 | } | ||
| 107 | |||
| 108 | #define TS_INDEX2VAL(i) (((i) & 7) << CHCR_TS_LOW_SHIFT) | ||
| 109 | |||
| 110 | #endif /* CONFIG_CPU_SH4A */ | ||
| 111 | |||
| 112 | #endif | ||
diff --git a/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h b/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h index e734ea47d8a..9647e681fd2 100644 --- a/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h +++ b/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | |||
| @@ -8,20 +8,12 @@ | |||
| 8 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 8 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ |
| 9 | #define SH_DMAC_BASE0 0xFE008020 | 9 | #define SH_DMAC_BASE0 0xFE008020 |
| 10 | #define SH_DMARS_BASE0 0xFE009000 | 10 | #define SH_DMARS_BASE0 0xFE009000 |
| 11 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 12 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 13 | #define CHCR_TS_HIGH_MASK 0 | ||
| 14 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 15 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) | 11 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) |
| 16 | #define DMTE0_IRQ 48 | 12 | #define DMTE0_IRQ 48 |
| 17 | #define DMTE4_IRQ 76 | 13 | #define DMTE4_IRQ 76 |
| 18 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 14 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ |
| 19 | #define SH_DMAC_BASE0 0xFE008020 | 15 | #define SH_DMAC_BASE0 0xFE008020 |
| 20 | #define SH_DMARS_BASE0 0xFE009000 | 16 | #define SH_DMARS_BASE0 0xFE009000 |
| 21 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 22 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 23 | #define CHCR_TS_HIGH_MASK 0x00300000 | ||
| 24 | #define CHCR_TS_HIGH_SHIFT 20 | ||
| 25 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ | 17 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ |
| 26 | defined(CONFIG_CPU_SUBTYPE_SH7764) | 18 | defined(CONFIG_CPU_SUBTYPE_SH7764) |
| 27 | #define DMTE0_IRQ 34 | 19 | #define DMTE0_IRQ 34 |
| @@ -29,10 +21,6 @@ | |||
| 29 | #define DMAE0_IRQ 38 | 21 | #define DMAE0_IRQ 38 |
| 30 | #define SH_DMAC_BASE0 0xFF608020 | 22 | #define SH_DMAC_BASE0 0xFF608020 |
| 31 | #define SH_DMARS_BASE0 0xFF609000 | 23 | #define SH_DMARS_BASE0 0xFF609000 |
| 32 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 33 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 34 | #define CHCR_TS_HIGH_MASK 0 | ||
| 35 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 36 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) | 24 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) |
| 37 | #define DMTE0_IRQ 48 /* DMAC0A*/ | 25 | #define DMTE0_IRQ 48 /* DMAC0A*/ |
| 38 | #define DMTE4_IRQ 76 /* DMAC0B */ | 26 | #define DMTE4_IRQ 76 /* DMAC0B */ |
| @@ -46,10 +34,6 @@ | |||
| 46 | #define SH_DMAC_BASE0 0xFE008020 | 34 | #define SH_DMAC_BASE0 0xFE008020 |
| 47 | #define SH_DMAC_BASE1 0xFDC08020 | 35 | #define SH_DMAC_BASE1 0xFDC08020 |
| 48 | #define SH_DMARS_BASE0 0xFDC09000 | 36 | #define SH_DMARS_BASE0 0xFDC09000 |
| 49 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 50 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 51 | #define CHCR_TS_HIGH_MASK 0 | ||
| 52 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 53 | #elif defined(CONFIG_CPU_SUBTYPE_SH7724) | 37 | #elif defined(CONFIG_CPU_SUBTYPE_SH7724) |
| 54 | #define DMTE0_IRQ 48 /* DMAC0A*/ | 38 | #define DMTE0_IRQ 48 /* DMAC0A*/ |
| 55 | #define DMTE4_IRQ 76 /* DMAC0B */ | 39 | #define DMTE4_IRQ 76 /* DMAC0B */ |
| @@ -64,10 +48,6 @@ | |||
| 64 | #define SH_DMAC_BASE1 0xFDC08020 | 48 | #define SH_DMAC_BASE1 0xFDC08020 |
| 65 | #define SH_DMARS_BASE0 0xFE009000 | 49 | #define SH_DMARS_BASE0 0xFE009000 |
| 66 | #define SH_DMARS_BASE1 0xFDC09000 | 50 | #define SH_DMARS_BASE1 0xFDC09000 |
| 67 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 68 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 69 | #define CHCR_TS_HIGH_MASK 0x00600000 | ||
| 70 | #define CHCR_TS_HIGH_SHIFT 21 | ||
| 71 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) | 51 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) |
| 72 | #define DMTE0_IRQ 34 | 52 | #define DMTE0_IRQ 34 |
| 73 | #define DMTE4_IRQ 44 | 53 | #define DMTE4_IRQ 44 |
| @@ -80,10 +60,6 @@ | |||
| 80 | #define SH_DMAC_BASE0 0xFC808020 | 60 | #define SH_DMAC_BASE0 0xFC808020 |
| 81 | #define SH_DMAC_BASE1 0xFC818020 | 61 | #define SH_DMAC_BASE1 0xFC818020 |
| 82 | #define SH_DMARS_BASE0 0xFC809000 | 62 | #define SH_DMARS_BASE0 0xFC809000 |
| 83 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 84 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 85 | #define CHCR_TS_HIGH_MASK 0 | ||
| 86 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 87 | #else /* SH7785 */ | 63 | #else /* SH7785 */ |
| 88 | #define DMTE0_IRQ 33 | 64 | #define DMTE0_IRQ 33 |
| 89 | #define DMTE4_IRQ 37 | 65 | #define DMTE4_IRQ 37 |
| @@ -97,10 +73,6 @@ | |||
| 97 | #define SH_DMAC_BASE0 0xFC808020 | 73 | #define SH_DMAC_BASE0 0xFC808020 |
| 98 | #define SH_DMAC_BASE1 0xFCC08020 | 74 | #define SH_DMAC_BASE1 0xFCC08020 |
| 99 | #define SH_DMARS_BASE0 0xFC809000 | 75 | #define SH_DMARS_BASE0 0xFC809000 |
| 100 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
| 101 | #define CHCR_TS_LOW_SHIFT 3 | ||
| 102 | #define CHCR_TS_HIGH_MASK 0 | ||
| 103 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 104 | #endif | 76 | #endif |
| 105 | 77 | ||
| 106 | #define REQ_HE 0x000000C0 | 78 | #define REQ_HE 0x000000C0 |
| @@ -108,38 +80,4 @@ | |||
| 108 | #define REQ_LE 0x00000040 | 80 | #define REQ_LE 0x00000040 |
| 109 | #define TM_BURST 0x00000020 | 81 | #define TM_BURST 0x00000020 |
| 110 | 82 | ||
| 111 | /* | ||
| 112 | * The SuperH DMAC supports a number of transmit sizes, we list them here, | ||
| 113 | * with their respective values as they appear in the CHCR registers. | ||
| 114 | * | ||
| 115 | * Defaults to a 64-bit transfer size. | ||
| 116 | */ | ||
| 117 | enum { | ||
| 118 | XMIT_SZ_8BIT = 0, | ||
| 119 | XMIT_SZ_16BIT = 1, | ||
| 120 | XMIT_SZ_32BIT = 2, | ||
| 121 | XMIT_SZ_64BIT = 7, | ||
| 122 | XMIT_SZ_128BIT = 3, | ||
| 123 | XMIT_SZ_256BIT = 4, | ||
| 124 | XMIT_SZ_128BIT_BLK = 0xb, | ||
| 125 | XMIT_SZ_256BIT_BLK = 0xc, | ||
| 126 | }; | ||
| 127 | |||
| 128 | /* | ||
| 129 | * The DMA count is defined as the number of bytes to transfer. | ||
| 130 | */ | ||
| 131 | #define TS_SHIFT { \ | ||
| 132 | [XMIT_SZ_8BIT] = 0, \ | ||
| 133 | [XMIT_SZ_16BIT] = 1, \ | ||
| 134 | [XMIT_SZ_32BIT] = 2, \ | ||
| 135 | [XMIT_SZ_64BIT] = 3, \ | ||
| 136 | [XMIT_SZ_128BIT] = 4, \ | ||
| 137 | [XMIT_SZ_256BIT] = 5, \ | ||
| 138 | [XMIT_SZ_128BIT_BLK] = 4, \ | ||
| 139 | [XMIT_SZ_256BIT_BLK] = 5, \ | ||
| 140 | } | ||
| 141 | |||
| 142 | #define TS_INDEX2VAL(i) ((((i) & 3) << CHCR_TS_LOW_SHIFT) | \ | ||
| 143 | ((((i) >> 2) & 3) << CHCR_TS_HIGH_SHIFT)) | ||
| 144 | |||
| 145 | #endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */ | 83 | #endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */ |
diff --git a/arch/sh/include/cpu-sh4/cpu/dma.h b/arch/sh/include/cpu-sh4/cpu/dma.h index 114a369705b..ca747e93c2e 100644 --- a/arch/sh/include/cpu-sh4/cpu/dma.h +++ b/arch/sh/include/cpu-sh4/cpu/dma.h | |||
| @@ -5,9 +5,8 @@ | |||
| 5 | 5 | ||
| 6 | #ifdef CONFIG_CPU_SH4A | 6 | #ifdef CONFIG_CPU_SH4A |
| 7 | 7 | ||
| 8 | #define DMAOR_INIT (DMAOR_DME) | ||
| 9 | |||
| 10 | #include <cpu/dma-sh4a.h> | 8 | #include <cpu/dma-sh4a.h> |
| 9 | |||
| 11 | #else /* CONFIG_CPU_SH4A */ | 10 | #else /* CONFIG_CPU_SH4A */ |
| 12 | /* | 11 | /* |
| 13 | * SH7750/SH7751/SH7760 | 12 | * SH7750/SH7751/SH7760 |
| @@ -17,7 +16,6 @@ | |||
| 17 | #define DMTE6_IRQ 46 | 16 | #define DMTE6_IRQ 46 |
| 18 | #define DMAE0_IRQ 38 | 17 | #define DMAE0_IRQ 38 |
| 19 | 18 | ||
| 20 | #define DMAOR_INIT (0x8000|DMAOR_DME) | ||
| 21 | #define SH_DMAC_BASE0 0xffa00000 | 19 | #define SH_DMAC_BASE0 0xffa00000 |
| 22 | #define SH_DMAC_BASE1 0xffa00070 | 20 | #define SH_DMAC_BASE1 0xffa00070 |
| 23 | /* Definitions for the SuperH DMAC */ | 21 | /* Definitions for the SuperH DMAC */ |
| @@ -27,40 +25,8 @@ | |||
| 27 | #define TS_32 0x00000030 | 25 | #define TS_32 0x00000030 |
| 28 | #define TS_64 0x00000000 | 26 | #define TS_64 0x00000000 |
| 29 | 27 | ||
| 30 | #define CHCR_TS_LOW_MASK 0x70 | ||
| 31 | #define CHCR_TS_LOW_SHIFT 4 | ||
| 32 | #define CHCR_TS_HIGH_MASK 0 | ||
| 33 | #define CHCR_TS_HIGH_SHIFT 0 | ||
| 34 | |||
| 35 | #define DMAOR_COD 0x00000008 | 28 | #define DMAOR_COD 0x00000008 |
| 36 | 29 | ||
| 37 | /* | ||
| 38 | * The SuperH DMAC supports a number of transmit sizes, we list them here, | ||
| 39 | * with their respective values as they appear in the CHCR registers. | ||
| 40 | * | ||
| 41 | * Defaults to a 64-bit transfer size. | ||
| 42 | */ | ||
| 43 | enum { | ||
| 44 | XMIT_SZ_8BIT = 1, | ||
| 45 | XMIT_SZ_16BIT = 2, | ||
| 46 | XMIT_SZ_32BIT = 3, | ||
| 47 | XMIT_SZ_64BIT = 0, | ||
| 48 | XMIT_SZ_256BIT = 4, | ||
| 49 | }; | ||
| 50 | |||
| 51 | /* | ||
| 52 | * The DMA count is defined as the number of bytes to transfer. | ||
| 53 | */ | ||
| 54 | #define TS_SHIFT { \ | ||
| 55 | [XMIT_SZ_8BIT] = 0, \ | ||
| 56 | [XMIT_SZ_16BIT] = 1, \ | ||
| 57 | [XMIT_SZ_32BIT] = 2, \ | ||
| 58 | [XMIT_SZ_64BIT] = 3, \ | ||
| 59 | [XMIT_SZ_256BIT] = 5, \ | ||
| 60 | } | ||
| 61 | |||
| 62 | #define TS_INDEX2VAL(i) (((i) & 7) << CHCR_TS_LOW_SHIFT) | ||
| 63 | |||
| 64 | #endif | 30 | #endif |
| 65 | 31 | ||
| 66 | #endif /* __ASM_CPU_SH4_DMA_H */ | 32 | #endif /* __ASM_CPU_SH4_DMA_H */ |
diff --git a/arch/sh/include/mach-migor/mach/migor.h b/arch/sh/include/mach-migor/mach/migor.h index cee6cb88e02..42fccf93412 100644 --- a/arch/sh/include/mach-migor/mach/migor.h +++ b/arch/sh/include/mach-migor/mach/migor.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __ASM_SH_MIGOR_H | 1 | #ifndef __ASM_SH_MIGOR_H |
| 2 | #define __ASM_SH_MIGOR_H | 2 | #define __ASM_SH_MIGOR_H |
| 3 | 3 | ||
| 4 | #define PORT_MSELCRA 0xa4050180 | ||
| 4 | #define PORT_MSELCRB 0xa4050182 | 5 | #define PORT_MSELCRB 0xa4050182 |
| 5 | #define BSC_CS4BCR 0xfec10010 | 6 | #define BSC_CS4BCR 0xfec10010 |
| 6 | #define BSC_CS6ABCR 0xfec1001c | 7 | #define BSC_CS6ABCR 0xfec1001c |
