[PATCH 1/5] i3c: dw: Create a generic fifo read function
Ben Dooks
ben.dooks at sifive.com
Thu Mar 30 12:18:59 PDT 2023
On 30/03/2023 08:50, Jeremy Kerr wrote:
> In a future change we'll want to read from the IBI FIFO too, so turn
> dw_i3c_read_rx_fifo() into a generic read with the FIFO register as a
> parameter.
>
> Signed-off-by: Jeremy Kerr <jk at codeconstruct.com.au>
> ---
> drivers/i3c/master/dw-i3c-master.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
> index 9fc03108a5db..cb38ef95f21a 100644
> --- a/drivers/i3c/master/dw-i3c-master.c
> +++ b/drivers/i3c/master/dw-i3c-master.c
> @@ -318,18 +318,24 @@ static void dw_i3c_master_wr_tx_fifo(struct dw_i3c_master *master,
> }
> }
>
> -static void dw_i3c_master_read_rx_fifo(struct dw_i3c_master *master,
> - u8 *bytes, int nbytes)
> +static void dw_i3c_master_read_fifo(struct dw_i3c_master *master,
> + int reg, u8 *bytes, int nbytes)
> {
> - readsl(master->regs + RX_TX_DATA_PORT, bytes, nbytes / 4);
> + readsl(master->regs + reg, bytes, nbytes / 4);
> if (nbytes & 3) {
> u32 tmp;
>
> - readsl(master->regs + RX_TX_DATA_PORT, &tmp, 1);
> + readsl(master->regs + reg, &tmp, 1);
> memcpy(bytes + (nbytes & ~3), &tmp, nbytes & 3);
> }
> }
>
> +static void dw_i3c_master_read_rx_fifo(struct dw_i3c_master *master,
> + u8 *bytes, int nbytes)
> +{
> + return dw_i3c_master_read_fifo(master, RX_TX_DATA_PORT, bytes, nbytes);
> +}
> +
Might want to make it inline too.
> static struct dw_i3c_xfer *
> dw_i3c_master_alloc_xfer(struct dw_i3c_master *master, unsigned int ncmds)
> {
More information about the linux-i3c
mailing list