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.

[参考译文] SN65DSI86:Linux 驱动程序在带有消息&quot 的桥接探测器期间抛出错误;无法解析调节器"

Guru**** 2756805 points

Other Parts Discussed in Thread: SN65DSI86

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1159046/sn65dsi86-linux-driver-throws-error-during-bridge-probe-with-message-failed-to-parse-regulators

器件型号:SN65DSI86

我在具有 SN65DSI86 MIPI-DSI 转 eDP 桥接器的载板上使用 Digi ConnectCore 8M Nano SoM。  

我使用了可在此处找到的参考绑定示例:

https://www.kernel.org/doc/Documentation/devicetree/bindings/display/bridge/ti%2Csn65dsi86.txt

我正在使用  ti-sn65dsi86 内核驱动程序进行编译、该驱动程序是主线 Linux 内核的一部分;具体而言、我使用的是包含此驱动程序的 Linux 内核的 Digi 特定分支、可在此处找到:

https://github.com/digi-embedded/linux/blob/v5.4/dey-3.2/maint/drivers/gpu/drm/bridge/ti-sn65dsi86.c

我遇到以下错误:

以下是器件树中桥接节点内部稳压器属性定义的一个片段:

		vcca-supply = <&reg_1v2_ext>;
		vcc-supply = <&reg_1v2_ext>;
		vccio-supply = <&reg_1v8_ext>;
		vpll-supply = <&reg_1v8_ext>;

以下是这些特定稳压器的稳压器定义片段( 一个简短注释: "稳压器" 包含我在片段中未提供的其他稳压器、因此1v2从@8开始、1v8从@2开始):

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

        ...
        
		reg_1v8_ext: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "1v8_ext";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			gpio = <&mca_gpio 14 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
		};
		
		...
		
		reg_1v2_ext: regulator@8 {
			compatible = "regulator-fixed";
			reg = <8>;
			regulator-name = "1v2_ext";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-always-on;
			regulator-boot-on;
		};
	};


请注意、1v2和1v8来自板载常开 LDO。

我想知道为什么我看到这个误差。 仔细看一下 ti-sn65dsi86.c   的行747上的驱动程序,我们会看到调用  ti_sn_bridge_parse_regulators()时抛出错误。

    ret = ti_sn_bridge_parse_regulators(pdata);
    if (ret) {
        DRM_ERROR("failed to parse regulators\n");
        return ret;
    }

通过查看此函数的功能,我们在  ti_sn_bridge_parse_regulators()内部得到了峰值:

static int ti_sn_bridge_parse_regulators(struct ti_sn_bridge *pdata)
{
    unsigned int i;
    const char * const ti_sn_bridge_supply_names[] = {
        "vcca", "vcc", "vccio", "vpll",
    };
    for (i = 0; i < SN_REGULATOR_SUPPLY_NUM; i++)
        pdata->supplies[i].supply = ti_sn_bridge_supply_names[i];
    return devm_regulator_bulk_get(pdata->dev, SN_REGULATOR_SUPPLY_NUM,
                       pdata->supplies);
}

这里没有什么特别的--我看到我们只是通过   devm_reguler_bulk_get()内调用的 reguler_bulk_data()获得稳压器属性

我想知道我在这里缺少什么-因此,由于这失败了,DSI 绑定也失败了,因此,我的显示屏上看不到任何内容:

另请注意、我已经验证了电桥本身以及硬件和原理图是否正确。 我能够使用 Excel SN65DSI86寄存器计算器、并且能够通过 Aardvark 对桥进行编程、以生成色条测试模式。 显示器已成功打开并显示测试模式。

谢谢!  

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

    您好、Peter、

    请 查看此主题以了解您的问题:

    e2e.ti.com/.../sn65dsi86-driver

    谢谢、

    扎赫

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

    您能否向我提供 在 Linux 中用于 OMAP 配置 DSI8x 的示例代码和使用说明?

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

    Peter、

    下面是示例代码的链接: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/video/omap2/dss/dsi.c?id=c16fa4f2ad19908a47c63d8fa436a1178438c7e7

    该代码执行 SN65DSI8x 的初始化序列并配置器件寄存器。 这只是一个示例代码;用户必须修改代码中的值以匹配所需的分辨率、视频格式等 此示例代码可用于从 Linux 配置 DSi8x 器件。 OMAP 主线 Linux 内核完全支持 DSI 接口。

    谢谢、

    扎赫

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

    您将其共享为 DSI 驱动程序的链接。 您能否共享 DSI86的示例代码?

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

    Peter、  

    我没有 DSI86的示例代码。 我只有我已经指向的 DSI 驱动程序。

    谢谢、

    扎赫

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

    您能不能详细说明一下您在说什么时的意思:

    [引用 userid="528518" URL"~/support/interface-group/interface/f/interface-forum/1159046/sn65dsi86-linux-driver-throws-error-during-bridge-probe-with-message-failed-to-parse-regulators/4358840 #4358840"]此示例代码可用于从 Linux 配置 DSI8x 器件[/quot]

    这是一个 DSI 驱动器。 SN65DSI86必须通过 I2C 或辅助探针进行配置。 在此代码中、SN65DSI86有任何初始化?

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

    Peter、

    我提供的 SN65DSI8x 的 TI 参考驱动程序代码。  该代码的作用说明 来自 此处的提示和技巧应用手册:

    https://www.ti.com/lit/an/slla356/slla356.pdf?ts=1665412347991&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FSN65DSI85。

    谢谢、

    扎赫

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

    Peter、

    我们只有随附的代码、用于 Linux for OMAP 以配置 DSI8x、该代码执行 DSI8x device.e2e.ti.com/.../panel_2D00_dsi86.c 的初始设置

    谢谢、

    扎赫

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

    您好、Peter、

    您是否还有疑问?

    如果没有、请单击"此已解决我的问题"按钮以关闭此主题。

    谢谢、

    扎赫