Skip to content

Commit

Permalink
serial: 8250_exar: Constify the software nodes
Browse files Browse the repository at this point in the history
Software node is always created for additional device
properties. If the properties are constant, the software
node can also be constant.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20210304081311.17340-1-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Heikki Krogerus authored and Greg Kroah-Hartman committed Mar 10, 2021
1 parent b89cfc0 commit 81171e7
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions drivers/tty/serial/8250/8250_exar.c
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ static void setup_gpio(struct pci_dev *pcidev, u8 __iomem *p)

static void *
__xr17v35x_register_gpio(struct pci_dev *pcidev,
const struct property_entry *properties)
const struct software_node *node)
{
struct platform_device *pdev;

Expand All @@ -365,7 +365,7 @@ __xr17v35x_register_gpio(struct pci_dev *pcidev,
pdev->dev.parent = &pcidev->dev;
ACPI_COMPANION_SET(&pdev->dev, ACPI_COMPANION(&pcidev->dev));

if (platform_device_add_properties(pdev, properties) < 0 ||
if (device_add_software_node(&pdev->dev, node) < 0 ||
platform_device_add(pdev) < 0) {
platform_device_put(pdev);
return NULL;
Expand All @@ -380,12 +380,16 @@ static const struct property_entry exar_gpio_properties[] = {
{ }
};

static const struct software_node exar_gpio_node = {
.properties = exar_gpio_properties,
};

static int xr17v35x_register_gpio(struct pci_dev *pcidev,
struct uart_8250_port *port)
{
if (pcidev->vendor == PCI_VENDOR_ID_EXAR)
port->port.private_data =
__xr17v35x_register_gpio(pcidev, exar_gpio_properties);
__xr17v35x_register_gpio(pcidev, &exar_gpio_node);

return 0;
}
Expand Down Expand Up @@ -457,6 +461,10 @@ static const struct property_entry iot2040_gpio_properties[] = {
{ }
};

static const struct software_node iot2040_gpio_node = {
.properties = iot2040_gpio_properties,
};

static int iot2040_register_gpio(struct pci_dev *pcidev,
struct uart_8250_port *port)
{
Expand All @@ -468,7 +476,7 @@ static int iot2040_register_gpio(struct pci_dev *pcidev,
writeb(IOT2040_UARTS_GPIO_HI_MODE, p + UART_EXAR_MPIOSEL_15_8);

port->port.private_data =
__xr17v35x_register_gpio(pcidev, iot2040_gpio_properties);
__xr17v35x_register_gpio(pcidev, &iot2040_gpio_node);

return 0;
}
Expand Down Expand Up @@ -547,6 +555,7 @@ static void pci_xr17v35x_exit(struct pci_dev *pcidev)
struct uart_8250_port *port = serial8250_get_port(priv->line[0]);
struct platform_device *pdev = port->port.private_data;

device_remove_software_node(&pdev->dev);
platform_device_unregister(pdev);
port->port.private_data = NULL;
}
Expand Down

0 comments on commit 81171e7

Please sign in to comment.