|
|
@@ -214,6 +214,7 @@ static void vUart485IntHandler(void *param)
|
|
|
{
|
|
|
UartPort_t *uap = param;
|
|
|
uint32_t iir;
|
|
|
+ uint32_t lsr;
|
|
|
|
|
|
iir = readl(uap->regbase + UART485_IIR);
|
|
|
switch (iir & UART485_IIR_IID_MASK) {
|
|
|
@@ -221,13 +222,16 @@ static void vUart485IntHandler(void *param)
|
|
|
xUart485TxChars(uap, 1);
|
|
|
break;
|
|
|
case UART485_IIR_IID_REV_DATA_AVAIL:
|
|
|
- case UART485_IIR_IID_REV_LINE_STATUS:
|
|
|
case UART485_IIR_IID_CHAR_TIMEOUT:
|
|
|
iUart485RxChars(uap);
|
|
|
break;
|
|
|
case UART485_IIR_IID_BUSY_DETECT:
|
|
|
iir = readl(uap->regbase + UART485_USR); //clear busy interrupt
|
|
|
break;
|
|
|
+ case UART485_IIR_IID_REV_LINE_STATUS:
|
|
|
+ lsr = readl(uap->regbase + UART485_LSR);
|
|
|
+ printf("Error lsr=0x%x\n", lsr);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -351,8 +355,8 @@ void vUartInit(UartPort_t *uap, uint32_t baud, uint32_t flags)
|
|
|
//set fifo
|
|
|
writel((2 << 6) | (3 << 4) | 7, uap->regbase + UART485_FCR);
|
|
|
|
|
|
- //enable rx and err interrupt
|
|
|
- writel((1 << 4) | 1, uap->regbase + UART485_IER);
|
|
|
+ //enable rx and rls interrupt
|
|
|
+ writel((1 << 2) | 1, uap->regbase + UART485_IER);
|
|
|
|
|
|
//设置通信模式全双工还是半双工
|
|
|
//485mode disable
|