Commit eac68e8f authored by Robert Baldyga's avatar Robert Baldyga Committed by Felipe Balbi

usb: dwc3: make LPM configurable in DT

This patch removes "Enable USB3 LPM Capability" option from Kconfig
and adds snps,usb3_lpm_capable devicetree property instead of it.

USB3 LPM (Link Power Management) capability is hardware property, and
it's platform dependent, so if our hardware supports this feature, we
want rather to configure it in devicetree than having it as Kconfig option.
Signed-off-by: default avatarRobert Baldyga <r.baldyga@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent ad78c918
...@@ -14,6 +14,7 @@ Optional properties: ...@@ -14,6 +14,7 @@ Optional properties:
- phys: from the *Generic PHY* bindings - phys: from the *Generic PHY* bindings
- phy-names: from the *Generic PHY* bindings - phy-names: from the *Generic PHY* bindings
- tx-fifo-resize: determines if the FIFO *has* to be reallocated. - tx-fifo-resize: determines if the FIFO *has* to be reallocated.
- snps,usb3_lpm_capable: determines if platform is USB3 LPM capable
- snps,disable_scramble_quirk: true when SW should disable data scrambling. - snps,disable_scramble_quirk: true when SW should disable data scrambling.
Only really useful for FPGA builds. Only really useful for FPGA builds.
- snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum enabled - snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum enabled
......
...@@ -104,11 +104,4 @@ config USB_DWC3_DEBUG ...@@ -104,11 +104,4 @@ config USB_DWC3_DEBUG
help help
Say Y here to enable debugging messages on DWC3 Driver. Say Y here to enable debugging messages on DWC3 Driver.
config DWC3_HOST_USB3_LPM_ENABLE
bool "Enable USB3 LPM Capability"
depends on USB_DWC3_HOST=y || USB_DWC3_DUAL_ROLE=y
default n
help
Select this when you want to enable USB3 LPM with dwc3 xhci host.
endif endif
...@@ -804,6 +804,8 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -804,6 +804,8 @@ static int dwc3_probe(struct platform_device *pdev)
"snps,is-utmi-l1-suspend"); "snps,is-utmi-l1-suspend");
of_property_read_u8(node, "snps,hird-threshold", of_property_read_u8(node, "snps,hird-threshold",
&hird_threshold); &hird_threshold);
dwc->usb3_lpm_capable = of_property_read_bool(node,
"snps,usb3_lpm_capable");
dwc->needs_fifo_resize = of_property_read_bool(node, dwc->needs_fifo_resize = of_property_read_bool(node,
"tx-fifo-resize"); "tx-fifo-resize");
...@@ -844,6 +846,7 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -844,6 +846,7 @@ static int dwc3_probe(struct platform_device *pdev)
hird_threshold = pdata->hird_threshold; hird_threshold = pdata->hird_threshold;
dwc->needs_fifo_resize = pdata->tx_fifo_resize; dwc->needs_fifo_resize = pdata->tx_fifo_resize;
dwc->usb3_lpm_capable = pdata->usb3_lpm_capable;
dwc->dr_mode = pdata->dr_mode; dwc->dr_mode = pdata->dr_mode;
dwc->disable_scramble_quirk = pdata->disable_scramble_quirk; dwc->disable_scramble_quirk = pdata->disable_scramble_quirk;
......
...@@ -689,6 +689,7 @@ struct dwc3_scratchpad_array { ...@@ -689,6 +689,7 @@ struct dwc3_scratchpad_array {
* @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround * @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround
* @start_config_issued: true when StartConfig command has been issued * @start_config_issued: true when StartConfig command has been issued
* @three_stage_setup: set if we perform a three phase setup * @three_stage_setup: set if we perform a three phase setup
* @usb3_lpm_capable: set if hadrware supports Link Power Management
* @disable_scramble_quirk: set if we enable the disable scramble quirk * @disable_scramble_quirk: set if we enable the disable scramble quirk
* @u2exit_lfps_quirk: set if we enable u2exit lfps quirk * @u2exit_lfps_quirk: set if we enable u2exit lfps quirk
* @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk * @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk
...@@ -812,6 +813,7 @@ struct dwc3 { ...@@ -812,6 +813,7 @@ struct dwc3 {
unsigned setup_packet_pending:1; unsigned setup_packet_pending:1;
unsigned start_config_issued:1; unsigned start_config_issued:1;
unsigned three_stage_setup:1; unsigned three_stage_setup:1;
unsigned usb3_lpm_capable:1;
unsigned disable_scramble_quirk:1; unsigned disable_scramble_quirk:1;
unsigned u2exit_lfps_quirk:1; unsigned u2exit_lfps_quirk:1;
......
...@@ -49,9 +49,7 @@ int dwc3_host_init(struct dwc3 *dwc) ...@@ -49,9 +49,7 @@ int dwc3_host_init(struct dwc3 *dwc)
memset(&pdata, 0, sizeof(pdata)); memset(&pdata, 0, sizeof(pdata));
#ifdef CONFIG_DWC3_HOST_USB3_LPM_ENABLE pdata.usb3_lpm_capable = dwc->usb3_lpm_capable;
pdata.usb3_lpm_capable = 1;
#endif
ret = platform_device_add_data(xhci, &pdata, sizeof(pdata)); ret = platform_device_add_data(xhci, &pdata, sizeof(pdata));
if (ret) { if (ret) {
......
...@@ -24,6 +24,7 @@ struct dwc3_platform_data { ...@@ -24,6 +24,7 @@ struct dwc3_platform_data {
enum usb_device_speed maximum_speed; enum usb_device_speed maximum_speed;
enum usb_dr_mode dr_mode; enum usb_dr_mode dr_mode;
bool tx_fifo_resize; bool tx_fifo_resize;
bool usb3_lpm_capable;
unsigned is_utmi_l1_suspend:1; unsigned is_utmi_l1_suspend:1;
u8 hird_threshold; u8 hird_threshold;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment