@@ -303,9 +303,6 @@ static int uart_xlnx_ps_init(const struct device *dev)
303
303
/* Set RX FIFO trigger at 1 data bytes. */
304
304
sys_write32 (0x01U , reg_base + XUARTPS_RXWM_OFFSET );
305
305
306
- /* Set RX timeout to 1, which will be 4 character time */
307
- sys_write32 (0x1U , reg_base + XUARTPS_RXTOUT_OFFSET );
308
-
309
306
/* Disable all interrupts, polling mode is default */
310
307
sys_write32 (XUARTPS_IXR_MASK , reg_base + XUARTPS_IDR_OFFSET );
311
308
@@ -845,20 +842,18 @@ static int uart_xlnx_ps_fifo_fill(const struct device *dev,
845
842
int size )
846
843
{
847
844
const struct uart_xlnx_ps_dev_config * dev_cfg = DEV_CFG (dev );
848
- uint32_t reg_val ;
849
- uint32_t reg_base ;
850
- int onum = 0 ;
845
+ uint32_t reg_base = dev_cfg -> uconf .regs ;
846
+ uint32_t data_iter = 0 ;
851
847
852
- reg_base = dev_cfg -> uconf .regs ;
853
- reg_val = sys_read32 (reg_base + XUARTPS_SR_OFFSET );
854
- while (onum < size && (reg_val & XUARTPS_SR_TXFULL ) == 0 ) {
855
- sys_write32 ((uint32_t )(tx_data [onum ] & 0xFF ),
856
- reg_base + XUARTPS_FIFO_OFFSET );
857
- onum ++ ;
858
- reg_val = sys_read32 (reg_base + XUARTPS_SR_OFFSET );
848
+ sys_write32 (XUARTPS_IXR_TXEMPTY , reg_base + XUARTPS_IDR_OFFSET );
849
+ while (size -- ) {
850
+ while ((sys_read32 (reg_base + XUARTPS_SR_OFFSET ) & XUARTPS_SR_TXFULL ) != 0 ) {
851
+ }
852
+ sys_write32 ((uint32_t )tx_data [data_iter ++ ], reg_base + XUARTPS_FIFO_OFFSET );
859
853
}
854
+ sys_write32 (XUARTPS_IXR_TXEMPTY , reg_base + XUARTPS_IER_OFFSET );
860
855
861
- return onum ;
856
+ return data_iter ;
862
857
}
863
858
864
859
/**
@@ -937,17 +932,12 @@ static void uart_xlnx_ps_irq_tx_disable(const struct device *dev)
937
932
static int uart_xlnx_ps_irq_tx_ready (const struct device * dev )
938
933
{
939
934
const struct uart_xlnx_ps_dev_config * dev_cfg = DEV_CFG (dev );
940
- uint32_t reg_base ;
941
- uint32_t reg_val ;
935
+ uint32_t reg_base = dev_cfg -> uconf . regs ;
936
+ uint32_t reg_val = sys_read32 ( reg_base + XUARTPS_SR_OFFSET ) ;
942
937
943
- reg_base = dev_cfg -> uconf .regs ;
944
- reg_val = sys_read32 (reg_base + XUARTPS_ISR_OFFSET );
945
- if ((reg_val & (XUARTPS_IXR_TTRIG | XUARTPS_IXR_TXEMPTY )) == 0 ) {
938
+ if ((reg_val & (XUARTPS_SR_TTRIG | XUARTPS_SR_TXEMPTY )) == 0 ) {
946
939
return 0 ;
947
940
} else {
948
- sys_write32 (
949
- (XUARTPS_IXR_TTRIG | XUARTPS_IXR_TXEMPTY ),
950
- reg_base + XUARTPS_ISR_OFFSET );
951
941
return 1 ;
952
942
}
953
943
}
@@ -1016,11 +1006,9 @@ static void uart_xlnx_ps_irq_rx_disable(const struct device *dev)
1016
1006
static int uart_xlnx_ps_irq_rx_ready (const struct device * dev )
1017
1007
{
1018
1008
const struct uart_xlnx_ps_dev_config * dev_cfg = DEV_CFG (dev );
1019
- uint32_t reg_base ;
1020
- uint32_t reg_val ;
1009
+ uint32_t reg_base = dev_cfg -> uconf . regs ;
1010
+ uint32_t reg_val = sys_read32 ( reg_base + XUARTPS_ISR_OFFSET ) ;
1021
1011
1022
- reg_base = dev_cfg -> uconf .regs ;
1023
- reg_val = sys_read32 (reg_base + XUARTPS_ISR_OFFSET );
1024
1012
if ((reg_val & XUARTPS_IXR_RTRIG ) == 0 ) {
1025
1013
return 0 ;
1026
1014
} else {
@@ -1107,7 +1095,7 @@ static int uart_xlnx_ps_irq_is_pending(const struct device *dev)
1107
1095
*/
1108
1096
static int uart_xlnx_ps_irq_update (const struct device * dev )
1109
1097
{
1110
- ( void ) dev ;
1098
+ ARG_UNUSED ( dev ) ;
1111
1099
return 1 ;
1112
1100
}
1113
1101
0 commit comments