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.

[参考译文] Linux/AM5728:VIP 输入数据

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607908/linux-am5728-vip-input-data

器件型号:AM5728

工具/软件:Linux

您好!

我们将 adv7842连接到了 evm5728上的 VIP。 接收全高清图片、可使用 dmabuftest 工具显示、但颜色看起来很奇怪。 Adv7842以16位 ITU-656 SDR 模式输出数据。 设备树具有总线宽度=<16>配置。 adv7842上的色空间输出为 YPbPr。

问题:

1.通过16位总线与 VIP 的连接是否适用于 media_BUS_FMT_UYVY8_2X8? 或者、这种格式是否需要具有两个字节采样顺序的8位总线?

2. VIP 是仅在一个时钟边沿采样还是也支持 DDR 模式?

3.颜色错误会导致什么问题?

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知视频专家。 反馈将发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    解决了颜色问题。 CR/CB 数据被交换、Y 和 CR/CB 的引脚也被交换。 但图像的左侧和上方有一个黑色区域。 我们刚刚连接了数据使能信号、但这没有改变任何东西。 我们是否必须在 Linux 中启用数据使能信号? 或者是否有其他方法可以消除黑色区域?


    设备树:

    i2c5{(&I)
    状态="正常";
    时钟频率=<400000>;

    mt9t11x@3C{
    兼容="Aptina、mt9t111";
    reg =<0x33>;

    RESET-GPIO =<&GPIO4 17 GPIO_ACTIVE_LOW>;
    oscen-GPIO =<&GPIO5 10 GPIO_ACTIVE_HIGH_>;
    POWERDOWN-GPIO =<&GPIO5 11 GPIO_ACTIVE_LOW>;
    bufen-GPIO =<&GPIO5 12 GPIO_ACTIVE_LOW>;
    卡门-GPIO =<&GPIO6 11 GPIO_ACTIVE_LOW>;

    端口{
    CAM:端点{
    远程端点=<&V vin3a>;
    HSYNC-ACTIVE =<1>;
    vsync-active =<1>;
    pclk-sample =<0>;
    总线宽度=<16>;
    };
    };
    };
    };


    虚拟子设备驱动程序仅报告固定格式。 器件在启动后立即开始流式传输。


    静态空 mt9t11x_get_default_format (struct mt9t11x_priv* priv,
    struct v4l2_MBUS_framefmt *mf)

    struct v4l2_rect rect ={
    .width = 1920、
    .height = 1080、
    .left =(MAX_WIDTH - 1920)/ 2、
    .top =(MAX_HEIGHT - 1080)/2、
    };

    PRIV->frame = rect;

    /*需要修复*/
    mF->width =矩形宽度;
    mF->height =矩形高度;
    mF->colorspace = V4L2_colorspace_BT2020;
    mF->code = media_BUS_FMT_UYVY8_2X8;

    mF->field = V4L2_field_none;
    mF->YCbCr_enc = V4L2_YCbCr_ENC_BT2020;



    静态 int mt9t11x_get_fmt (struct v4l2_subdev * sd、
    struct v4l2_subdev_pad_config *cfg、
    struct v4l2_subdev_format *命令)

    struct mt9t11x_privt *priv=sd_to_mt9t11x (sd);
    struct v4l2_MBUS_framefmt *mf =&fmt->format;

    mt9t11x_get_default_format (priv, mf);

    返回0;




    静态 int mt9t11x_set_fmt (struct v4l2_subdev * sd、
    struct v4l2_subdev_pad_config *cfg、
    struct v4l2_subdev_format *命令)

    struct mt9t11x_privt *priv=sd_to_mt9t11x (sd);
    unsigned int index = priv->num_formats;
    struct v4l2_MBUS_framefmt *mf =&fmt->format;
    int ret = 0;
    struct v4l2_rect rect;

    mt9t11x_get_default_format (priv, mf);

    返回0;




    静态 int mt9t11x_enum_MBUS_code (struct v4l2_subdev * sd、
    struct v4l2_subdev_pad_config *cfg、
    struct v4l2_subdev_MBUS_code_enum *代码)

    struct mt9t11x_privt *priv=sd_to_mt9t11x (sd);

    if (code->index >= 1)
    return -EINVAL;

    code->code = media_BUS_FMT_UYVY8_2X8;

    返回0;





    静态 int mt9t11x_enum_frame_sizes (struct v4l2_subdev * sd、
    struct v4l2_subdev_pad_config *cfg、
    struct v4l2_subdev_frame_size_enum * FSE)

    struct mt9t11x_privt *priv=sd_to_mt9t11x (sd);
    int i = priv->num_formats;

    if (FSE->index >=1)
    return -EINVAL;

    fse->code = media_BUS_FMT_UYVY8_2X8;

    fse->min_width = 1920;
    fse->max_width = fse->min_width;
    fse->max_height = 1080;
    fse->min_height = fse->max_height;

    返回0;





    静态 int mt9t11x_s_stream (struct v4l2_subdev * sd、int enable)


    返回0;