@@ -68,9 +68,13 @@ static HAL_GDMA_OP UartGdmaOp;
68
68
69
69
#ifdef CONFIG_MBED_ENABLED
70
70
#include "log_uart_api.h"
71
+ #include "hal_log_uart.h"
71
72
int stdio_uart_inited = 0 ;
72
73
serial_t stdio_uart ;
73
74
log_uart_t stdio_uart_log ;
75
+ static uint32_t serial_log_irq_ids ;
76
+ static uart_irq_handler log_irq_handler ;
77
+ static uint32_t serial_log_irq_en ;
74
78
#endif
75
79
76
80
static void SerialTxDoneCallBack (VOID * pAdapter );
@@ -256,7 +260,8 @@ static void SerialTxDoneCallBack(VOID *pAdapter)
256
260
pHalRuartAdapter -> Interrupts &= ~RUART_IER_ETBEI ;
257
261
HalRuartSetIMRRtl8195a (pHalRuartAdapter );
258
262
259
- if (irq_handler [uart_idx ] != NULL ) {
263
+ if (irq_handler [uart_idx ] != NULL )
264
+ {
260
265
irq_handler [uart_idx ](serial_irq_ids [uart_idx ], TxIrq );
261
266
}
262
267
}
@@ -266,13 +271,49 @@ static void SerialRxDoneCallBack(VOID *pAdapter)
266
271
PHAL_RUART_ADAPTER pHalRuartAdapter = pAdapter ;
267
272
u8 uart_idx = pHalRuartAdapter -> UartIndex ;
268
273
269
- if (irq_handler [uart_idx ] != NULL ) {
274
+ if (irq_handler [uart_idx ] != NULL )
275
+ {
270
276
irq_handler [uart_idx ](serial_irq_ids [uart_idx ], RxIrq );
271
277
}
272
278
}
273
279
280
+
281
+ #ifdef CONFIG_MBED_ENABLED
282
+ static void serial_loguart_irq_handler (uint32_t id , LOG_UART_INT_ID event )
283
+ {
284
+ if (event == IIR_RX_RDY || event == IIR_CHAR_TIMEOUT )
285
+ {
286
+ if (log_irq_handler ){
287
+ log_irq_handler (serial_log_irq_ids , RxIrq );
288
+ }
289
+ }
290
+ else if (event == IIR_THR_EMPTY )
291
+ {
292
+ if (log_irq_handler ){
293
+ log_irq_handler (serial_log_irq_ids , TxIrq );
294
+ }
295
+ }
296
+ return ;
297
+ }
298
+ #endif
299
+
300
+
301
+
274
302
void serial_irq_handler (serial_t * obj , uart_irq_handler handler , uint32_t id )
275
303
{
304
+
305
+ #ifdef CONFIG_MBED_ENABLED
306
+ if (obj -> index == UART_3 )
307
+ {
308
+ log_irq_handler = handler ;
309
+ serial_log_irq_ids = id ;
310
+
311
+ log_uart_irq_handler (& stdio_uart_log , serial_loguart_irq_handler , id );
312
+ return ;
313
+ }
314
+ #endif
315
+
316
+
276
317
PHAL_RUART_ADAPTER pHalRuartAdapter ;
277
318
u8 uart_idx ;
278
319
@@ -291,34 +332,65 @@ void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id)
291
332
292
333
void serial_irq_set (serial_t * obj , SerialIrq irq , uint32_t enable )
293
334
{
335
+
336
+ #ifdef CONFIG_MBED_ENABLED
337
+ if (obj -> index == UART_3 )
338
+ {
339
+ if (irq == RxIrq )
340
+ {
341
+ log_uart_irq_set (& stdio_uart_log , IIR_RX_RDY , enable );
342
+ }
343
+ else
344
+ {
345
+ log_uart_irq_set (& stdio_uart_log , IIR_THR_EMPTY , enable );
346
+ }
347
+ return ;
348
+ }
349
+ #endif
350
+
294
351
PHAL_RUART_ADAPTER pHalRuartAdapter ;
295
352
PHAL_RUART_OP pHalRuartOp ;
296
353
u8 uart_idx ;
297
354
298
355
pHalRuartAdapter = & (obj -> hal_uart_adp );
299
356
pHalRuartOp = & (obj -> hal_uart_op );
300
357
uart_idx = pHalRuartAdapter -> UartIndex ;
358
+
301
359
302
- if (enable ) {
303
- if (irq == RxIrq ) {
360
+ if (enable )
361
+ {
362
+ if (irq == RxIrq )
363
+ {
304
364
pHalRuartAdapter -> Interrupts |= RUART_IER_ERBI | RUART_IER_ELSI ;
305
365
serial_irq_en [uart_idx ] |= SERIAL_RX_IRQ_EN ;
306
366
HalRuartSetIMRRtl8195a (pHalRuartAdapter );
307
- } else {
367
+ }
368
+ else
369
+ {
308
370
serial_irq_en [uart_idx ] |= SERIAL_TX_IRQ_EN ;
309
371
}
372
+
310
373
pHalRuartOp -> HalRuartRegIrq (pHalRuartAdapter );
374
+
375
+ //log_uart
311
376
pHalRuartOp -> HalRuartIntEnable (pHalRuartAdapter );
312
- } else { // disable
313
- if (irq == RxIrq ) {
377
+ }
378
+ else
379
+ { // disable
380
+ if (irq == RxIrq )
381
+ {
314
382
pHalRuartAdapter -> Interrupts &= ~(RUART_IER_ERBI | RUART_IER_ELSI );
315
383
serial_irq_en [uart_idx ] &= ~SERIAL_RX_IRQ_EN ;
316
- } else {
384
+ }
385
+ else
386
+ {
317
387
pHalRuartAdapter -> Interrupts &= ~RUART_IER_ETBEI ;
318
388
serial_irq_en [uart_idx ] &= ~SERIAL_TX_IRQ_EN ;
319
389
}
320
390
HalRuartSetIMRRtl8195a (pHalRuartAdapter );
321
- if (pHalRuartAdapter -> Interrupts == 0 ) {
391
+
392
+ if (pHalRuartAdapter -> Interrupts == 0 )
393
+ {
322
394
InterruptUnRegister (& pHalRuartAdapter -> IrqHandle );
323
395
InterruptDis (& pHalRuartAdapter -> IrqHandle );
324
396
}
0 commit comments