950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. From 20684f46eb962173b57ba2d70f9f2e028c95c4c9 Mon Sep 17 00:00:00 2001
  2. From: Jonathan Bell <[email protected]>
  3. Date: Wed, 24 Jan 2024 16:28:19 +0000
  4. Subject: [PATCH 0853/1085] drivers: usb: dwc3: add FS/LS bus instance parkmode
  5. disable bit
  6. There are three parkmode disable bits, one for each bus instance type.
  7. Add FS/LS and parse the quirk out of DT. Also update the slightly
  8. mangled quirk descriptions.
  9. Signed-off-by: Jonathan Bell <[email protected]>
  10. ---
  11. drivers/usb/dwc3/core.c | 5 +++++
  12. drivers/usb/dwc3/core.h | 12 ++++++++----
  13. 2 files changed, 13 insertions(+), 4 deletions(-)
  14. --- a/drivers/usb/dwc3/core.c
  15. +++ b/drivers/usb/dwc3/core.c
  16. @@ -1372,6 +1372,9 @@ static int dwc3_core_init(struct dwc3 *d
  17. if (dwc->parkmode_disable_hs_quirk)
  18. reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS;
  19. + if (dwc->parkmode_disable_fsls_quirk)
  20. + reg |= DWC3_GUCTL1_PARKMODE_DISABLE_FSLS;
  21. +
  22. if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) &&
  23. (dwc->maximum_speed == USB_SPEED_HIGH ||
  24. dwc->maximum_speed == USB_SPEED_FULL))
  25. @@ -1670,6 +1673,8 @@ static void dwc3_get_properties(struct d
  26. "snps,parkmode-disable-ss-quirk");
  27. dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
  28. "snps,parkmode-disable-hs-quirk");
  29. + dwc->parkmode_disable_fsls_quirk = device_property_read_bool(dev,
  30. + "snps,parkmode-disable-fsls-quirk");
  31. dwc->gfladj_refclk_lpm_sel = device_property_read_bool(dev,
  32. "snps,gfladj-refclk-lpm-sel-quirk");
  33. --- a/drivers/usb/dwc3/core.h
  34. +++ b/drivers/usb/dwc3/core.h
  35. @@ -271,6 +271,7 @@
  36. #define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24)
  37. #define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17)
  38. #define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16)
  39. +#define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15)
  40. #define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10)
  41. /* Global Status Register */
  42. @@ -1121,10 +1122,12 @@ struct dwc3_scratchpad_array {
  43. * generation after resume from suspend.
  44. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
  45. * VBUS with an external supply.
  46. - * @parkmode_disable_ss_quirk: set if we need to disable all SuperSpeed
  47. - * instances in park mode.
  48. - * @parkmode_disable_hs_quirk: set if we need to disable all HishSpeed
  49. - * instances in park mode.
  50. + * @parkmode_disable_ss_quirk: If set, disable park mode feature for all
  51. + * Superspeed instances.
  52. + * @parkmode_disable_hs_quirk: If set, disable park mode feature for all
  53. + * Highspeed instances.
  54. + * @parkmode_disable_fsls_quirk: If set, disable park mode feature for all
  55. + * Full/Lowspeed instances.
  56. * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
  57. * @tx_de_emphasis: Tx de-emphasis value
  58. * 0 - -6dB de-emphasis
  59. @@ -1351,6 +1354,7 @@ struct dwc3 {
  60. unsigned ulpi_ext_vbus_drv:1;
  61. unsigned parkmode_disable_ss_quirk:1;
  62. unsigned parkmode_disable_hs_quirk:1;
  63. + unsigned parkmode_disable_fsls_quirk:1;
  64. unsigned gfladj_refclk_lpm_sel:1;
  65. unsigned tx_de_emphasis_quirk:1;