]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-shmobile/board-armadillo800eva.c
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / arch / arm / mach-shmobile / board-armadillo800eva.c
index 81d91fda2d90e010afe05584022776f8ae2d64a2..f2ec0777cfbe89ca5c998dfe1b6d581b5d5320bf 100644 (file)
  * this command is required when playback.
  *
  * # amixer set "Headphone" 50
+ *
+ * this command is required when capture.
+ *
+ * # amixer set "Input PGA" 15
+ * # amixer set "Left Input Mixer MicP" on
+ * # amixer set "Left Input Mixer MicN" on
+ * # amixer set "Right Input Mixer MicN" on
+ * # amixer set "Right Input Mixer MicP" on
  */
 
 /*
@@ -700,9 +708,9 @@ static int mt9t111_power(struct device *dev, int mode)
                /* video1 (= CON1 camera) expect 24MHz */
                clk_set_rate(mclk, clk_round_rate(mclk, 24000000));
                clk_enable(mclk);
-               gpio_direction_output(GPIO_PORT158, 1);
+               gpio_set_value(GPIO_PORT158, 1);
        } else {
-               gpio_direction_output(GPIO_PORT158, 0);
+               gpio_set_value(GPIO_PORT158, 0);
                clk_disable(mclk);
        }
 
@@ -992,16 +1000,12 @@ static void __init eva_init(void)
        gpio_request(GPIO_FN_LCD0_DISP,         NULL);
        gpio_request(GPIO_FN_LCD0_LCLK_PORT165, NULL);
 
-       gpio_request(GPIO_PORT61, NULL); /* LCDDON */
-       gpio_direction_output(GPIO_PORT61, 1);
-
-       gpio_request(GPIO_PORT202, NULL); /* LCD0_LED_CONT */
-       gpio_direction_output(GPIO_PORT202, 0);
+       gpio_request_one(GPIO_PORT61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
+       gpio_request_one(GPIO_PORT202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */
 
        /* Touchscreen */
        gpio_request(GPIO_FN_IRQ10,     NULL); /* TP_INT */
-       gpio_request(GPIO_PORT166,      NULL); /* TP_RST_B */
-       gpio_direction_output(GPIO_PORT166, 1);
+       gpio_request_one(GPIO_PORT166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
 
        /* GETHER */
        gpio_request(GPIO_FN_ET_CRS,            NULL);
@@ -1024,12 +1028,10 @@ static void __init eva_init(void)
        gpio_request(GPIO_FN_ET_RX_DV,          NULL);
        gpio_request(GPIO_FN_ET_RX_CLK,         NULL);
 
-       gpio_request(GPIO_PORT18, NULL); /* PHY_RST */
-       gpio_direction_output(GPIO_PORT18, 1);
+       gpio_request_one(GPIO_PORT18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */
 
        /* USB */
-       gpio_request(GPIO_PORT159, NULL); /* USB_DEVICE_MODE */
-       gpio_direction_input(GPIO_PORT159);
+       gpio_request_one(GPIO_PORT159, GPIOF_IN, NULL); /* USB_DEVICE_MODE */
 
        if (gpio_get_value(GPIO_PORT159)) {
                /* USB Host */
@@ -1043,8 +1045,7 @@ static void __init eva_init(void)
                 * and select GPIO_PORT209 here
                 */
                gpio_request(GPIO_FN_IRQ7_PORT209, NULL);
-               gpio_request(GPIO_PORT209, NULL);
-               gpio_direction_input(GPIO_PORT209);
+               gpio_request_one(GPIO_PORT209, GPIOF_IN, NULL);
 
                platform_device_register(&usbhsf_device);
                usb = &usbhsf_device;
@@ -1059,12 +1060,9 @@ static void __init eva_init(void)
        gpio_request(GPIO_FN_SDHI0_D3, NULL);
        gpio_request(GPIO_FN_SDHI0_WP, NULL);
 
-       gpio_request(GPIO_PORT17, NULL);        /* SDHI0_18/33_B */
-       gpio_request(GPIO_PORT74, NULL);        /* SDHI0_PON */
-       gpio_request(GPIO_PORT75, NULL);        /* SDSLOT1_PON */
-       gpio_direction_output(GPIO_PORT17, 0);
-       gpio_direction_output(GPIO_PORT74, 1);
-       gpio_direction_output(GPIO_PORT75, 1);
+       gpio_request_one(GPIO_PORT17, GPIOF_OUT_INIT_LOW, NULL);  /* SDHI0_18/33_B */
+       gpio_request_one(GPIO_PORT74, GPIOF_OUT_INIT_HIGH, NULL); /* SDHI0_PON */
+       gpio_request_one(GPIO_PORT75, GPIOF_OUT_INIT_HIGH, NULL); /* SDSLOT1_PON */
 
        /* we can use GPIO_FN_IRQ31_PORT167 here for SDHI0 CD irq */
 
@@ -1101,12 +1099,10 @@ static void __init eva_init(void)
        gpio_request(GPIO_FN_VIO_CKO,           NULL);
 
        /* CON1/CON15 Camera */
-       gpio_request(GPIO_PORT173, NULL); /* STANDBY */
-       gpio_request(GPIO_PORT172, NULL); /* RST */
-       gpio_request(GPIO_PORT158, NULL); /* CAM_PON */
-       gpio_direction_output(GPIO_PORT173, 0);
-       gpio_direction_output(GPIO_PORT172, 1);
-       gpio_direction_output(GPIO_PORT158, 0); /* see mt9t111_power() */
+       gpio_request_one(GPIO_PORT173, GPIOF_OUT_INIT_LOW, NULL);  /* STANDBY */
+       gpio_request_one(GPIO_PORT172, GPIOF_OUT_INIT_HIGH, NULL); /* RST */
+       /* see mt9t111_power() */
+       gpio_request_one(GPIO_PORT158, GPIOF_OUT_INIT_LOW, NULL);  /* CAM_PON */
 
        /* FSI-WM8978 */
        gpio_request(GPIO_FN_FSIAIBT,           NULL);
@@ -1133,15 +1129,13 @@ static void __init eva_init(void)
         * DBGMD/LCDC0/FSIA MUX
         * DBGMD_SELECT_B should be set after setting PFC Function.
         */
-       gpio_request(GPIO_PORT176, NULL);
-       gpio_direction_output(GPIO_PORT176, 1);
+       gpio_request_one(GPIO_PORT176, GPIOF_OUT_INIT_HIGH, NULL);
 
        /*
         * We can switch CON8/CON14 by SW1.5,
         * but it needs after DBGMD_SELECT_B
         */
-       gpio_request(GPIO_PORT6, NULL);
-       gpio_direction_input(GPIO_PORT6);
+       gpio_request_one(GPIO_PORT6, GPIOF_IN, NULL);
        if (gpio_get_value(GPIO_PORT6)) {
                /* CON14 enable */
        } else {
@@ -1155,8 +1149,8 @@ static void __init eva_init(void)
                gpio_request(GPIO_FN_SDHI1_CD,  NULL);
                gpio_request(GPIO_FN_SDHI1_WP,  NULL);
 
-               gpio_request(GPIO_PORT16, NULL); /* SDSLOT2_PON */
-               gpio_direction_output(GPIO_PORT16, 1);
+               /* SDSLOT2_PON */
+               gpio_request_one(GPIO_PORT16, GPIOF_OUT_INIT_HIGH, NULL);
 
                platform_device_register(&sdhi1_device);
        }
@@ -1175,8 +1169,6 @@ static void __init eva_init(void)
        platform_add_devices(eva_devices,
                             ARRAY_SIZE(eva_devices));
 
-       eva_clock_init();
-
        rmobile_add_device_to_domain("A4LC", &lcdc0_device);
        rmobile_add_device_to_domain("A4LC", &hdmi_lcdc_device);
        if (usb)
@@ -1189,6 +1181,9 @@ static void __init eva_earlytimer_init(void)
 {
        r8a7740_clock_init(MD_CK0 | MD_CK2);
        shmobile_earlytimer_init();
+
+       /* the rate of extal1 clock must be set before late_time_init */
+       eva_clock_init();
 }
 
 static void __init eva_add_early_devices(void)