On Fri, Aug 16, 2019 at 1:45 PM Heikki Krogerus
<[email protected]> wrote:
>
> The primary purpose for this node will be to allow linking
> the users of the switch to it. The users will be for example
> USB Type-C connectors. By supplying a reference to this
> node in the software nodes representing the USB Type-C
> controllers or connectors, the drivers for those devices can
> access the switch.

> +       ret = software_node_register(&intel_xhci_usb_node);
> +       if (ret)
> +               return ret;
> +
> +       sw_desc.set = intel_xhci_usb_set_role,
> +       sw_desc.get = intel_xhci_usb_get_role,
> +       sw_desc.allow_userspace_control = true,
> +       sw_desc.fwnode = software_node_fwnode(&intel_xhci_usb_node);
> +
>         data->role_sw = usb_role_switch_register(dev, &sw_desc);
>         if (IS_ERR(data->role_sw))
>                 return PTR_ERR(data->role_sw);

Sounds to me like more fwnode_handle_put() calls are missed.

> @@ -164,6 +173,8 @@ static int intel_xhci_usb_remove(struct platform_device 
> *pdev)
>         pm_runtime_disable(&pdev->dev);
>
>         usb_role_switch_unregister(data->role_sw);
> +       fwnode_handle_put(software_node_fwnode(&intel_xhci_usb_node));


-- 
With Best Regards,
Andy Shevchenko

Reply via email to