aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86/intel_pmc_ipc.c
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2015-08-06 08:46:24 -0400
committerLee Jones <lee.jones@linaro.org>2015-08-11 10:03:21 -0400
commit420b54de25828c45f3fc1f12d52d9657f5e90a53 (patch)
tree4a7b05b69ebabf2ef477cb39f29b9f747246b80e /drivers/platform/x86/intel_pmc_ipc.c
parentbc0195aad0daa2ad5b0d76cce22b167bc3435590 (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.c9
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
463static struct lpc_ich_info tco_info = { 463static 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
468static int ipc_create_punit_device(void) 468static 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;