1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /********************************************************************************
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Copyright (C) 2016 NEXTCHIP Inc. All rights reserved.
5*4882a593Smuzhiyun * Module : Jaguar1 Device Driver
6*4882a593Smuzhiyun * Description : MIPI
7*4882a593Smuzhiyun * Author :
8*4882a593Smuzhiyun * Date :
9*4882a593Smuzhiyun * Version : Version 1.0
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun ********************************************************************************
12*4882a593Smuzhiyun * History :
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun *
15*4882a593Smuzhiyun ********************************************************************************/
16*4882a593Smuzhiyun #include <linux/string.h>
17*4882a593Smuzhiyun #include <linux/delay.h>
18*4882a593Smuzhiyun #include "jaguar1_common.h"
19*4882a593Smuzhiyun #include "jaguar1_mipi.h"
20*4882a593Smuzhiyun #include "jaguar1_mipi_table.h"
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun static unsigned char mipi_dtype, arb_dtype, en_param;
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun /*-------------------------------------------------------------------
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun Arbiter function
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun -------------------------------------------------------------------*/
30*4882a593Smuzhiyun
arb_scale_set(video_input_init * dev_ch_info,unsigned char val)31*4882a593Smuzhiyun static void arb_scale_set(video_input_init *dev_ch_info, unsigned char val)
32*4882a593Smuzhiyun {
33*4882a593Smuzhiyun int devnum = dev_ch_info->ch / 4;
34*4882a593Smuzhiyun unsigned char arb_scale = 0;
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0xFF, 0x20);
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun arb_scale = gpio_i2c_read(jaguar1_i2c_addr[devnum], 0x01);
39*4882a593Smuzhiyun arb_scale &= ~(0x3<<(dev_ch_info->ch*2));
40*4882a593Smuzhiyun arb_scale |= val<<(dev_ch_info->ch*2);
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0x01, arb_scale);
43*4882a593Smuzhiyun }
44*4882a593Smuzhiyun
arb_enable(int dev_num)45*4882a593Smuzhiyun void arb_enable(int dev_num)
46*4882a593Smuzhiyun {
47*4882a593Smuzhiyun if((dev_num < 0) || (dev_num > 3))
48*4882a593Smuzhiyun {
49*4882a593Smuzhiyun printk("[DRV] %s input channel Error (%d)\n",__func__, dev_num);
50*4882a593Smuzhiyun return;
51*4882a593Smuzhiyun }
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xff, 0x20);
54*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x00, en_param);
55*4882a593Smuzhiyun printk("VDEC_ARBITER_INIT done 0x%X\n", en_param);
56*4882a593Smuzhiyun }
57*4882a593Smuzhiyun
arb_disable(int dev_num)58*4882a593Smuzhiyun void arb_disable(int dev_num)
59*4882a593Smuzhiyun {
60*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xff, 0x20);
61*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x00, 0x00);
62*4882a593Smuzhiyun }
63*4882a593Smuzhiyun
arb_init(int dev_num)64*4882a593Smuzhiyun void arb_init(int dev_num)
65*4882a593Smuzhiyun {
66*4882a593Smuzhiyun arb_disable(dev_num);
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xff, 0x20);
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun // ARB RESET High
71*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0x01);
72*4882a593Smuzhiyun // MIPI Video type Init
73*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x0F, arb_dtype);
74*4882a593Smuzhiyun // ARB 32Bit Mode
75*4882a593Smuzhiyun if(2 == jaguar1_lane)
76*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x0D, 0x00);
77*4882a593Smuzhiyun else
78*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x0D, 0x01);
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun // ARB RESET Low
81*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0x00);
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun arb_enable(dev_num);
84*4882a593Smuzhiyun }
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun /*-------------------------------------------------------------------
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun MIPI function
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun -------------------------------------------------------------------*/
92*4882a593Smuzhiyun
mipi_frame_opt_set(video_input_init * dev_ch_info,unsigned char val)93*4882a593Smuzhiyun static void mipi_frame_opt_set(video_input_init *dev_ch_info, unsigned char val)
94*4882a593Smuzhiyun {
95*4882a593Smuzhiyun int devnum = dev_ch_info->ch / 4;
96*4882a593Smuzhiyun unsigned char mipi_frame_opt;
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0xFF, 0x21);
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun switch(dev_ch_info->ch)
101*4882a593Smuzhiyun {
102*4882a593Smuzhiyun case 0 :
103*4882a593Smuzhiyun mipi_frame_opt = gpio_i2c_read(jaguar1_i2c_addr[devnum], 0x3E);
104*4882a593Smuzhiyun mipi_frame_opt = (mipi_frame_opt & 0xF0) | val;
105*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0x3E, mipi_frame_opt);
106*4882a593Smuzhiyun break;
107*4882a593Smuzhiyun case 1 :
108*4882a593Smuzhiyun mipi_frame_opt = gpio_i2c_read(jaguar1_i2c_addr[devnum], 0x3E);
109*4882a593Smuzhiyun mipi_frame_opt = (mipi_frame_opt & 0x0F) | val;
110*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0x3E, mipi_frame_opt);
111*4882a593Smuzhiyun break;
112*4882a593Smuzhiyun case 2 :
113*4882a593Smuzhiyun mipi_frame_opt = gpio_i2c_read(jaguar1_i2c_addr[devnum], 0x3F);
114*4882a593Smuzhiyun mipi_frame_opt = (mipi_frame_opt & 0xF0) | val;
115*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0x3F, mipi_frame_opt);
116*4882a593Smuzhiyun break;
117*4882a593Smuzhiyun case 3 :
118*4882a593Smuzhiyun mipi_frame_opt = gpio_i2c_read(jaguar1_i2c_addr[devnum], 0x3F);
119*4882a593Smuzhiyun mipi_frame_opt = (mipi_frame_opt & 0x0F) | val;
120*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[devnum], 0x3F, mipi_frame_opt);
121*4882a593Smuzhiyun break;
122*4882a593Smuzhiyun }
123*4882a593Smuzhiyun }
124*4882a593Smuzhiyun
mipi_video_format_set(video_input_init * dev_ch_info)125*4882a593Smuzhiyun void mipi_video_format_set(video_input_init *dev_ch_info)
126*4882a593Smuzhiyun {
127*4882a593Smuzhiyun mipi_vdfmt_set_s mipi_vd_fmt = (mipi_vdfmt_set_s)decoder_mipi_fmtdef[dev_ch_info->format];
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun if(dev_ch_info->interface != DISABLE)
130*4882a593Smuzhiyun {
131*4882a593Smuzhiyun en_param |= 0x11<<(dev_ch_info->ch);
132*4882a593Smuzhiyun }
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun mipi_frame_opt_set(dev_ch_info, mipi_vd_fmt.mipi_frame_opt);
135*4882a593Smuzhiyun arb_scale_set(dev_ch_info, mipi_vd_fmt.arb_scale);
136*4882a593Smuzhiyun }
137*4882a593Smuzhiyun
mipi_datatype_set(unsigned char data_type)138*4882a593Smuzhiyun int mipi_datatype_set(unsigned char data_type)
139*4882a593Smuzhiyun {
140*4882a593Smuzhiyun int ret = 0;
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun switch(data_type)
143*4882a593Smuzhiyun {
144*4882a593Smuzhiyun case VD_DATA_TYPE_YUV422 :
145*4882a593Smuzhiyun mipi_dtype = 0x1E;
146*4882a593Smuzhiyun arb_dtype = 0x00;
147*4882a593Smuzhiyun break;
148*4882a593Smuzhiyun case VD_DATA_TYPE_YUV420 :
149*4882a593Smuzhiyun mipi_dtype = 0x18;
150*4882a593Smuzhiyun arb_dtype = 0xAA;
151*4882a593Smuzhiyun break;
152*4882a593Smuzhiyun case VD_DATA_TYPE_LEGACY420 :
153*4882a593Smuzhiyun mipi_dtype = 0x1A;
154*4882a593Smuzhiyun arb_dtype = 0x55;
155*4882a593Smuzhiyun break;
156*4882a593Smuzhiyun default :
157*4882a593Smuzhiyun printk("[DRV]%s : invalid data type [0x%X]\n", __func__, data_type);
158*4882a593Smuzhiyun ret = -1;
159*4882a593Smuzhiyun break;
160*4882a593Smuzhiyun }
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun return ret;
163*4882a593Smuzhiyun }
164*4882a593Smuzhiyun
mipi_tx_init(int dev_num)165*4882a593Smuzhiyun void mipi_tx_init(int dev_num)
166*4882a593Smuzhiyun {
167*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xFF, 0x21);
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun pr_info("%s: mclk: %d\n", __func__, jaguar1_mclk);
170*4882a593Smuzhiyun switch(jaguar1_mclk)
171*4882a593Smuzhiyun {
172*4882a593Smuzhiyun case 3:
173*4882a593Smuzhiyun printk("[DRV] SET_MIPI_1242MHZ\n");
174*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0xB4);
175*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x41, 0x00);
176*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x42, 0x03);
177*4882a593Smuzhiyun break;
178*4882a593Smuzhiyun // case 3:
179*4882a593Smuzhiyun // printk("[DRV]_MIPI_252MHZ_TEST_\n");
180*4882a593Smuzhiyun // gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0xDC);
181*4882a593Smuzhiyun // gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x41, 0x20);
182*4882a593Smuzhiyun // gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x42, 0x05);
183*4882a593Smuzhiyun // break;
184*4882a593Smuzhiyun case 2:
185*4882a593Smuzhiyun printk("[DRV] SET_MIPI_378MHZ\n");
186*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0xDC);
187*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x41, 0x20);
188*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x42, 0x03);
189*4882a593Smuzhiyun break;
190*4882a593Smuzhiyun case 1:
191*4882a593Smuzhiyun printk("[DRV] SET_MIPI_594MHZ\n");
192*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0xCC);
193*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x41, 0x10);
194*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x42, 0x03);
195*4882a593Smuzhiyun break;
196*4882a593Smuzhiyun default:
197*4882a593Smuzhiyun printk("[DRV] SET_MIPI_756MHZ\n");
198*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x40, 0xDC);
199*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x41, 0x10);
200*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x42, 0x03);
201*4882a593Smuzhiyun break;
202*4882a593Smuzhiyun }
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x43, 0x43);
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun switch(jaguar1_mclk)
207*4882a593Smuzhiyun {
208*4882a593Smuzhiyun case 3: // 1242MHz MIPI_CLK for FHD*4ch
209*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x11, 0x08);
210*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x10, 0x13);
211*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x12, 0x0B);
212*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x13, 0x12);
213*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x17, 0x02);
214*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x18, 0x12);
215*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x15, 0x07);
216*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x14, 0x2D);
217*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x16, 0x0B);
218*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x19, 0x09);
219*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1A, 0x15);
220*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1B, 0x11);
221*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1C, 0x0E);
222*4882a593Smuzhiyun break;
223*4882a593Smuzhiyun case 2: // 378MHz MIPI_CLK for low-clock test
224*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x11, 0x03);
225*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x10, 0x07);
226*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x12, 0x04);
227*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x13, 0x06);
228*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x17, 0x01);
229*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x18, 0x0B);
230*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x15, 0x02);
231*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x14, 0x0E);
232*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x16, 0x04);
233*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x19, 0x03);
234*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1A, 0x07);
235*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1B, 0x06);
236*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1C, 0x05);
237*4882a593Smuzhiyun break;
238*4882a593Smuzhiyun case 1: // 594MHz MIPI_CLK for HD*4ch
239*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x11, 0x04);
240*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x10, 0x0A);
241*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x12, 0x06);
242*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x13, 0x09);
243*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x17, 0x01);
244*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x18, 0x0D);
245*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x15, 0x04);
246*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x14, 0x16);
247*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x16, 0x05);
248*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x19, 0x05);
249*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1A, 0x0A);
250*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1B, 0x08);
251*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1C, 0x07);
252*4882a593Smuzhiyun break;
253*4882a593Smuzhiyun default: // 756MHz MIPI_CLK
254*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x11, 0x05);
255*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x10, 0x0C);
256*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x12, 0x07);
257*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x13, 0x0B);
258*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x17, 0x01);
259*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x18, 0x0E);
260*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x15, 0x04);
261*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x14, 0x1C);
262*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x16, 0x07);
263*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x19, 0x06);
264*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1A, 0x0D);
265*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1B, 0x0B);
266*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x1C, 0x09);
267*4882a593Smuzhiyun break;
268*4882a593Smuzhiyun }
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun // MIPI setting
271*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x44, 0x00);
272*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x49, 0xF3);
273*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x49, 0xF0);
274*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x44, 0x02);
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x08, 0x40);
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun // MIPI_TX_FRAME_CNT_EN
279*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x0F, 0x01);
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x38, mipi_dtype);
282*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x39, mipi_dtype);
283*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x3A, mipi_dtype);
284*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x3B, mipi_dtype);
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun // MIPI Enable
287*4882a593Smuzhiyun if(2 == jaguar1_lane)
288*4882a593Smuzhiyun {
289*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x07, 0x07); //two lanes test
290*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x2D, 0x00);
291*4882a593Smuzhiyun printk("NOTE >>> 2 lanes mode enabled\n");
292*4882a593Smuzhiyun }
293*4882a593Smuzhiyun else
294*4882a593Smuzhiyun {
295*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x07, 0x0F);
296*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0x2D, 0x01);
297*4882a593Smuzhiyun }
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun printk("[DRV]VDEC_MIPI_TX_INIT done\n");
300*4882a593Smuzhiyun }
301*4882a593Smuzhiyun
disable_parallel(int dev_num)302*4882a593Smuzhiyun void disable_parallel(int dev_num)
303*4882a593Smuzhiyun {
304*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xFF, 0x01);
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xC8, 0x00);
307*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xC9, 0x00);
308*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCA, 0x00);
309*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCB, 0x00);
310*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCC, 0x00);
311*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCD, 0x00);
312*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCE, 0x00);
313*4882a593Smuzhiyun gpio_i2c_write(jaguar1_i2c_addr[dev_num], 0xCF, 0x00);
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun printk("[DRV]Parallel block Disable\n");
316*4882a593Smuzhiyun }
317*4882a593Smuzhiyun
318