serial: pl011: Add reg-io-width parameters
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. Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com> Link: https://lore.kernel.org/r/20220826120559.2122-3-shubhrajyoti.datta@amd.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8ed030de05
commit
81db9e8edf
|
@ -2777,6 +2777,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
|
||||||
struct uart_amba_port *uap;
|
struct uart_amba_port *uap;
|
||||||
struct vendor_data *vendor = id->data;
|
struct vendor_data *vendor = id->data;
|
||||||
int portnr, ret;
|
int portnr, ret;
|
||||||
|
u32 val;
|
||||||
|
|
||||||
portnr = pl011_find_free_port();
|
portnr = pl011_find_free_port();
|
||||||
if (portnr < 0)
|
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;
|
uap->port.rs485_supported = pl011_rs485_supported;
|
||||||
snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev));
|
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);
|
ret = pl011_setup_port(&dev->dev, uap, &dev->res, portnr);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue