|
@@ -550,3 +550,98 @@ static int dm6444evm_msp430_get_pins(void)
|
|
|
buf[0], buf[1], buf[2], buf[3]);
|
|
|
|
|
|
return (buf[3] << 8) | buf[2];
|
|
|
+}
|
|
|
+
|
|
|
+static int dm6444evm_mmc_get_cd(int module)
|
|
|
+{
|
|
|
+ int status = dm6444evm_msp430_get_pins();
|
|
|
+
|
|
|
+ return (status < 0) ? status : !(status & BIT(1));
|
|
|
+}
|
|
|
+
|
|
|
+static int dm6444evm_mmc_get_ro(int module)
|
|
|
+{
|
|
|
+ int status = dm6444evm_msp430_get_pins();
|
|
|
+
|
|
|
+ return (status < 0) ? status : status & BIT(6 + 8);
|
|
|
+}
|
|
|
+
|
|
|
+static struct davinci_mmc_config dm6446evm_mmc_config = {
|
|
|
+ .get_cd = dm6444evm_mmc_get_cd,
|
|
|
+ .get_ro = dm6444evm_mmc_get_ro,
|
|
|
+ .wires = 4,
|
|
|
+ .version = MMC_CTLR_VERSION_1
|
|
|
+};
|
|
|
+
|
|
|
+static struct i2c_board_info __initdata i2c_info[] = {
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("dm6446evm_msp", 0x23),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("pcf8574", 0x38),
|
|
|
+ .platform_data = &pcf_data_u2,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("pcf8574", 0x39),
|
|
|
+ .platform_data = &pcf_data_u18,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("pcf8574", 0x3a),
|
|
|
+ .platform_data = &pcf_data_u35,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("24c256", 0x50),
|
|
|
+ .platform_data = &eeprom_info,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("tlv320aic33", 0x1b),
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* The msp430 uses a slow bitbanged I2C implementation (ergo 20 KHz),
|
|
|
+ * which requires 100 usec of idle bus after i2c writes sent to it.
|
|
|
+ */
|
|
|
+static struct davinci_i2c_platform_data i2c_pdata = {
|
|
|
+ .bus_freq = 20 /* kHz */,
|
|
|
+ .bus_delay = 100 /* usec */,
|
|
|
+ .sda_pin = 44,
|
|
|
+ .scl_pin = 43,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init evm_init_i2c(void)
|
|
|
+{
|
|
|
+ davinci_init_i2c(&i2c_pdata);
|
|
|
+ i2c_add_driver(&dm6446evm_msp_driver);
|
|
|
+ i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info));
|
|
|
+}
|
|
|
+
|
|
|
+#define VENC_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)
|
|
|
+
|
|
|
+/* venc standard timings */
|
|
|
+static struct vpbe_enc_mode_info dm644xevm_enc_std_timing[] = {
|
|
|
+ {
|
|
|
+ .name = "ntsc",
|
|
|
+ .timings_type = VPBE_ENC_STD,
|
|
|
+ .std_id = V4L2_STD_525_60,
|
|
|
+ .interlaced = 1,
|
|
|
+ .xres = 720,
|
|
|
+ .yres = 480,
|
|
|
+ .aspect = {11, 10},
|
|
|
+ .fps = {30000, 1001},
|
|
|
+ .left_margin = 0x79,
|
|
|
+ .upper_margin = 0x10,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "pal",
|
|
|
+ .timings_type = VPBE_ENC_STD,
|
|
|
+ .std_id = V4L2_STD_625_50,
|
|
|
+ .interlaced = 1,
|
|
|
+ .xres = 720,
|
|
|
+ .yres = 576,
|
|
|
+ .aspect = {54, 59},
|
|
|
+ .fps = {25, 1},
|
|
|
+ .left_margin = 0x7e,
|
|
|
+ .upper_margin = 0x16,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|