59: if (vec == SPIVec[i]) {
60: out_w(SPn_FFCLR(i), ~0);
61: tk_wup_tsk(SPITskID[i]);
77: {
78: out_w(SPn_MODE(ch), SPIMode[ch]);
79: out_w(SPn_TIECS(ch), 0x000f); // CS: control by SPn_POL
80: out_w(SPn_POL(ch), SPIPol[ch]);
81: out_w(SPn_ENCLR(ch), ~0); // interrupt disable
82:
83: out_w(SPn_CONTROL(ch), 0x0100); // starting reset
84: WaitUsec(10);
85: out_w(SPn_CONTROL(ch), 0x0000); // releasing reset
86: out_w(SPn_CONTROL2(ch), 0x0000);
87:
88: out_w(SPn_FFCLR(ch), ~0);
89: out_w(SPn_ENSET(ch), 0x0004); // interrupt enable
90:
97: WaitNsec(200);
98: out_w(SPn_POL(ch), SPIPol[ch] ^ (enable ? (1 << (cs * 3)) : 0));
99: WaitNsec(200);
126: if (xmit != NULL) {
127: out_w(SPn_TX_DATA(ch), *xmit++);
128: } else {
129: out_w(SPn_TX_DATA(ch), ~0);
130: }
131:
132: out_w(SPn_CONTROL(ch), 0x000d);
133: er = wait_int();