OSDN Git Service

usb: dwc3: qcom: Constify the software node
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Thu, 4 Feb 2021 14:17:09 +0000 (17:17 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Feb 2021 14:42:08 +0000 (15:42 +0100)
What platform_device_add_properties() does is it allocates
dynamically a software node that will contain the device
properties supplied to it, and then couples that node with
the device. If the properties are constant, the node can be
constant as well.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20210204141711.53775-5-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/dwc3-qcom.c

index d803ee9..846a47b 100644 (file)
@@ -567,6 +567,10 @@ static const struct property_entry dwc3_qcom_acpi_properties[] = {
        {}
 };
 
+static const struct software_node dwc3_qcom_swnode = {
+       .properties = dwc3_qcom_acpi_properties,
+};
+
 static int dwc3_qcom_acpi_register_core(struct platform_device *pdev)
 {
        struct dwc3_qcom        *qcom = platform_get_drvdata(pdev);
@@ -613,16 +617,17 @@ static int dwc3_qcom_acpi_register_core(struct platform_device *pdev)
                goto out;
        }
 
-       ret = platform_device_add_properties(qcom->dwc3,
-                                            dwc3_qcom_acpi_properties);
+       ret = device_add_software_node(&qcom->dwc3->dev, &dwc3_qcom_swnode);
        if (ret < 0) {
                dev_err(&pdev->dev, "failed to add properties\n");
                goto out;
        }
 
        ret = platform_device_add(qcom->dwc3);
-       if (ret)
+       if (ret) {
                dev_err(&pdev->dev, "failed to add device\n");
+               device_remove_software_node(&qcom->dwc3->dev);
+       }
 
 out:
        kfree(child_res);
@@ -837,6 +842,7 @@ static int dwc3_qcom_remove(struct platform_device *pdev)
        struct device *dev = &pdev->dev;
        int i;
 
+       device_remove_software_node(&qcom->dwc3->dev);
        of_platform_depopulate(dev);
 
        for (i = qcom->num_clocks - 1; i >= 0; i--) {