SPI 设备树条目中的时钟条目

SPI 设备树条目中的时钟条目

我正在为 Duovero Parlor 板使用 DTS 文件。我向该板添加了一些 SPI 设备。我的第一个(显示器)工作得很好,所以我的条目至少是正确的。我想添加一个条目来支持 SPI 连接的 NXP SC16IS752 UART 控制器。 (最近lkml上有一个补丁我想尝试一下)。

这是我的条目:

clocks {
        clk14m: oscillator {
                #clock-cells = <0>;
                compatible = "fixed-clock";
                clock-frequency = <14745600>;
        };
};

&mcspi4 {
        sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>;
                spi-max-frequency = <4000000>;
                clocks = <&clk14m>;
                interrupt-parent = <&gpio4>;
                interrupt = <15 IRQ_TYPE_EDGE_FALLING>;
                gpio-controller;
                #gpio-cells = <2>;
        };
};

看起来似乎有点正确。 SPI 总线为 4MHz,模式 0。中断为 GPIO 111,即 <&GPIO 4 15>。我的问题是指定时钟。它是一个直接连接到芯片的独立晶体振荡器。那么这钟表是对的吗?

因为时钟是独立的,所以我不知道把它放在哪里,所以“时钟”听起来不错,但我完全是猜测。当我编译 dts 时,它因语法错误而失败,所以某处出了问题。

我也不确定 #gpio-cells 是否正确。这是否意味着 GPIO 编号将从 200 开始并递增?

答案1

您的时钟的问题在于,在 TI 时钟域之外声明的时钟在 3.17 中未正确解析和设置。此问题在内核版本 4.0.5 中已得到解决。

所需的更改发生在 /arch/arm/mach-omap2/io.c 末尾的函数 omap_clk_init 中,其中有一个对 of_clk_init(NULL) 的额外调用,该调用在 3.17 中不存在。

这里有一些相关的讨论,http://patchwork.ozlabs.org/patch/375753/

相关内容