From 32e3168596457a854a6047c22919152a2a84e9e7 Mon Sep 17 00:00:00 2001 From: Fei Yang Date: Fri, 14 Oct 2011 14:00:28 -0700 Subject: [PATCH] ADC: fix MSIC GPADC platform device registration issue. All MSIC platform devices are registered through Intel MSIC driver, however corresponding change needed for ADC device is missing. Change-Id: I835a15cb44115702f8a5aba296094cc0e09736d5 Signed-off-by: Fei Yang --- arch/x86/platform/mrst/mrst.c | 16 +++++++++------- drivers/mfd/intel_msic.c | 10 +++++++++- include/linux/mfd/intel_msic.h | 3 +++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c index ab05976..f8c29a2 100644 --- a/arch/x86/platform/mrst/mrst.c +++ b/arch/x86/platform/mrst/mrst.c @@ -565,13 +565,6 @@ static void __init *lis331dl_platform_data(void *info) return &intr2nd_pdata; } -static void *msic_adc_platform_data(void *info) -{ - static struct intel_mid_gpadc_platform_data pdata; - pdata.intr = 0xffff7fc0; - return &pdata; -} - /* MFLD iCDK touchscreen data */ #define CYTTSP_GPIO_PIN 0x3E static int cyttsp_init(int on) @@ -699,6 +692,15 @@ static void *msic_generic_platform_data(void *info, enum intel_msic_block block) return no_platform_data(info); } +static void *msic_adc_platform_data(void *info) +{ + static struct intel_mid_gpadc_platform_data pdata; + pdata.intr = 0xffff7fc0; + msic_pdata.gpadc = &pdata; + + return msic_generic_platform_data(info, INTEL_MSIC_BLOCK_ADC); +} + static void *msic_battery_platform_data(void *info) { return msic_generic_platform_data(info, INTEL_MSIC_BLOCK_BATTERY); diff --git a/drivers/mfd/intel_msic.c b/drivers/mfd/intel_msic.c index bd086b9..1340e06 100644 --- a/drivers/mfd/intel_msic.c +++ b/drivers/mfd/intel_msic.c @@ -309,10 +309,11 @@ static int __devinit intel_msic_init_devices(struct intel_msic *msic) { struct platform_device *pdev = msic->pdev; struct intel_msic_platform_data *pdata = pdev->dev.platform_data; + struct mfd_cell *cell; int ret, i; if (pdata->gpio) { - struct mfd_cell *cell = &msic_devs[INTEL_MSIC_BLOCK_GPIO]; + cell = &msic_devs[INTEL_MSIC_BLOCK_GPIO]; cell->platform_data = pdata->gpio; cell->pdata_size = sizeof(*pdata->gpio); @@ -338,6 +339,13 @@ static int __devinit intel_msic_init_devices(struct intel_msic *msic) pdata->irq[INTEL_MSIC_BLOCK_OCD] = ret; } + if (pdata->gpadc) { + cell = &msic_devs[INTEL_MSIC_BLOCK_ADC]; + + cell->platform_data = pdata->gpadc; + cell->pdata_size = sizeof(*pdata->gpadc); + } + for (i = 0; i < ARRAY_SIZE(msic_devs); i++) { if (!pdata->irq[i]) continue; diff --git a/include/linux/mfd/intel_msic.h b/include/linux/mfd/intel_msic.h index 439a7a6..4a7b3bc 100644 --- a/include/linux/mfd/intel_msic.h +++ b/include/linux/mfd/intel_msic.h @@ -12,6 +12,8 @@ #ifndef __LINUX_MFD_INTEL_MSIC_H__ #define __LINUX_MFD_INTEL_MSIC_H__ +#include + /* ID */ #define INTEL_MSIC_ID0 0x000 /* RO */ #define INTEL_MSIC_ID1 0x001 /* RO */ @@ -429,6 +431,7 @@ struct intel_msic_platform_data { int irq[INTEL_MSIC_BLOCK_LAST]; struct intel_msic_gpio_pdata *gpio; struct intel_msic_ocd_pdata *ocd; + struct intel_mid_gpadc_platform_data *gpadc; }; struct intel_msic; -- 2.7.4