1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 24baa9922SRussell King /* 34baa9922SRussell King * arch/arm/include/asm/hardware/iomd.h 44baa9922SRussell King * 54baa9922SRussell King * Copyright (C) 1999 Russell King 64baa9922SRussell King * 74baa9922SRussell King * This file contains information out the IOMD ASIC used in the 84baa9922SRussell King * Acorn RiscPC and subsequently integrated into the CLPS7500 chips. 94baa9922SRussell King */ 104baa9922SRussell King #ifndef __ASMARM_HARDWARE_IOMD_H 114baa9922SRussell King #define __ASMARM_HARDWARE_IOMD_H 124baa9922SRussell King 134baa9922SRussell King 144baa9922SRussell King #ifndef __ASSEMBLY__ 154baa9922SRussell King 164baa9922SRussell King /* 174baa9922SRussell King * We use __raw_base variants here so that we give the compiler the 184baa9922SRussell King * chance to keep IOC_BASE in a register. 194baa9922SRussell King */ 204baa9922SRussell King #define iomd_readb(off) __raw_readb(IOMD_BASE + (off)) 214baa9922SRussell King #define iomd_readl(off) __raw_readl(IOMD_BASE + (off)) 224baa9922SRussell King #define iomd_writeb(val,off) __raw_writeb(val, IOMD_BASE + (off)) 234baa9922SRussell King #define iomd_writel(val,off) __raw_writel(val, IOMD_BASE + (off)) 244baa9922SRussell King 254baa9922SRussell King #endif 264baa9922SRussell King 274baa9922SRussell King #define IOMD_CONTROL (0x000) 284baa9922SRussell King #define IOMD_KARTTX (0x004) 294baa9922SRussell King #define IOMD_KARTRX (0x004) 304baa9922SRussell King #define IOMD_KCTRL (0x008) 314baa9922SRussell King 324baa9922SRussell King #define IOMD_IRQSTATA (0x010) 334baa9922SRussell King #define IOMD_IRQREQA (0x014) 344baa9922SRussell King #define IOMD_IRQCLRA (0x014) 354baa9922SRussell King #define IOMD_IRQMASKA (0x018) 364baa9922SRussell King 374baa9922SRussell King #define IOMD_IRQSTATB (0x020) 384baa9922SRussell King #define IOMD_IRQREQB (0x024) 394baa9922SRussell King #define IOMD_IRQMASKB (0x028) 404baa9922SRussell King 414baa9922SRussell King #define IOMD_FIQSTAT (0x030) 424baa9922SRussell King #define IOMD_FIQREQ (0x034) 434baa9922SRussell King #define IOMD_FIQMASK (0x038) 444baa9922SRussell King 454baa9922SRussell King #define IOMD_T0CNTL (0x040) 464baa9922SRussell King #define IOMD_T0LTCHL (0x040) 474baa9922SRussell King #define IOMD_T0CNTH (0x044) 484baa9922SRussell King #define IOMD_T0LTCHH (0x044) 494baa9922SRussell King #define IOMD_T0GO (0x048) 504baa9922SRussell King #define IOMD_T0LATCH (0x04c) 514baa9922SRussell King 524baa9922SRussell King #define IOMD_T1CNTL (0x050) 534baa9922SRussell King #define IOMD_T1LTCHL (0x050) 544baa9922SRussell King #define IOMD_T1CNTH (0x054) 554baa9922SRussell King #define IOMD_T1LTCHH (0x054) 564baa9922SRussell King #define IOMD_T1GO (0x058) 574baa9922SRussell King #define IOMD_T1LATCH (0x05c) 584baa9922SRussell King 594baa9922SRussell King #define IOMD_ROMCR0 (0x080) 604baa9922SRussell King #define IOMD_ROMCR1 (0x084) 614baa9922SRussell King #ifdef CONFIG_ARCH_RPC 624baa9922SRussell King #define IOMD_DRAMCR (0x088) 634baa9922SRussell King #endif 644baa9922SRussell King #define IOMD_REFCR (0x08C) 654baa9922SRussell King 664baa9922SRussell King #define IOMD_FSIZE (0x090) 674baa9922SRussell King #define IOMD_ID0 (0x094) 684baa9922SRussell King #define IOMD_ID1 (0x098) 694baa9922SRussell King #define IOMD_VERSION (0x09C) 704baa9922SRussell King 714baa9922SRussell King #ifdef CONFIG_ARCH_RPC 724baa9922SRussell King #define IOMD_MOUSEX (0x0A0) 734baa9922SRussell King #define IOMD_MOUSEY (0x0A4) 744baa9922SRussell King #endif 754baa9922SRussell King 764baa9922SRussell King #ifdef CONFIG_ARCH_RPC 774baa9922SRussell King #define IOMD_DMATCR (0x0C0) 784baa9922SRussell King #endif 794baa9922SRussell King #define IOMD_IOTCR (0x0C4) 804baa9922SRussell King #define IOMD_ECTCR (0x0C8) 814baa9922SRussell King #ifdef CONFIG_ARCH_RPC 824baa9922SRussell King #define IOMD_DMAEXT (0x0CC) 834baa9922SRussell King #endif 844baa9922SRussell King 854baa9922SRussell King #ifdef CONFIG_ARCH_RPC 864baa9922SRussell King #define DMA_EXT_IO0 1 874baa9922SRussell King #define DMA_EXT_IO1 2 884baa9922SRussell King #define DMA_EXT_IO2 4 894baa9922SRussell King #define DMA_EXT_IO3 8 904baa9922SRussell King 914baa9922SRussell King #define IOMD_IO0CURA (0x100) 924baa9922SRussell King #define IOMD_IO0ENDA (0x104) 934baa9922SRussell King #define IOMD_IO0CURB (0x108) 944baa9922SRussell King #define IOMD_IO0ENDB (0x10C) 954baa9922SRussell King #define IOMD_IO0CR (0x110) 964baa9922SRussell King #define IOMD_IO0ST (0x114) 974baa9922SRussell King 984baa9922SRussell King #define IOMD_IO1CURA (0x120) 994baa9922SRussell King #define IOMD_IO1ENDA (0x124) 1004baa9922SRussell King #define IOMD_IO1CURB (0x128) 1014baa9922SRussell King #define IOMD_IO1ENDB (0x12C) 1024baa9922SRussell King #define IOMD_IO1CR (0x130) 1034baa9922SRussell King #define IOMD_IO1ST (0x134) 1044baa9922SRussell King 1054baa9922SRussell King #define IOMD_IO2CURA (0x140) 1064baa9922SRussell King #define IOMD_IO2ENDA (0x144) 1074baa9922SRussell King #define IOMD_IO2CURB (0x148) 1084baa9922SRussell King #define IOMD_IO2ENDB (0x14C) 1094baa9922SRussell King #define IOMD_IO2CR (0x150) 1104baa9922SRussell King #define IOMD_IO2ST (0x154) 1114baa9922SRussell King 1124baa9922SRussell King #define IOMD_IO3CURA (0x160) 1134baa9922SRussell King #define IOMD_IO3ENDA (0x164) 1144baa9922SRussell King #define IOMD_IO3CURB (0x168) 1154baa9922SRussell King #define IOMD_IO3ENDB (0x16C) 1164baa9922SRussell King #define IOMD_IO3CR (0x170) 1174baa9922SRussell King #define IOMD_IO3ST (0x174) 1184baa9922SRussell King #endif 1194baa9922SRussell King 1204baa9922SRussell King #define IOMD_SD0CURA (0x180) 1214baa9922SRussell King #define IOMD_SD0ENDA (0x184) 1224baa9922SRussell King #define IOMD_SD0CURB (0x188) 1234baa9922SRussell King #define IOMD_SD0ENDB (0x18C) 1244baa9922SRussell King #define IOMD_SD0CR (0x190) 1254baa9922SRussell King #define IOMD_SD0ST (0x194) 1264baa9922SRussell King 1274baa9922SRussell King #ifdef CONFIG_ARCH_RPC 1284baa9922SRussell King #define IOMD_SD1CURA (0x1A0) 1294baa9922SRussell King #define IOMD_SD1ENDA (0x1A4) 1304baa9922SRussell King #define IOMD_SD1CURB (0x1A8) 1314baa9922SRussell King #define IOMD_SD1ENDB (0x1AC) 1324baa9922SRussell King #define IOMD_SD1CR (0x1B0) 1334baa9922SRussell King #define IOMD_SD1ST (0x1B4) 1344baa9922SRussell King #endif 1354baa9922SRussell King 1364baa9922SRussell King #define IOMD_CURSCUR (0x1C0) 1374baa9922SRussell King #define IOMD_CURSINIT (0x1C4) 1384baa9922SRussell King 1394baa9922SRussell King #define IOMD_VIDCUR (0x1D0) 1404baa9922SRussell King #define IOMD_VIDEND (0x1D4) 1414baa9922SRussell King #define IOMD_VIDSTART (0x1D8) 1424baa9922SRussell King #define IOMD_VIDINIT (0x1DC) 1434baa9922SRussell King #define IOMD_VIDCR (0x1E0) 1444baa9922SRussell King 1454baa9922SRussell King #define IOMD_DMASTAT (0x1F0) 1464baa9922SRussell King #define IOMD_DMAREQ (0x1F4) 1474baa9922SRussell King #define IOMD_DMAMASK (0x1F8) 1484baa9922SRussell King 1494baa9922SRussell King #define DMA_END_S (1 << 31) 1504baa9922SRussell King #define DMA_END_L (1 << 30) 1514baa9922SRussell King 1524baa9922SRussell King #define DMA_CR_C 0x80 1534baa9922SRussell King #define DMA_CR_D 0x40 1544baa9922SRussell King #define DMA_CR_E 0x20 1554baa9922SRussell King 1564baa9922SRussell King #define DMA_ST_OFL 4 1574baa9922SRussell King #define DMA_ST_INT 2 1584baa9922SRussell King #define DMA_ST_AB 1 1594baa9922SRussell King 1604baa9922SRussell King /* 1614baa9922SRussell King * DMA (MEMC) compatibility 1624baa9922SRussell King */ 1634baa9922SRussell King #define HALF_SAM vram_half_sam 1644baa9922SRussell King #define VDMA_ALIGNMENT (HALF_SAM * 2) 1654baa9922SRussell King #define VDMA_XFERSIZE (HALF_SAM) 1664baa9922SRussell King #define VDMA_INIT IOMD_VIDINIT 1674baa9922SRussell King #define VDMA_START IOMD_VIDSTART 1684baa9922SRussell King #define VDMA_END IOMD_VIDEND 1694baa9922SRussell King 1704baa9922SRussell King #ifndef __ASSEMBLY__ 1714baa9922SRussell King extern unsigned int vram_half_sam; 1724baa9922SRussell King #define video_set_dma(start,end,offset) \ 1734baa9922SRussell King do { \ 1744baa9922SRussell King outl (SCREEN_START + start, VDMA_START); \ 1754baa9922SRussell King outl (SCREEN_START + end - VDMA_XFERSIZE, VDMA_END); \ 1764baa9922SRussell King if (offset >= end - VDMA_XFERSIZE) \ 1774baa9922SRussell King offset |= 0x40000000; \ 1784baa9922SRussell King outl (SCREEN_START + offset, VDMA_INIT); \ 1794baa9922SRussell King } while (0) 1804baa9922SRussell King #endif 1814baa9922SRussell King 1824baa9922SRussell King #endif 183