1 Subject:
2 [PATCH 7/7] DM355 platform related changes for vpfe capture driver
3 From:
4 m-karicheri2-l0cyMroinI0@public.gmane.org
5 Date:
6 Fri, 13 Mar 2009 17:24:34 -0400
7 To:
8 davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org, davinci_opensource_ccb-uAqBSO/uNfhBDgjK7y7TUQ@public.gmane.org, psp_video-uAqBSO/uNfhBDgjK7y7TUQ@public.gmane.org
9 Newsgroups:
10 gmane.linux.davinci
12 Add platform related changes for vpfe capture driver on DM355
14 Signed-off-by: Murali Karicheri <m-karicheri2-l0cyMroinI0@public.gmane.org>
15 ---
16 arch/arm/mach-davinci/board-dm355-leopard.c | 91 +++++++++++++++++++++++++++-
18 diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
19 index e104650..aaa58ba 100644
20 --- a/arch/arm/mach-davinci/board-dm355-leopard.c
21 +++ b/arch/arm/mach-davinci/board-dm355-leopard.c
22 @@ -20,6 +20,8 @@
23 #include <linux/io.h>
24 #include <linux/gpio.h>
25 #include <linux/clk.h>
26 +#include <media/v4l2-int-device.h>
27 +#include <media/tvp514x.h>
28 #include <linux/spi/spi.h>
29 #include <linux/spi/eeprom.h>
31 @@ -134,12 +136,58 @@ static void dm355leopard_mmcsd_gpios(unsigned gpio)
32 dm355leopard_mmc_gpios = gpio;
33 }
35 +#define TVP5146_I2C_ADDR 0x5D
36 +static struct v4l2_ifparm tvp5146_ifparm = {
37 + .if_type = V4L2_IF_TYPE_BT656,
38 + .u = {
39 + .bt656 = {
40 + .frame_start_on_rising_vs = 1,
41 + .bt_sync_correct = 0,
42 + .swap = 0,
43 + .latch_clk_inv = 0,
44 + .nobt_hs_inv = 0, /* active high */
45 + .nobt_vs_inv = 0, /* active high */
46 + .mode = V4L2_IF_TYPE_BT656_MODE_BT_8BIT,
47 + .clock_min = TVP514X_XCLK_BT656,
48 + .clock_max = TVP514X_XCLK_BT656,
49 + },
50 + },
51 +};
52 +
53 +/**
54 + * @brief tvp5146_g_ifparm - Returns the TVP5146 decoder interface parameters
55 + *
56 + * @param p - pointer to v4l2_ifparm structure
57 + * @return result of operation - 0 is success
58 + */
59 +static int tvp5146_g_ifparm(struct v4l2_ifparm *p)
60 +{
61 + if (p == NULL)
62 + return -EINVAL;
63 +
64 + *p = tvp5146_ifparm;
65 + return 0;
66 +}
67 +
68 +#define TVP5146_NUM_INPUTS ARRAY_SIZE(tvp5146_input_list)
69 +
70 +static struct tvp514x_platform_data tvp5146_pdata = {
71 + .master = CAPTURE_DRV_NAME,
72 + .ifparm = tvp5146_g_ifparm,
73 + .hs_polarity = 1,
74 + .vs_polarity = 1
75 +};
76 +
77 static struct i2c_board_info dm355leopard_i2c_info[] = {
78 - { I2C_BOARD_INFO("dm355leopard_msp", 0x25),
79 + { I2C_BOARD_INFO("dm355leopard_msp", 0x25),
80 .platform_data = dm355leopard_mmcsd_gpios,
81 - /* plus irq */ },
82 + },
83 + {
84 + I2C_BOARD_INFO("tvp5146", TVP5146_I2C_ADDR),
85 + .platform_data = &tvp5146_pdata,
86 + },
87 + /* { plus irq }, */
88 /* { I2C_BOARD_INFO("tlv320aic3x", 0x1b), }, */
89 - /* { I2C_BOARD_INFO("tvp5146", 0x5d), }, */
90 };
92 static void __init leopard_init_i2c(void)
93 @@ -178,6 +226,41 @@ static struct platform_device dm355leopard_dm9000 = {
94 .num_resources = ARRAY_SIZE(dm355leopard_dm9000_rsrc),
95 };
97 +#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)
98 +
99 +static struct vpfe_capture_input vpfe_capture_inputs = {
100 + .num_inputs = VPFE_MAX_DEC_INPUTS,
101 + .current_input = 0,
102 + .inputs[0] = {
103 + .dec_name = TVP514X_MODULE_NAME,
104 + .input = {
105 + .index = 0,
106 + .name = "COMPOSITE",
107 + .type = V4L2_INPUT_TYPE_CAMERA,
108 + .std = TVP514X_STD_ALL,
109 + },
110 + .route = {
111 + .input = INPUT_CVBS_VI2B,
112 + .output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
113 + },
114 + .routing_supported = 1,
115 + },
116 + .inputs[1] = {
117 + .dec_name = TVP514X_MODULE_NAME,
118 + .input = {
119 + .index = 1,
120 + .name = "SVIDEO",
121 + .type = V4L2_INPUT_TYPE_CAMERA,
122 + .std = TVP514X_STD_ALL,
123 + },
124 + .route = {
125 + .input = INPUT_SVIDEO_VI2C_VI1C,
126 + .output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
127 + },
128 + .routing_supported = 1,
129 + },
130 +};
131 +
132 static struct platform_device *davinci_leopard_devices[] __initdata = {
133 &dm355leopard_dm9000,
134 &davinci_nand_device,
135 @@ -190,6 +273,8 @@ static struct davinci_uart_config uart_config __initdata = {
136 static void __init dm355_leopard_map_io(void)
137 {
138 davinci_map_common_io();
139 + /* setup input configuration for VPFE input devices */
140 + setup_vpfe_input_config(&vpfe_capture_inputs);
141 dm355_init();
142 }