1*529c1f20SDavid du Colombier #include <u.h>
2*529c1f20SDavid du Colombier #include "dat.h"
3*529c1f20SDavid du Colombier #include "fns.h"
4*529c1f20SDavid du Colombier
5*529c1f20SDavid du Colombier enum {
6*529c1f20SDavid du Colombier QSPI_CFG,
7*529c1f20SDavid du Colombier QSPI_STATUS,
8*529c1f20SDavid du Colombier QSPI_EN = 5,
9*529c1f20SDavid du Colombier QSPI_TXD4 = 7,
10*529c1f20SDavid du Colombier QSPI_RXD,
11*529c1f20SDavid du Colombier QSPI_TXD1 = 32,
12*529c1f20SDavid du Colombier QSPI_TXD2,
13*529c1f20SDavid du Colombier QSPI_TXD3
14*529c1f20SDavid du Colombier };
15*529c1f20SDavid du Colombier
16*529c1f20SDavid du Colombier #define QSPI0 ((void *) 0xE000D000)
17*529c1f20SDavid du Colombier
18*529c1f20SDavid du Colombier static u32int
cmd(ulong * r,int sz,u32int c)19*529c1f20SDavid du Colombier cmd(ulong *r, int sz, u32int c)
20*529c1f20SDavid du Colombier {
21*529c1f20SDavid du Colombier if(sz == 4)
22*529c1f20SDavid du Colombier r[QSPI_TXD4] = c;
23*529c1f20SDavid du Colombier else
24*529c1f20SDavid du Colombier r[QSPI_TXD1 + sz - 1] = c;
25*529c1f20SDavid du Colombier r[QSPI_CFG] |= 1<<16;
26*529c1f20SDavid du Colombier while((r[QSPI_STATUS] & (1<<2|1<<4)) != (1<<2|1<<4))
27*529c1f20SDavid du Colombier ;
28*529c1f20SDavid du Colombier return r[QSPI_RXD];
29*529c1f20SDavid du Colombier }
30*529c1f20SDavid du Colombier
31*529c1f20SDavid du Colombier void
flash(void)32*529c1f20SDavid du Colombier flash(void)
33*529c1f20SDavid du Colombier {
34*529c1f20SDavid du Colombier ulong *r;
35*529c1f20SDavid du Colombier
36*529c1f20SDavid du Colombier r = QSPI0;
37*529c1f20SDavid du Colombier r[QSPI_CFG] = 1<<31 | 1<<19 | 3<<6 | 1<<15 | 1<<14 | 1<<10 | 1<<3 | 1;
38*529c1f20SDavid du Colombier r[QSPI_CFG] &= ~(1<<10);
39*529c1f20SDavid du Colombier r[QSPI_EN] = 1;
40*529c1f20SDavid du Colombier cmd(r, 1, 0x06);
41*529c1f20SDavid du Colombier // cmd(r, 3, 0xD8);
42*529c1f20SDavid du Colombier for(;;)
43*529c1f20SDavid du Colombier print("%x\n", cmd(r, 2, 0x05));
44*529c1f20SDavid du Colombier
45*529c1f20SDavid du Colombier }
46