diff options
Diffstat (limited to 'drivers/usb/dwc2/params.c')
| -rw-r--r-- | drivers/usb/dwc2/params.c | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c index 92df3d620f7d..7a6089fa81e1 100644 --- a/drivers/usb/dwc2/params.c +++ b/drivers/usb/dwc2/params.c @@ -232,6 +232,12 @@ const struct of_device_id dwc2_of_match_table[] = {  };  MODULE_DEVICE_TABLE(of, dwc2_of_match_table); +const struct acpi_device_id dwc2_acpi_match[] = { +	{ "BCM2848", (kernel_ulong_t)dwc2_set_bcm_params }, +	{ }, +}; +MODULE_DEVICE_TABLE(acpi, dwc2_acpi_match); +  static void dwc2_set_param_otg_cap(struct dwc2_hsotg *hsotg)  {  	u8 val; @@ -866,10 +872,12 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)  	return 0;  } +typedef void (*set_params_cb)(struct dwc2_hsotg *data); +  int dwc2_init_params(struct dwc2_hsotg *hsotg)  {  	const struct of_device_id *match; -	void (*set_params)(struct dwc2_hsotg *data); +	set_params_cb set_params;  	dwc2_set_default_params(hsotg);  	dwc2_get_device_properties(hsotg); @@ -878,6 +886,14 @@ int dwc2_init_params(struct dwc2_hsotg *hsotg)  	if (match && match->data) {  		set_params = match->data;  		set_params(hsotg); +	} else { +		const struct acpi_device_id *amatch; + +		amatch = acpi_match_device(dwc2_acpi_match, hsotg->dev); +		if (amatch && amatch->driver_data) { +			set_params = (set_params_cb)amatch->driver_data; +			set_params(hsotg); +		}  	}  	dwc2_check_params(hsotg); | 
