Merge "usb: xhci-plat: Add DT parameter to program xhci imod_interval"

This commit is contained in:
qctecmdr 2019-10-25 09:42:21 -07:00 • committed by Gerrit - the friendly Code Review server
commit 7a8fe7f744
3 changed files with 16 additions and 1 deletions

View file

@ -1323,6 +1323,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
dwc->dis_metastability_quirk = device_property_read_bool(dev,
"snps,dis_metastability_quirk");
device_property_read_u32(dev, "snps,xhci-imod-value",
&dwc->xhci_imod_value);
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis;

View file

@ -1032,6 +1032,7 @@ struct dwc3_scratchpad_array {
* @dis_metastability_quirk: set to disable metastability quirk.
* @imod_interval: set the interrupt moderation interval in 250ns
* increments or 0 to disable.
* @xhci_imod_value: imod value to use with xhci
*/
struct dwc3 {
struct work_struct drd_work;
@ -1221,6 +1222,7 @@ struct dwc3 {
unsigned dis_metastability_quirk:1;
u16 imod_interval;
u32 xhci_imod_value;
};
#define INCRX_BURST_MODE 0

View file

@ -43,12 +43,13 @@ out:
int dwc3_host_init(struct dwc3 *dwc)
{
struct property_entry props[4];
struct property_entry props[5];
struct platform_device *xhci;
int ret, irq;
struct resource *res;
struct platform_device *dwc3_pdev = to_platform_device(dwc->dev);
int prop_idx = 0;
struct property_entry imod_prop;
irq = dwc3_host_get_irq(dwc);
if (irq < 0)
@ -93,6 +94,15 @@ int dwc3_host_init(struct dwc3 *dwc)
if (dwc->usb2_lpm_disable)
props[prop_idx++].name = "usb2-lpm-disable";
if (dwc->xhci_imod_value) {
imod_prop.name = "imod-interval-ns";
imod_prop.length = sizeof(u32);
imod_prop.is_array = false;
imod_prop.type = DEV_PROP_U32;
imod_prop.value.u32_data = dwc->xhci_imod_value;
props[prop_idx++] = imod_prop;
}
/**
* WORKAROUND: dwc3 revisions <=3.00a have a limitation
* where Port Disable command doesn't work.