linux dts与调用函数对应关系


uart0: uart0@1F221000 {
            compatible = "sstar,uart";
            reg = <0x1F221000 0x100>;
            interrupts = ;
            clocks = <&CLK_uart0>;
            status = "ok";
        };

获取reg,即内存的起始地址与范围

 platform_get_resource(pdev, IORESOURCE_MEM, 0);

获取interrupts

platform_get_resource(pdev, IORESOURCE_IRQ, 0);

获取clocks

of_clk_get(pdev->dev.of_node, 0);

dts 文件会将解析的文件的reg和interrupts转化到对应的struct resource。

其它获取的办法,通过 of_property_read_u32(pdev->dev.of_node, "dma", &mp->use_dma); 这类方法去获取dts文件内容。

解析dts的开始位置

init/main.c ->setup_arch(&command_line);

           arch/arm/kernel/setup.c    void __init setup_arch(char **cmdline_p)  -> setup_machine_fdt();

 

 platform_get_resource(pdev, IORESOURCE_MEM, 0);