/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License. See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * mc.h: Definitions for SGI Memory Controller
 *
 * Copyright (C) 1996 David S. Miller
 * Copyright (C) 1999 Ralf Baechle
 * Copyright (C) 1999 Silicon Graphics, Inc.
 */

#ifndef _SGI_MC_H
#define _SGI_MC_H

struct sgimc_regs {
	u32 _unused0;
	volatile u32 cpuctrl0;	/* CPU control register 0, readwrite */
#define SGIMC_CCTRL0_REFS	0x0000000f /* REFS mask */
#define SGIMC_CCTRL0_EREFRESH	0x00000010 /* Memory refresh enable */
#define SGIMC_CCTRL0_EPERRGIO	0x00000020 /* GIO parity error enable */
#define SGIMC_CCTRL0_EPERRMEM	0x00000040 /* Main mem parity error enable */
#define SGIMC_CCTRL0_EPERRCPU	0x00000080 /* CPU bus parity error enable */
#define SGIMC_CCTRL0_WDOG	0x00000100 /* Watchdog timer enable */
#define SGIMC_CCTRL0_SYSINIT	0x00000200 /* System init bit */
#define SGIMC_CCTRL0_GFXRESET	0x00000400 /* Graphics interface reset */
#define SGIMC_CCTRL0_EISALOCK	0x00000800 /* Lock CPU from memory for EISA */
#define SGIMC_CCTRL0_EPERRSCMD	0x00001000 /* SysCMD bus parity error enable */
#define SGIMC_CCTRL0_IENAB	0x00002000 /* Allow interrupts from MC */
#define SGIMC_CCTRL0_ESNOOP	0x00004000 /* Snooping I/O enable */
#define SGIMC_CCTRL0_EPROMWR	0x00008000 /* Prom writes from cpu enable */
#define SGIMC_CCTRL0_WRESETPMEM	0x00010000 /* Perform warm reset, preserves mem */
#define SGIMC_CCTRL0_LENDIAN	0x00020000 /* Put MC in little-endian mode */
#define SGIMC_CCTRL0_WRESETDMEM	0x00040000 /* Warm reset, destroys mem contents */
#define SGIMC_CCTRL0_CMEMBADPAR	0x02000000 /* Generate bad perr from cpu to mem */
#define SGIMC_CCTRL0_R4KNOCHKPARR 0x04000000 /* Don't chk parity on mem data reads */
#define SGIMC_CCTRL0_GIOBTOB	0x08000000 /* Allow GIO back to back writes */
	u32 _unused1;
	volatile u32 cpuctrl1;	/* CPU control register 1, readwrite */
#define SGIMC_CCTRL1_EGIOTIMEO	0x00000010 /* GIO bus timeout enable */
#define SGIMC_CCTRL1_FIXEDEHPC	0x00001000 /* Fixed HPC endianness */
#define SGIMC_CCTRL1_LITTLEHPC	0x00002000 /* Little endian HPC */
#define SGIMC_CCTRL1_FIXEDEEXP0	0x00004000 /* Fixed EXP0 endianness */
#define SGIMC_CCTRL1_LITTLEEXP0	0x00008000 /* Little endian EXP0 */
#define SGIMC_CCTRL1_FIXEDEEXP1	0x00010000 /* Fixed EXP1 endianness */
#define SGIMC_CCTRL1_LITTLEEXP1	0x00020000 /* Little endian EXP1 */

	u32 _unused2;
	volatile u32 watchdogt;	/* Watchdog reg rdonly, write clears */

	u32 _unused3;
	volatile u32 systemid;	/* MC system ID register, readonly */
#define SGIMC_SYSID_MASKREV	0x0000000f /* Revision of MC controller */
#define SGIMC_SYSID_EPRESENT	0x00000010 /* Indicates presence of EISA bus */

	u32 _unused4[3];
	volatile u32 divider;	/* Divider reg for RPSS */

	u32 _unused5;
	u32 eeprom;		/* EEPROM byte reg for r4k */
#define SGIMC_EEPROM_PRE	0x00000001 /* eeprom chip PRE pin assertion */
#define SGIMC_EEPROM_CSEL	0x00000002 /* Active high, eeprom chip select */
#define SGIMC_EEPROM_SECLOCK	0x00000004 /* EEPROM serial clock */
#define SGIMC_EEPROM_SDATAO	0x00000008 /* Serial EEPROM data-out */
#define SGIMC_EEPROM_SDATAI	0x00000010 /* Serial EEPROM data-in */

	u32 _unused6[3];
	volatile u32 rcntpre;	/* Preload refresh counter */

	u32 _unused7;
	volatile u32 rcounter;	/* Readonly refresh counter */

	u32 _unused8[13];
	volatile u32 giopar;	/* Parameter word for GIO64 */
#define SGIMC_GIOPAR_HPC64	0x00000001 /* HPC talks to GIO using 64-bits */
#define SGIMC_GIOPAR_GFX64	0x00000002 /* GFX talks to GIO using 64-bits */
#define SGIMC_GIOPAR_EXP064	0x00000004 /* EXP(slot0) talks using 64-bits */
#define SGIMC_GIOPAR_EXP164	0x00000008 /* EXP(slot1) talks using 64-bits */
#define SGIMC_GIOPAR_EISA64	0x00000010 /* EISA bus talks 64-bits to GIO */
#define SGIMC_GIOPAR_HPC264	0x00000020 /* 2nd HPX talks 64-bits to GIO */
#define SGIMC_GIOPAR_RTIMEGFX	0x00000040 /* GFX device has realtime attr */
#define SGIMC_GIOPAR_RTIMEEXP0	0x00000080 /* EXP(slot0) has realtime attr */
#define SGIMC_GIOPAR_RTIMEEXP1	0x00000100 /* EXP(slot1) has realtime attr */
#define SGIMC_GIOPAR_MASTEREISA	0x00000200 /* EISA bus can act as bus master */
#define SGIMC_GIOPAR_ONEBUS	0x00000400 /* Exists one GIO64 pipelined bus */
#define SGIMC_GIOPAR_MASTERGFX	0x00000800 /* GFX can act as a bus master */
#define SGIMC_GIOPAR_MASTEREXP0	0x00001000 /* EXP(slot0) can bus master */
#define SGIMC_GIOPAR_MASTEREXP1	0x00002000 /* EXP(slot1) can bus master */
#define SGIMC_GIOPAR_PLINEEXP0	0x00004000 /* EXP(slot0) has pipeline attr */
#define SGIMC_GIOPAR_PLINEEXP1	0x00008000 /* EXP(slot1) has pipeline attr */

	u32 _unused9;
	volatile u32 cputp;	/* CPU bus arb time period */

	u32 _unused10[3];
	volatile u32 lbursttp;	/* Time period for long bursts */

	/* MC chip can drive up to 4 bank 4 SIMMs each. All SIMMs in bank must
	 * be the same size. The size encoding for supported SIMMs is bellow */
	u32 _unused11[9];
	volatile u32 mconfig0;	/* Memory config register zero */
	u32 _unused12;
	volatile u32 mconfig1;	/* Memory config register one */
#define SGIMC_MCONFIG_BASEADDR	0x000000ff /* Base address of bank*/
#define SGIMC_MCONFIG_RMASK	0x00001f00 /* Ram config bitmask */
#define SGIMC_MCONFIG_BVALID	0x00002000 /* Bank is valid */
#define SGIMC_MCONFIG_SBANKS	0x00004000 /* Number of subbanks */

	u32 _unused13;
	volatile u32 cmacc;        /* Mem access config for CPU */
	u32 _unused14;
	volatile u32 gmacc;        /* Mem access config for GIO */

	/* This define applies to both cmacc and gmacc registers above. */
#define SGIMC_MACC_ALIASBIG	0x20000000 /* 512MB home for alias */

	/* Error address/status regs from GIO and CPU perspectives. */
	u32 _unused15;
	volatile u32 cerr;	/* Error address reg for CPU */
	u32 _unused16;
	volatile u32 cstat;	/* Status reg for CPU */
#define SGIMC_CSTAT_RD		0x00000100 /* read parity error */
#define SGIMC_CSTAT_PAR		0x00000200 /* CPU parity error */
#define SGIMC_CSTAT_ADDR	0x00000400 /* memory bus error bad addr */
#define SGIMC_CSTAT_SYSAD_PAR	0x00000800 /* sysad parity error */
#define SGIMC_CSTAT_SYSCMD_PAR	0x00001000 /* syscmd parity error */
#define SGIMC_CSTAT_BAD_DATA	0x00002000 /* bad data identifier */
#define SGIMC_CSTAT_PAR_MASK	0x00001f00 /* parity error mask */
#define SGIMC_CSTAT_RD_PAR	(SGIMC_CSTAT_RD | SGIMC_CSTAT_PAR)

	u32 _unused17;
	volatile u32 gerr;	/* Error address reg for GIO */
	u32 _unused18;
	volatile u32 gstat;	/* Status reg for GIO */
#define SGIMC_GSTAT_RD		0x00000100 /* read parity error */
#define SGIMC_GSTAT_WR		0x00000200 /* write parity error */
#define SGIMC_GSTAT_TIME	0x00000400 /* GIO bus timed out */
#define SGIMC_GSTAT_PROM	0x00000800 /* write to PROM when PROM_EN not set */
#define SGIMC_GSTAT_ADDR	0x00001000 /* parity error on addr cycle */
#define SGIMC_GSTAT_BC		0x00002000 /* parity error on byte count cycle */
#define SGIMC_GSTAT_PIO_RD	0x00004000 /* read data parity on pio */
#define SGIMC_GSTAT_PIO_WR	0x00008000 /* write data parity on pio */

	/* Special hard bus locking registers. */
	u32 _unused19;
	volatile u32 syssembit;		/* Uni-bit system semaphore */
	u32 _unused20;
	volatile u32 mlock;		/* Global GIO memory access lock */
	u32 _unused21;
	volatile u32 elock;		/* Locks EISA from GIO accesses */

	/* GIO dma control registers. */
	u32 _unused22[15];
	volatile u32 gio_dma_trans;	/* DMA mask to translation GIO addrs */
	u32 _unused23;
	volatile u32 gio_dma_sbits;	/* DMA GIO addr substitution bits */
	u32 _unused24;
	volatile u32 dma_intr_cause;	/* DMA IRQ cause indicator bits */
	u32 _unused25;
	volatile u32 dma_ctrl;		/* Main DMA control reg */

	/* DMA TLB entry 0 */
	u32 _unused26[5];
	volatile u32 dtlb_hi0;
	u32 _unused27;
	volatile u32 dtlb_lo0;

	/* DMA TLB entry 1 */
	u32 _unused28;
	volatile u32 dtlb_hi1;
	u32 _unused29;
	volatile u32 dtlb_lo1;

	/* DMA TLB entry 2 */
	u32 _unused30;
	volatile u32 dtlb_hi2;
	u32 _unused31;
	volatile u32 dtlb_lo2;

	/* DMA TLB entry 3 */
	u32 _unused32;
	volatile u32 dtlb_hi3;
	u32 _unused33;
	volatile u32 dtlb_lo3;

	u32 _unused34[0x0392];

	u32 _unused35;
	volatile u32 rpsscounter;	/* Chirps at 100ns */

	u32 _unused36[0x1000/4-2*4];

	u32 _unused37;
	volatile u32 maddronly;		/* Address DMA goes at */
	u32 _unused38;
	volatile u32 maddrpdeflts;	/* Same as above, plus set defaults */
	u32 _unused39;
	volatile u32 dmasz;		/* DMA count */
	u32 _unused40;
	volatile u32 ssize;		/* DMA stride size */
	u32 _unused41;
	volatile u32 gmaddronly;	/* Set GIO DMA but don't start trans */
	u32 _unused42;
	volatile u32 dmaddnpgo;		/* Set GIO DMA addr + start transfer */
	u32 _unused43;
	volatile u32 dmamode;		/* DMA mode config bit settings */
	u32 _unused44;
	volatile u32 dmaccount;		/* Zoom and byte count for DMA */
	u32 _unused45;
	volatile u32 dmastart;		/* Pedal to the metal. */
	u32 _unused46;
	volatile u32 dmarunning;	/* DMA op is in progress */
	u32 _unused47;
	volatile u32 maddrdefstart;	/* Set dma addr, defaults, and kick it */
};

extern struct sgimc_regs *sgimc;
#define SGIMC_BASE		0x1fa00000	/* physical */

/* Base location of the two ram banks found in IP2[0268] machines. */
#define SGIMC_SEG0_BADDR	0x08000000
#define SGIMC_SEG1_BADDR	0x20000000

/* Maximum size of the above banks are per machine. */
#define SGIMC_SEG0_SIZE_ALL		0x10000000 /* 256MB */
#define SGIMC_SEG1_SIZE_IP20_IP22	0x08000000 /* 128MB */
#define SGIMC_SEG1_SIZE_IP26_IP28	0x20000000 /* 512MB */

extern void sgimc_init(void);

#endif /* _SGI_MC_H */
