从 dts 文件读取数据时 devm_clk_get 失败

问题描述

我正在尝试加载一些内核模块,它从 DTS 文件中读取参数。 DTS文件摘录:

    can0_osc: oscillator {
        compatbile = "fixed-clock";
        #clock-cells = <0>;
        clock-frequency = <40000000>;
        clock-output-names = "can0_osc";
        clock-names = "can0";
    };

    spi1 {
        compatible = "spi-gpio";
        gpio-sck = <&gpio 25 GPIO_ACTIVE_HIGH>;
        gpio-mosi = <&gpio 26 GPIO_ACTIVE_HIGH>;
        gpio-miso = <&gpio 27 GPIO_ACTIVE_HIGH>;
        cs-gpios = <&gpio 28 GPIO_ACTIVE_HIGH>;
        num-chipselects = <1>;
        
        mcp2517fd: mcp2517fd@0 {
            compatible = "microchip,mcp2517fd";
            status = "okay";
            reg = <0>;
            clocks = <&can0_osc 0>;
            clock-names = "mcp_clock";
            spi-max-frequency = <16000000>;
            interrupt-parent= <&gpio>;
            interrupts = <11 0x8>;
       }; 
   };

如果我尝试使用

读取时钟生成
devm_clk_get(&spi->dev,"can0_osc");

devm_clk_get(&spi->dev,"mcp_clock");

关注

if (IS_ERR(clk))

我收到错误,无法继续加载。我是否需要修改 DTS 文件以满足 devm_clk_get() 的需要?如果是这样,该怎么做? 也许我应该使用其他函数(而不是 devm_clk_get)来读取时钟参数?实际上,我试图描述频率为 40 MHz 的固定时钟。

目前我在 Linux Kernel 5.4.89 上使用 OpenWRT。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)