On Tue, May 30, 2023 at 02:19:45AM +0000, Stanley Chang[昌育德] wrote: > Hi Greg, > > > > --- a/include/linux/usb/phy.h > > > +++ b/include/linux/usb/phy.h > > > @@ -144,6 +144,10 @@ struct usb_phy { > > > */ > > > int (*set_wakeup)(struct usb_phy *x, bool enabled); > > > > > > + /* notify phy port status change */ > > > + int (*notify_port_status)(struct usb_phy *x, > > > + int port, u16 portstatus, u16 portchange); > > > + > > > /* notify phy connect status change */ > > > int (*notify_connect)(struct usb_phy *x, > > > enum usb_device_speed speed); > > > > Why can't this be part of the same notify_connect() callback? > > The notify connect is at device ready. But I want notify port status change before port reset. > > > What makes it different somehow? Please document this much better. > > In Realtek phy driver, we have designed to dynamically adjust disconnection level and calibrate phy parameters. > So we do this when the device connected bit changes and when the disconnected bit changes. > Port status change notification: > 1. Check if portstatus is USB_PORT_STAT_CONNECTION and portchange is USB_PORT_STAT_C_CONNECTION. > The device is connected, the driver lowers the disconnection level and calibrates the phy parameters. > 2. The device disconnects, the driver increases the disconnect level and calibrates the phy parameters. > > If we adjust the disconnection level in notify_connect , the disconnect may have been triggered at this stage. > So we need to change that as early as possible. Please put this type of information in the changelog and in the comments for the callback when you resubmit it. thanks, greg k-h