drivers: usb: dwc3: add FS/LS bus instance parkmode disable bit

There are three parkmode disable bits, one for each bus instance type.
Add FS/LS and parse the quirk out of DT. Also update the slightly
mangled quirk descriptions.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
This commit is contained in:
Jonathan Bell
2024-01-24 16:28:19 +00:00
committed by Dom Cobley
parent 3d09c34847
commit 2e48c85eeb
2 changed files with 13 additions and 4 deletions

View File

@@ -1340,6 +1340,9 @@ static int dwc3_core_init(struct dwc3 *dwc)
if (dwc->parkmode_disable_hs_quirk) if (dwc->parkmode_disable_hs_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS; reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS;
if (dwc->parkmode_disable_fsls_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_FSLS;
if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) && if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) &&
(dwc->maximum_speed == USB_SPEED_HIGH || (dwc->maximum_speed == USB_SPEED_HIGH ||
dwc->maximum_speed == USB_SPEED_FULL)) dwc->maximum_speed == USB_SPEED_FULL))
@@ -1638,6 +1641,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
"snps,parkmode-disable-ss-quirk"); "snps,parkmode-disable-ss-quirk");
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-hs-quirk"); "snps,parkmode-disable-hs-quirk");
dwc->parkmode_disable_fsls_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-fsls-quirk");
dwc->gfladj_refclk_lpm_sel = device_property_read_bool(dev, dwc->gfladj_refclk_lpm_sel = device_property_read_bool(dev,
"snps,gfladj-refclk-lpm-sel-quirk"); "snps,gfladj-refclk-lpm-sel-quirk");

View File

@@ -271,6 +271,7 @@
#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24) #define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24)
#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) #define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17)
#define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16) #define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16)
#define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15)
#define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10) #define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10)
/* Global Status Register */ /* Global Status Register */
@@ -1117,10 +1118,12 @@ struct dwc3_scratchpad_array {
* generation after resume from suspend. * generation after resume from suspend.
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
* VBUS with an external supply. * VBUS with an external supply.
* @parkmode_disable_ss_quirk: set if we need to disable all SuperSpeed * @parkmode_disable_ss_quirk: If set, disable park mode feature for all
* instances in park mode. * Superspeed instances.
* @parkmode_disable_hs_quirk: set if we need to disable all HishSpeed * @parkmode_disable_hs_quirk: If set, disable park mode feature for all
* instances in park mode. * Highspeed instances.
* @parkmode_disable_fsls_quirk: If set, disable park mode feature for all
* Full/Lowspeed instances.
* @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter * @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter
* running based on ref_clk * running based on ref_clk
* @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
@@ -1347,6 +1350,7 @@ struct dwc3 {
unsigned ulpi_ext_vbus_drv:1; unsigned ulpi_ext_vbus_drv:1;
unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_ss_quirk:1;
unsigned parkmode_disable_hs_quirk:1; unsigned parkmode_disable_hs_quirk:1;
unsigned parkmode_disable_fsls_quirk:1;
unsigned gfladj_refclk_lpm_sel:1; unsigned gfladj_refclk_lpm_sel:1;
unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis_quirk:1;