OMAP: Configure audio_mclk for twl4030-codec MFD
[pandora-kernel.git] / arch / arm / mach-omap2 / board-omap3pandora.c
index e32aa23..77790ee 100644 (file)
@@ -40,6 +40,7 @@
 #include <mach/mcspi.h>
 #include <mach/usb.h>
 #include <mach/keypad.h>
+#include <mach/mux.h>
 
 #include "sdram-micron-mt46h32m32lf-6.h"
 #include "mmc-twl4030.h"
@@ -132,7 +133,7 @@ static void __init pandora_keys_gpio_init(void)
        omap_set_gpio_debounce_time(32 * 5, GPIO_DEBOUNCE_TIME);
 }
 
-static int pandora_keypad_map[] = {
+static int board_keymap[] = {
        /* col, row, code */
        KEY(0, 0, KEY_9),
        KEY(0, 1, KEY_0),
@@ -179,11 +180,15 @@ static int pandora_keypad_map[] = {
        KEY(5, 2, KEY_FN),
 };
 
+static struct matrix_keymap_data board_map_data = {
+       .keymap                 = board_keymap,
+       .keymap_size            = ARRAY_SIZE(board_keymap),
+};
+
 static struct twl4030_keypad_data pandora_kp_data = {
+       .keymap_data    = &board_map_data,
        .rows           = 8,
        .cols           = 6,
-       .keymap         = pandora_keypad_map,
-       .keymapsize     = ARRAY_SIZE(pandora_keypad_map),
        .rep            = 1,
 };
 
@@ -212,10 +217,6 @@ static struct twl4030_hsmmc_info omap3pandora_mmc[] = {
        {}      /* Terminator */
 };
 
-static struct omap_uart_config omap3pandora_uart_config __initdata = {
-       .enabled_uarts  = (1 << 2), /* UART3 */
-};
-
 static struct regulator_consumer_supply pandora_vmmc1_supply = {
        .supply                 = "vmmc",
 };
@@ -280,11 +281,21 @@ static struct twl4030_usb_data omap3pandora_usb_data = {
        .usb_mode       = T2_USB_MODE_ULPI,
 };
 
+static struct twl4030_codec_audio_data omap3pandora_audio_data = {
+       .audio_mclk = 26000000,
+};
+
+static struct twl4030_codec_data omap3pandora_codec_data = {
+       .audio_mclk = 26000000,
+       .audio = &omap3pandora_audio_data,
+};
+
 static struct twl4030_platform_data omap3pandora_twldata = {
        .irq_base       = TWL4030_IRQ_BASE,
        .irq_end        = TWL4030_IRQ_END,
        .gpio           = &omap3pandora_gpio_data,
        .usb            = &omap3pandora_usb_data,
+       .codec          = &omap3pandora_codec_data,
        .vmmc1          = &pandora_vmmc1,
        .vmmc2          = &pandora_vmmc2,
        .keypad         = &pandora_kp_data,
@@ -308,13 +319,6 @@ static int __init omap3pandora_i2c_init(void)
        return 0;
 }
 
-static void __init omap3pandora_init_irq(void)
-{
-       omap2_init_common_hw(mt46h32m32lf6_sdrc_params);
-       omap_init_irq();
-       omap_gpio_init();
-}
-
 static void __init omap3pandora_ads7846_init(void)
 {
        int gpio = OMAP3_PANDORA_TS_GPIO;
@@ -374,10 +378,19 @@ static struct omap_lcd_config omap3pandora_lcd_config __initdata = {
 };
 
 static struct omap_board_config_kernel omap3pandora_config[] __initdata = {
-       { OMAP_TAG_UART,        &omap3pandora_uart_config },
        { OMAP_TAG_LCD,         &omap3pandora_lcd_config },
 };
 
+static void __init omap3pandora_init_irq(void)
+{
+       omap_board_config = omap3pandora_config;
+       omap_board_config_size = ARRAY_SIZE(omap3pandora_config);
+       omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+                            mt46h32m32lf6_sdrc_params);
+       omap_init_irq();
+       omap_gpio_init();
+}
+
 static struct platform_device *omap3pandora_devices[] __initdata = {
        &omap3pandora_lcd_device,
        &pandora_leds_gpio,
@@ -389,14 +402,16 @@ static void __init omap3pandora_init(void)
        omap3pandora_i2c_init();
        platform_add_devices(omap3pandora_devices,
                        ARRAY_SIZE(omap3pandora_devices));
-       omap_board_config = omap3pandora_config;
-       omap_board_config_size = ARRAY_SIZE(omap3pandora_config);
        omap_serial_init();
        spi_register_board_info(omap3pandora_spi_board_info,
                        ARRAY_SIZE(omap3pandora_spi_board_info));
        omap3pandora_ads7846_init();
        pandora_keys_gpio_init();
        usb_musb_init();
+
+       /* Ensure SDRC pins are mux'd for self-refresh */
+       omap_cfg_reg(H16_34XX_SDRC_CKE0);
+       omap_cfg_reg(H17_34XX_SDRC_CKE1);
 }
 
 static void __init omap3pandora_map_io(void)