On Fri, 26 Aug 2022, Shubhrajyoti Datta wrote: > Some of the implementations can read only 32 bits because of > the interface limitations of the port they are connected to. > Add a parameter reg-io-width for supporting such platforms. > > Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xxxxxxx> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> -- i. > --- > v4: > No change > > drivers/tty/serial/amba-pl011.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c > index 15f0e4d88c5a..033bf8699540 100644 > --- a/drivers/tty/serial/amba-pl011.c > +++ b/drivers/tty/serial/amba-pl011.c > @@ -2777,6 +2777,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) > struct uart_amba_port *uap; > struct vendor_data *vendor = id->data; > int portnr, ret; > + u32 val; > > portnr = pl011_find_free_port(); > if (portnr < 0) > @@ -2801,6 +2802,21 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) > uap->port.rs485_supported = pl011_rs485_supported; > snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev)); > > + if (device_property_read_u32(&dev->dev, "reg-io-width", &val) == 0) { > + switch (val) { > + case 1: > + uap->port.iotype = UPIO_MEM; > + break; > + case 4: > + uap->port.iotype = UPIO_MEM32; > + break; > + default: > + dev_warn(&dev->dev, "unsupported reg-io-width (%d)\n", > + val); > + return -EINVAL; > + } > + } > + > ret = pl011_setup_port(&dev->dev, uap, &dev->res, portnr); > if (ret) > return ret;