diff options
author | Matt Fleming <matt.fleming@intel.com> | 2015-08-06 08:46:24 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2015-08-11 10:03:21 -0400 |
commit | 420b54de25828c45f3fc1f12d52d9657f5e90a53 (patch) | |
tree | 4a7b05b69ebabf2ef477cb39f29b9f747246b80e /drivers/platform/x86/intel_pmc_ipc.c | |
parent | bc0195aad0daa2ad5b0d76cce22b167bc3435590 (diff) |
mfd: watchdog: iTCO_wdt: Expose watchdog properties using platform data
Intel Sunrisepoint (Skylake PCH) has the iTCO watchdog accessible across
the SMBus, unlike previous generations of PCH/ICH where it was on the
LPC bus. Because it's on the SMBus, it doesn't make sense to pass around
a 'struct lpc_ich_info', and leaking the type of bus into the iTCO
watchdog driver is kind of backwards anyway.
This change introduces a new 'struct itco_wdt_platform_data' for use
inside the iTCO watchdog driver and by the upcoming Intel Sunrisepoint
code, which neatly avoids having to include lpc_ich headers in the i801
i2c driver.
This change is overdue because lpc_ich_info has already found its way
into other TCO watchdog users, notably the intel_pmc_ipc driver where
the watchdog actually isn't on the LPC bus as far as I can see.
A simple translation layer is provided for converting from the existing
'struct lpc_ich_info' inside the lpc_ich mfd driver.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Acked-by: Darren Hart <dvhart@linux.intel.com> [drivers/x86 refactoring]
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/platform/x86/intel_pmc_ipc.c')
-rw-r--r-- | drivers/platform/x86/intel_pmc_ipc.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c index d734763dab69..fbd1cc7d5de3 100644 --- a/drivers/platform/x86/intel_pmc_ipc.c +++ b/drivers/platform/x86/intel_pmc_ipc.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include <linux/suspend.h> | 33 | #include <linux/suspend.h> |
34 | #include <linux/acpi.h> | 34 | #include <linux/acpi.h> |
35 | #include <asm/intel_pmc_ipc.h> | 35 | #include <asm/intel_pmc_ipc.h> |
36 | #include <linux/mfd/lpc_ich.h> | 36 | #include <linux/platform_data/itco_wdt.h> |
37 | 37 | ||
38 | /* | 38 | /* |
39 | * IPC registers | 39 | * IPC registers |
@@ -460,9 +460,9 @@ static struct resource tco_res[] = { | |||
460 | }, | 460 | }, |
461 | }; | 461 | }; |
462 | 462 | ||
463 | static struct lpc_ich_info tco_info = { | 463 | static struct itco_wdt_platform_data tco_info = { |
464 | .name = "Apollo Lake SoC", | 464 | .name = "Apollo Lake SoC", |
465 | .iTCO_version = 3, | 465 | .version = 3, |
466 | }; | 466 | }; |
467 | 467 | ||
468 | static int ipc_create_punit_device(void) | 468 | static int ipc_create_punit_device(void) |
@@ -539,8 +539,7 @@ static int ipc_create_tco_device(void) | |||
539 | goto err; | 539 | goto err; |
540 | } | 540 | } |
541 | 541 | ||
542 | ret = platform_device_add_data(pdev, &tco_info, | 542 | ret = platform_device_add_data(pdev, &tco_info, sizeof(tco_info)); |
543 | sizeof(struct lpc_ich_info)); | ||
544 | if (ret) { | 543 | if (ret) { |
545 | dev_err(ipcdev.dev, "Failed to add tco platform data\n"); | 544 | dev_err(ipcdev.dev, "Failed to add tco platform data\n"); |
546 | goto err; | 545 | goto err; |