RE: [PATCH] usb: dwc3: imx8mp: detect dwc3 core node via compatible string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

> -----Original Message-----
> From: Felipe Balbi <balbi@xxxxxxxxxx>
> Sent: Thursday, May 6, 2021 10:32 PM
> To: Jun Li <jun.li@xxxxxxx>; gregkh@xxxxxxxxxxxxxxxxxxx
> Cc: shawnguo@xxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>;
> thunder.leizhen@xxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx
> Subject: RE: [PATCH] usb: dwc3: imx8mp: detect dwc3 core node via compatible
> string
> 
> 
> Hi,
> 
> Jun Li <jun.li@xxxxxxx> writes:
> >> > 	val = readl(dwc3_imx->glue_base + USB_WAKEUP_CTRL);
> >> >
> >> > 	if ((dwc3->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc3->xhci)
> >> > 		val |= USB_WAKEUP_EN | USB_WAKEUP_SS_CONN |
> >> > 		       USB_WAKEUP_U3_EN | USB_WAKEUP_DPDM_EN;
> >> > 	else if (dwc3->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE)
> >> > 		val |= USB_WAKEUP_EN | USB_WAKEUP_VBUS_EN |
> >> > 		       USB_WAKEUP_VBUS_SRC_SESS_VAL;
> >>
> >> for this, you could register a listener to the extcon notifier and
> >> update these bits accordingly. With that, you would already *know*
> >> that
> >> dwc3 is probed.
> >
> > With usb role switch class, there no extcon provider, so I think this
> > way can't work for me.
> 
> perhaps role switch class could learn about notifiers ;-)
> 
> >> > static irqreturn_t dwc3_imx8mp_interrupt(int irq, void *_dwc3_imx) {
> >> > 	struct dwc3_imx8mp	*dwc3_imx = _dwc3_imx;
> >> > 	struct dwc3		*dwc = platform_get_drvdata(dwc3_imx->dwc3);
> >> >
> >> > 	if (!dwc3_imx->pm_suspended)
> >> > 		return IRQ_HANDLED;
> >> >
> >> > 	disable_irq_nosync(dwc3_imx->irq);
> >> > 	dwc3_imx->wakeup_pending = true;
> >> >
> >> > 	if ((dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc->xhci)
> >> > 		pm_runtime_resume(&dwc->xhci->dev);
> >> > 	else if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE)
> >> > 		pm_runtime_get(dwc->dev);
> >> >
> >> > 	return IRQ_HANDLED;
> >> > }
> >>
> >> for this, maybe you need to teach dwc3 core about wakeup irqs
> >> instead. Have a look dev_pm_set_dedicated_wake_irq().
> >
> > Good suggestion, but if extcon notifier listener can't work for me, my
> > understanding is this *teach* in glue layer driver still need access
> > dwc3 core instance struct, right?
> 
> for now, maybe. But it may be better to implement a notifier method in role
> switch class.

I am not sure if introduce notifier in role switch class is a good idea,
I had the impression extcon is not encouraged to use if possible.

+ Heikki

Thanks
Li Jun

> 
> --
> balbi




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux