Merge tag 'usb-ci-v5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 26 May 2020 08:27:14 +0000 (10:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 26 May 2020 08:27:14 +0000 (10:27 +0200)
Peter writes:

- Some improvments for ci_hdrc_usb2.c
- Support imx7d USB charger
- Add software sg support for UDC
- Enable user trigger role switch

* tag 'usb-ci-v5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb:
  usb: chipidea: Enable user-space triggered role-switching
  usb: chipidea: udc: add software sg list support
  usb: chipidea: usbmisc_imx: using different ops for imx7d and imx7ulp
  usb: chipidea: pull down dp for possible charger detection operation
  usb: chipidea: introduce imx7d USB charger detection
  usb: chipidea: introduce CI_HDRC_CONTROLLER_VBUS_EVENT glue layer use
  usb: chipidea: usb2: remove unneeded semicolon
  usb: chipidea: allow disabling glue drivers if EMBEDDED
  usb: chipidea: usb2: absorb zevio glue driver
  usb: chipidea: usb2: make clock optional
  usb: chipidea: usb2: fix formatting
  usb: chipidea: usb2: constify zynq_pdata
  usb: chipidea: core: show the real pointer value for register
  usb: chipidea: core: refine the description for this driver
  usb: chipidea: udc: fix the kernel doc for udc.h

1  2 
drivers/usb/chipidea/ci_hdrc_imx.c

index a479af3ae31d1a8ee9047812473438060b52d718,fb4097f02391c5accf5df6bb76e1a8bbfe00fd31..5ae16368a0c75a06588b0ae3fa97ac7a71d5e274
@@@ -271,6 -271,7 +271,7 @@@ static int ci_hdrc_imx_notify_event(str
        struct device *dev = ci->dev->parent;
        struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
        int ret = 0;
+       struct imx_usbmisc_data *mdata = data->usbmisc_data;
  
        switch (event) {
        case CI_HDRC_IMX_HSIC_ACTIVE_EVENT:
                }
                break;
        case CI_HDRC_IMX_HSIC_SUSPEND_EVENT:
-               ret = imx_usbmisc_hsic_set_connect(data->usbmisc_data);
+               ret = imx_usbmisc_hsic_set_connect(mdata);
                if (ret)
                        dev_err(dev,
                                "hsic_set_connect failed, err=%d\n", ret);
                break;
+       case CI_HDRC_CONTROLLER_VBUS_EVENT:
+               if (ci->vbus_active)
+                       ret = imx_usbmisc_charger_detection(mdata, true);
+               else
+                       ret = imx_usbmisc_charger_detection(mdata, false);
+               if (ci->usb_phy)
+                       schedule_work(&ci->usb_phy->chg_work);
+               break;
        default:
                break;
        }
@@@ -393,7 -402,8 +402,7 @@@ static int ci_hdrc_imx_probe(struct pla
        }
  
        if (pdata.flags & CI_HDRC_PMQOS)
 -              pm_qos_add_request(&data->pm_qos_req,
 -                      PM_QOS_CPU_DMA_LATENCY, 0);
 +              cpu_latency_qos_add_request(&data->pm_qos_req, 0);
  
        ret = imx_get_clks(dev);
        if (ret)
        }
  
        pdata.usb_phy = data->phy;
+       if (data->usbmisc_data)
+               data->usbmisc_data->usb_phy = data->phy;
  
        if ((of_device_is_compatible(np, "fsl,imx53-usb") ||
             of_device_is_compatible(np, "fsl,imx51-usb")) && pdata.usb_phy &&
@@@ -477,7 -489,7 +488,7 @@@ disable_hsic_regulator
                /* don't overwrite original ret (cf. EPROBE_DEFER) */
                regulator_disable(data->hsic_pad_regulator);
        if (pdata.flags & CI_HDRC_PMQOS)
 -              pm_qos_remove_request(&data->pm_qos_req);
 +              cpu_latency_qos_remove_request(&data->pm_qos_req);
        data->ci_pdev = NULL;
        return ret;
  }
@@@ -498,7 -510,7 +509,7 @@@ static int ci_hdrc_imx_remove(struct pl
        if (data->ci_pdev) {
                imx_disable_unprepare_clks(&pdev->dev);
                if (data->plat_data->flags & CI_HDRC_PMQOS)
 -                      pm_qos_remove_request(&data->pm_qos_req);
 +                      cpu_latency_qos_remove_request(&data->pm_qos_req);
                if (data->hsic_pad_regulator)
                        regulator_disable(data->hsic_pad_regulator);
        }
@@@ -526,7 -538,7 +537,7 @@@ static int __maybe_unused imx_controlle
  
        imx_disable_unprepare_clks(dev);
        if (data->plat_data->flags & CI_HDRC_PMQOS)
 -              pm_qos_remove_request(&data->pm_qos_req);
 +              cpu_latency_qos_remove_request(&data->pm_qos_req);
  
        data->in_lpm = true;
  
@@@ -546,7 -558,8 +557,7 @@@ static int __maybe_unused imx_controlle
        }
  
        if (data->plat_data->flags & CI_HDRC_PMQOS)
 -              pm_qos_add_request(&data->pm_qos_req,
 -                      PM_QOS_CPU_DMA_LATENCY, 0);
 +              cpu_latency_qos_add_request(&data->pm_qos_req, 0);
  
        ret = imx_prepare_enable_clks(dev);
        if (ret)