Linux device driver Linux设备树到硬件映射
我想知道设备中的一些具体细节如何与硬件相关,以及在哪里可以找到这些信息,如原理图、数据表等 usb节点的示例如下所示:Linux device driver Linux设备树到硬件映射,linux-device-driver,embedded-linux,device-driver,Linux Device Driver,Embedded Linux,Device Driver,我想知道设备中的一些具体细节如何与硬件相关,以及在哪里可以找到这些信息,如原理图、数据表等 usb节点的示例如下所示: 在上面的图片中,我想知道您是如何在硬件上找到CLK_BUS_OHCI2或RST_BUS_EHCI2的。如果您转到include文件,您会得到一个值CLK_BUS_OHCI2=39,但我不确定这与实际硬件有何关系。如哪个寄存器或哪个引脚等。就我在下面的结构中所知 ehci2: usb@01c1c000 { compatible = "allwinner,
在上面的图片中,我想知道您是如何在硬件上找到CLK_BUS_OHCI2或RST_BUS_EHCI2的。如果您转到include文件,您会得到一个值CLK_BUS_OHCI2=39,但我不确定这与实际硬件有何关系。如哪个寄存器或哪个引脚等。就我在下面的结构中所知
ehci2: usb@01c1c000 {
compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
reg = <0x01c1c000 0x100>;
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>;
resets = <&ccu RST_BUS_EHCI2>, <&ccu RST_BUS_OHCI2>;
phys = <&usbphy 2>;
phy-names = "usb";
status = "disabled";
};
在上述结构中,有多个时钟源输出,因此上述USB控制器应使用时钟源39获取时钟输入,注意时钟单元=;表示多个时钟输出和时钟单元=;用于单时钟输出。
ccu结构只是一个例子。好吧,据我在下面的结构中所知
ehci2: usb@01c1c000 {
compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
reg = <0x01c1c000 0x100>;
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>;
resets = <&ccu RST_BUS_EHCI2>, <&ccu RST_BUS_OHCI2>;
phys = <&usbphy 2>;
phy-names = "usb";
status = "disabled";
};
在上述结构中,有多个时钟源输出,因此上述USB控制器应使用时钟源39获取时钟输入,注意时钟单元=;表示多个时钟输出和时钟单元=;用于单时钟输出。
ccu结构只是一个例子。现在我正在使用一个类似的平台Allwinner A64,我试图了解DTS、时钟和复位是如何工作的。幸运的是,你的问题出现在搜索引擎结果中。Gaurav Pathak的回答为我澄清了大部分事情,我想从他的观点出发,再延伸一点,帮助那些试图填补DTS和硬件之间的空白的人 我将参考和 uart4和ehci2在节点定义方式上有相似之处;例如,我们有时钟和复位的属性。但ccu时钟输出使用的实现方式不同 让我们仔细看看uart4 但是什么是公共汽车?让我看看 定义为。这就是它的样子: 静态SUNXI_CCU_GATEbus_uart4_clk,总线-uart4,apb2, 0x06c,位20,0; SUNXI_CCU_门是一个宏,用于管理时钟控制单元的选通寄存器。第4个参数0x06c表示寄存器偏移量,第5个参数位20表示第n位20,在这种情况下,将0x06c的偏移量调整为驱动总线uart4时钟 同样的情况也适用于resets属性。举例说明;只需在Linux内核源代码中搜索RST_总线_UART4和0x2d8,然后查看A64用户手册第142页的底部
我希望没有太多的废话。。。如果我错了,请纠正我。现在我正在使用一个类似的平台Allwinner A64,我试图了解DTS、时钟和重置是如何工作的。幸运的是,你的问题出现在搜索引擎结果中。Gaurav Pathak的回答为我澄清了大部分事情,我想从他的观点出发,再延伸一点,帮助那些试图填补DTS和硬件之间的空白的人 我将参考和 uart4和ehci2在节点定义方式上有相似之处;例如,我们有时钟和复位的属性。但ccu时钟输出使用的实现方式不同 让我们仔细看看uart4 但是什么是公共汽车?让我看看 定义为。这就是它的样子: 静态SUNXI_CCU_GATEbus_uart4_clk,总线-uart4,apb2, 0x06c,位20,0; SUNXI_CCU_门是一个宏,用于管理时钟控制单元的选通寄存器。第4个参数0x06c表示寄存器偏移量,第5个参数位20表示第n位20,在这种情况下,将0x06c的偏移量调整为驱动总线uart4时钟 同样的情况也适用于resets属性。举例说明;只需在Linux内核源代码中搜索RST_总线_UART4和0x2d8,然后查看A64用户手册第142页的底部 我希望没有太多的废话。。。如果我错了,请纠正我
uart4: serial@1c29000 {
compatible = "snps,dw-apb-uart";
reg = <0x01c29000 0x400>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
clocks = <&ccu CLK_BUS_UART4>;
resets = <&ccu RST_BUS_UART4>;
status = "disabled";
};
<&ccu CLK_BUS_UART4>