Commit 81db9e8e authored by Shubhrajyoti Datta's avatar Shubhrajyoti Datta Committed by Greg Kroah-Hartman
Browse files

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: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarShubhrajyoti Datta <shubhrajyoti.datta@amd.com>
Link: https://lore.kernel.org/r/20220826120559.2122-3-shubhrajyoti.datta@amd.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8ed030de
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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;