海思3559 2lane*8 模式

连接方式是fpga 输出5组2 data lane+1lane clk的lvds信号给3559,3559设置为2lane*8 的模式进行数据接收。
使用Hi3559A V100R001C02SPC020 版本的sdk包进行开发时,发现数据接收不到,显示接收不到同步头,打印信息如下:

cat /proc/umap/hi_mipi 

Module: [MIPI], Build Time: [Dec 21 2018, 17:12:09]

-----MIPI LANE DIVIDE MODE---------------------------------------------------------------------------------------------
  MODE         LANE DIVIDE
    11     2+2+2+2+2+2+2+2

-----MIPI DEV ATTR-----------------------------------------------------------------------------------------------------
   Devno  WorkMode  DataRate            DataType   WDRMode                  LinkId    ImgX    ImgY    ImgW    ImgH
       0      LVDS        X1               RAW12      None                       0       0       0    3840    2160

-----MIPI LANE INFO-----------------------------------------------------------------------------------------------------
   Devno   LaneCnt                  LaneID
       0         2         0,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1

-----MIPI LINK INFO------------------------------------------------------
 LinkIdx LaneCount  LaneId    PhyData0    PhyData1  AlignedData0  AlignedData1   ValidLane
       0         2    0, 2         0x0         0x0           0x0           0x0     Invalid
-----LVDS DETECT INFO----------------------------------------------------
 Devno VC   width  height
     0  0       0       0
     0  1       0       0
     0  2       0       0
     0  3       0       0
-----LVDS LANE DETECT INFO----------------------------------------------------
 Devno  Lane   width  height
     0     0       1       0
     0     2       1       0

之后查找原因使用4lane*4模式,也是只用2lane进行数据传输可以接收到数据。开始怀疑是mipi rx驱动部分有些问题,于是使用Hi3559A V100R001C02SPC010这个版本的mipi rx部分的驱动替换掉原来的驱动打印信息如下:

 cat /proc/umap/hi_mipi 

Module: [MIPI], Build Time: [Jul 12 2018, 21:38:02]

-----MIPI LANE DIVIDE MODE---------------------------------------------------------------------------------------------
  MODE         LANE DIVIDE
    11     2+2+2+2+2+2+2+2

-----MIPI DEV ATTR-----------------------------------------------------------------------------------------------------
   Devno  WorkMode  DataRate            DataType   WDRMode                  LinkId    ImgX    ImgY    ImgW    ImgH
       0      LVDS        X1               RAW12      None                       0       0       0    3840    2160

-----MIPI LANE INFO-----------------------------------------------------------------------------------------------------
   Devno   LaneCnt                  LaneID
       0         2         0,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1

-----MIPI LINK INFO------------------------------------------------------
 LinkIdx LaneCount  LaneId    PhyData0    PhyData1  AlignedData0  AlignedData1   ValidLane
       0         2    0, 2        0x29        0x29          0x94          0x94       0,  2
-----LVDS DETECT INFO----------------------------------------------------
 Devno VC   width  height
     0  0    3840    2160
     0  1       0       0
     0  2       0       0
     0  3       0       0
-----LVDS LANE DETECT INFO----------------------------------------------------
 Devno  Lane   width  height
     0     0    1920    2161
     0     2    1920    2161

可以发现数据接收已经没有问题了。于是对比了一下海思这个两个版本的mipi rx驱动发现有个地方进行了更改:Hi3559AV100_SDK_V2.0.2.0\package\drv\interdrv\mipi\mipi_hal.c

int get_index_for_lane(short lane)
{
    if((8 == lane)||(9 == lane)||(12 == lane)||(13 == lane))
    {
        return 0;
    }
    if((10 == lane)||(11 == lane)||(14 == lane)||(15 == lane))
    {
        return 1;
    }
    return -1;
}

int mipi_drv_get_lane_index_for_dev(lane_divide_mode_t lane_divide_mode, combo_dev_t devno, short lane)
{
#if 0
    if(0 == (devno % 2))
    {
        return ( lane - (2 * devno));
    }
    else
    {
        if (lane == ((2 * devno) - 1))
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }
#endif
    int lane_index =  -1;
    switch(lane_divide_mode)
    {
        case LANE_DIVIDE_MODE_0:
            if (0 == devno)
            {
                if (0 <= lane && 15 >= lane)
                {
                    lane_index =  lane%4;
                }
            }

            break;

更改的版本说明文档《Hi3559A╱C V100R001C02SPC020 版本描述文件.doc》里面有说明这部分更改的原因在这里插入图片描述
但更改后会导致设置的模式里面只要是2lane data接收数据的那个通道会出问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值