[ADV7393] DRM Encoder Slave or DRM Bridge

Vikas Patil vikasmpatil at gmail.com
Tue Sep 13 13:13:45 UTC 2016


Thanks Tomi for quick comment.

I am thinking to base adv7393 driver on
"drivers\gpu\drm\omapdrm\displays\encoder-tc358768.c" as I don't think
any similar to adv7393 chip driver available. Could you please comment
if this will help to get adv chip running?

I tried to add the device tree config but after adding device
configuration related to adv7393, my first display stopped working and
whenever I run kmscube or modetest it fails.

I have following configuration related to displays. Could anyone tell
me if I am doing anything wrong in DTS configuration? What could be
going wrong when I enable adv7393 related config so display 1 stops
working?

I am not sure if I have to use "composite-video-connector" driver.
Could you please suggest?

display1:  VOUT3 --> LCD display
display2: VOUT1 --> ADV7393 --> CVBS OUT --> DISPLAY

dts configs:


 aliases {
                display0 = &lcd;
                display1 = &cvbs_out;
        };


        lcd: display {

                compatible = "omapdss,panel-dpi";

                label = "lcd";

                panel-timing {
                        clock-frequency = <27000000>;
                        hactive = <800>;
                        vactive = <480>;

                        hfront-porch = <15>;
                        hback-porch = <7>;
                        hsync-len = <7>;

                        vfront-porch = <40>;
                        vback-porch = <4>;
                        vsync-len = <3>;

                        hsync-active = <1>;
                        vsync-active = <1>;
                        de-active = <0>;
                        pixelclk-active = <0>;
                };

                 port at lcd3 {
                        lcd_in: endpoint {
                                remote-endpoint = <&dpi_out3>;
                        };
                };

        };

 cvbs_out: connector {
                compatible = "omapdss,composite-video-connector";
                label = "cvbs_out";

                port {
                 cvbs_con: endpoint {
                        remote-endpoint = <&adv7393_out>;
                        };
                };
        };


&i2c2 {
       status = "okay";
       clock-frequency = <400000>;

        adv7393 at 54 {
                compatible = "adi,adv7393";
                reg = <0x54>;

                pinctrl-names = "i2c", "ddc";

                ddc-i2c-bus = <&i2c2>;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        port at 0 {
                                reg = <0>;

                                adv7393_in: endpoint at 0 {
                                        remote-endpoint = <&dpi_out>;
                                };
                        };

                        port at 1 {
                                reg = <1>;

                                adv7393_out: endpoint at 0 {
                                        remote-endpoint = <&cvbs_con>;
                                };
                        };
                };
        };
};

&dss {
        status = "okay";


        ports {
                #address-cells = <1>;
                #size-cells = <0>;
                status = "okay";

                port at lcd3 {
                        reg = <2>;

                        dpi_out3: endpoint {
                                remote-endpoint = <&lcd_in>;
                                data-lines = <24>;
                        };
                };

                port at lcd1 {
                        reg = <0>;

                        dpi_out: endpoint {
                                remote-endpoint = <&adv7393_in>;
                                data-lines = <24>;
                        };
                };
        };
};




root at dra7xx-evm:~# modetest
trying to open device 'i915'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
no device found

root at dra7xx-evm:~# kmscube
trying to load module omapdrm...failed.
trying to load module tilcdc...failed.
trying to load module i915...failed.
trying to load module radeon...failed.
trying to load module nouveau...failed.
trying to load module vmwgfx...failed.
trying to load module exynos...failed.
could not open drm device
failed to initialize DRM

Thanks & Regards,
Vikash

On Tue, Sep 13, 2016 at 2:27 PM, Tomi Valkeinen <tomi.valkeinen at ti.com> wrote:
> Hi,
>
> On 13/09/16 11:47, Vikas Patil wrote:
>> Dear All,
>>
>> I also see some of the encoder driver are at
>> "drivers/gpu/drm/omapdrm/displays/". I am confused about which driver
>> I should consider for reference for adv7393 driver development.
>>
>> Do I need to use
>> "drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c" too along
>> with adv7393 driver?
>
> At the moment omapdrm has its own encoder driver architecture, and you
> have to use those if you use omapdrm. So yes, for DRA74x, you should
> look at drivers/gpu/drm/omapdrm/displays/.
>
>  Tomi
>

Dear All,

I am trying to understand difference between "DRM Encoder slave
driver" and "DRM bridge driver" as I need to write one for ADV7393
Video Encoder Chip for the custom target
based on DRA74x having following display connection.

VOUT1 --> ADV7393 --> CVBS Out    (ADV7393 is on I2C)

Could anyone here explain what is the difference between two and which
I need to implement for ADV7393 and why?

I could see adv7393 driver available at "drivers/media/i2c/adv7393.c"
in linux 4.4.14. Can I use this driver? My feeling is I can not use
but why could not much understand.
or Do I need to base my driver something like
"drivers/gpu/drm/i2c/adv7511.c", however I also see it is converted to
bridge driver and moved to  "drivers/gpu/drm/bridge/adv7511.c" [1]

[1] http://www.spinics.net/lists/dri-devel/msg113244.html

Thanking you all in advance.

Thanks & Regards,
Vikash


More information about the dri-devel mailing list