52: /* Clear Interrupt */
53: out_w( ba[unit] + UARTxICR, UARTxINT_ALL);
54:
61: dev_ser_notify_err(unit, err); /* Notify the main process of the communication error. */
62: out_w( ba[unit] + UARTxECR, 0); /* Clear error */
63: data &= 0x000000FF;
70: if( !dev_ser_get_snddat(unit, &data)) break;
71: out_w( ba[unit] + UARTxDR, data);
72: }
80: /* Set communication Speed */
81: out_w( ba[unit] + UARTxIBDR, speed >> 6);
82: out_w( ba[unit] + UARTxFBDR, speed & 0x3f);
83:
84: /* Set communication mode */
85: out_w( ba[unit] + UARTxLCR_H, (mode & (UARTxLCR_H_SPS|UARTxLCR_H_WLEN(8)| UARTxLCR_H_STP2| UARTxLCR_H_EPS|UARTxLCR_H_PEN)) |UARTxLCR_H_FEN);
86: *(UW*)(ba[unit] + UARTxCR) |= mode & (UARTxCR_CTSEN | UARTxCR_RTSEN);
97: if(unit != DEVCNF_SER_DBGUN) {
98: out_w( ba[unit] + UARTxCR, 0);
99: } else { /* Used by T-Monitor */
100: out_w( ba[unit] + UARTxCR, UARTxCR_UARTEN | UARTxCR_TXE | UARTxCR_RXE);
101: }
120: case LLD_SER_START: /* Start communication */
121: out_w(ba[unit] + UARTxICR, UARTxINT_ALL); // Clear interrupt
122: out_w(ba[unit] + UARTxIMSC, UARTxINT_COM); // Unmask all interrupts
123: EnableInt(unit?INTNO_UART1:INTNO_UART0, DEVCNF_SER_INTPRI); // Enable Interrupt
133: if((in_w( ba[unit] + UARTxFR) & UARTxFR_TXFF) == 0) {
134: out_w(ba[unit] + UARTxDR, parm);
135: err = E_OK;
166:
167: out_w( ba[unit] + UARTxCR, 0);
168:
169: /* UART device initialize */
170: out_w(ba[unit] + UARTxIMSC, 0); // Mask all interrupt
171: out_w(ba[unit] + UARTxECR, 0); // Clear error
172: out_w(ba[unit] + UARTxIFLS, // Set FIFO level
173: UARTxIFLS_RXIFLSEL(UARTxIFLS_RXINI) |
174: UARTxIFLS_TXIFLSEL(UARTxIFLS_TXINI));
175: out_w(ba[unit] + UARTxICR, 0x000007FF); // Clear interrupt
176: out_w(ba[unit] + UARTxDMACR, 0); // Stop DMA
177: