| .. | .. |
|---|
| 6 | 6 | * Author: Mika Westerberg <mika.westerberg@linux.intel.com> |
|---|
| 7 | 7 | */ |
|---|
| 8 | 8 | |
|---|
| 9 | | -#include <linux/acpi.h> |
|---|
| 9 | +#include <linux/mod_devicetable.h> |
|---|
| 10 | 10 | #include <linux/module.h> |
|---|
| 11 | 11 | #include <linux/platform_device.h> |
|---|
| 12 | | -#include <linux/pm.h> |
|---|
| 12 | + |
|---|
| 13 | 13 | #include <linux/pinctrl/pinctrl.h> |
|---|
| 14 | 14 | |
|---|
| 15 | 15 | #include "pinctrl-intel.h" |
|---|
| 16 | 16 | |
|---|
| 17 | 17 | #define GLK_PAD_OWN 0x020 |
|---|
| 18 | | -#define GLK_HOSTSW_OWN 0x0b0 |
|---|
| 19 | 18 | #define GLK_PADCFGLOCK 0x080 |
|---|
| 19 | +#define GLK_HOSTSW_OWN 0x0b0 |
|---|
| 20 | +#define GLK_GPI_IS 0x100 |
|---|
| 20 | 21 | #define GLK_GPI_IE 0x110 |
|---|
| 21 | 22 | |
|---|
| 22 | 23 | #define GLK_COMMUNITY(s, e) \ |
|---|
| .. | .. |
|---|
| 24 | 25 | .padown_offset = GLK_PAD_OWN, \ |
|---|
| 25 | 26 | .padcfglock_offset = GLK_PADCFGLOCK, \ |
|---|
| 26 | 27 | .hostown_offset = GLK_HOSTSW_OWN, \ |
|---|
| 28 | + .is_offset = GLK_GPI_IS, \ |
|---|
| 27 | 29 | .ie_offset = GLK_GPI_IE, \ |
|---|
| 28 | 30 | .gpp_size = 32, \ |
|---|
| 29 | 31 | .pin_base = (s), \ |
|---|
| .. | .. |
|---|
| 58 | 60 | PINCTRL_PIN(23, "GPIO_23"), |
|---|
| 59 | 61 | PINCTRL_PIN(24, "GPIO_24"), |
|---|
| 60 | 62 | PINCTRL_PIN(25, "GPIO_25"), |
|---|
| 61 | | - PINCTRL_PIN(26, "GPIO_26"), |
|---|
| 62 | | - PINCTRL_PIN(27, "GPIO_27"), |
|---|
| 63 | | - PINCTRL_PIN(28, "GPIO_28"), |
|---|
| 64 | | - PINCTRL_PIN(29, "GPIO_29"), |
|---|
| 65 | | - PINCTRL_PIN(30, "GPIO_30"), |
|---|
| 66 | | - PINCTRL_PIN(31, "GPIO_31"), |
|---|
| 67 | | - PINCTRL_PIN(32, "GPIO_32"), |
|---|
| 68 | | - PINCTRL_PIN(33, "GPIO_33"), |
|---|
| 69 | | - PINCTRL_PIN(34, "GPIO_34"), |
|---|
| 70 | | - PINCTRL_PIN(35, "GPIO_35"), |
|---|
| 63 | + PINCTRL_PIN(26, "ISH_GPIO_0"), |
|---|
| 64 | + PINCTRL_PIN(27, "ISH_GPIO_1"), |
|---|
| 65 | + PINCTRL_PIN(28, "ISH_GPIO_2"), |
|---|
| 66 | + PINCTRL_PIN(29, "ISH_GPIO_3"), |
|---|
| 67 | + PINCTRL_PIN(30, "ISH_GPIO_4"), |
|---|
| 68 | + PINCTRL_PIN(31, "ISH_GPIO_5"), |
|---|
| 69 | + PINCTRL_PIN(32, "ISH_GPIO_6"), |
|---|
| 70 | + PINCTRL_PIN(33, "ISH_GPIO_7"), |
|---|
| 71 | + PINCTRL_PIN(34, "ISH_GPIO_8"), |
|---|
| 72 | + PINCTRL_PIN(35, "ISH_GPIO_9"), |
|---|
| 71 | 73 | PINCTRL_PIN(36, "GPIO_36"), |
|---|
| 72 | 74 | PINCTRL_PIN(37, "GPIO_37"), |
|---|
| 73 | 75 | PINCTRL_PIN(38, "GPIO_38"), |
|---|
| .. | .. |
|---|
| 195 | 197 | PINCTRL_PIN(5, "LPSS_SPI_0_FS1"), |
|---|
| 196 | 198 | PINCTRL_PIN(6, "LPSS_SPI_0_RXD"), |
|---|
| 197 | 199 | PINCTRL_PIN(7, "LPSS_SPI_0_TXD"), |
|---|
| 198 | | - PINCTRL_PIN(8, "LPSS_SPI_1_CLK"), |
|---|
| 199 | | - PINCTRL_PIN(9, "LPSS_SPI_1_FS0"), |
|---|
| 200 | | - PINCTRL_PIN(10, "LPSS_SPI_1_FS1"), |
|---|
| 201 | | - PINCTRL_PIN(11, "LPSS_SPI_1_FS2"), |
|---|
| 202 | | - PINCTRL_PIN(12, "LPSS_SPI_1_RXD"), |
|---|
| 203 | | - PINCTRL_PIN(13, "LPSS_SPI_1_TXD"), |
|---|
| 200 | + PINCTRL_PIN(8, "LPSS_SPI_2_CLK"), |
|---|
| 201 | + PINCTRL_PIN(9, "LPSS_SPI_2_FS0"), |
|---|
| 202 | + PINCTRL_PIN(10, "LPSS_SPI_2_FS1"), |
|---|
| 203 | + PINCTRL_PIN(11, "LPSS_SPI_2_FS2"), |
|---|
| 204 | + PINCTRL_PIN(12, "LPSS_SPI_2_RXD"), |
|---|
| 205 | + PINCTRL_PIN(13, "LPSS_SPI_2_TXD"), |
|---|
| 204 | 206 | PINCTRL_PIN(14, "FST_SPI_CS0_B"), |
|---|
| 205 | 207 | PINCTRL_PIN(15, "FST_SPI_CS1_B"), |
|---|
| 206 | 208 | PINCTRL_PIN(16, "FST_SPI_MOSI_IO0"), |
|---|
| .. | .. |
|---|
| 215 | 217 | PINCTRL_PIN(25, "PMU_SLP_S3_B"), |
|---|
| 216 | 218 | PINCTRL_PIN(26, "PMU_SLP_S4_B"), |
|---|
| 217 | 219 | PINCTRL_PIN(27, "SUSPWRDNACK"), |
|---|
| 218 | | - PINCTRL_PIN(28, "EMMC_PWR_EN_B"), |
|---|
| 219 | | - PINCTRL_PIN(29, "PMU_AC_PRESENT"), |
|---|
| 220 | + PINCTRL_PIN(28, "EMMC_DNX_PWR_EN_B"), |
|---|
| 221 | + PINCTRL_PIN(29, "GPIO_105"), |
|---|
| 220 | 222 | PINCTRL_PIN(30, "PMU_BATLOW_B"), |
|---|
| 221 | 223 | PINCTRL_PIN(31, "PMU_RESETBUTTON_B"), |
|---|
| 222 | 224 | PINCTRL_PIN(32, "PMU_SUSCLK"), |
|---|
| .. | .. |
|---|
| 445 | 447 | &glk_north_soc_data, |
|---|
| 446 | 448 | &glk_audio_soc_data, |
|---|
| 447 | 449 | &glk_scc_soc_data, |
|---|
| 448 | | - NULL, |
|---|
| 450 | + NULL |
|---|
| 449 | 451 | }; |
|---|
| 450 | 452 | |
|---|
| 451 | 453 | static const struct acpi_device_id glk_pinctrl_acpi_match[] = { |
|---|
| 452 | | - { "INT3453" }, |
|---|
| 454 | + { "INT3453", (kernel_ulong_t)glk_pinctrl_soc_data }, |
|---|
| 453 | 455 | { } |
|---|
| 454 | 456 | }; |
|---|
| 455 | 457 | MODULE_DEVICE_TABLE(acpi, glk_pinctrl_acpi_match); |
|---|
| 456 | 458 | |
|---|
| 457 | | -static int glk_pinctrl_probe(struct platform_device *pdev) |
|---|
| 458 | | -{ |
|---|
| 459 | | - const struct intel_pinctrl_soc_data *soc_data = NULL; |
|---|
| 460 | | - struct acpi_device *adev; |
|---|
| 461 | | - int i; |
|---|
| 462 | | - |
|---|
| 463 | | - adev = ACPI_COMPANION(&pdev->dev); |
|---|
| 464 | | - if (!adev) |
|---|
| 465 | | - return -ENODEV; |
|---|
| 466 | | - |
|---|
| 467 | | - for (i = 0; glk_pinctrl_soc_data[i]; i++) { |
|---|
| 468 | | - if (!strcmp(adev->pnp.unique_id, |
|---|
| 469 | | - glk_pinctrl_soc_data[i]->uid)) { |
|---|
| 470 | | - soc_data = glk_pinctrl_soc_data[i]; |
|---|
| 471 | | - break; |
|---|
| 472 | | - } |
|---|
| 473 | | - } |
|---|
| 474 | | - |
|---|
| 475 | | - if (!soc_data) |
|---|
| 476 | | - return -ENODEV; |
|---|
| 477 | | - |
|---|
| 478 | | - return intel_pinctrl_probe(pdev, soc_data); |
|---|
| 479 | | -} |
|---|
| 480 | | - |
|---|
| 481 | | -static const struct dev_pm_ops glk_pinctrl_pm_ops = { |
|---|
| 482 | | - SET_LATE_SYSTEM_SLEEP_PM_OPS(intel_pinctrl_suspend, |
|---|
| 483 | | - intel_pinctrl_resume) |
|---|
| 484 | | -}; |
|---|
| 459 | +static INTEL_PINCTRL_PM_OPS(glk_pinctrl_pm_ops); |
|---|
| 485 | 460 | |
|---|
| 486 | 461 | static struct platform_driver glk_pinctrl_driver = { |
|---|
| 487 | | - .probe = glk_pinctrl_probe, |
|---|
| 462 | + .probe = intel_pinctrl_probe_by_uid, |
|---|
| 488 | 463 | .driver = { |
|---|
| 489 | 464 | .name = "geminilake-pinctrl", |
|---|
| 490 | 465 | .acpi_match_table = glk_pinctrl_acpi_match, |
|---|