.. | .. |
---|
10 | 10 | #include <linux/acpi.h> |
---|
11 | 11 | #include <linux/module.h> |
---|
12 | 12 | #include <linux/platform_device.h> |
---|
13 | | -#include <linux/pm.h> |
---|
| 13 | + |
---|
14 | 14 | #include <linux/pinctrl/pinctrl.h> |
---|
15 | 15 | |
---|
16 | 16 | #include "pinctrl-intel.h" |
---|
.. | .. |
---|
18 | 18 | #define ICL_PAD_OWN 0x020 |
---|
19 | 19 | #define ICL_PADCFGLOCK 0x080 |
---|
20 | 20 | #define ICL_HOSTSW_OWN 0x0b0 |
---|
| 21 | +#define ICL_GPI_IS 0x100 |
---|
21 | 22 | #define ICL_GPI_IE 0x110 |
---|
22 | 23 | |
---|
23 | 24 | #define ICL_GPP(r, s, e, g) \ |
---|
.. | .. |
---|
28 | 29 | .gpio_base = (g), \ |
---|
29 | 30 | } |
---|
30 | 31 | |
---|
31 | | -#define ICL_NO_GPIO -1 |
---|
32 | | - |
---|
33 | 32 | #define ICL_COMMUNITY(b, s, e, g) \ |
---|
34 | 33 | { \ |
---|
35 | 34 | .barno = (b), \ |
---|
36 | 35 | .padown_offset = ICL_PAD_OWN, \ |
---|
37 | 36 | .padcfglock_offset = ICL_PADCFGLOCK, \ |
---|
38 | 37 | .hostown_offset = ICL_HOSTSW_OWN, \ |
---|
| 38 | + .is_offset = ICL_GPI_IS, \ |
---|
39 | 39 | .ie_offset = ICL_GPI_IE, \ |
---|
40 | 40 | .pin_base = (s), \ |
---|
41 | 41 | .npins = ((e) - (s) + 1), \ |
---|
.. | .. |
---|
303 | 303 | }; |
---|
304 | 304 | |
---|
305 | 305 | static const struct intel_padgroup icllp_community0_gpps[] = { |
---|
306 | | - ICL_GPP(0, 0, 7, 0), /* GPP_G */ |
---|
307 | | - ICL_GPP(1, 8, 33, 32), /* GPP_B */ |
---|
308 | | - ICL_GPP(2, 34, 58, 64), /* GPP_A */ |
---|
| 306 | + ICL_GPP(0, 0, 7, 0), /* GPP_G */ |
---|
| 307 | + ICL_GPP(1, 8, 33, 32), /* GPP_B */ |
---|
| 308 | + ICL_GPP(2, 34, 58, 64), /* GPP_A */ |
---|
309 | 309 | }; |
---|
310 | 310 | |
---|
311 | 311 | static const struct intel_padgroup icllp_community1_gpps[] = { |
---|
312 | | - ICL_GPP(0, 59, 82, 96), /* GPP_H */ |
---|
313 | | - ICL_GPP(1, 83, 103, 128), /* GPP_D */ |
---|
314 | | - ICL_GPP(2, 104, 123, 160), /* GPP_F */ |
---|
315 | | - ICL_GPP(3, 124, 152, 192), /* vGPIO */ |
---|
| 312 | + ICL_GPP(0, 59, 82, 96), /* GPP_H */ |
---|
| 313 | + ICL_GPP(1, 83, 103, 128), /* GPP_D */ |
---|
| 314 | + ICL_GPP(2, 104, 123, 160), /* GPP_F */ |
---|
| 315 | + ICL_GPP(3, 124, 152, 192), /* vGPIO */ |
---|
316 | 316 | }; |
---|
317 | 317 | |
---|
318 | 318 | static const struct intel_padgroup icllp_community4_gpps[] = { |
---|
319 | | - ICL_GPP(0, 153, 176, 224), /* GPP_C */ |
---|
320 | | - ICL_GPP(1, 177, 182, ICL_NO_GPIO), /* HVCMOS */ |
---|
321 | | - ICL_GPP(2, 183, 206, 256), /* GPP_E */ |
---|
322 | | - ICL_GPP(3, 207, 215, ICL_NO_GPIO), /* JTAG */ |
---|
| 319 | + ICL_GPP(0, 153, 176, 224), /* GPP_C */ |
---|
| 320 | + ICL_GPP(1, 177, 182, INTEL_GPIO_BASE_NOMAP), /* HVCMOS */ |
---|
| 321 | + ICL_GPP(2, 183, 206, 256), /* GPP_E */ |
---|
| 322 | + ICL_GPP(3, 207, 215, INTEL_GPIO_BASE_NOMAP), /* JTAG */ |
---|
323 | 323 | }; |
---|
324 | 324 | |
---|
325 | 325 | static const struct intel_padgroup icllp_community5_gpps[] = { |
---|
326 | | - ICL_GPP(0, 216, 223, 288), /* GPP_R */ |
---|
327 | | - ICL_GPP(1, 224, 231, 320), /* GPP_S */ |
---|
328 | | - ICL_GPP(2, 232, 240, ICL_NO_GPIO), /* SPI */ |
---|
| 326 | + ICL_GPP(0, 216, 223, 288), /* GPP_R */ |
---|
| 327 | + ICL_GPP(1, 224, 231, 320), /* GPP_S */ |
---|
| 328 | + ICL_GPP(2, 232, 240, INTEL_GPIO_BASE_NOMAP), /* SPI */ |
---|
329 | 329 | }; |
---|
330 | 330 | |
---|
331 | 331 | static const struct intel_community icllp_communities[] = { |
---|
.. | .. |
---|
403 | 403 | .ncommunities = ARRAY_SIZE(icllp_communities), |
---|
404 | 404 | }; |
---|
405 | 405 | |
---|
406 | | -static int icl_pinctrl_probe(struct platform_device *pdev) |
---|
407 | | -{ |
---|
408 | | - return intel_pinctrl_probe(pdev, &icllp_soc_data); |
---|
409 | | -} |
---|
410 | | - |
---|
411 | | -static const struct dev_pm_ops icl_pinctrl_pm_ops = { |
---|
412 | | - SET_LATE_SYSTEM_SLEEP_PM_OPS(intel_pinctrl_suspend, |
---|
413 | | - intel_pinctrl_resume) |
---|
414 | | -}; |
---|
| 406 | +static INTEL_PINCTRL_PM_OPS(icl_pinctrl_pm_ops); |
---|
415 | 407 | |
---|
416 | 408 | static const struct acpi_device_id icl_pinctrl_acpi_match[] = { |
---|
417 | | - { "INT3455" }, |
---|
418 | | - { }, |
---|
| 409 | + { "INT3455", (kernel_ulong_t)&icllp_soc_data }, |
---|
| 410 | + { } |
---|
419 | 411 | }; |
---|
420 | 412 | MODULE_DEVICE_TABLE(acpi, icl_pinctrl_acpi_match); |
---|
421 | 413 | |
---|
422 | 414 | static struct platform_driver icl_pinctrl_driver = { |
---|
423 | | - .probe = icl_pinctrl_probe, |
---|
| 415 | + .probe = intel_pinctrl_probe_by_hid, |
---|
424 | 416 | .driver = { |
---|
425 | 417 | .name = "icelake-pinctrl", |
---|
426 | 418 | .acpi_match_table = icl_pinctrl_acpi_match, |
---|