diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-12-02 00:32:32 -0500 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2011-12-02 00:32:32 -0500 |
commit | c5c32c965dad8456dd2f6e7c1b05183258593e75 (patch) | |
tree | c8463b5d827c2758fc56436860729ee16334a651 /arch/arm/mach-s3c64xx | |
parent | 3d19f1cd25cfcfba685ef9df7d926c7264b0f8c9 (diff) |
ARM: S3C64XX: Hook up Littlemill audio card on Cragganmore
The Littlemill audio card is an adaptor card which can take any 6220-EV1
CODEC daughtercard. Provide standard support for the use of WM8994 class
devices on the Littlemill card, configuring the MFD for WM8958 usage as
this part is a superset of all others and the driver will use runtime
detection to identify the actually fitted part given the configuration for
the superset.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
[kgene.kim@samsung.com: fix up conflict]
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-s3c64xx')
-rw-r--r-- | arch/arm/mach-s3c64xx/include/mach/crag6410.h | 5 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/include/mach/irqs.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/mach-crag6410-module.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/mach-crag6410.c | 6 |
4 files changed, 31 insertions, 3 deletions
diff --git a/arch/arm/mach-s3c64xx/include/mach/crag6410.h b/arch/arm/mach-s3c64xx/include/mach/crag6410.h index 1cc1cc82e75..5d55ab018b6 100644 --- a/arch/arm/mach-s3c64xx/include/mach/crag6410.h +++ b/arch/arm/mach-s3c64xx/include/mach/crag6410.h | |||
@@ -15,10 +15,11 @@ | |||
15 | 15 | ||
16 | #define BANFF_PMIC_IRQ_BASE IRQ_BOARD_START | 16 | #define BANFF_PMIC_IRQ_BASE IRQ_BOARD_START |
17 | #define GLENFARCLAS_PMIC_IRQ_BASE (IRQ_BOARD_START + 64) | 17 | #define GLENFARCLAS_PMIC_IRQ_BASE (IRQ_BOARD_START + 64) |
18 | #define CODEC_IRQ_BASE (IRQ_BOARD_START + 128) | ||
18 | 19 | ||
19 | #define PCA935X_GPIO_BASE GPIO_BOARD_START | 20 | #define PCA935X_GPIO_BASE GPIO_BOARD_START |
20 | #define CODEC_GPIO_BASE (GPIO_BOARD_START + 8) | 21 | #define CODEC_GPIO_BASE (GPIO_BOARD_START + 8) |
21 | #define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 16) | 22 | #define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32) |
22 | #define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 32) | 23 | #define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64) |
23 | 24 | ||
24 | #endif | 25 | #endif |
diff --git a/arch/arm/mach-s3c64xx/include/mach/irqs.h b/arch/arm/mach-s3c64xx/include/mach/irqs.h index 443f85b3c20..96d60e0d937 100644 --- a/arch/arm/mach-s3c64xx/include/mach/irqs.h +++ b/arch/arm/mach-s3c64xx/include/mach/irqs.h | |||
@@ -169,7 +169,7 @@ | |||
169 | #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) | 169 | #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) |
170 | 170 | ||
171 | #ifdef CONFIG_MACH_WLF_CRAGG_6410 | 171 | #ifdef CONFIG_MACH_WLF_CRAGG_6410 |
172 | #define IRQ_BOARD_NR 128 | 172 | #define IRQ_BOARD_NR 160 |
173 | #elif defined(CONFIG_SMDK6410_WM1190_EV1) | 173 | #elif defined(CONFIG_SMDK6410_WM1190_EV1) |
174 | #define IRQ_BOARD_NR 64 | 174 | #define IRQ_BOARD_NR 64 |
175 | #elif defined(CONFIG_SMDK6410_WM1192_EV1) | 175 | #elif defined(CONFIG_SMDK6410_WM1192_EV1) |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index c492f75a6b3..3fa7ebc83a3 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/mfd/wm831x/irq.h> | 15 | #include <linux/mfd/wm831x/irq.h> |
16 | #include <linux/mfd/wm831x/gpio.h> | 16 | #include <linux/mfd/wm831x/gpio.h> |
17 | #include <linux/mfd/wm8994/pdata.h> | ||
17 | 18 | ||
18 | #include <sound/wm5100.h> | 19 | #include <sound/wm5100.h> |
19 | #include <sound/wm8996.h> | 20 | #include <sound/wm8996.h> |
@@ -133,6 +134,24 @@ static const struct i2c_board_info wm1259_devs[] = { | |||
133 | }, | 134 | }, |
134 | }; | 135 | }; |
135 | 136 | ||
137 | static struct wm8994_pdata wm8994_pdata = { | ||
138 | .gpio_base = CODEC_GPIO_BASE, | ||
139 | .gpio_defaults = { | ||
140 | 0x3, /* IRQ out, active high, CMOS */ | ||
141 | }, | ||
142 | .irq_base = CODEC_IRQ_BASE, | ||
143 | .ldo = { | ||
144 | { .supply = "WALLVDD" }, | ||
145 | { .supply = "WALLVDD" }, | ||
146 | }, | ||
147 | }; | ||
148 | |||
149 | static const struct i2c_board_info wm1277_devs[] = { | ||
150 | { I2C_BOARD_INFO("wm8958", 0x1a), /* WM8958 is the superset */ | ||
151 | .platform_data = &wm8994_pdata, | ||
152 | .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, | ||
153 | }, | ||
154 | }; | ||
136 | 155 | ||
137 | static __devinitdata const struct { | 156 | static __devinitdata const struct { |
138 | u8 id; | 157 | u8 id; |
@@ -154,6 +173,8 @@ static __devinitdata const struct { | |||
154 | { .id = 0x3b, .name = "1255-EV1 Kilchoman", | 173 | { .id = 0x3b, .name = "1255-EV1 Kilchoman", |
155 | .i2c_devs = wm1255_devs, .num_i2c_devs = ARRAY_SIZE(wm1255_devs) }, | 174 | .i2c_devs = wm1255_devs, .num_i2c_devs = ARRAY_SIZE(wm1255_devs) }, |
156 | { .id = 0x3c, .name = "1273-EV1 Longmorn" }, | 175 | { .id = 0x3c, .name = "1273-EV1 Longmorn" }, |
176 | { .id = 0x3d, .name = "1277-EV1 Littlemill", | ||
177 | .i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) }, | ||
157 | }; | 178 | }; |
158 | 179 | ||
159 | static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, | 180 | static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index 2b91c877de6..b2381c1bb3b 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
@@ -289,6 +289,11 @@ static struct platform_device speyside_wm8962_device = { | |||
289 | .id = -1, | 289 | .id = -1, |
290 | }; | 290 | }; |
291 | 291 | ||
292 | static struct platform_device littlemill_device = { | ||
293 | .name = "littlemill", | ||
294 | .id = -1, | ||
295 | }; | ||
296 | |||
292 | static struct regulator_consumer_supply wallvdd_consumers[] = { | 297 | static struct regulator_consumer_supply wallvdd_consumers[] = { |
293 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), | 298 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), |
294 | REGULATOR_SUPPLY("SPKVDD2", "1-001a"), | 299 | REGULATOR_SUPPLY("SPKVDD2", "1-001a"), |
@@ -341,6 +346,7 @@ static struct platform_device *crag6410_devices[] __initdata = { | |||
341 | &crag6410_backlight_device, | 346 | &crag6410_backlight_device, |
342 | &speyside_device, | 347 | &speyside_device, |
343 | &speyside_wm8962_device, | 348 | &speyside_wm8962_device, |
349 | &littlemill_device, | ||
344 | &lowland_device, | 350 | &lowland_device, |
345 | &wallvdd_device, | 351 | &wallvdd_device, |
346 | }; | 352 | }; |