Merge branch 'peter/for-tony' of git://gitorious.org/omap-audio/linux-audio into omap-for-v3.9/twl
This commit is contained in:
commit
27e0bf7701
|
@ -25,6 +25,7 @@
|
|||
#include <linux/gpio.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <linux/platform_data/omap-twl4030.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
@ -209,6 +210,19 @@ static struct omap2_hsmmc_info mmc[] = {
|
|||
{} /* Terminator */
|
||||
};
|
||||
|
||||
static struct omap_tw4030_pdata omap_twl4030_audio_data = {
|
||||
.voice_connected = true,
|
||||
.custom_routing = true,
|
||||
|
||||
.has_hs = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
.has_hf = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
|
||||
.has_mainmic = true,
|
||||
.has_submic = true,
|
||||
.has_hsmic = true,
|
||||
.has_linein = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
};
|
||||
|
||||
static int sdp3430_twl_gpio_setup(struct device *dev,
|
||||
unsigned gpio, unsigned ngpio)
|
||||
{
|
||||
|
@ -225,6 +239,9 @@ static int sdp3430_twl_gpio_setup(struct device *dev,
|
|||
/* gpio + 15 is "sub_lcd_nRST" (output) */
|
||||
gpio_request_one(gpio + 15, GPIOF_OUT_INIT_LOW, "sub_lcd_nRST");
|
||||
|
||||
omap_twl4030_audio_data.jack_detect = gpio + 2;
|
||||
omap_twl4030_audio_init("SDP3430", &omap_twl4030_audio_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -382,6 +399,9 @@ static int __init omap3430_i2c_init(void)
|
|||
sdp3430_twldata.vpll2->constraints.apply_uV = true;
|
||||
sdp3430_twldata.vpll2->constraints.name = "VDVI";
|
||||
|
||||
sdp3430_twldata.audio->codec->hs_extmute = 1;
|
||||
sdp3430_twldata.audio->codec->hs_extmute_gpio = -EINVAL;
|
||||
|
||||
omap3_pmic_init("twl4030", &sdp3430_twldata);
|
||||
|
||||
/* i2c2 on camera connector (for sensor control) and optional isp1301 */
|
||||
|
|
|
@ -24,8 +24,10 @@
|
|||
#include <linux/gpio_keys.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/leds_pwm.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
#include <linux/platform_data/omap4-keypad.h>
|
||||
#include <linux/usb/musb.h>
|
||||
|
||||
|
@ -256,10 +258,20 @@ static struct gpio_led_platform_data sdp4430_led_data = {
|
|||
.num_leds = ARRAY_SIZE(sdp4430_gpio_leds),
|
||||
};
|
||||
|
||||
static struct pwm_lookup sdp4430_pwm_lookup[] = {
|
||||
PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "omap4::keypad"),
|
||||
PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", NULL),
|
||||
PWM_LOOKUP("twl-pwmled", 0, "leds_pwm", "omap4:green:chrg"),
|
||||
};
|
||||
|
||||
static struct led_pwm sdp4430_pwm_leds[] = {
|
||||
{
|
||||
.name = "omap4::keypad",
|
||||
.max_brightness = 127,
|
||||
.pwm_period_ns = 7812500,
|
||||
},
|
||||
{
|
||||
.name = "omap4:green:chrg",
|
||||
.pwm_id = 1,
|
||||
.max_brightness = 255,
|
||||
.pwm_period_ns = 7812500,
|
||||
},
|
||||
|
@ -278,6 +290,20 @@ static struct platform_device sdp4430_leds_pwm = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data sdp4430_backlight_data = {
|
||||
.max_brightness = 127,
|
||||
.dft_brightness = 127,
|
||||
.pwm_period_ns = 7812500,
|
||||
};
|
||||
|
||||
static struct platform_device sdp4430_backlight_pwm = {
|
||||
.name = "pwm-backlight",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &sdp4430_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
static int omap_prox_activate(struct device *dev)
|
||||
{
|
||||
gpio_set_value(OMAP4_SFH7741_ENABLE_GPIO , 1);
|
||||
|
@ -412,6 +438,7 @@ static struct platform_device *sdp4430_devices[] __initdata = {
|
|||
&sdp4430_gpio_keys_device,
|
||||
&sdp4430_leds_gpio,
|
||||
&sdp4430_leds_pwm,
|
||||
&sdp4430_backlight_pwm,
|
||||
&sdp4430_vbat,
|
||||
&sdp4430_dmic_codec,
|
||||
&sdp4430_abe_audio,
|
||||
|
@ -707,6 +734,7 @@ static void __init omap_4430sdp_init(void)
|
|||
ARRAY_SIZE(sdp4430_spi_board_info));
|
||||
}
|
||||
|
||||
pwm_add_table(sdp4430_pwm_lookup, ARRAY_SIZE(sdp4430_pwm_lookup));
|
||||
status = omap4_keyboard_init(&sdp4430_keypad_data, &keypad_data);
|
||||
if (status)
|
||||
pr_err("Keypad initialization failed: %d\n", status);
|
||||
|
|
|
@ -722,7 +722,7 @@ static void __init cm_t3x_common_init(void)
|
|||
cm_t35_init_ethernet();
|
||||
cm_t35_init_led();
|
||||
cm_t35_init_display();
|
||||
omap_twl4030_audio_init("cm-t3x");
|
||||
omap_twl4030_audio_init("cm-t3x", NULL);
|
||||
|
||||
usb_musb_init(NULL);
|
||||
cm_t35_init_usbh();
|
||||
|
|
|
@ -627,7 +627,7 @@ static void __init devkit8000_init(void)
|
|||
board_nand_init(devkit8000_nand_partitions,
|
||||
ARRAY_SIZE(devkit8000_nand_partitions), NAND_CS,
|
||||
NAND_BUSWIDTH_16, NULL);
|
||||
omap_twl4030_audio_init("omap3beagle");
|
||||
omap_twl4030_audio_init("omap3beagle", NULL);
|
||||
|
||||
/* Ensure SDRC pins are mux'd for self-refresh */
|
||||
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||
|
|
|
@ -629,7 +629,7 @@ static void __init igep_init(void)
|
|||
|
||||
igep_flash_init();
|
||||
igep_leds_init();
|
||||
omap_twl4030_audio_init("igep2");
|
||||
omap_twl4030_audio_init("igep2", NULL);
|
||||
|
||||
/*
|
||||
* WLAN-BT combo module from MuRata which has a Marvell WLAN
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/leds_pwm.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
|
@ -55,6 +57,32 @@
|
|||
|
||||
#define NAND_CS 0
|
||||
|
||||
static struct pwm_lookup pwm_lookup[] = {
|
||||
/* LEDB -> PMU_STAT */
|
||||
PWM_LOOKUP("twl-pwmled", 1, "leds_pwm", "beagleboard::pmu_stat"),
|
||||
};
|
||||
|
||||
static struct led_pwm pwm_leds[] = {
|
||||
{
|
||||
.name = "beagleboard::pmu_stat",
|
||||
.max_brightness = 127,
|
||||
.pwm_period_ns = 7812500,
|
||||
},
|
||||
};
|
||||
|
||||
static struct led_pwm_platform_data pwm_data = {
|
||||
.num_leds = ARRAY_SIZE(pwm_leds),
|
||||
.leds = pwm_leds,
|
||||
};
|
||||
|
||||
static struct platform_device leds_pwm = {
|
||||
.name = "leds_pwm",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &pwm_data,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* OMAP3 Beagle revision
|
||||
* Run time detection of Beagle revision is done by reading GPIO.
|
||||
|
@ -292,9 +320,6 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
|||
gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,
|
||||
"nEN_USB_PWR");
|
||||
|
||||
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
|
||||
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -376,11 +401,6 @@ static struct gpio_led gpio_leds[] = {
|
|||
.default_trigger = "mmc0",
|
||||
.gpio = 149,
|
||||
},
|
||||
{
|
||||
.name = "beagleboard::pmu_stat",
|
||||
.gpio = -EINVAL, /* gets replaced */
|
||||
.active_low = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led_platform_data gpio_led_info = {
|
||||
|
@ -428,6 +448,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
|
|||
&leds_gpio,
|
||||
&keys_gpio,
|
||||
&madc_hwmon,
|
||||
&leds_pwm,
|
||||
};
|
||||
|
||||
static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
|
||||
|
@ -524,7 +545,7 @@ static void __init omap3_beagle_init(void)
|
|||
board_nand_init(omap3beagle_nand_partitions,
|
||||
ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS,
|
||||
NAND_BUSWIDTH_16, NULL);
|
||||
omap_twl4030_audio_init("omap3beagle");
|
||||
omap_twl4030_audio_init("omap3beagle", NULL);
|
||||
|
||||
/* Ensure msecure is mux'd to be able to set the RTC. */
|
||||
omap_mux_init_signal("sys_drm_msecure", OMAP_PIN_OFF_OUTPUT_HIGH);
|
||||
|
@ -532,6 +553,8 @@ static void __init omap3_beagle_init(void)
|
|||
/* Ensure SDRC pins are mux'd for self-refresh */
|
||||
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
|
||||
|
||||
pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
|
||||
}
|
||||
|
||||
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
|
||||
|
|
|
@ -744,7 +744,7 @@ static void __init omap3_evm_init(void)
|
|||
omap3evm_init_smsc911x();
|
||||
omap3_evm_display_init();
|
||||
omap3_evm_wl12xx_init();
|
||||
omap_twl4030_audio_init("omap3evm");
|
||||
omap_twl4030_audio_init("omap3evm", NULL);
|
||||
}
|
||||
|
||||
MACHINE_START(OMAP3EVM, "OMAP3 EVM")
|
||||
|
|
|
@ -506,7 +506,7 @@ static void __init overo_init(void)
|
|||
overo_display_init();
|
||||
overo_init_led();
|
||||
overo_init_keys();
|
||||
omap_twl4030_audio_init("overo");
|
||||
omap_twl4030_audio_init("overo", NULL);
|
||||
|
||||
/* Ensure SDRC pins are mux'd for self-refresh */
|
||||
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/wl12xx.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
#include <linux/platform_data/omap-twl4030.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
@ -34,11 +35,9 @@
|
|||
#include "common-board-devices.h"
|
||||
|
||||
#define OMAP_ZOOM_WLAN_PMENA_GPIO (101)
|
||||
#define ZOOM2_HEADSET_EXTMUTE_GPIO (153)
|
||||
#define OMAP_ZOOM_TSC2004_IRQ_GPIO (153)
|
||||
#define OMAP_ZOOM_WLAN_IRQ_GPIO (162)
|
||||
|
||||
#define LCD_PANEL_ENABLE_GPIO (7 + OMAP_MAX_GPIO_LINES)
|
||||
|
||||
/* Zoom2 has Qwerty keyboard*/
|
||||
static uint32_t board_keymap[] = {
|
||||
KEY(0, 0, KEY_E),
|
||||
|
@ -226,22 +225,31 @@ static struct omap2_hsmmc_info mmc[] = {
|
|||
{} /* Terminator */
|
||||
};
|
||||
|
||||
static struct omap_tw4030_pdata omap_twl4030_audio_data = {
|
||||
.voice_connected = true,
|
||||
.custom_routing = true,
|
||||
|
||||
.has_hs = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
.has_hf = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
|
||||
.has_mainmic = true,
|
||||
.has_submic = true,
|
||||
.has_hsmic = true,
|
||||
.has_linein = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
|
||||
};
|
||||
|
||||
static int zoom_twl_gpio_setup(struct device *dev,
|
||||
unsigned gpio, unsigned ngpio)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* gpio + 0 is "mmc0_cd" (input/IRQ) */
|
||||
mmc[0].gpio_cd = gpio + 0;
|
||||
omap_hsmmc_late_init(mmc);
|
||||
|
||||
ret = gpio_request_one(LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW,
|
||||
"lcd enable");
|
||||
if (ret)
|
||||
pr_err("Failed to get LCD_PANEL_ENABLE_GPIO (gpio%d).\n",
|
||||
LCD_PANEL_ENABLE_GPIO);
|
||||
/* Audio setup */
|
||||
omap_twl4030_audio_data.jack_detect = gpio + 2;
|
||||
omap_twl4030_audio_init("Zoom2", &omap_twl4030_audio_data);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct twl4030_gpio_platform_data zoom_gpio_data = {
|
||||
|
@ -264,14 +272,9 @@ static int __init omap_i2c_init(void)
|
|||
TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO,
|
||||
TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
|
||||
|
||||
if (machine_is_omap_zoom2()) {
|
||||
struct twl4030_codec_data *codec_data;
|
||||
codec_data = zoom_twldata.audio->codec;
|
||||
if (machine_is_omap_zoom2())
|
||||
zoom_twldata.audio->codec->ramp_delay_value = 3; /* 161 ms */
|
||||
|
||||
codec_data->ramp_delay_value = 3; /* 161 ms */
|
||||
codec_data->hs_extmute = 1;
|
||||
codec_data->hs_extmute_gpio = ZOOM2_HEADSET_EXTMUTE_GPIO;
|
||||
}
|
||||
omap_pmic_init(1, 2400, "twl5030", 7 + OMAP_INTC_START, &zoom_twldata);
|
||||
omap_register_i2c_bus(2, 400, NULL, 0);
|
||||
omap_register_i2c_bus(3, 400, NULL, 0);
|
||||
|
|
|
@ -528,24 +528,29 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
|
|||
defined(CONFIG_SND_OMAP_SOC_OMAP_TWL4030_MODULE)
|
||||
#include <linux/platform_data/omap-twl4030.h>
|
||||
|
||||
/* Commonly used configuration */
|
||||
static struct omap_tw4030_pdata omap_twl4030_audio_data;
|
||||
|
||||
static struct platform_device audio_device = {
|
||||
.name = "omap-twl4030",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &omap_twl4030_audio_data,
|
||||
},
|
||||
};
|
||||
|
||||
void __init omap_twl4030_audio_init(char *card_name)
|
||||
void __init omap_twl4030_audio_init(char *card_name,
|
||||
struct omap_tw4030_pdata *pdata)
|
||||
{
|
||||
omap_twl4030_audio_data.card_name = card_name;
|
||||
if (!pdata)
|
||||
pdata = &omap_twl4030_audio_data;
|
||||
|
||||
pdata->card_name = card_name;
|
||||
|
||||
audio_device.dev.platform_data = pdata;
|
||||
platform_device_register(&audio_device);
|
||||
}
|
||||
|
||||
#else /* SOC_OMAP_TWL4030 */
|
||||
void __init omap_twl4030_audio_init(char *card_name)
|
||||
void __init omap_twl4030_audio_init(char *card_name,
|
||||
struct omap_tw4030_pdata *pdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
struct twl4030_platform_data;
|
||||
struct twl6040_platform_data;
|
||||
struct omap_tw4030_pdata;
|
||||
struct i2c_board_info;
|
||||
|
||||
void omap_pmic_init(int bus, u32 clkrate, const char *pmic_type, int pmic_irq,
|
||||
|
@ -60,6 +61,6 @@ void omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
|
|||
void omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
|
||||
u32 pdata_flags, u32 regulators_flags);
|
||||
|
||||
void omap_twl4030_audio_init(char *card_name);
|
||||
void omap_twl4030_audio_init(char *card_name, struct omap_tw4030_pdata *pdata);
|
||||
|
||||
#endif /* __OMAP_PMIC_COMMON__ */
|
||||
|
|
Loading…
Reference in New Issue