83 lines
1.5 KiB
C
83 lines
1.5 KiB
C
|
/*
|
||
|
* the ``general-purpose'' memory controller.
|
||
|
* only works with flash memory.
|
||
|
*/
|
||
|
|
||
|
enum {
|
||
|
/* syscfg bits */
|
||
|
Idlemask = MASK(2) << 3,
|
||
|
Noidle = 1 << 3,
|
||
|
|
||
|
/* config bits */
|
||
|
Postnandwrites = 1<<0, /* force nand reg. writes to be posted */
|
||
|
|
||
|
/* indices of cscfg[].cfg[] */
|
||
|
Csctl = 1 - 1, /* chip-select signal ctl */
|
||
|
Csmap = 7 - 1, /* chip-select addr map cfg */
|
||
|
|
||
|
/* Csctl bits */
|
||
|
Muxadddata = 1 << 9,
|
||
|
Devtypemask = MASK(2) << 10,
|
||
|
Devtypenor = 0 << 10,
|
||
|
Devtypenand = 2 << 10,
|
||
|
Devsizemask = 1 << 12,
|
||
|
Devsize8 = 0 << 12,
|
||
|
Devsize16 = 1 << 12,
|
||
|
Writesync = 1 << 27,
|
||
|
Readsync = 1 << 29,
|
||
|
|
||
|
/* Csmap bits */
|
||
|
Csvalid = 1 << 6,
|
||
|
MB16 = 017 << 8, /* 16MB size */
|
||
|
MB128 = 010 << 8, /* 128MB size */
|
||
|
};
|
||
|
|
||
|
typedef struct Gpmc Gpmc;
|
||
|
typedef struct Gpmccs Gpmccs;
|
||
|
|
||
|
/*
|
||
|
* configuration for non-dram (e.g., flash) memory
|
||
|
*/
|
||
|
struct Gpmc { /* hw registers */
|
||
|
uchar _pad0[0x10];
|
||
|
ulong syscfg;
|
||
|
ulong syssts;
|
||
|
ulong irqsts;
|
||
|
ulong irqenable;
|
||
|
uchar _pad1[0x40 - 0x20];
|
||
|
ulong tmout_ctl;
|
||
|
ulong erraddr;
|
||
|
ulong errtype;
|
||
|
ulong _pad7;
|
||
|
ulong config;
|
||
|
ulong sts;
|
||
|
uchar _pad2[0x60 - 0x58];
|
||
|
|
||
|
/* chip-select config */
|
||
|
struct Gpmccs {
|
||
|
ulong cfg[7];
|
||
|
ulong nandcmd;
|
||
|
ulong nandaddr;
|
||
|
ulong nanddata;
|
||
|
ulong _pad6[2];
|
||
|
} cscfg[8];
|
||
|
|
||
|
/* prefetch */
|
||
|
ulong prefcfg[2];
|
||
|
ulong _pad8;
|
||
|
ulong prefctl;
|
||
|
ulong prefsts;
|
||
|
|
||
|
/* ecc */
|
||
|
ulong ecccfg;
|
||
|
ulong eccctl;
|
||
|
ulong eccsize;
|
||
|
ulong eccres[9];
|
||
|
uchar _pad3[0x240 - 0x224];
|
||
|
|
||
|
/* bch */
|
||
|
ulong bchres[8][4];
|
||
|
uchar _pad4[0x2d0 - 0x2c0];
|
||
|
ulong bchswdata;
|
||
|
};
|