66: {
67: out_w(SPn_MODE(SP0), 0x2700); // 8bit, CS0, Master, CPU mode
68: out_w(SPn_TIECS(SP0), 0x000f); // CS0: follow the specification by SPn_POL
69: out_w(SPn_POL(SP0), SPIPol);
70: out_w(SPn_ENCLR(SP0), ~0); // interrupt disable
71:
72: out_w(SPn_CONTROL(SP0), 0x0100); // start reset
73: waitUsec(10);
74: out_w(SPn_CONTROL(SP0), 0x0000); // release reset
75: out_w(SPn_CONTROL2(SP0), 0x0000);
76:
97: waitNsec(200);
98: out_w(SPn_POL(SP0), SPIPol ^ (cs ? 0x0001 : 0x0000));
99: waitNsec(200);
110:
111: out_w(SPn_FFCLR(SP0), ~0); // status flag is cleared
112: out_w(SPn_TX_DATA(SP0), (reg << 1) | 1); // send register number
113: out_w(SPn_CONTROL(SP0), 0x0009); // send start
114: pmicWait();
115:
116: out_w(SPn_FFCLR(SP0), ~0); // status flag is cleared
117: out_w(SPn_CONTROL(SP0), 0x0005); // start receive
118: pmicWait();
130:
131: out_w(SPn_FFCLR(SP0), ~0); // status flag is cleared
132: out_w(SPn_TX_DATA(SP0), reg << 1); // send register number
133: out_w(SPn_CONTROL(SP0), 0x0009); // send start
134: pmicWait();
135:
136: out_w(SPn_FFCLR(SP0), ~0); // status flag is cleared
137: out_w(SPn_TX_DATA(SP0), dat); // send data
138: out_w(SPn_CONTROL(SP0), 0x0009); // send start
139: pmicWait();
159: /* set up interrupt controller */
160: out_w(IT0_IDS0, ~0); // CPU: all interrupts disabled
161: out_w(IT0_IDS1, ~0);
162: out_w(IT0_IDS2, ~0);
163: out_w(IT0_IIR, ~0);
164: out_w(IT3_IPI0_CLR, 0x0000003f);
165: out_w(IT3_IDS0, ~0); // DSP: all interrupts disabled
166: out_w(IT3_IDS1, ~0);
167: out_w(IT3_IDS2, ~0);
168: out_w(IT3_IIR, ~0);
169: out_w(IT0_IPI3_CLR, 0x0000003f);
170: out_w(IT0_FID, 0x00000001); // CPU: FIQ disabled
171: out_w(GIO_IIA(GIO_L), 0); // GPIO: interrupt disabled
172: out_w(GIO_IIA(GIO_H), 0);
173: out_w(GIO_IIA(GIO_HH), 0);
174: out_w(GIO_IIA(GIO_HHH), 0);
175: out_w(GIO_GSW(GIO_L), 0); // GPIO: FIQ interrupt disabled
176: out_w(GIO_GSW(GIO_H), 0);
177: out_w(GIO_GSW(GIO_HH), 0);
178: out_w(GIO_GSW(GIO_HHH), 0);
179: out_w(IT0_LIIR, 0x0000000f); // internal interrupt disabled
180: out_w(IT_PINV_CLR0, ~0); // inhibit interrupt polarity inversion
181: out_w(IT_PINV_CLR1, ~0);
182: out_w(IT_PINV_CLR2, ~0);
183: out_w(IT0_IEN0, 0x0c000000); // CPU: GPIO interrupt enabled
184: out_w(IT0_IEN1, 0x003c0000);
185: out_w(IT0_IEN2, 0x00018000);
186:
283: /* all interrupts disabled */
284: out_w(IT0_IDS0, ~0); // CPU: all interrupts disabled
285: out_w(IT0_IDS1, ~0);
286: out_w(IT0_IDS2, ~0);
287: out_w(IT3_IPI0_CLR, 0x0000003f);
288: out_w(IT3_IDS0, ~0); // DSP: all interrupts disabled
289: out_w(IT3_IDS1, ~0);
290: out_w(IT3_IDS2, ~0);
291: out_w(IT0_IPI3_CLR, 0x0000003f);
292: out_w(IT0_FID, 0x00000001); // FIQ disabled
293: out_w(IT0_LIIR, 0x0000000f); // internal interrupt disabled
294: