rk30 loquat phone: add sc8803
author蓝斌元 <lby@rock-chips.com>
Wed, 2 May 2012 09:52:39 +0000 (17:52 +0800)
committerzhanghao <zhanghao@rock-chips.com>
Wed, 2 May 2012 10:04:27 +0000 (18:04 +0800)
arch/arm/configs/rk30_phone_loquat_defconfig
arch/arm/mach-rk30/board-rk30-phone-loquat.c

index 8d15b6d0d616f806fc3a43be9e64605393c5f281..d3f4bf7c53d07f72d47e9402841d7f32f24e2641 100755 (executable)
@@ -191,6 +191,8 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_MISC_DEVICES=y
 CONFIG_UID_STAT=y
 CONFIG_APANIC=y
+CONFIG_RK29_SC8800=y
+CONFIG_TDSC8800=y
 CONFIG_SCSI=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_SCSI_MULTI_LUN=y
@@ -250,6 +252,9 @@ CONFIG_I2C1_CONTROLLER_RK30=y
 CONFIG_I2C2_CONTROLLER_RK30=y
 CONFIG_I2C3_CONTROLLER_RK30=y
 CONFIG_I2C4_CONTROLLER_RK30=y
+CONFIG_SPI=y
+CONFIG_SPIM_RK29=y
+CONFIG_SPIM1_RK29=y
 CONFIG_EXPANDED_GPIO_NUM=0
 CONFIG_EXPANDED_GPIO_IRQ_NUM=0
 CONFIG_SPI_FPGA_GPIO_NUM=0
index b34cb32c0e909d84b5c025836c5849f805e24353..fd4b44f71931a2d56df0ec57ed965373d3486959 100755 (executable)
@@ -51,7 +51,9 @@
 #if defined(CONFIG_ANDROID_TIMED_GPIO)
 #include "../../../drivers/staging/android/timed_gpio.h"
 #endif
-
+#include <linux/mtk23d.h>
+#include "../../../drivers/tty/serial/sc8800.h"
+#define BP_VOL_PIN                     RK30_PIN6_PB2
 #define RK30_FB0_MEM_SIZE 8*SZ_1M
 
 #ifdef CONFIG_VIDEO_RK29
@@ -519,8 +521,6 @@ struct goodix_platform_data goodix_info = {
 };
 #endif
 
-static struct spi_board_info board_spi_devices[] = {
-};
 
 /***********************************************************
 *      rk30  backlight
@@ -645,6 +645,83 @@ static struct platform_device rk30_device_modem = {
        }
 };
 #endif
+#if defined(CONFIG_RK29_SC8800)
+// tdsc8800
+static int tdsc8800_io_init(void)
+{
+
+       return 0;
+}
+
+static int tdsc8800_io_deinit(void)
+{
+
+       return 0;
+}
+
+struct rk2818_23d_data rk29_tdsc8800_info = {
+       .io_init = tdsc8800_io_init,
+       .io_deinit = tdsc8800_io_deinit,
+       .bp_power = BP_VOL_PIN,
+       .bp_power_active_low = 1,
+};
+struct platform_device rk29_device_tdsc8800 = {
+        .name = "tdsc8800",
+       .id = -1,
+       .dev            = {
+               .platform_data = &rk29_tdsc8800_info,
+       }
+    };
+//sc8800
+static int sc8800_io_init(void)
+{
+       rk30_mux_api_set(GPIO2B5_LCDC1DATA13_SMCADDR17_HSADCDATA8_NAME, GPIO2B_GPIO2B5);
+       rk30_mux_api_set(GPIO2A2_LCDCDATA2_SMCADDR6_NAME, GPIO2A_GPIO2A2);
+
+
+       rk30_mux_api_set(GPIO2C3_LCDC1DATA19_SPI1CLK_HSADCDATA0_NAME, GPIO2C_SPI1_CLK);
+       rk30_mux_api_set(GPIO2C4_LCDC1DATA20_SPI1CSN0_HSADCDATA1_NAME, GPIO2C_SPI1_CSN0);
+       rk30_mux_api_set(GPIO2C5_LCDC1DATA21_SPI1TXD_HSADCDATA2_NAME, GPIO2C_SPI1_TXD);
+       rk30_mux_api_set(GPIO2C6_LCDC1DATA22_SPI1RXD_HSADCDATA3_NAME, GPIO2C_SPI1_RXD);
+       return 0;
+}
+
+static int sc8800_io_deinit(void)
+{
+
+       return 0;
+}
+
+static struct plat_sc8800 sc8800_plat_data = {
+       .slav_rts_pin = RK30_PIN6_PA0,
+       .slav_rdy_pin = RK30_PIN6_PA1,
+       .master_rts_pin = RK30_PIN2_PB5,
+       .master_rdy_pin = RK30_PIN2_PA2,
+       //.poll_time = 100,
+       .io_init = sc8800_io_init,
+    .io_deinit = sc8800_io_deinit,
+};
+static struct rk29xx_spi_chip sc8800_spi_chip = {
+       //.poll_mode = 1,
+       .enable_dma = 0,
+};
+
+#endif
+
+static struct spi_board_info board_spi_devices[] = {
+
+#if defined(CONFIG_RK29_SC8800)
+               {
+                       .modalias  = "sc8800",
+                       .bus_num = 1,
+                       .platform_data = &sc8800_plat_data,
+                       .max_speed_hz  = 12*1000*1000,
+                       .chip_select   = 0,             
+                       .controller_data = &sc8800_spi_chip,
+               },
+#endif
+
+};
 
 /*MMA8452 gsensor*/
 #if defined (CONFIG_GS_MMA8452)
@@ -1184,6 +1261,9 @@ static struct platform_device *devices[] __initdata = {
 #ifdef CONFIG_RK29_SUPPORT_MODEM
     &rk30_device_modem,
 #endif
+#if defined(CONFIG_TDSC8800)
+&rk29_device_tdsc8800,
+#endif
 #ifdef CONFIG_BATTERY_RK30_ADC
        &rk30_device_adc_battery,
 #endif