Message ID | 20200324102030.31000-1-narmstrong@baylibre.com (mailing list archive) |
---|---|
Headers | show |
Series | usb: dwc3: meson: add OTG support for GXL/GXM | expand |
Neil Armstrong <narmstrong@baylibre.com> writes: > The USB support was initialy done with a set of PHYs and dwc3-of-simple > because the architecture of the USB complex was not understood correctly > at the time (and proper documentation was missing...). > > But with the G12A family, the USB complex was correctly understood and > implemented correctly. > But seems the G12A architecture was derived for the GXL USB architecture, > with minor differences and looks we can share most of the USB DWC3 glue > driver. > > This patchset refactors and adds callbacks to handle the architecture > difference while keeping the main code shared. > > The main difference is that on GXL/GXM the USB2 PHY control registers > are mixed with the PHY registers (we already handle correctly), and > the GLUE registers are allmost (99%) the same as G12A. > > But, the GXL/GXM HW is buggy, here are the quirks : > - for the DWC2 controller to reset correctly, the GLUE mux must be switched > to peripheral when the DWC2 controlle probes. For now it's handled by simply > switching to device when probing the subnodes, but it may be not enough > - when manually switching from Host to Device when the USB port is not > populated (should not happen with proper Micro-USB/USB-C OTG switch), it > makes the DWC3 to crash. The only way to avoid that is to use the Host > Disconnect bit to disconnect the DWC3 controller from the port, but we can't > recover the Host functionnality unless resetting the DWC3 controller. > This bit is set when only manual switch is done, and a warning is printed > on manual switching. > > The patches 1-8 should be applied first, then either waiting the next release > or if the usb maintainer can provide us a stable tag, we can use it to merge > the DT and bindings. it's unclear to me if this series is ready to be merged. Can someone confirm? If it is, can you resend with all reviewed by tags in place? Thanks
Felipe Balbi <balbi@kernel.org> writes: > Neil Armstrong <narmstrong@baylibre.com> writes: > >> The USB support was initialy done with a set of PHYs and dwc3-of-simple >> because the architecture of the USB complex was not understood correctly >> at the time (and proper documentation was missing...). >> >> But with the G12A family, the USB complex was correctly understood and >> implemented correctly. >> But seems the G12A architecture was derived for the GXL USB architecture, >> with minor differences and looks we can share most of the USB DWC3 glue >> driver. >> >> This patchset refactors and adds callbacks to handle the architecture >> difference while keeping the main code shared. >> >> The main difference is that on GXL/GXM the USB2 PHY control registers >> are mixed with the PHY registers (we already handle correctly), and >> the GLUE registers are allmost (99%) the same as G12A. >> >> But, the GXL/GXM HW is buggy, here are the quirks : >> - for the DWC2 controller to reset correctly, the GLUE mux must be switched >> to peripheral when the DWC2 controlle probes. For now it's handled by simply >> switching to device when probing the subnodes, but it may be not enough >> - when manually switching from Host to Device when the USB port is not >> populated (should not happen with proper Micro-USB/USB-C OTG switch), it >> makes the DWC3 to crash. The only way to avoid that is to use the Host >> Disconnect bit to disconnect the DWC3 controller from the port, but we can't >> recover the Host functionnality unless resetting the DWC3 controller. >> This bit is set when only manual switch is done, and a warning is printed >> on manual switching. >> >> The patches 1-8 should be applied first, then either waiting the next release >> or if the usb maintainer can provide us a stable tag, we can use it to merge >> the DT and bindings. > > it's unclear to me if this series is ready to be merged. Can someone > confirm? If it is, can you resend with all reviewed by tags in place? Are we getting a v2 for this?
Hi, On 14/05/2020 12:23, Felipe Balbi wrote: > Felipe Balbi <balbi@kernel.org> writes: > >> Neil Armstrong <narmstrong@baylibre.com> writes: >> >>> The USB support was initialy done with a set of PHYs and dwc3-of-simple >>> because the architecture of the USB complex was not understood correctly >>> at the time (and proper documentation was missing...). >>> >>> But with the G12A family, the USB complex was correctly understood and >>> implemented correctly. >>> But seems the G12A architecture was derived for the GXL USB architecture, >>> with minor differences and looks we can share most of the USB DWC3 glue >>> driver. >>> >>> This patchset refactors and adds callbacks to handle the architecture >>> difference while keeping the main code shared. >>> >>> The main difference is that on GXL/GXM the USB2 PHY control registers >>> are mixed with the PHY registers (we already handle correctly), and >>> the GLUE registers are allmost (99%) the same as G12A. >>> >>> But, the GXL/GXM HW is buggy, here are the quirks : >>> - for the DWC2 controller to reset correctly, the GLUE mux must be switched >>> to peripheral when the DWC2 controlle probes. For now it's handled by simply >>> switching to device when probing the subnodes, but it may be not enough >>> - when manually switching from Host to Device when the USB port is not >>> populated (should not happen with proper Micro-USB/USB-C OTG switch), it >>> makes the DWC3 to crash. The only way to avoid that is to use the Host >>> Disconnect bit to disconnect the DWC3 controller from the port, but we can't >>> recover the Host functionnality unless resetting the DWC3 controller. >>> This bit is set when only manual switch is done, and a warning is printed >>> on manual switching. >>> >>> The patches 1-8 should be applied first, then either waiting the next release >>> or if the usb maintainer can provide us a stable tag, we can use it to merge >>> the DT and bindings. >> >> it's unclear to me if this series is ready to be merged. Can someone >> confirm? If it is, can you resend with all reviewed by tags in place? > > Are we getting a v2 for this? > Yes, even a v3 with reviews on all patches: http://lkml.kernel.org/r/20200416121910.12723-1-narmstrong@baylibre.com Neil
Neil Armstrong <narmstrong@baylibre.com> writes: > Hi, > > On 14/05/2020 12:23, Felipe Balbi wrote: >> Felipe Balbi <balbi@kernel.org> writes: >> >>> Neil Armstrong <narmstrong@baylibre.com> writes: >>> >>>> The USB support was initialy done with a set of PHYs and dwc3-of-simple >>>> because the architecture of the USB complex was not understood correctly >>>> at the time (and proper documentation was missing...). >>>> >>>> But with the G12A family, the USB complex was correctly understood and >>>> implemented correctly. >>>> But seems the G12A architecture was derived for the GXL USB architecture, >>>> with minor differences and looks we can share most of the USB DWC3 glue >>>> driver. >>>> >>>> This patchset refactors and adds callbacks to handle the architecture >>>> difference while keeping the main code shared. >>>> >>>> The main difference is that on GXL/GXM the USB2 PHY control registers >>>> are mixed with the PHY registers (we already handle correctly), and >>>> the GLUE registers are allmost (99%) the same as G12A. >>>> >>>> But, the GXL/GXM HW is buggy, here are the quirks : >>>> - for the DWC2 controller to reset correctly, the GLUE mux must be switched >>>> to peripheral when the DWC2 controlle probes. For now it's handled by simply >>>> switching to device when probing the subnodes, but it may be not enough >>>> - when manually switching from Host to Device when the USB port is not >>>> populated (should not happen with proper Micro-USB/USB-C OTG switch), it >>>> makes the DWC3 to crash. The only way to avoid that is to use the Host >>>> Disconnect bit to disconnect the DWC3 controller from the port, but we can't >>>> recover the Host functionnality unless resetting the DWC3 controller. >>>> This bit is set when only manual switch is done, and a warning is printed >>>> on manual switching. >>>> >>>> The patches 1-8 should be applied first, then either waiting the next release >>>> or if the usb maintainer can provide us a stable tag, we can use it to merge >>>> the DT and bindings. >>> >>> it's unclear to me if this series is ready to be merged. Can someone >>> confirm? If it is, can you resend with all reviewed by tags in place? >> >> Are we getting a v2 for this? >> > > Yes, even a v3 with reviews on all patches: > http://lkml.kernel.org/r/20200416121910.12723-1-narmstrong@baylibre.com In that case, can you check that I have applied everything correctly in testing/next? cheers
On 14/05/2020 14:59, Felipe Balbi wrote: > Neil Armstrong <narmstrong@baylibre.com> writes: > >> Hi, >> >> On 14/05/2020 12:23, Felipe Balbi wrote: >>> Felipe Balbi <balbi@kernel.org> writes: >>> >>>> Neil Armstrong <narmstrong@baylibre.com> writes: >>>> >>>>> The USB support was initialy done with a set of PHYs and dwc3-of-simple >>>>> because the architecture of the USB complex was not understood correctly >>>>> at the time (and proper documentation was missing...). >>>>> >>>>> But with the G12A family, the USB complex was correctly understood and >>>>> implemented correctly. >>>>> But seems the G12A architecture was derived for the GXL USB architecture, >>>>> with minor differences and looks we can share most of the USB DWC3 glue >>>>> driver. >>>>> >>>>> This patchset refactors and adds callbacks to handle the architecture >>>>> difference while keeping the main code shared. >>>>> >>>>> The main difference is that on GXL/GXM the USB2 PHY control registers >>>>> are mixed with the PHY registers (we already handle correctly), and >>>>> the GLUE registers are allmost (99%) the same as G12A. >>>>> >>>>> But, the GXL/GXM HW is buggy, here are the quirks : >>>>> - for the DWC2 controller to reset correctly, the GLUE mux must be switched >>>>> to peripheral when the DWC2 controlle probes. For now it's handled by simply >>>>> switching to device when probing the subnodes, but it may be not enough >>>>> - when manually switching from Host to Device when the USB port is not >>>>> populated (should not happen with proper Micro-USB/USB-C OTG switch), it >>>>> makes the DWC3 to crash. The only way to avoid that is to use the Host >>>>> Disconnect bit to disconnect the DWC3 controller from the port, but we can't >>>>> recover the Host functionnality unless resetting the DWC3 controller. >>>>> This bit is set when only manual switch is done, and a warning is printed >>>>> on manual switching. >>>>> >>>>> The patches 1-8 should be applied first, then either waiting the next release >>>>> or if the usb maintainer can provide us a stable tag, we can use it to merge >>>>> the DT and bindings. >>>> >>>> it's unclear to me if this series is ready to be merged. Can someone >>>> confirm? If it is, can you resend with all reviewed by tags in place? >>> >>> Are we getting a v2 for this? >>> >> >> Yes, even a v3 with reviews on all patches: >> http://lkml.kernel.org/r/20200416121910.12723-1-narmstrong@baylibre.com > > In that case, can you check that I have applied everything correctly in > testing/next? > > cheers > Looks fine, Thanks, Neil