Skip to content

Commit

Permalink
ARM: S3C64XX: Hook up Littlemill audio card on Cragganmore
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mark Brown authored and Kukjin Kim committed Dec 2, 2011
1 parent 3d19f1c commit c5c32c9
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
5 changes: 3 additions & 2 deletions arch/arm/mach-s3c64xx/include/mach/crag6410.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@

#define BANFF_PMIC_IRQ_BASE IRQ_BOARD_START
#define GLENFARCLAS_PMIC_IRQ_BASE (IRQ_BOARD_START + 64)
#define CODEC_IRQ_BASE (IRQ_BOARD_START + 128)

#define PCA935X_GPIO_BASE GPIO_BOARD_START
#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 16)
#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)

#endif
2 changes: 1 addition & 1 deletion arch/arm/mach-s3c64xx/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@
#define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)

#ifdef CONFIG_MACH_WLF_CRAGG_6410
#define IRQ_BOARD_NR 128
#define IRQ_BOARD_NR 160
#elif defined(CONFIG_SMDK6410_WM1190_EV1)
#define IRQ_BOARD_NR 64
#elif defined(CONFIG_SMDK6410_WM1192_EV1)
Expand Down
21 changes: 21 additions & 0 deletions arch/arm/mach-s3c64xx/mach-crag6410-module.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include <linux/mfd/wm831x/irq.h>
#include <linux/mfd/wm831x/gpio.h>
#include <linux/mfd/wm8994/pdata.h>

#include <sound/wm5100.h>
#include <sound/wm8996.h>
Expand Down Expand Up @@ -133,6 +134,24 @@ static const struct i2c_board_info wm1259_devs[] = {
},
};

static struct wm8994_pdata wm8994_pdata = {
.gpio_base = CODEC_GPIO_BASE,
.gpio_defaults = {
0x3, /* IRQ out, active high, CMOS */
},
.irq_base = CODEC_IRQ_BASE,
.ldo = {
{ .supply = "WALLVDD" },
{ .supply = "WALLVDD" },
},
};

static const struct i2c_board_info wm1277_devs[] = {
{ I2C_BOARD_INFO("wm8958", 0x1a), /* WM8958 is the superset */
.platform_data = &wm8994_pdata,
.irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2,
},
};

static __devinitdata const struct {
u8 id;
Expand All @@ -154,6 +173,8 @@ static __devinitdata const struct {
{ .id = 0x3b, .name = "1255-EV1 Kilchoman",
.i2c_devs = wm1255_devs, .num_i2c_devs = ARRAY_SIZE(wm1255_devs) },
{ .id = 0x3c, .name = "1273-EV1 Longmorn" },
{ .id = 0x3d, .name = "1277-EV1 Littlemill",
.i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) },
};

static __devinit int wlf_gf_module_probe(struct i2c_client *i2c,
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-s3c64xx/mach-crag6410.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,11 @@ static struct platform_device speyside_wm8962_device = {
.id = -1,
};

static struct platform_device littlemill_device = {
.name = "littlemill",
.id = -1,
};

static struct regulator_consumer_supply wallvdd_consumers[] = {
REGULATOR_SUPPLY("SPKVDD1", "1-001a"),
REGULATOR_SUPPLY("SPKVDD2", "1-001a"),
Expand Down Expand Up @@ -341,6 +346,7 @@ static struct platform_device *crag6410_devices[] __initdata = {
&crag6410_backlight_device,
&speyside_device,
&speyside_wm8962_device,
&littlemill_device,
&lowland_device,
&wallvdd_device,
};
Expand Down

0 comments on commit c5c32c9

Please sign in to comment.