]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'peter/for-tony' of git://gitorious.org/omap-audio/linux-audio into...
authorTony Lindgren <tony@atomide.com>
Wed, 30 Jan 2013 21:21:35 +0000 (13:21 -0800)
committerTony Lindgren <tony@atomide.com>
Wed, 30 Jan 2013 21:21:35 +0000 (13:21 -0800)
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-zoom-peripherals.c
arch/arm/mach-omap2/twl-common.c
arch/arm/mach-omap2/twl-common.h

index bb73afc9ac17cbc83e915145b7887b0e8203ff90..e7ef3111a0f29d97e03f4e1ee2de59406403a442 100644 (file)
@@ -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 */
index 1cc6696594fd5493258b2df98874f6eb307a3bbf..918b73bd0215b60b7a6f18a3c9fde48f05e15cc8 100644 (file)
 #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);
index b3102c2f4a3cbbede79af9aeb10beecf808a60a5..eec635e15eddf0c17a73ea73e3202e3d47b70261 100644 (file)
@@ -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();
index 12865af25d3a865b351e8dff3b8cb5fc20649ca5..f0aa64b1e9773811500241d5232502bfdb33d4d5 100644 (file)
@@ -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);
index 0f24cb84ba5a524ff0256462d84be6cc2d6d9b0e..d1a7352915961fbc95d17917bad050f1d0cf5e7d 100644 (file)
@@ -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
index 22c483d5dfa829891fd8ec9ece81f35c94cf152b..2a6e8ad1d68bc83c07903caa7b6bedebccf0fd11 100644 (file)
@@ -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>
 
 #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")
index 3985f35aee06a6cffbc05d2930b56c456231ee97..8803b5cff09d18080382a127860a7a8e743f4d0c 100644 (file)
@@ -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")
index c8fde3e5644138088721040a465b55de4094313c..fe644ebe76576c3340511e9d20aa0ef134298691 100644 (file)
@@ -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);
index 26e07addc9d72b1c5540c1020043d171fe00a211..0745bd93f398daff6026a8b997c86eaa60626941 100644 (file)
@@ -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>
 #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);
index e49b40b4c90a23c9522d00ce2aab8ba01a4de39a..931495a2587244a2c3060631af42b08279bebead 100644 (file)
@@ -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;
 }
index dcfbad5ac471d211b72e1c39f22762de67aab6fc..24b65d081b69ffd7b6a0f21003505f4aad9df406 100644 (file)
@@ -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__ */