Merge tag 'usb-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB updates from Greg KH: "Here's the big USB driver update for 4.8-rc1. Lots of the normal stuff in here, musb, gadget, xhci, and other updates and fixes. All of the details are in the shortlog. All of these have been in linux-next for a while with no reported issues" * tag 'usb-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (169 commits) cdc-acm: beautify probe() cdc-wdm: use the common CDC parser cdc-acm: cleanup error handling cdc-acm: use the common parser usbnet: move the CDC parser into USB core usb: musb: sunxi: Simplify dr_mode handling usb: musb: sunxi: make unexported symbols static usb: musb: cppi41: add dma channel tracepoints usb: musb: cppi41: move struct cppi41_dma_channel to header usb: musb: cleanup cppi_dma header usb: musb: gadget: add usb-request tracepoints usb: musb: host: add urb tracepoints usb: musb: add tracepoints to dump interrupt events usb: musb: add tracepoints for register access usb: musb: dsps: use musb register read/write wrappers instead usb: musb: switch dev_dbg to tracepoints usb: musb: add tracepoints support for debugging usb: quirks: Add no-lpm quirk for Elan phy: rcar-gen3-usb2: fix mutex_lock calling in interrupt phy: rockhip-usb: use devm_add_action_or_reset() ...
这个提交包含在:
@@ -330,6 +330,17 @@ static int usb3503_i2c_probe(struct i2c_client *i2c,
|
||||
return usb3503_probe(hub);
|
||||
}
|
||||
|
||||
static int usb3503_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct usb3503 *hub;
|
||||
|
||||
hub = i2c_get_clientdata(i2c);
|
||||
if (hub->clk)
|
||||
clk_disable_unprepare(hub->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int usb3503_platform_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct usb3503 *hub;
|
||||
@@ -338,10 +349,22 @@ static int usb3503_platform_probe(struct platform_device *pdev)
|
||||
if (!hub)
|
||||
return -ENOMEM;
|
||||
hub->dev = &pdev->dev;
|
||||
platform_set_drvdata(pdev, hub);
|
||||
|
||||
return usb3503_probe(hub);
|
||||
}
|
||||
|
||||
static int usb3503_platform_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct usb3503 *hub;
|
||||
|
||||
hub = platform_get_drvdata(pdev);
|
||||
if (hub->clk)
|
||||
clk_disable_unprepare(hub->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int usb3503_i2c_suspend(struct device *dev)
|
||||
{
|
||||
@@ -395,6 +418,7 @@ static struct i2c_driver usb3503_i2c_driver = {
|
||||
.of_match_table = of_match_ptr(usb3503_of_match),
|
||||
},
|
||||
.probe = usb3503_i2c_probe,
|
||||
.remove = usb3503_i2c_remove,
|
||||
.id_table = usb3503_id,
|
||||
};
|
||||
|
||||
@@ -404,6 +428,7 @@ static struct platform_driver usb3503_platform_driver = {
|
||||
.of_match_table = of_match_ptr(usb3503_of_match),
|
||||
},
|
||||
.probe = usb3503_platform_probe,
|
||||
.remove = usb3503_platform_remove,
|
||||
};
|
||||
|
||||
static int __init usb3503_init(void)
|
||||
|
在新工单中引用
屏蔽一个用户