Skip to content

Commit cbd07a8

Browse files
hujun260xiaoxiang781216
authored andcommitted
s32k1xx_serial: arch/arm/src/s32k1xx/s32k1xx_serial.c
reason: We hope to remove all instances of spin_lock_irqsave(NULL). Signed-off-by: hujun5 <[email protected]>
1 parent ae5c7a7 commit cbd07a8

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

arch/arm/src/s32k1xx/s32k1xx_serial.c

+15-14
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@
179179
struct s32k1xx_uart_s
180180
{
181181
struct uart_dev_s dev; /* Generic UART device */
182+
spinlock_t lock; /* Spinlock */
182183
uint32_t uartbase; /* Base address of UART registers */
183184
uint32_t baud; /* Configured baud */
184185
uint32_t ie; /* Saved enabled interrupts */
@@ -450,6 +451,7 @@ static struct s32k1xx_uart_s g_lpuart0priv =
450451
# endif
451452
.priv = &g_lpuart0priv,
452453
},
454+
.lock = SP_UNLOCKED,
453455
.uartbase = S32K1XX_LPUART0_BASE,
454456
.baud = CONFIG_LPUART0_BAUD,
455457
.irq = S32K1XX_IRQ_LPUART0,
@@ -515,6 +517,7 @@ static struct s32k1xx_uart_s g_lpuart1priv =
515517
.priv = &g_lpuart1priv,
516518
},
517519

520+
.lock = SP_UNLOCKED,
518521
.uartbase = S32K1XX_LPUART1_BASE,
519522
.baud = CONFIG_LPUART1_BAUD,
520523
.irq = S32K1XX_IRQ_LPUART1,
@@ -577,6 +580,7 @@ static struct s32k1xx_uart_s g_lpuart2priv =
577580
.priv = &g_lpuart2priv,
578581
},
579582

583+
.lock = SP_UNLOCKED,
580584
.uartbase = S32K1XX_LPUART2_BASE,
581585
.baud = CONFIG_LPUART2_BAUD,
582586
.irq = S32K1XX_IRQ_LPUART2,
@@ -669,10 +673,8 @@ static int s32k1xx_dma_nextrx(struct s32k1xx_uart_s *priv)
669673
static inline void s32k1xx_disableuartint(struct s32k1xx_uart_s *priv,
670674
uint32_t *ie)
671675
{
672-
irqstate_t flags;
673676
uint32_t regval;
674677

675-
flags = spin_lock_irqsave(NULL);
676678
regval = s32k1xx_serialin(priv, S32K1XX_LPUART_CTRL_OFFSET);
677679

678680
/* Return the current Rx and Tx interrupt state */
@@ -684,7 +686,6 @@ static inline void s32k1xx_disableuartint(struct s32k1xx_uart_s *priv,
684686

685687
regval &= ~LPUART_ALL_INTS;
686688
s32k1xx_serialout(priv, S32K1XX_LPUART_CTRL_OFFSET, regval);
687-
spin_unlock_irqrestore(NULL, flags);
688689
}
689690

690691
/****************************************************************************
@@ -694,19 +695,16 @@ static inline void s32k1xx_disableuartint(struct s32k1xx_uart_s *priv,
694695
static inline void s32k1xx_restoreuartint(struct s32k1xx_uart_s *priv,
695696
uint32_t ie)
696697
{
697-
irqstate_t flags;
698698
uint32_t regval;
699699

700700
/* Enable/disable any interrupts that are currently disabled but should be
701701
* enabled/disabled.
702702
*/
703703

704-
flags = spin_lock_irqsave(NULL);
705704
regval = s32k1xx_serialin(priv, S32K1XX_LPUART_CTRL_OFFSET);
706705
regval &= ~LPUART_ALL_INTS;
707706
regval |= ie;
708707
s32k1xx_serialout(priv, S32K1XX_LPUART_CTRL_OFFSET, regval);
709-
spin_unlock_irqrestore(NULL, flags);
710708
}
711709

712710
/****************************************************************************
@@ -1329,15 +1327,15 @@ static int s32k1xx_ioctl(struct file *filep, int cmd, unsigned long arg)
13291327
* implement TCSADRAIN / TCSAFLUSH
13301328
*/
13311329

1332-
flags = spin_lock_irqsave(NULL);
1330+
flags = spin_lock_irqsave(&priv->lock);
13331331
s32k1xx_disableuartint(priv, &ie);
13341332
ret = dev->ops->setup(dev);
13351333

13361334
/* Restore the interrupt state */
13371335

13381336
s32k1xx_restoreuartint(priv, ie);
13391337
priv->ie = ie;
1340-
spin_unlock_irqrestore(NULL, flags);
1338+
spin_unlock_irqrestore(&priv->lock, flags);
13411339
}
13421340
}
13431341
break;
@@ -1351,7 +1349,7 @@ static int s32k1xx_ioctl(struct file *filep, int cmd, unsigned long arg)
13511349
uint32_t regval;
13521350
struct s32k1xx_uart_s *priv = (struct s32k1xx_uart_s *)dev->priv;
13531351

1354-
flags = spin_lock_irqsave(NULL);
1352+
flags = spin_lock_irqsave(&priv->lock);
13551353
ctrl = s32k1xx_serialin(priv, S32K1XX_LPUART_CTRL_OFFSET);
13561354
stat = s32k1xx_serialin(priv, S32K1XX_LPUART_STAT_OFFSET);
13571355
regval = ctrl;
@@ -1387,7 +1385,7 @@ static int s32k1xx_ioctl(struct file *filep, int cmd, unsigned long arg)
13871385
s32k1xx_serialout(priv, S32K1XX_LPUART_STAT_OFFSET, stat);
13881386
s32k1xx_serialout(priv, S32K1XX_LPUART_CTRL_OFFSET, ctrl);
13891387

1390-
spin_unlock_irqrestore(NULL, flags);
1388+
spin_unlock_irqrestore(&priv->lock, flags);
13911389
}
13921390
break;
13931391
#endif
@@ -1441,7 +1439,7 @@ static void s32k1xx_rxint(struct uart_dev_s *dev, bool enable)
14411439

14421440
/* Enable interrupts for data available at Rx */
14431441

1444-
flags = spin_lock_irqsave(NULL);
1442+
flags = spin_lock_irqsave(&priv->lock);
14451443
if (enable)
14461444
{
14471445
#ifndef CONFIG_SUPPRESS_SERIAL_INTS
@@ -1457,7 +1455,7 @@ static void s32k1xx_rxint(struct uart_dev_s *dev, bool enable)
14571455
regval &= ~LPUART_ALL_INTS;
14581456
regval |= priv->ie;
14591457
s32k1xx_serialout(priv, S32K1XX_LPUART_CTRL_OFFSET, regval);
1460-
spin_unlock_irqrestore(NULL, flags);
1458+
spin_unlock_irqrestore(&priv->lock, flags);
14611459
}
14621460
#endif
14631461

@@ -1890,7 +1888,7 @@ static void s32k1xx_txint(struct uart_dev_s *dev, bool enable)
18901888

18911889
/* Enable interrupt for TX complete */
18921890

1893-
flags = spin_lock_irqsave(NULL);
1891+
flags = spin_lock_irqsave(&priv->lock);
18941892
if (enable)
18951893
{
18961894
#ifndef CONFIG_SUPPRESS_SERIAL_INTS
@@ -1906,7 +1904,7 @@ static void s32k1xx_txint(struct uart_dev_s *dev, bool enable)
19061904
regval &= ~LPUART_ALL_INTS;
19071905
regval |= priv->ie;
19081906
s32k1xx_serialout(priv, S32K1XX_LPUART_CTRL_OFFSET, regval);
1909-
spin_unlock_irqrestore(NULL, flags);
1907+
spin_unlock_irqrestore(&priv->lock, flags);
19101908
}
19111909
#endif
19121910

@@ -2549,11 +2547,14 @@ void up_putc(int ch)
25492547
#ifdef CONSOLE_DEV
25502548
struct s32k1xx_uart_s *priv =
25512549
(struct s32k1xx_uart_s *)CONSOLE_DEV.dev.priv;
2550+
irqstate_t flags;
25522551
uint32_t ie;
25532552

2553+
flags = spin_lock_irqsave(&priv->lock);
25542554
s32k1xx_disableuartint(priv, &ie);
25552555
s32k1xx_lowputc(ch);
25562556
s32k1xx_restoreuartint(priv, ie);
2557+
spin_unlock_irqrestore(&priv->lock, flags);
25572558
#endif
25582559
}
25592560

0 commit comments

Comments
 (0)