aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2008-10-13 10:45:22 -0400
committerLiam Girdwood <lrg@slimlogic.co.uk>2008-10-13 16:51:57 -0400
commitadd41cb46175618fd42bc1ca07fe7f9dd38bf702 (patch)
tree339fdb4605a4397098f3f5161a904167cb829929
parent129eef96c9e25ce6516e2ddd5a338a14362b815b (diff)
mfd: Add placeholders for WM8350 client devices
In order to avoid merge problems further down the line add placeholders for several of the WM8350 client devices and register them, otherwise the patches adding the client devices will all try to update the same code. Also remove redundant checks for null regulator platform devices while we're at it. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Samuel Ortiz <sameo@openedhand.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r--drivers/mfd/wm8350-core.c18
-rw-r--r--include/linux/mfd/wm8350/audio.h6
-rw-r--r--include/linux/mfd/wm8350/core.h10
-rw-r--r--include/linux/mfd/wm8350/gpio.h6
-rw-r--r--include/linux/mfd/wm8350/rtc.h6
-rw-r--r--include/linux/mfd/wm8350/supply.h6
-rw-r--r--include/linux/mfd/wm8350/wdt.h8
7 files changed, 57 insertions, 3 deletions
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c
index cd1f76efed4e..382e38c66914 100644
--- a/drivers/mfd/wm8350-core.c
+++ b/drivers/mfd/wm8350-core.c
@@ -1234,6 +1234,15 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq,
1234 1234
1235 wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0x0); 1235 wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0x0);
1236 1236
1237 wm8350_client_dev_register(wm8350, "wm8350-codec",
1238 &(wm8350->codec.pdev));
1239 wm8350_client_dev_register(wm8350, "wm8350-gpio",
1240 &(wm8350->gpio.pdev));
1241 wm8350_client_dev_register(wm8350, "wm8350-power",
1242 &(wm8350->power.pdev));
1243 wm8350_client_dev_register(wm8350, "wm8350-rtc", &(wm8350->rtc.pdev));
1244 wm8350_client_dev_register(wm8350, "wm8350-wdt", &(wm8350->wdt.pdev));
1245
1237 return 0; 1246 return 0;
1238 1247
1239err: 1248err:
@@ -1247,8 +1256,13 @@ void wm8350_device_exit(struct wm8350 *wm8350)
1247 int i; 1256 int i;
1248 1257
1249 for (i = 0; i < ARRAY_SIZE(wm8350->pmic.pdev); i++) 1258 for (i = 0; i < ARRAY_SIZE(wm8350->pmic.pdev); i++)
1250 if (wm8350->pmic.pdev[i] != NULL) 1259 platform_device_unregister(wm8350->pmic.pdev[i]);
1251 platform_device_unregister(wm8350->pmic.pdev[i]); 1260
1261 platform_device_unregister(wm8350->wdt.pdev);
1262 platform_device_unregister(wm8350->rtc.pdev);
1263 platform_device_unregister(wm8350->power.pdev);
1264 platform_device_unregister(wm8350->gpio.pdev);
1265 platform_device_unregister(wm8350->codec.pdev);
1252 1266
1253 free_irq(wm8350->chip_irq, wm8350); 1267 free_irq(wm8350->chip_irq, wm8350);
1254 flush_work(&wm8350->irq_work); 1268 flush_work(&wm8350->irq_work);
diff --git a/include/linux/mfd/wm8350/audio.h b/include/linux/mfd/wm8350/audio.h
index 43342f767112..217bb22ebb8e 100644
--- a/include/linux/mfd/wm8350/audio.h
+++ b/include/linux/mfd/wm8350/audio.h
@@ -13,6 +13,8 @@
13#ifndef __LINUX_MFD_WM8350_AUDIO_H_ 13#ifndef __LINUX_MFD_WM8350_AUDIO_H_
14#define __LINUX_MFD_WM8350_AUDIO_H_ 14#define __LINUX_MFD_WM8350_AUDIO_H_
15 15
16#include <linux/platform_device.h>
17
16#define WM8350_CLOCK_CONTROL_1 0x28 18#define WM8350_CLOCK_CONTROL_1 0x28
17#define WM8350_CLOCK_CONTROL_2 0x29 19#define WM8350_CLOCK_CONTROL_2 0x29
18#define WM8350_FLL_CONTROL_1 0x2A 20#define WM8350_FLL_CONTROL_1 0x2A
@@ -589,4 +591,8 @@
589#define WM8350_IRQ_CODEC_MICSCD 41 591#define WM8350_IRQ_CODEC_MICSCD 41
590#define WM8350_IRQ_CODEC_MICD 42 592#define WM8350_IRQ_CODEC_MICD 42
591 593
594struct wm8350_codec {
595 struct platform_device *pdev;
596};
597
592#endif 598#endif
diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h
index 348101cb00dc..6ebf97f2a475 100644
--- a/include/linux/mfd/wm8350/core.h
+++ b/include/linux/mfd/wm8350/core.h
@@ -17,7 +17,12 @@
17#include <linux/mutex.h> 17#include <linux/mutex.h>
18#include <linux/workqueue.h> 18#include <linux/workqueue.h>
19 19
20#include <linux/mfd/wm8350/audio.h>
21#include <linux/mfd/wm8350/gpio.h>
20#include <linux/mfd/wm8350/pmic.h> 22#include <linux/mfd/wm8350/pmic.h>
23#include <linux/mfd/wm8350/rtc.h>
24#include <linux/mfd/wm8350/supply.h>
25#include <linux/mfd/wm8350/wdt.h>
21 26
22/* 27/*
23 * Register values. 28 * Register values.
@@ -574,7 +579,12 @@ struct wm8350 {
574 int chip_irq; 579 int chip_irq;
575 580
576 /* Client devices */ 581 /* Client devices */
582 struct wm8350_codec codec;
583 struct wm8350_gpio gpio;
577 struct wm8350_pmic pmic; 584 struct wm8350_pmic pmic;
585 struct wm8350_power power;
586 struct wm8350_rtc rtc;
587 struct wm8350_wdt wdt;
578}; 588};
579 589
580/** 590/**
diff --git a/include/linux/mfd/wm8350/gpio.h b/include/linux/mfd/wm8350/gpio.h
index c6cd2ca8854a..ed91e8f5d298 100644
--- a/include/linux/mfd/wm8350/gpio.h
+++ b/include/linux/mfd/wm8350/gpio.h
@@ -13,6 +13,8 @@
13#ifndef __LINUX_MFD_WM8350_GPIO_H_ 13#ifndef __LINUX_MFD_WM8350_GPIO_H_
14#define __LINUX_MFD_WM8350_GPIO_H_ 14#define __LINUX_MFD_WM8350_GPIO_H_
15 15
16#include <linux/platform_device.h>
17
16/* 18/*
17 * GPIO Registers. 19 * GPIO Registers.
18 */ 20 */
@@ -328,6 +330,10 @@ struct wm8350;
328int wm8350_gpio_config(struct wm8350 *wm8350, int gpio, int dir, int func, 330int wm8350_gpio_config(struct wm8350 *wm8350, int gpio, int dir, int func,
329 int pol, int pull, int invert, int debounce); 331 int pol, int pull, int invert, int debounce);
330 332
333struct wm8350_gpio {
334 struct platform_device *pdev;
335};
336
331/* 337/*
332 * GPIO Interrupts 338 * GPIO Interrupts
333 */ 339 */
diff --git a/include/linux/mfd/wm8350/rtc.h b/include/linux/mfd/wm8350/rtc.h
index cb337ea8082f..dfda69e9f440 100644
--- a/include/linux/mfd/wm8350/rtc.h
+++ b/include/linux/mfd/wm8350/rtc.h
@@ -12,6 +12,8 @@
12#ifndef __LINUX_MFD_WM8350_RTC_H 12#ifndef __LINUX_MFD_WM8350_RTC_H
13#define __LINUX_MFD_WM8350_RTC_H 13#define __LINUX_MFD_WM8350_RTC_H
14 14
15#include <linux/platform_device.h>
16
15/* 17/*
16 * Register values. 18 * Register values.
17 */ 19 */
@@ -257,4 +259,8 @@
257#define WM8350_IRQ_RTC_SEC 8 259#define WM8350_IRQ_RTC_SEC 8
258#define WM8350_IRQ_RTC_ALM 9 260#define WM8350_IRQ_RTC_ALM 9
259 261
262struct wm8350_rtc {
263 struct platform_device *pdev;
264};
265
260#endif 266#endif
diff --git a/include/linux/mfd/wm8350/supply.h b/include/linux/mfd/wm8350/supply.h
index f1d4317cf022..1c8f3cde79b0 100644
--- a/include/linux/mfd/wm8350/supply.h
+++ b/include/linux/mfd/wm8350/supply.h
@@ -13,6 +13,8 @@
13#ifndef __LINUX_MFD_WM8350_SUPPLY_H_ 13#ifndef __LINUX_MFD_WM8350_SUPPLY_H_
14#define __LINUX_MFD_WM8350_SUPPLY_H_ 14#define __LINUX_MFD_WM8350_SUPPLY_H_
15 15
16#include <linux/platform_device.h>
17
16/* 18/*
17 * Charger registers 19 * Charger registers
18 */ 20 */
@@ -102,4 +104,8 @@
102#define WM8350_IRQ_EXT_WALL_FB 37 104#define WM8350_IRQ_EXT_WALL_FB 37
103#define WM8350_IRQ_EXT_BAT_FB 38 105#define WM8350_IRQ_EXT_BAT_FB 38
104 106
107struct wm8350_power {
108 struct platform_device *pdev;
109};
110
105#endif 111#endif
diff --git a/include/linux/mfd/wm8350/wdt.h b/include/linux/mfd/wm8350/wdt.h
index 72fc9f554569..f6135b5e5ef4 100644
--- a/include/linux/mfd/wm8350/wdt.h
+++ b/include/linux/mfd/wm8350/wdt.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * wdt.h -- Watchdog Driver for Wolfson WM8350 PMIC 2 * wdt.h -- Watchdog Driver for Wolfson WM8350 PMIC
3 * 3 *
4 * Copyright 2007 Wolfson Microelectronics PLC 4 * Copyright 2007, 2008 Wolfson Microelectronics PLC
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the 7 * under the terms of the GNU General Public License as published by the
@@ -12,6 +12,8 @@
12#ifndef __LINUX_MFD_WM8350_WDT_H_ 12#ifndef __LINUX_MFD_WM8350_WDT_H_
13#define __LINUX_MFD_WM8350_WDT_H_ 13#define __LINUX_MFD_WM8350_WDT_H_
14 14
15#include <linux/platform_device.h>
16
15#define WM8350_WDOG_HIB_MODE 0x0080 17#define WM8350_WDOG_HIB_MODE 0x0080
16#define WM8350_WDOG_DEBUG 0x0040 18#define WM8350_WDOG_DEBUG 0x0040
17#define WM8350_WDOG_MODE_MASK 0x0030 19#define WM8350_WDOG_MODE_MASK 0x0030
@@ -19,4 +21,8 @@
19 21
20#define WM8350_IRQ_SYS_WDOG_TO 24 22#define WM8350_IRQ_SYS_WDOG_TO 24
21 23
24struct wm8350_wdt {
25 struct platform_device *pdev;
26};
27
22#endif 28#endif