您的位置:首页 > 其它

在扁平设备配置树文件中添加pci设备----基于MPC8313

2012-08-21 13:58 281 查看
今天使用MPC8313的DMO板套件跑我们自己的板子,出现了PCI设备找不到的情况,最后通过上网查资料,总结如下:
Powerpc使用扁平设备配置书文件引导内核,内核在启动过程中会扫描PCI设备,此时硬件上最重要的连线IDSEL起作用了。
先总结一下PCI设备启动过程。内核启动时,pci设备自由bios会扫描自身信息,然后生成含有pci设备信息的数据结构,然后保存起来。内核在扫描32位pci设备的时候,因为在硬件上IDSEL[11:31]实际上相当于pci设备的片选信号(图一),所以内核根据dts文件(即扁平设备配置树)扫描响应IDSEL对应的PCI设备,然后读取PCI设备的数据结构存储起来,以备以后使用。
具体的对应关系看8313的datasheet。见图二和图三。
图一:PCI设备IDSEL脚的连接方式 图二:LDSEL对应的编号 1 图三:LDSEL对应的编号 2 图四:CPU硬件终端号 图五:PCI硬件连接图 注:1:IDSEL连PCI_AD14 3:INTA连IRQ2。 修改好的dts文件中PCI相关代码如下: pci@8500 {
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x0E - 380 */
7000 0 0 1 &ipic 11 8 /*注意红色部分, f800 & 7000,然后去高5位,值为0x0E即(01110),表示它的IDSEL脚连在PCI地址*/
/*线的PCI_AD14号管脚上,蓝色部分代表此设备所连到CPU的硬件终端号(注意:16进制),如图四和五。*/
7000 0 0 2 &ipic 11 8
7000 0 0 3 &ipic 11 8
7000 0 0 4 &ipic 11 8
/* IDSEL 0x0F - Audio */
7800 0 0 1 &ipic 12 8
7800 0 0 2 &ipic 12 8
7800 0 0 3 &ipic 12 8
7800 0 0 4 &ipic 12 8
/* IDSEL 0xA0 - 3602_01 */
A000 0 0 1 &ipic 30 8
A000 0 0 2 &ipic 30 8
A000 0 0 3 &ipic 30 8
A000 0 0 4 &ipic 30 8
/* IDSEL 0xA8 - 3602_02 */
A800 0 0 1 &ipic 13 8
A800 0 0 2 &ipic 13 8
A800 0 0 3 &ipic 13 8
A800 0 0 4 &ipic 13 8>;
interrupt-parent = < &ipic >;
interrupts = <42 8>;
bus-range = <0 0>;
ranges = <02000000 0 90000000 90000000 0 10000000
42000000 0 80000000 80000000 0 10000000
01000000 0 00000000 e2000000 0 00100000>;
clock-frequency = <3f940aa>;
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
reg = <8500 100>;
compatible = \"fsl,mpc8349-pci\
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: