[PATCH v4 1/4] serial: 8250_dwlib: move DesignWare register definitions to header
Jia Wang
wangjia at ultrarisc.com
Sun Apr 26 19:31:37 PDT 2026
On 2026-04-24 13:02 +0300, Andy Shevchenko wrote:
> On Fri, Apr 24, 2026 at 01:39:28PM +0800, Jia Wang wrote:
> > Move the DW_UART_* register offsets and CPR bit/field definitions from
> > 8250_dwlib.c into 8250_dwlib.h so they can be shared by 8250_dw and
> > 8250_dwlib users.
> >
> > Add an include guard for 8250_dwlib.h.
>
> ...
>
> > -/* DesignWare specific register fields */
> > -#define DW_UART_IIR_IID GENMASK(3, 0)
> > -
> > -#define DW_UART_MCR_SIRE BIT(6)
> > -
> > -#define DW_UART_USR_BUSY BIT(0)
> > -
>
> One nit-pick, though, these three need the similar comments in the header and a
> blank line between them.
>
Thanks.
Will add comments and blank lines in v5.
> ...
>
> > +/* Offsets for the DesignWare specific registers */
> > +#define DW_UART_USR 0x1f /* UART Status Register */
> > +#define DW_UART_DMASA 0xa8 /* DMA Software Ack */
> > +#define DW_UART_TCR 0xac /* Transceiver Control Register (RS485) */
> > +#define DW_UART_DE_EN 0xb0 /* Driver Output Enable Register */
> > +#define DW_UART_RE_EN 0xb4 /* Receiver Output Enable Register */
> > +#define DW_UART_DLF 0xc0 /* Divisor Latch Fraction Register */
> > +#define DW_UART_RAR 0xc4 /* Receive Address Register */
> > +#define DW_UART_TAR 0xc8 /* Transmit Address Register */
> > +#define DW_UART_LCR_EXT 0xcc /* Line Extended Control Register */
> > +#define DW_UART_CPR 0xf4 /* Component Parameter Register */
> > +#define DW_UART_UCV 0xf8 /* UART Component Version */
> > +
> > +/* Receive / Transmit Address Register bits */
> > +#define DW_UART_ADDR_MASK GENMASK(7, 0)
>
> > +/* Line Status Register bits */
> > +#define DW_UART_LSR_ADDR_RCVD BIT(8)
>
> Like this one, the IIR. MCR, and USR bits should be commented. Also preserve
> the sorting by the register offset, so the groups of bits follow the above list
> of registers, where USR bits, for example, should go before TCR.
>
Will add comments to IIR, MCR, and USR bits and reorder the groups by
register offset in v5.
> > +/* Transceiver Control Register bits */
> > +#define DW_UART_TCR_RS485_EN BIT(0)
> > +#define DW_UART_TCR_RE_POL BIT(1)
> > +#define DW_UART_TCR_DE_POL BIT(2)
> > +#define DW_UART_TCR_XFER_MODE GENMASK(4, 3)
> > +#define DW_UART_TCR_XFER_MODE_DE_DURING_RE FIELD_PREP(DW_UART_TCR_XFER_MODE, 0)
> > +#define DW_UART_TCR_XFER_MODE_SW_DE_OR_RE FIELD_PREP(DW_UART_TCR_XFER_MODE, 1)
> > +#define DW_UART_TCR_XFER_MODE_DE_OR_RE FIELD_PREP(DW_UART_TCR_XFER_MODE, 2)
> > +
> > +/* Line Extended Control Register bits */
> > +#define DW_UART_LCR_EXT_DLS_E BIT(0)
> > +#define DW_UART_LCR_EXT_ADDR_MATCH BIT(1)
> > +#define DW_UART_LCR_EXT_SEND_ADDR BIT(2)
> > +#define DW_UART_LCR_EXT_TRANSMIT_MODE BIT(3)
> > +
> > +/* Component Parameter Register bits */
> > +#define DW_UART_CPR_ABP_DATA_WIDTH GENMASK(1, 0)
> > +#define DW_UART_CPR_AFCE_MODE BIT(4)
> > +#define DW_UART_CPR_THRE_MODE BIT(5)
> > +#define DW_UART_CPR_SIR_MODE BIT(6)
> > +#define DW_UART_CPR_SIR_LP_MODE BIT(7)
> > +#define DW_UART_CPR_ADDITIONAL_FEATURES BIT(8)
> > +#define DW_UART_CPR_FIFO_ACCESS BIT(9)
> > +#define DW_UART_CPR_FIFO_STAT BIT(10)
> > +#define DW_UART_CPR_SHADOW BIT(11)
> > +#define DW_UART_CPR_ENCODED_PARMS BIT(12)
> > +#define DW_UART_CPR_DMA_EXTRA BIT(13)
> > +#define DW_UART_CPR_FIFO_MODE GENMASK(23, 16)
>
> > +/* DesignWare specific register fields */
> > +#define DW_UART_IIR_IID GENMASK(3, 0)
> > +#define DW_UART_MCR_SIRE BIT(6)
> > +#define DW_UART_USR_BUSY BIT(0)
>
> I.o.w. uncouple these as per above.
>
Will do in v5. I'll move them to their respective register-offset
groups with comments and blank lines as suggested.
> --
> With Best Regards,
> Andy Shevchenko
>
>
>
Best Regards,
Jia Wang
More information about the linux-riscv
mailing list