aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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