mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge 4.7-rc6 into usb-next
We want the USB fixes in here as well. Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
commit
c318a821b9
504 changed files with 4321 additions and 2570 deletions
|
|
@ -21,6 +21,7 @@
|
|||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/mutex.h>
|
||||
|
|
@ -450,3 +451,4 @@ int otg_statemachine(struct otg_fsm *fsm)
|
|||
return fsm->state_changed;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(otg_statemachine);
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
|||
|
|
@ -2598,26 +2598,23 @@ EXPORT_SYMBOL_GPL(usb_create_hcd);
|
|||
* Don't deallocate the bandwidth_mutex until the last shared usb_hcd is
|
||||
* deallocated.
|
||||
*
|
||||
* Make sure to only deallocate the bandwidth_mutex when the primary HCD is
|
||||
* freed. When hcd_release() is called for either hcd in a peer set
|
||||
* invalidate the peer's ->shared_hcd and ->primary_hcd pointers to
|
||||
* block new peering attempts
|
||||
* Make sure to deallocate the bandwidth_mutex only when the last HCD is
|
||||
* freed. When hcd_release() is called for either hcd in a peer set,
|
||||
* invalidate the peer's ->shared_hcd and ->primary_hcd pointers.
|
||||
*/
|
||||
static void hcd_release(struct kref *kref)
|
||||
{
|
||||
struct usb_hcd *hcd = container_of (kref, struct usb_hcd, kref);
|
||||
|
||||
mutex_lock(&usb_port_peer_mutex);
|
||||
if (usb_hcd_is_primary_hcd(hcd)) {
|
||||
kfree(hcd->address0_mutex);
|
||||
kfree(hcd->bandwidth_mutex);
|
||||
}
|
||||
if (hcd->shared_hcd) {
|
||||
struct usb_hcd *peer = hcd->shared_hcd;
|
||||
|
||||
peer->shared_hcd = NULL;
|
||||
if (peer->primary_hcd == hcd)
|
||||
peer->primary_hcd = NULL;
|
||||
peer->primary_hcd = NULL;
|
||||
} else {
|
||||
kfree(hcd->address0_mutex);
|
||||
kfree(hcd->bandwidth_mutex);
|
||||
}
|
||||
mutex_unlock(&usb_port_peer_mutex);
|
||||
kfree(hcd);
|
||||
|
|
|
|||
|
|
@ -233,7 +233,8 @@ static int st_dwc3_probe(struct platform_device *pdev)
|
|||
dev_vdbg(&pdev->dev, "glue-logic addr 0x%p, syscfg-reg offset 0x%x\n",
|
||||
dwc3_data->glue_base, dwc3_data->syscfg_reg_off);
|
||||
|
||||
dwc3_data->rstc_pwrdn = devm_reset_control_get(dev, "powerdown");
|
||||
dwc3_data->rstc_pwrdn =
|
||||
devm_reset_control_get_exclusive(dev, "powerdown");
|
||||
if (IS_ERR(dwc3_data->rstc_pwrdn)) {
|
||||
dev_err(&pdev->dev, "could not get power controller\n");
|
||||
ret = PTR_ERR(dwc3_data->rstc_pwrdn);
|
||||
|
|
@ -243,7 +244,8 @@ static int st_dwc3_probe(struct platform_device *pdev)
|
|||
/* Manage PowerDown */
|
||||
reset_control_deassert(dwc3_data->rstc_pwrdn);
|
||||
|
||||
dwc3_data->rstc_rst = devm_reset_control_get(dev, "softreset");
|
||||
dwc3_data->rstc_rst =
|
||||
devm_reset_control_get_shared(dev, "softreset");
|
||||
if (IS_ERR(dwc3_data->rstc_rst)) {
|
||||
dev_err(&pdev->dev, "could not get reset controller\n");
|
||||
ret = PTR_ERR(dwc3_data->rstc_rst);
|
||||
|
|
|
|||
|
|
@ -206,7 +206,8 @@ static int st_ehci_platform_probe(struct platform_device *dev)
|
|||
priv->clk48 = NULL;
|
||||
}
|
||||
|
||||
priv->pwr = devm_reset_control_get_optional(&dev->dev, "power");
|
||||
priv->pwr =
|
||||
devm_reset_control_get_optional_shared(&dev->dev, "power");
|
||||
if (IS_ERR(priv->pwr)) {
|
||||
err = PTR_ERR(priv->pwr);
|
||||
if (err == -EPROBE_DEFER)
|
||||
|
|
@ -214,7 +215,8 @@ static int st_ehci_platform_probe(struct platform_device *dev)
|
|||
priv->pwr = NULL;
|
||||
}
|
||||
|
||||
priv->rst = devm_reset_control_get_optional(&dev->dev, "softreset");
|
||||
priv->rst =
|
||||
devm_reset_control_get_optional_shared(&dev->dev, "softreset");
|
||||
if (IS_ERR(priv->rst)) {
|
||||
err = PTR_ERR(priv->rst);
|
||||
if (err == -EPROBE_DEFER)
|
||||
|
|
|
|||
|
|
@ -188,13 +188,15 @@ static int st_ohci_platform_probe(struct platform_device *dev)
|
|||
priv->clk48 = NULL;
|
||||
}
|
||||
|
||||
priv->pwr = devm_reset_control_get_optional(&dev->dev, "power");
|
||||
priv->pwr =
|
||||
devm_reset_control_get_optional_shared(&dev->dev, "power");
|
||||
if (IS_ERR(priv->pwr)) {
|
||||
err = PTR_ERR(priv->pwr);
|
||||
goto err_put_clks;
|
||||
}
|
||||
|
||||
priv->rst = devm_reset_control_get_optional(&dev->dev, "softreset");
|
||||
priv->rst =
|
||||
devm_reset_control_get_optional_shared(&dev->dev, "softreset");
|
||||
if (IS_ERR(priv->rst)) {
|
||||
err = PTR_ERR(priv->rst);
|
||||
goto err_put_clks;
|
||||
|
|
|
|||
Loading…
Reference in a new issue