.. | .. |
---|
2 | 2 | /** |
---|
3 | 3 | * dwc3-pci.c - PCI Specific glue layer |
---|
4 | 4 | * |
---|
5 | | - * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com |
---|
| 5 | + * Copyright (C) 2010-2011 Texas Instruments Incorporated - https://www.ti.com |
---|
6 | 6 | * |
---|
7 | 7 | * Authors: Felipe Balbi <balbi@ti.com>, |
---|
8 | 8 | * Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
---|
.. | .. |
---|
36 | 36 | #define PCI_DEVICE_ID_INTEL_CNPH 0xa36e |
---|
37 | 37 | #define PCI_DEVICE_ID_INTEL_CNPV 0xa3b0 |
---|
38 | 38 | #define PCI_DEVICE_ID_INTEL_ICLLP 0x34ee |
---|
| 39 | +#define PCI_DEVICE_ID_INTEL_EHLLP 0x4b7e |
---|
| 40 | +#define PCI_DEVICE_ID_INTEL_TGPLP 0xa0ee |
---|
| 41 | +#define PCI_DEVICE_ID_INTEL_TGPH 0x43ee |
---|
| 42 | +#define PCI_DEVICE_ID_INTEL_JSP 0x4dee |
---|
| 43 | +#define PCI_DEVICE_ID_INTEL_ADLP 0x51ee |
---|
| 44 | +#define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1 |
---|
| 45 | +#define PCI_DEVICE_ID_INTEL_TGL 0x9a15 |
---|
39 | 46 | |
---|
40 | 47 | #define PCI_INTEL_BXT_DSM_GUID "732b85d5-b7a7-4a1b-9ba0-4bbd00ffd511" |
---|
41 | 48 | #define PCI_INTEL_BXT_FUNC_PMU_PWR 4 |
---|
.. | .. |
---|
113 | 120 | static const struct property_entry dwc3_pci_mrfld_properties[] = { |
---|
114 | 121 | PROPERTY_ENTRY_STRING("dr_mode", "otg"), |
---|
115 | 122 | PROPERTY_ENTRY_STRING("linux,extcon-name", "mrfld_bcove_pwrsrc"), |
---|
| 123 | + PROPERTY_ENTRY_BOOL("snps,dis_u3_susphy_quirk"), |
---|
| 124 | + PROPERTY_ENTRY_BOOL("snps,dis_u2_susphy_quirk"), |
---|
| 125 | + PROPERTY_ENTRY_BOOL("snps,usb2-gadget-lpm-disable"), |
---|
116 | 126 | PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"), |
---|
117 | 127 | {} |
---|
118 | 128 | }; |
---|
.. | .. |
---|
133 | 143 | PROPERTY_ENTRY_BOOL("snps,disable_scramble_quirk"), |
---|
134 | 144 | PROPERTY_ENTRY_BOOL("snps,dis_u3_susphy_quirk"), |
---|
135 | 145 | PROPERTY_ENTRY_BOOL("snps,dis_u2_susphy_quirk"), |
---|
136 | | - PROPERTY_ENTRY_BOOL("snps,usb2-gadget-lpm-disable"), |
---|
137 | 146 | PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"), |
---|
138 | 147 | {} |
---|
| 148 | +}; |
---|
| 149 | + |
---|
| 150 | +static const struct software_node dwc3_pci_intel_swnode = { |
---|
| 151 | + .properties = dwc3_pci_intel_properties, |
---|
| 152 | +}; |
---|
| 153 | + |
---|
| 154 | +static const struct software_node dwc3_pci_intel_mrfld_swnode = { |
---|
| 155 | + .properties = dwc3_pci_mrfld_properties, |
---|
| 156 | +}; |
---|
| 157 | + |
---|
| 158 | +static const struct software_node dwc3_pci_amd_swnode = { |
---|
| 159 | + .properties = dwc3_pci_amd_properties, |
---|
139 | 160 | }; |
---|
140 | 161 | |
---|
141 | 162 | static int dwc3_pci_quirks(struct dwc3_pci *dwc) |
---|
.. | .. |
---|
144 | 165 | |
---|
145 | 166 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { |
---|
146 | 167 | if (pdev->device == PCI_DEVICE_ID_INTEL_BXT || |
---|
147 | | - pdev->device == PCI_DEVICE_ID_INTEL_BXT_M) { |
---|
| 168 | + pdev->device == PCI_DEVICE_ID_INTEL_BXT_M || |
---|
| 169 | + pdev->device == PCI_DEVICE_ID_INTEL_EHLLP) { |
---|
148 | 170 | guid_parse(PCI_INTEL_BXT_DSM_GUID, &dwc->guid); |
---|
149 | 171 | dwc->has_dsm_for_pm = true; |
---|
150 | 172 | } |
---|
.. | .. |
---|
165 | 187 | |
---|
166 | 188 | /* |
---|
167 | 189 | * A lot of BYT devices lack ACPI resource entries for |
---|
168 | | - * the GPIOs, add a fallback mapping to the reference |
---|
| 190 | + * the GPIOs. If the ACPI entry for the GPIO controller |
---|
| 191 | + * is present add a fallback mapping to the reference |
---|
169 | 192 | * design GPIOs which all boards seem to use. |
---|
170 | 193 | */ |
---|
171 | | - gpiod_add_lookup_table(&platform_bytcr_gpios); |
---|
| 194 | + if (acpi_dev_present("INT33FC", NULL, -1)) |
---|
| 195 | + gpiod_add_lookup_table(&platform_bytcr_gpios); |
---|
172 | 196 | |
---|
173 | 197 | /* |
---|
174 | 198 | * These GPIOs will turn on the USB2 PHY. Note that we have to |
---|
.. | .. |
---|
205 | 229 | int ret; |
---|
206 | 230 | |
---|
207 | 231 | ret = pm_runtime_get_sync(&dwc3->dev); |
---|
208 | | - if (ret) { |
---|
| 232 | + if (ret < 0) { |
---|
209 | 233 | pm_runtime_put_sync_autosuspend(&dwc3->dev); |
---|
210 | 234 | return; |
---|
211 | 235 | } |
---|
.. | .. |
---|
217 | 241 | |
---|
218 | 242 | static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id) |
---|
219 | 243 | { |
---|
220 | | - struct property_entry *p = (struct property_entry *)id->driver_data; |
---|
221 | 244 | struct dwc3_pci *dwc; |
---|
222 | 245 | struct resource res[2]; |
---|
223 | 246 | int ret; |
---|
.. | .. |
---|
260 | 283 | dwc->dwc3->dev.parent = dev; |
---|
261 | 284 | ACPI_COMPANION_SET(&dwc->dwc3->dev, ACPI_COMPANION(dev)); |
---|
262 | 285 | |
---|
263 | | - ret = platform_device_add_properties(dwc->dwc3, p); |
---|
| 286 | + ret = device_add_software_node(&dwc->dwc3->dev, (void *)id->driver_data); |
---|
264 | 287 | if (ret < 0) |
---|
265 | 288 | goto err; |
---|
266 | 289 | |
---|
.. | .. |
---|
283 | 306 | |
---|
284 | 307 | return 0; |
---|
285 | 308 | err: |
---|
| 309 | + device_remove_software_node(&dwc->dwc3->dev); |
---|
286 | 310 | platform_device_put(dwc->dwc3); |
---|
287 | 311 | return ret; |
---|
288 | 312 | } |
---|
.. | .. |
---|
299 | 323 | #endif |
---|
300 | 324 | device_init_wakeup(&pci->dev, false); |
---|
301 | 325 | pm_runtime_get(&pci->dev); |
---|
| 326 | + device_remove_software_node(&dwc->dwc3->dev); |
---|
302 | 327 | platform_device_unregister(dwc->dwc3); |
---|
303 | 328 | } |
---|
304 | 329 | |
---|
305 | 330 | static const struct pci_device_id dwc3_pci_id_table[] = { |
---|
306 | 331 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BSW), |
---|
307 | | - (kernel_ulong_t) &dwc3_pci_intel_properties }, |
---|
| 332 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
308 | 333 | |
---|
309 | 334 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BYT), |
---|
310 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 335 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
311 | 336 | |
---|
312 | 337 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MRFLD), |
---|
313 | | - (kernel_ulong_t) &dwc3_pci_mrfld_properties, }, |
---|
| 338 | + (kernel_ulong_t) &dwc3_pci_intel_mrfld_swnode, }, |
---|
314 | 339 | |
---|
315 | 340 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLLP), |
---|
316 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 341 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
317 | 342 | |
---|
318 | 343 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLH), |
---|
319 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 344 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
320 | 345 | |
---|
321 | 346 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTLP), |
---|
322 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 347 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
323 | 348 | |
---|
324 | 349 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTH), |
---|
325 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 350 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
326 | 351 | |
---|
327 | 352 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT), |
---|
328 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 353 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
329 | 354 | |
---|
330 | 355 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT_M), |
---|
331 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 356 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
332 | 357 | |
---|
333 | 358 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_APL), |
---|
334 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 359 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
335 | 360 | |
---|
336 | 361 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_KBP), |
---|
337 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 362 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
338 | 363 | |
---|
339 | 364 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_GLK), |
---|
340 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 365 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
341 | 366 | |
---|
342 | 367 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPLP), |
---|
343 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 368 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
344 | 369 | |
---|
345 | 370 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPH), |
---|
346 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 371 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
347 | 372 | |
---|
348 | 373 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPV), |
---|
349 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 374 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
350 | 375 | |
---|
351 | 376 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ICLLP), |
---|
352 | | - (kernel_ulong_t) &dwc3_pci_intel_properties, }, |
---|
| 377 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 378 | + |
---|
| 379 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_EHLLP), |
---|
| 380 | + (kernel_ulong_t) &dwc3_pci_intel_swnode }, |
---|
| 381 | + |
---|
| 382 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPLP), |
---|
| 383 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 384 | + |
---|
| 385 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPH), |
---|
| 386 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 387 | + |
---|
| 388 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_JSP), |
---|
| 389 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 390 | + |
---|
| 391 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLP), |
---|
| 392 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 393 | + |
---|
| 394 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLS), |
---|
| 395 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
| 396 | + |
---|
| 397 | + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL), |
---|
| 398 | + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, |
---|
353 | 399 | |
---|
354 | 400 | { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NL_USB), |
---|
355 | | - (kernel_ulong_t) &dwc3_pci_amd_properties, }, |
---|
| 401 | + (kernel_ulong_t) &dwc3_pci_amd_swnode, }, |
---|
356 | 402 | { } /* Terminating Entry */ |
---|
357 | 403 | }; |
---|
358 | 404 | MODULE_DEVICE_TABLE(pci, dwc3_pci_id_table); |
---|