Hi Igor and All,
Thanks for your reply. Well I just put the above code to get the DTS notation cleared. I think I have figured out the pinctrl function and how to make an entry for ADV7343 in dts as an i2c node. So the modifications I made (in bold) in my dts (imx6q-sabrelite.dts) file and dtsi file (imx6qdl-sabrelite.dtsi which the dts includes) look like this :
IN IMX6QDL-SABRELITE.DTSI ----->
pinctrl_i2c3_adv7180: i2c3-adv7180grp {
/* parallel camera on CSI1, pins differ for iMX6Q/iMX6DL */
};
pinctrl_i2c3_adv7343: i2c3-adv7343grp {
};
aliases {
backlight_lcd = &backlight_lcd;
backlight_lvds = &backlight_lvds;
fb_hdmi = &fb_hdmi;
fb_lcd = &fb_lcd;
fb_lvds = &fb_lvds;
fb_adv7343 = &fb_adv7343;
lcd = &lcd;
ldb = &ldb;
mmc0 = &usdhc3;
mmc1 = &usdhc4;
mmc2 = &usdhc2;
mxcfb0 = &fb_hdmi;
mxcfb1 = &fb_lvds;
mxcfb2 = &fb_lcd;
mxcfb3 = &fb_adv7343;
pwm_lcd = &pwm1;
pwm_lvds = &pwm4;
t_lvds = &t_lvds;
};
fb_lcd: fb@2 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "lcd";
interface_pix_fmt = "RGB666";
default_bpp = <16>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
fb_adv7343: fb@3 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "adv7343";
interface_pix_fmt = "RGB24";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};
IN IMX6Q-SABRELITE.DTS ----->
&pinctrl_i2c3_adv7343 {
fsl,pins = <
MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x10
MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10
MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10
MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x10
MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10
MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10
MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10
MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10
MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10
MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10
MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10
MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10
MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10
MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10
MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10
MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10
MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10
MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10
MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10
MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10
MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10
MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10
MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10
MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10
MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10
MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10
MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10
>;
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
adv7343: adv7343@2D { //0x2D is I2C address of encoder
compatible = "adv,adv7343";
reg = <0x2D>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_adv7343>;
DOVDD-supply = <®_3p3v>; /* 3.3v */
AVDD-supply = <®_3p3v>; /* 3.3v */
DVDD-supply = <®_1p8v>; /* 1.8v */
PVDD-supply = <®_1p8v>; /* 1.8v */
ipu_id = <0>;
disp_id = <0>;
default_ifmt = "RGB24";
status = "okay";
};
};
&fb_adv7343 {
status = "okay";
};
This was written assuming that the Parallel RGB to encoder behaves in the same way as a display device (but i am not sure whether this binding is correct). Anyway I am still unable to get the output available. I installed the adv7343 driver as an external module in imx6 and the module is visible under lsmod. Before installing the driver I was also able to communicate to the encoder through raw IMX6 I2C data, so the i2c address seems to be correct. And when the driver module is loaded, the i2c bus gets busy and my assumption is the imx6 is trying to communicate with encoder through the driver. Another thing I am not certain is how to use the fbs (frame buffers I guess) and mxcfbs with this encoder. Any hints on this ?