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 199cdb81c7fa5b429389b84978088a34f935238386Nobuhiro Iwamatsu#if defined(CONFIG_CPU_SUBTYPE_SH7343) 208b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 218b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 228b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 238b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 24c8e3149ba7de24dfd4c37bb0df23c878cdecd8d4Guennadi Liakhovetski#elif defined(CONFIG_CPU_SUBTYPE_SH7722) || \ 259cdb81c7fa5b429389b84978088a34f935238386Nobuhiro Iwamatsu defined(CONFIG_CPU_SUBTYPE_SH7723) || \ 26050d4cc7029b73997d6821d89487b1f777d4873cPaul Mundt defined(CONFIG_CPU_SUBTYPE_SH7724) || \ 279cdb81c7fa5b429389b84978088a34f935238386Nobuhiro Iwamatsu defined(CONFIG_CPU_SUBTYPE_SH7730) || \ 28050d4cc7029b73997d6821d89487b1f777d4873cPaul Mundt defined(CONFIG_CPU_SUBTYPE_SH7786) 298b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x00000018 308b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 3 318b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0x00300000 328b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ 33ffe0e190f67f23ecf57aae68888860e69ac0d52eNobuhiro Iwamatsu#elif defined(CONFIG_CPU_SUBTYPE_SH7757) || \ 34ffe0e190f67f23ecf57aae68888860e69ac0d52eNobuhiro Iwamatsu defined(CONFIG_CPU_SUBTYPE_SH7763) || \ 35ffe0e190f67f23ecf57aae68888860e69ac0d52eNobuhiro Iwamatsu defined(CONFIG_CPU_SUBTYPE_SH7780) || \ 36ffe0e190f67f23ecf57aae68888860e69ac0d52eNobuhiro Iwamatsu defined(CONFIG_CPU_SUBTYPE_SH7785) 378ac53ed537a4a32d81279d37476bfaeb2aff15abYoshihiro Shimoda#define CHCR_TS_LOW_MASK 0x00000018 388ac53ed537a4a32d81279d37476bfaeb2aff15abYoshihiro Shimoda#define CHCR_TS_LOW_SHIFT 3 398ac53ed537a4a32d81279d37476bfaeb2aff15abYoshihiro Shimoda#define CHCR_TS_HIGH_MASK 0x00100000 408ac53ed537a4a32d81279d37476bfaeb2aff15abYoshihiro Shimoda#define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ 418b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif 428b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 438b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* Transmit sizes and respective CHCR register values */ 448b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetskienum { 458b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_8BIT = 0, 468b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_16BIT = 1, 478b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_32BIT = 2, 488b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_64BIT = 7, 498b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_128BIT = 3, 508b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT = 4, 518b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_128BIT_BLK = 0xb, 528b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT_BLK = 0xc, 538b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski}; 548b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 558b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* log2(size / 8) - used to calculate number of transfers */ 568b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_SHIFT { \ 578b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_8BIT] = 0, \ 588b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_16BIT] = 1, \ 598b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_32BIT] = 2, \ 608b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_64BIT] = 3, \ 618b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_128BIT] = 4, \ 628b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT] = 5, \ 638b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_128BIT_BLK] = 4, \ 648b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT_BLK] = 5, \ 658b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski} 668b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 678b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_INDEX2VAL(i) ((((i) & 3) << CHCR_TS_LOW_SHIFT) | \ 68c2fe3092e5b85c8c65ebac88a3ffa4355e51a9b6Guennadi Liakhovetski (((i) & 0xc) << CHCR_TS_HIGH_SHIFT)) 698b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 708b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#else /* CONFIG_CPU_SH4A */ 718b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 728b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define DMAOR_INIT (0x8000 | DMAOR_DME) 738b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 748b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_MASK 0x70 758b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_LOW_SHIFT 4 768b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_MASK 0 778b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define CHCR_TS_HIGH_SHIFT 0 788b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 798b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* Transmit sizes and respective CHCR register values */ 808b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetskienum { 818b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_8BIT = 1, 828b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_16BIT = 2, 838b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_32BIT = 3, 848b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_64BIT = 0, 858b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski XMIT_SZ_256BIT = 4, 868b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski}; 878b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 888b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski/* log2(size / 8) - used to calculate number of transfers */ 898b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_SHIFT { \ 908b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_8BIT] = 0, \ 918b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_16BIT] = 1, \ 928b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_32BIT] = 2, \ 938b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_64BIT] = 3, \ 948b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski [XMIT_SZ_256BIT] = 5, \ 958b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski} 968b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 978b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#define TS_INDEX2VAL(i) (((i) & 7) << CHCR_TS_LOW_SHIFT) 988b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 998b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif /* CONFIG_CPU_SH4A */ 1008b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski 1018b1935e6a36b0967efc593d67ed3aebbfbc1f5b1Guennadi Liakhovetski#endif 102