RK3399_PCIe_Host驱动分析_地址映射

文章详细介绍了RK3399PCIeHost驱动的分析,包括PCI驱动框架、Host驱动程序的概述、设备树文件的解析以及设备树相关驱动程序的分析。重点讨论了地址映射,如Region0和寄存器地址、CPU/PCI地址空间的确定及映射建立。此外,还涉及了中断信息和资源记录。

RK3399_PCIe_Host驱动分析_地址映射




参考资料:

开发板资料:

分析的文件:

  • linux-4.4_rk3399\drivers\pci\host\pcie-rockchip.c


一、 PCI驱动框架

在这里插入图片描述

二、 Host驱动程序速览

怎么找到驱动?

  • 在内核目录下根据芯片名字找到文件:drivers\pci\host\pcie-rockchip.c

    • 看到如下代码:

      static const struct of_device_id rockchip_pcie_of_match[] = {
             
             
      	{
             
              .compatible = "rockchip,rk3399-pcie", },
      	{
             
             }
      };
      
  • 在内核arch/arm64/boot/dts下搜:grep "rockchip,rk3399-pcie" * -nr

    • 找到设备树文件:arch/arm64/boot/dts/rk3399.dtsi,代码如下:

              pcie0: pcie@f8000000 {
             
             
                      compatible = "rockchip,rk3399-pcie";
                      #address-cells = <3>;
                      #size-cells = <2>;
                      aspm-no-l0s;
                      clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>,
                               <&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>;
                      clock-names = "aclk", "aclk-perf",
                                    "hclk", "pm";
                      bus-range = <0x0 0x1f>;
                      max-link-speed = <1>;
                      linux,pci-domain = <0>;
                      msi-map = <0x0 &its 0x0 0x1000>;
                      interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>,
                                   <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>,
                                   <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>;
                      interrupt-names = "sys", "legacy", "client";
                      #interrupt-cells = <1>;
                      interrupt-map-mask = <0 0 0 7>;
                      interrupt-map = <0 0 0 1 &pcie0_intc 0>,
                                      <0 0 0 2 &pcie0_intc 1>,
                                      <0 0 0 3 &pcie0_intc 2>,
                                      <0 0 0 4 &pcie0_intc 3>;
                      phys = &l
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值