This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA750: ISL79988 video decoder couldn't work on J6 (6AM.1.3 SDK , RVC Kernel)

Part Number: DRA750
Other Parts Discussed in Thread: TVP5158

Hi ,

This is customer board . ISL79988 video decoder couldn't work on J6 . I have checked that data ( D0~D7 ) have been output by 79988 ,but there are no IRQ on J6 side .

ISL79988 is connected to VIN1A port ,I find nothing error about VIP1 / Parser0 / VPDMA in the log . 

Here is the result of Checking D0 ~D7 Signal .

VIN1A_data=( CLK0:0x4a0034dc:GPIO2_30:62 D0:0x4a0034f4:GPIO3_4:68 D1:0x4a0034f8:GPIO3_5:69 D2:0x4a0034fc:GPIO3_6:70 D3:0x4a003500:GPIO3_7:71 D4:0x4a003504:GPIO3_8:72 D5:0x4a003508:GPIO3_9:73 D6:0x4a00350c:GPIO3_10:74 D7:0x4a003510:GPIO3_11:75)

Probing VIN1A signals
CLK0  D0  D1  D2  D3  D4  D5  D6  D7
1 0 1 0 1 0 1 0 1
1 0 1 1 0 1 0 0 1
1 0 1 1 1 1 0 1 1
1 0 0 1 1 0 1 0 1
0 0 0 0 0 0 0 1 1
1 1 0 0 0 0 1 1 1
1 1 1 0 0 0 1 0 1
0 1 1 0 0 1 1 0 1
0 1 1 0 0 1 0 1 1

And read the video source size from 0x48975530 , it is zero all .

|----------------------------|
| Address (hex) | Data (hex) |
|----------------------------|
| 0x48975500    | 0x00000002 |
| 0x48975504    | 0x00000503 |
| 0x48975508    | 0x00000000 |
| 0x4897550C    | 0x00000000 |
| 0x48975510    | 0x00000000 |
| 0x48975514    | 0x003FFE4F |
| 0x48975518    | 0x00000000 |
| 0x4897551C    | 0x00000000 |
| 0x48975520    | 0xFFFFFFFF |
| 0x48975524    | 0xFFFFFFFF |
| 0x48975528    | 0xFFFFFFFF |
| 0x4897552C    | 0xFFFFFFFF |
| 0x48975530    | 0x00000000 |
| 0x48975534    | 0x00000000 |
| 0x48975538    | 0x00000000 |
| 0x4897553C    | 0x00000000 |
| 0x48975540    | 0x00000000 |
| 0x48975544    | 0x00000000 |
| 0x48975548    | 0x00000000 |

Here is DTS configuration :

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

        isl79988: isl79988@44 {
                compatible= "isl,isl79988";
                reg = <0x44>;

                rst_gpio = <&gpio3 16 GPIO_ACTIVE_HIGH>;
                port {
                        tvp_decoder: endpoint@0 {
                                buswidth = <8>;
                                remote-endpoint = <&vin1a>;
                                pclk-sample = <0>;
                                channels = <0 2 4 6>;
                        };
                };
        };

};

&vip1 {
        status = "okay";
};

&vin1a {
        status = "okay";
        endpoint@0 {
                slave-mode;
                remote-endpoint = <&tvp_decoder>;
        };
};

Here is the log :

[   36.533744] vip1-s0: vip_open
[   36.536736] [baker] enter tvp5158_get_fmt , 509
[   36.541286] [baker] enter tvp5158_get_video_std , 748
[   36.546750] [baker] i2cread status=0x68
[   36.550690] isl79988 2-0044: NTSC video detected
[   36.555432] [baker] enter tvp5158_get_video_std , 785
[   36.560516] [baker] enter tvp5158_get_fmt , 538
[   36.565117] vip1-s0: vip_init_port: g_mbus_fmt subdev mbus_code: 2006 fourcc:NV12 size: 720x240
[   36.574176] vip1-s0: vip_enable_parser: on=0,port->port_id=0
[   36.579871] vip1-s0: vip_enable_parser: base=0xFA975500 ,offset=0x4 ,config0=0xC0
[   36.607430] vip1-s0: vip_enable_parser: read config0=0xC0
[   36.612866] vip1-s0: calc_format_size: fourcc:NV12 size: 720x240 bpl:720 img_size:259200
[   36.621012] vip1-s0: init_stream fourcc:NV12 size: 720x240 bpl:720 img_size:259200
[   36.628638] vip1-s0: init_stream vpdma data type: 0x02
[   36.633819] vip1-s0: vip_init_stream: stream instance 0x00000000ee5bc000
[   36.640563] vip1-s0: get 3 buffer(s) of size 259200 each.
[   36.647520] vip1-s0: vip_start_streaming:
[   36.651551] vip1-s0: vip_set_slice_path:
[   36.655692] vip1-s0: vip_set_slice_path: DATA_PATH_SELECT(0000010C): 60008600
[   36.662970] vip1-s0: vip_set_slice_path:
[   36.666942] vip1-s0: vip_set_slice_path: DATA_PATH_SELECT(0000010C): 90008600
[   36.674452] vip1-s0: vip_set_slice_path:
[   36.678393] vip1-s0: vip_set_slice_path: DATA_PATH_SELECT(0000010C): 50008600
[   36.685921] vip1-s0: [baker] vip_setup_parser ---
[   36.690734] vip1-s0: [baker] vip_setup_parser -bus_type =V4L2_MBUS_BT656
[   36.697590] vip1-s0: [baker] vip_setup_parser -config0=0x4c3 ,sync-type=3
[   36.704511] [baker] enter tvp5158_s_stream , 390,enable=1
[   36.716788] vip1-s0: vip_load_vpdma_list_fifo: start_dma vb2 buf idx:0
[   36.723343] vip1-s0: start_dma: vb2 buf idx:0, dma_addr:0xde4c0000
[   36.730694] vip1-s0: vip_load_vpdma_list_fifo: start_dma vb2 buf idx:1
[   36.737305] vip1-s0: start_dma: vb2 buf idx:1, dma_addr:0xde5c0000
[   36.744641] vip1-s0: added next buffer
[   36.748419] vip1-s0: start_dma: vb2 buf idx:2, dma_addr:0xde600000
[   36.754651] vip1-s0: vip_enable_parser: on=1,port->port_id=0
[   36.760335] vip1-s0: vip_enable_parser: base=0xFA975500 ,offset=0x4 ,config0=0x503
[   36.787965] vip1-s0: vip_enable_parser: read config0=0x503
[   36.793472] vip1-s0: vip_start_streaming: end

  • Hi, ,

    Video expert is notified and will comment directly here.

    Regards,
    Mariya
  • Hi Baker,

    If you are using a different video decoder, its preferred to write a separate driver for that.
    You can use tvp5158 as reference only.

    The device tree mentions that the number of channels driven by the decoder are 0, 2, 4, 6
    This is 4 channels multiplexed using line multilplexing.
    This will configure vin1a parser for 4channel line muxed data. So the failure is expected.

    Most likely, your decoder might not be generating data in line muxed format.
    Please update the DT node to reflect the correct channel. (Most likely 0 only for single channel)


    Nikhil D
  • Hi Nikhil ,

    79988 supports 4 channels multiplexed  ,now 79988 initial is for 4 channels .

    As you mentioned ,I have ever try single channel initial for 79988 ,and update DT node to channel 0 ,  got the same result .There is still no IRQ .

    root@jacinto6evm:/ # cat /dev/video1   ( just to open video device ,and check if there is IRQ on J6 side)

    root@jacinto6evm:/ # cat /proc/interrupts

    366:          0          0      CBAR 354 Level     vpe
    367:          0          0      CBAR 351 Level     vip1-s0
    368:          0          0      CBAR 392 Level     vip1-s1

    Thanks .

    // Baker

  • Hi Nikhil ,

    After forced sync_type = EMBEDDED_SYNC_4X_MULTIPLEXED_YUV422; 

    And configured 79988 output as Byte-Interleaved rather than Line-Interleaved .

    It works OK now .

  • Thank you, , for sharing the result for future reference.

    Can you marked the thread as Verified to close automatically?

    Regards,
    Mariya