12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- * 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;
- };
|