【问题标题】:How to add an ADV7282-m to the linux kernel如何将 ADV7282-m 添加到 linux 内核
【发布时间】:2020-02-02 12:56:50
【问题描述】:

我正在尝试将 ADV7282-m 支持添加到使用 Yocto 构建的 linux 内核中。但是我似乎无法让它工作。我已经让模块加载和检测芯片。 驱动程序完全通过probe,但没有创建 v4l 设备。

我试图让它运行的主板是VAR-SOM-DUAL,带有 IMX6 CPU。我手动将 ADV7282-m(通过 google 找到的示例)添加到设备树中,但我不确定这是否正确,因为我对设备树不是很熟悉:

...

    v4l2_cap_0 {
        compatible = "fsl,imx6q-v4l2-capture";
        ipu_id = <0>;
        csi_id = <0>;
        mclk_source = <0>;
        mipi_camera = <1>;
        status = "okay";
    };

...

    adv7182: adv7182@20 {
        compatible = "adi,adv7282-m";
        pinctrl-names = "default";
        reg = <0x20>;

        clocks = <&clks 200>;
        clock-names = "csi_mclk";

        csi_id = <0>;
        cvbs = <1>;

        mipi_camera = <1>;
        mclk = <24000000>;
        mclk_source = <0>;

        ipu_id = <0>;

        status = "okay";
    };

...

&mipi_csi {
    status = "okay";
    ipu_id = <0>;
    csi_id = <0>;
    v_channel = <1>;
    lanes = <1>;
};

...

看板子的data sheet,ADV的物理连接方式好像没问题。

然后我在尝试为 ADV7282-m 启用内核模块时遇到了一些问题。当我启用Autoselect ancillary driver 时,该模块不包含在构建中。查看STA2X11_VIP 选择的文档,但我无法启用它,因为它依赖于VIRT_TO_BUS,这似乎已被弃用(或我的平台不支持)。

当我禁用Autoselect ancillary driver 时,我可以手动启用ADV7180 模块(它支持ADV7282-m)。但是编译内核后,在加载模块时它缺少 V4L 符号,我找不到 V4L 配置设置。

我最终所做的是将编译后的模块复制到我的本地系统,使用Autoselect ancillary driver 重新编译内核并复制ADV7180 驱动程序以加载它。

执行此操作时,模块会正确加载并打印:

adv7180 0-0020: chip found @ 0x20 (21a0000.i2c)

就是这样,没有创建 v4l 设备,也没有显示更多错误。为了检查,我在模块代码中添加了一些额外的打印,但它可以毫无问题地最终返回。

目前我一直在寻找解决方案,有人可以指出我正确的方向吗?或者甚至可能在我的配置中看到错误?

如果需要更多信息,请随时询问!

提前致谢。

【问题讨论】:

  • 这可能是一个愚蠢的问题,但是...您是否正确启用了内核的 v4l2 功能?
  • 我现在正确加载了驱动程序,我认为我的工作树很脏,或者当我在启用模块的情况下重新编译时复制了错误的内核 uImage。但是行为保持不变,没有创建 V4L 设备,也没有错误。

标签: linux-kernel linux-device-driver kernel-module device-tree


【解决方案1】:

我让 ADV 正常工作。显然我完全误解了 ADV7180 驱动程序。它只创建 V4L 子设备,然后桥驱动程序可以使用它来获取 /dev/video0 设备。我使用了 thisthread 中给出的驱动程序,并使它在我的 linux 内核版本中工作。完成此操作后,一切都按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2015-05-04
    相关资源
    最近更新 更多