xref: /plan9-contrib/sys/src/9/omap/io.h (revision b3b810bf5ee40a27c8f8f139cc4630e599836cfa)
1*b3b810bfSDavid du Colombier /*
2*b3b810bfSDavid du Colombier  * the ``general-purpose'' memory controller.
3*b3b810bfSDavid du Colombier  * only works with flash memory.
4*b3b810bfSDavid du Colombier  */
5*b3b810bfSDavid du Colombier 
6*b3b810bfSDavid du Colombier enum {
7*b3b810bfSDavid du Colombier 	/* syscfg bits */
8*b3b810bfSDavid du Colombier 	Idlemask	= MASK(2) << 3,
9*b3b810bfSDavid du Colombier 	Noidle		= 1 << 3,
10*b3b810bfSDavid du Colombier 
11*b3b810bfSDavid du Colombier 	/* config bits */
12*b3b810bfSDavid du Colombier 	Postnandwrites	= 1<<0,	/* force nand reg. writes to be posted */
13*b3b810bfSDavid du Colombier 
14*b3b810bfSDavid du Colombier 	/* indices of cscfg[].cfg[] */
15*b3b810bfSDavid du Colombier 	Csctl		= 1 - 1,		/* chip-select signal ctl */
16*b3b810bfSDavid du Colombier 	Csmap		= 7 - 1,		/* chip-select addr map cfg */
17*b3b810bfSDavid du Colombier 
18*b3b810bfSDavid du Colombier 	/* Csctl bits */
19*b3b810bfSDavid du Colombier 	Muxadddata	= 1 << 9,
20*b3b810bfSDavid du Colombier 	Devtypemask	= MASK(2) << 10,
21*b3b810bfSDavid du Colombier 	Devtypenor	= 0 << 10,
22*b3b810bfSDavid du Colombier 	Devtypenand	= 2 << 10,
23*b3b810bfSDavid du Colombier 	Devsizemask	= 1 << 12,
24*b3b810bfSDavid du Colombier 	Devsize8	= 0 << 12,
25*b3b810bfSDavid du Colombier 	Devsize16	= 1 << 12,
26*b3b810bfSDavid du Colombier 	Writesync	= 1 << 27,
27*b3b810bfSDavid du Colombier 	Readsync	= 1 << 29,
28*b3b810bfSDavid du Colombier 
29*b3b810bfSDavid du Colombier 	/* Csmap bits */
30*b3b810bfSDavid du Colombier 	Csvalid		= 1 << 6,
31*b3b810bfSDavid du Colombier 	MB16		= 017 << 8,		/* 16MB size */
32*b3b810bfSDavid du Colombier 	MB128		= 010 << 8,		/* 128MB size */
33*b3b810bfSDavid du Colombier };
34*b3b810bfSDavid du Colombier 
35*b3b810bfSDavid du Colombier typedef struct Gpmc Gpmc;
36*b3b810bfSDavid du Colombier typedef struct Gpmccs Gpmccs;
37*b3b810bfSDavid du Colombier 
38*b3b810bfSDavid du Colombier /*
39*b3b810bfSDavid du Colombier  * configuration for non-dram (e.g., flash) memory
40*b3b810bfSDavid du Colombier  */
41*b3b810bfSDavid du Colombier struct Gpmc {				/* hw registers */
42*b3b810bfSDavid du Colombier 	uchar	_pad0[0x10];
43*b3b810bfSDavid du Colombier 	ulong	syscfg;
44*b3b810bfSDavid du Colombier 	ulong	syssts;
45*b3b810bfSDavid du Colombier 	ulong	irqsts;
46*b3b810bfSDavid du Colombier 	ulong	irqenable;
47*b3b810bfSDavid du Colombier 	uchar	_pad1[0x40 - 0x20];
48*b3b810bfSDavid du Colombier 	ulong	tmout_ctl;
49*b3b810bfSDavid du Colombier 	ulong	erraddr;
50*b3b810bfSDavid du Colombier 	ulong	errtype;
51*b3b810bfSDavid du Colombier 	ulong	_pad7;
52*b3b810bfSDavid du Colombier 	ulong	config;
53*b3b810bfSDavid du Colombier 	ulong	sts;
54*b3b810bfSDavid du Colombier 	uchar	_pad2[0x60 - 0x58];
55*b3b810bfSDavid du Colombier 
56*b3b810bfSDavid du Colombier 	/* chip-select config */
57*b3b810bfSDavid du Colombier 	struct Gpmccs {
58*b3b810bfSDavid du Colombier 		ulong	cfg[7];
59*b3b810bfSDavid du Colombier 		ulong	nandcmd;
60*b3b810bfSDavid du Colombier 		ulong	nandaddr;
61*b3b810bfSDavid du Colombier 		ulong	nanddata;
62*b3b810bfSDavid du Colombier 		ulong	_pad6[2];
63*b3b810bfSDavid du Colombier 	} cscfg[8];
64*b3b810bfSDavid du Colombier 
65*b3b810bfSDavid du Colombier 	/* prefetch */
66*b3b810bfSDavid du Colombier 	ulong	prefcfg[2];
67*b3b810bfSDavid du Colombier 	ulong	_pad8;
68*b3b810bfSDavid du Colombier 	ulong	prefctl;
69*b3b810bfSDavid du Colombier 	ulong	prefsts;
70*b3b810bfSDavid du Colombier 
71*b3b810bfSDavid du Colombier 	/* ecc */
72*b3b810bfSDavid du Colombier 	ulong	ecccfg;
73*b3b810bfSDavid du Colombier 	ulong	eccctl;
74*b3b810bfSDavid du Colombier 	ulong	eccsize;
75*b3b810bfSDavid du Colombier 	ulong	eccres[9];
76*b3b810bfSDavid du Colombier 	uchar	_pad3[0x240 - 0x224];
77*b3b810bfSDavid du Colombier 
78*b3b810bfSDavid du Colombier 	/* bch */
79*b3b810bfSDavid du Colombier 	ulong	bchres[8][4];
80*b3b810bfSDavid du Colombier 	uchar	_pad4[0x2d0 - 0x2c0];
81*b3b810bfSDavid du Colombier 	ulong	bchswdata;
82*b3b810bfSDavid du Colombier };
83