Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

tty: serial: amba: Use linux/{bits,bitfield}.h macros

The driver uses bit shifts and hexadecimal expressions to declare
constants. Replace that with the BIT(), GENMASK() & FIELD_PREP_CONST()
macros to clarify intent.

include/linux/amba/serial.h gets included from arch/arm/include/debug/pl01x.S.
Avoid includes and macro tricks for the four defines that are involved:
UART01x_DR, UART01x_FR, UART01x_FR_TXFF and UART01x_FR_BUSY.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Link: https://lore.kernel.org/r/20231207-mbly-uart-v6-1-e384afa5e78c@bootlin.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Théo Lebrun and committed by
Greg Kroah-Hartman
1f78c560 a5f18286

+119 -110
+119 -110
include/linux/amba/serial.h
··· 10 10 #ifndef ASM_ARM_HARDWARE_SERIAL_AMBA_H 11 11 #define ASM_ARM_HARDWARE_SERIAL_AMBA_H 12 12 13 + #ifndef __ASSEMBLY__ 14 + #include <linux/bitfield.h> 15 + #include <linux/bits.h> 16 + #endif 17 + 13 18 #include <linux/types.h> 14 19 15 20 /* ------------------------------------------------------------------------------- ··· 75 70 #define ZX_UART011_ICR 0x4c 76 71 #define ZX_UART011_DMACR 0x50 77 72 78 - #define UART011_DR_OE (1 << 11) 79 - #define UART011_DR_BE (1 << 10) 80 - #define UART011_DR_PE (1 << 9) 81 - #define UART011_DR_FE (1 << 8) 73 + #define UART011_DR_OE BIT(11) 74 + #define UART011_DR_BE BIT(10) 75 + #define UART011_DR_PE BIT(9) 76 + #define UART011_DR_FE BIT(8) 82 77 83 - #define UART01x_RSR_OE 0x08 84 - #define UART01x_RSR_BE 0x04 85 - #define UART01x_RSR_PE 0x02 86 - #define UART01x_RSR_FE 0x01 78 + #define UART01x_RSR_OE BIT(3) 79 + #define UART01x_RSR_BE BIT(2) 80 + #define UART01x_RSR_PE BIT(1) 81 + #define UART01x_RSR_FE BIT(0) 87 82 88 - #define UART011_FR_RI 0x100 89 - #define UART011_FR_TXFE 0x080 90 - #define UART011_FR_RXFF 0x040 91 - #define UART01x_FR_TXFF 0x020 92 - #define UART01x_FR_RXFE 0x010 93 - #define UART01x_FR_BUSY 0x008 94 - #define UART01x_FR_DCD 0x004 95 - #define UART01x_FR_DSR 0x002 96 - #define UART01x_FR_CTS 0x001 83 + #define UART011_FR_RI BIT(8) 84 + #define UART011_FR_TXFE BIT(7) 85 + #define UART011_FR_RXFF BIT(6) 86 + #define UART01x_FR_TXFF (1 << 5) /* used in ASM */ 87 + #define UART01x_FR_RXFE BIT(4) 88 + #define UART01x_FR_BUSY (1 << 3) /* used in ASM */ 89 + #define UART01x_FR_DCD BIT(2) 90 + #define UART01x_FR_DSR BIT(1) 91 + #define UART01x_FR_CTS BIT(0) 97 92 #define UART01x_FR_TMSK (UART01x_FR_TXFF + UART01x_FR_BUSY) 98 93 99 94 /* 100 95 * Some bits of Flag Register on ZTE device have different position from 101 96 * standard ones. 102 97 */ 103 - #define ZX_UART01x_FR_BUSY 0x100 104 - #define ZX_UART01x_FR_DSR 0x008 105 - #define ZX_UART01x_FR_CTS 0x002 106 - #define ZX_UART011_FR_RI 0x001 98 + #define ZX_UART01x_FR_BUSY BIT(8) 99 + #define ZX_UART01x_FR_DSR BIT(3) 100 + #define ZX_UART01x_FR_CTS BIT(1) 101 + #define ZX_UART011_FR_RI BIT(0) 107 102 108 - #define UART011_CR_CTSEN 0x8000 /* CTS hardware flow control */ 109 - #define UART011_CR_RTSEN 0x4000 /* RTS hardware flow control */ 110 - #define UART011_CR_OUT2 0x2000 /* OUT2 */ 111 - #define UART011_CR_OUT1 0x1000 /* OUT1 */ 112 - #define UART011_CR_RTS 0x0800 /* RTS */ 113 - #define UART011_CR_DTR 0x0400 /* DTR */ 114 - #define UART011_CR_RXE 0x0200 /* receive enable */ 115 - #define UART011_CR_TXE 0x0100 /* transmit enable */ 116 - #define UART011_CR_LBE 0x0080 /* loopback enable */ 117 - #define UART010_CR_RTIE 0x0040 118 - #define UART010_CR_TIE 0x0020 119 - #define UART010_CR_RIE 0x0010 120 - #define UART010_CR_MSIE 0x0008 121 - #define ST_UART011_CR_OVSFACT 0x0008 /* Oversampling factor */ 122 - #define UART01x_CR_IIRLP 0x0004 /* SIR low power mode */ 123 - #define UART01x_CR_SIREN 0x0002 /* SIR enable */ 124 - #define UART01x_CR_UARTEN 0x0001 /* UART enable */ 103 + #define UART011_CR_CTSEN BIT(15) /* CTS hardware flow control */ 104 + #define UART011_CR_RTSEN BIT(14) /* RTS hardware flow control */ 105 + #define UART011_CR_OUT2 BIT(13) /* OUT2 */ 106 + #define UART011_CR_OUT1 BIT(12) /* OUT1 */ 107 + #define UART011_CR_RTS BIT(11) /* RTS */ 108 + #define UART011_CR_DTR BIT(10) /* DTR */ 109 + #define UART011_CR_RXE BIT(9) /* receive enable */ 110 + #define UART011_CR_TXE BIT(8) /* transmit enable */ 111 + #define UART011_CR_LBE BIT(7) /* loopback enable */ 112 + #define UART010_CR_RTIE BIT(6) 113 + #define UART010_CR_TIE BIT(5) 114 + #define UART010_CR_RIE BIT(4) 115 + #define UART010_CR_MSIE BIT(3) 116 + #define ST_UART011_CR_OVSFACT BIT(3) /* Oversampling factor */ 117 + #define UART01x_CR_IIRLP BIT(2) /* SIR low power mode */ 118 + #define UART01x_CR_SIREN BIT(1) /* SIR enable */ 119 + #define UART01x_CR_UARTEN BIT(0) /* UART enable */ 125 120 126 - #define UART011_LCRH_SPS 0x80 121 + #define UART011_LCRH_SPS BIT(7) 127 122 #define UART01x_LCRH_WLEN_8 0x60 128 123 #define UART01x_LCRH_WLEN_7 0x40 129 124 #define UART01x_LCRH_WLEN_6 0x20 130 125 #define UART01x_LCRH_WLEN_5 0x00 131 - #define UART01x_LCRH_FEN 0x10 132 - #define UART01x_LCRH_STP2 0x08 133 - #define UART01x_LCRH_EPS 0x04 134 - #define UART01x_LCRH_PEN 0x02 135 - #define UART01x_LCRH_BRK 0x01 126 + #define UART01x_LCRH_FEN BIT(4) 127 + #define UART01x_LCRH_STP2 BIT(3) 128 + #define UART01x_LCRH_EPS BIT(2) 129 + #define UART01x_LCRH_PEN BIT(1) 130 + #define UART01x_LCRH_BRK BIT(0) 136 131 137 - #define ST_UART011_DMAWM_RX_1 (0 << 3) 138 - #define ST_UART011_DMAWM_RX_2 (1 << 3) 139 - #define ST_UART011_DMAWM_RX_4 (2 << 3) 140 - #define ST_UART011_DMAWM_RX_8 (3 << 3) 141 - #define ST_UART011_DMAWM_RX_16 (4 << 3) 142 - #define ST_UART011_DMAWM_RX_32 (5 << 3) 143 - #define ST_UART011_DMAWM_RX_48 (6 << 3) 144 - #define ST_UART011_DMAWM_TX_1 0 145 - #define ST_UART011_DMAWM_TX_2 1 146 - #define ST_UART011_DMAWM_TX_4 2 147 - #define ST_UART011_DMAWM_TX_8 3 148 - #define ST_UART011_DMAWM_TX_16 4 149 - #define ST_UART011_DMAWM_TX_32 5 150 - #define ST_UART011_DMAWM_TX_48 6 132 + #define ST_UART011_DMAWM_RX GENMASK(5, 3) 133 + #define ST_UART011_DMAWM_RX_1 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 0) 134 + #define ST_UART011_DMAWM_RX_2 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 1) 135 + #define ST_UART011_DMAWM_RX_4 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 2) 136 + #define ST_UART011_DMAWM_RX_8 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 3) 137 + #define ST_UART011_DMAWM_RX_16 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 4) 138 + #define ST_UART011_DMAWM_RX_32 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 5) 139 + #define ST_UART011_DMAWM_RX_48 FIELD_PREP_CONST(ST_UART011_DMAWM_RX, 6) 140 + #define ST_UART011_DMAWM_TX GENMASK(2, 0) 141 + #define ST_UART011_DMAWM_TX_1 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 0) 142 + #define ST_UART011_DMAWM_TX_2 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 1) 143 + #define ST_UART011_DMAWM_TX_4 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 2) 144 + #define ST_UART011_DMAWM_TX_8 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 3) 145 + #define ST_UART011_DMAWM_TX_16 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 4) 146 + #define ST_UART011_DMAWM_TX_32 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 5) 147 + #define ST_UART011_DMAWM_TX_48 FIELD_PREP_CONST(ST_UART011_DMAWM_TX, 6) 151 148 152 - #define UART010_IIR_RTIS 0x08 153 - #define UART010_IIR_TIS 0x04 154 - #define UART010_IIR_RIS 0x02 155 - #define UART010_IIR_MIS 0x01 149 + #define UART010_IIR_RTIS BIT(3) 150 + #define UART010_IIR_TIS BIT(2) 151 + #define UART010_IIR_RIS BIT(1) 152 + #define UART010_IIR_MIS BIT(0) 156 153 157 - #define UART011_IFLS_RX1_8 (0 << 3) 158 - #define UART011_IFLS_RX2_8 (1 << 3) 159 - #define UART011_IFLS_RX4_8 (2 << 3) 160 - #define UART011_IFLS_RX6_8 (3 << 3) 161 - #define UART011_IFLS_RX7_8 (4 << 3) 162 - #define UART011_IFLS_TX1_8 (0 << 0) 163 - #define UART011_IFLS_TX2_8 (1 << 0) 164 - #define UART011_IFLS_TX4_8 (2 << 0) 165 - #define UART011_IFLS_TX6_8 (3 << 0) 166 - #define UART011_IFLS_TX7_8 (4 << 0) 154 + #define UART011_IFLS_RXIFLSEL GENMASK(5, 3) 155 + #define UART011_IFLS_RX1_8 FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 0) 156 + #define UART011_IFLS_RX2_8 FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 1) 157 + #define UART011_IFLS_RX4_8 FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 2) 158 + #define UART011_IFLS_RX6_8 FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 3) 159 + #define UART011_IFLS_RX7_8 FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 4) 160 + #define UART011_IFLS_TXIFLSEL GENMASK(2, 0) 161 + #define UART011_IFLS_TX1_8 FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 0) 162 + #define UART011_IFLS_TX2_8 FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 1) 163 + #define UART011_IFLS_TX4_8 FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 2) 164 + #define UART011_IFLS_TX6_8 FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 3) 165 + #define UART011_IFLS_TX7_8 FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 4) 167 166 /* special values for ST vendor with deeper fifo */ 168 - #define UART011_IFLS_RX_HALF (5 << 3) 169 - #define UART011_IFLS_TX_HALF (5 << 0) 167 + #define UART011_IFLS_RX_HALF FIELD_PREP_CONST(UART011_IFLS_RXIFLSEL, 5) 168 + #define UART011_IFLS_TX_HALF FIELD_PREP_CONST(UART011_IFLS_TXIFLSEL, 5) 170 169 171 - #define UART011_OEIM (1 << 10) /* overrun error interrupt mask */ 172 - #define UART011_BEIM (1 << 9) /* break error interrupt mask */ 173 - #define UART011_PEIM (1 << 8) /* parity error interrupt mask */ 174 - #define UART011_FEIM (1 << 7) /* framing error interrupt mask */ 175 - #define UART011_RTIM (1 << 6) /* receive timeout interrupt mask */ 176 - #define UART011_TXIM (1 << 5) /* transmit interrupt mask */ 177 - #define UART011_RXIM (1 << 4) /* receive interrupt mask */ 178 - #define UART011_DSRMIM (1 << 3) /* DSR interrupt mask */ 179 - #define UART011_DCDMIM (1 << 2) /* DCD interrupt mask */ 180 - #define UART011_CTSMIM (1 << 1) /* CTS interrupt mask */ 181 - #define UART011_RIMIM (1 << 0) /* RI interrupt mask */ 170 + #define UART011_OEIM BIT(10) /* overrun error interrupt mask */ 171 + #define UART011_BEIM BIT(9) /* break error interrupt mask */ 172 + #define UART011_PEIM BIT(8) /* parity error interrupt mask */ 173 + #define UART011_FEIM BIT(7) /* framing error interrupt mask */ 174 + #define UART011_RTIM BIT(6) /* receive timeout interrupt mask */ 175 + #define UART011_TXIM BIT(5) /* transmit interrupt mask */ 176 + #define UART011_RXIM BIT(4) /* receive interrupt mask */ 177 + #define UART011_DSRMIM BIT(3) /* DSR interrupt mask */ 178 + #define UART011_DCDMIM BIT(2) /* DCD interrupt mask */ 179 + #define UART011_CTSMIM BIT(1) /* CTS interrupt mask */ 180 + #define UART011_RIMIM BIT(0) /* RI interrupt mask */ 182 181 183 - #define UART011_OEIS (1 << 10) /* overrun error interrupt status */ 184 - #define UART011_BEIS (1 << 9) /* break error interrupt status */ 185 - #define UART011_PEIS (1 << 8) /* parity error interrupt status */ 186 - #define UART011_FEIS (1 << 7) /* framing error interrupt status */ 187 - #define UART011_RTIS (1 << 6) /* receive timeout interrupt status */ 188 - #define UART011_TXIS (1 << 5) /* transmit interrupt status */ 189 - #define UART011_RXIS (1 << 4) /* receive interrupt status */ 190 - #define UART011_DSRMIS (1 << 3) /* DSR interrupt status */ 191 - #define UART011_DCDMIS (1 << 2) /* DCD interrupt status */ 192 - #define UART011_CTSMIS (1 << 1) /* CTS interrupt status */ 193 - #define UART011_RIMIS (1 << 0) /* RI interrupt status */ 182 + #define UART011_OEIS BIT(10) /* overrun error interrupt status */ 183 + #define UART011_BEIS BIT(9) /* break error interrupt status */ 184 + #define UART011_PEIS BIT(8) /* parity error interrupt status */ 185 + #define UART011_FEIS BIT(7) /* framing error interrupt status */ 186 + #define UART011_RTIS BIT(6) /* receive timeout interrupt status */ 187 + #define UART011_TXIS BIT(5) /* transmit interrupt status */ 188 + #define UART011_RXIS BIT(4) /* receive interrupt status */ 189 + #define UART011_DSRMIS BIT(3) /* DSR interrupt status */ 190 + #define UART011_DCDMIS BIT(2) /* DCD interrupt status */ 191 + #define UART011_CTSMIS BIT(1) /* CTS interrupt status */ 192 + #define UART011_RIMIS BIT(0) /* RI interrupt status */ 194 193 195 - #define UART011_OEIC (1 << 10) /* overrun error interrupt clear */ 196 - #define UART011_BEIC (1 << 9) /* break error interrupt clear */ 197 - #define UART011_PEIC (1 << 8) /* parity error interrupt clear */ 198 - #define UART011_FEIC (1 << 7) /* framing error interrupt clear */ 199 - #define UART011_RTIC (1 << 6) /* receive timeout interrupt clear */ 200 - #define UART011_TXIC (1 << 5) /* transmit interrupt clear */ 201 - #define UART011_RXIC (1 << 4) /* receive interrupt clear */ 202 - #define UART011_DSRMIC (1 << 3) /* DSR interrupt clear */ 203 - #define UART011_DCDMIC (1 << 2) /* DCD interrupt clear */ 204 - #define UART011_CTSMIC (1 << 1) /* CTS interrupt clear */ 205 - #define UART011_RIMIC (1 << 0) /* RI interrupt clear */ 194 + #define UART011_OEIC BIT(10) /* overrun error interrupt clear */ 195 + #define UART011_BEIC BIT(9) /* break error interrupt clear */ 196 + #define UART011_PEIC BIT(8) /* parity error interrupt clear */ 197 + #define UART011_FEIC BIT(7) /* framing error interrupt clear */ 198 + #define UART011_RTIC BIT(6) /* receive timeout interrupt clear */ 199 + #define UART011_TXIC BIT(5) /* transmit interrupt clear */ 200 + #define UART011_RXIC BIT(4) /* receive interrupt clear */ 201 + #define UART011_DSRMIC BIT(3) /* DSR interrupt clear */ 202 + #define UART011_DCDMIC BIT(2) /* DCD interrupt clear */ 203 + #define UART011_CTSMIC BIT(1) /* CTS interrupt clear */ 204 + #define UART011_RIMIC BIT(0) /* RI interrupt clear */ 206 205 207 - #define UART011_DMAONERR (1 << 2) /* disable dma on error */ 208 - #define UART011_TXDMAE (1 << 1) /* enable transmit dma */ 209 - #define UART011_RXDMAE (1 << 0) /* enable receive dma */ 206 + #define UART011_DMAONERR BIT(2) /* disable dma on error */ 207 + #define UART011_TXDMAE BIT(1) /* enable transmit dma */ 208 + #define UART011_RXDMAE BIT(0) /* enable receive dma */ 210 209 211 210 #define UART01x_RSR_ANY (UART01x_RSR_OE | UART01x_RSR_BE | UART01x_RSR_PE | UART01x_RSR_FE) 212 211 #define UART01x_FR_MODEM_ANY (UART01x_FR_DCD | UART01x_FR_DSR | UART01x_FR_CTS)