dma-register.h revision 8b1935e6a36b0967efc593d67ed3aebbfbc1f5b1
18b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* 28b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * SH4 CPU-specific DMA definitions, used by both DMA drivers 38b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * 48b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> 58b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * 68b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * This program is free software; you can redistribute it and/or modify 78b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * it under the terms of the GNU General Public License version 2 as 88b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski * published by the Free Software Foundation. 98b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski */ 108b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#ifndef CPU_DMA_REGISTER_H 118b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CPU_DMA_REGISTER_H 128b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 138b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* SH7751/7760/7780 DMA IRQ sources */ 148b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 158b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#ifdef CONFIG_CPU_SH4A 168b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 178b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define DMAOR_INIT DMAOR_DME 188b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 198b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#if defined(CONFIG_CPU_SUBTYPE_SH7343) || \ 208b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski defined(CONFIG_CPU_SUBTYPE_SH7730) 218b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 228b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 238b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 248b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 258b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7722) 268b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 278b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 288b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0x00300000 298b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ 308b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ 318b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski defined(CONFIG_CPU_SUBTYPE_SH7764) 328b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 338b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 348b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 358b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 368b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7723) 378b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 388b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 398b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 408b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 418b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7724) 428b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 438b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 448b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0x00600000 458b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ 468b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7780) 478b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 488b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 498b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 508b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 518b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#else /* SH7785 */ 528b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 538b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 548b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 558b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 568b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif 578b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 588b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* Transmit sizes and respective CHCR register values */ 598b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetskienum { 608b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_8BIT = 0, 618b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_16BIT = 1, 628b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_32BIT = 2, 638b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_64BIT = 7, 648b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_128BIT = 3, 658b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT = 4, 668b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_128BIT_BLK = 0xb, 678b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT_BLK = 0xc, 688b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski}; 698b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 708b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* log2(size / 8) - used to calculate number of transfers */ 718b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_SHIFT { \ 728b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_8BIT] = 0, \ 738b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_16BIT] = 1, \ 748b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_32BIT] = 2, \ 758b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_64BIT] = 3, \ 768b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_128BIT] = 4, \ 778b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT] = 5, \ 788b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_128BIT_BLK] = 4, \ 798b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT_BLK] = 5, \ 808b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski} 818b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 828b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_INDEX2VAL(i) ((((i) & 3) << CHCR_TS_LOW_SHIFT) | \ 838b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski ((((i) >> 2) & 3) << CHCR_TS_HIGH_SHIFT)) 848b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 858b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#else /* CONFIG_CPU_SH4A */ 868b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 878b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define DMAOR_INIT (0x8000 | DMAOR_DME) 888b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 898b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x70 908b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 4 918b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 928b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 938b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 948b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* Transmit sizes and respective CHCR register values */ 958b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetskienum { 968b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_8BIT = 1, 978b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_16BIT = 2, 988b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_32BIT = 3, 998b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_64BIT = 0, 1008b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT = 4, 1018b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski}; 1028b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 1038b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* log2(size / 8) - used to calculate number of transfers */ 1048b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_SHIFT { \ 1058b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_8BIT] = 0, \ 1068b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_16BIT] = 1, \ 1078b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_32BIT] = 2, \ 1088b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_64BIT] = 3, \ 1098b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT] = 5, \ 1108b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski} 1118b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 1128b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_INDEX2VAL(i) (((i) & 7) << CHCR_TS_LOW_SHIFT) 1138b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 1148b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif /* CONFIG_CPU_SH4A */ 1158b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 1168b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif 117