瀏覽代碼

[POWERPC] 85xx: Enable MSI support for 85xxds board

This patch enabled MSI on 8544ds and 8572ds board.
So far only one MSI interrupt can generate on 8544 board.

Signed-off-by: Jason Jin <Jason.jin@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Jason Jin 17 年之前
父節點
當前提交
741edc4949
共有 3 個文件被更改,包括 35 次插入1 次删除
  1. 16 0
      arch/powerpc/boot/dts/mpc8544ds.dts
  2. 16 0
      arch/powerpc/boot/dts/mpc8572ds.dts
  3. 3 1
      arch/powerpc/platforms/85xx/mpc85xx_ds.c

+ 16 - 0
arch/powerpc/boot/dts/mpc8544ds.dts

@@ -219,6 +219,22 @@
 			device_type = "open-pic";
 			device_type = "open-pic";
 			big-endian;
 			big-endian;
 		};
 		};
+
+		msi@41600 {
+			compatible = "fsl,mpc8544-msi", "fsl,mpic-msi";
+			reg = <0x41600 0x80>;
+			msi-available-ranges = <0 0x100>;
+			interrupts = <
+				0xe0 0
+				0xe1 0
+				0xe2 0
+				0xe3 0
+				0xe4 0
+				0xe5 0
+				0xe6 0
+				0xe7 0>;
+			interrupt-parent = <&mpic>;
+		};
 	};
 	};
 
 
 	pci0: pci@e0008000 {
 	pci0: pci@e0008000 {

+ 16 - 0
arch/powerpc/boot/dts/mpc8572ds.dts

@@ -221,6 +221,22 @@
 			fsl,has-rstcr;
 			fsl,has-rstcr;
 		};
 		};
 
 
+		msi@41600 {
+			compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
+			reg = <0x41600 0x80>;
+			msi-available-ranges = <0 0x100>;
+			interrupts = <
+				0xe0 0
+				0xe1 0
+				0xe2 0
+				0xe3 0
+				0xe4 0
+				0xe5 0
+				0xe6 0
+				0xe7 0>;
+			interrupt-parent = <&mpic>;
+		};
+
 		mpic: pic@40000 {
 		mpic: pic@40000 {
 			clock-frequency = <0>;
 			clock-frequency = <0>;
 			interrupt-controller;
 			interrupt-controller;

+ 3 - 1
arch/powerpc/platforms/85xx/mpc85xx_ds.c

@@ -78,7 +78,8 @@ void __init mpc85xx_ds_pic_init(void)
 	}
 	}
 
 
 	mpic = mpic_alloc(np, r.start,
 	mpic = mpic_alloc(np, r.start,
-			  MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+			  MPIC_PRIMARY | MPIC_WANTS_RESET |
+			  MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
 			0, 256, " OpenPIC  ");
 			0, 256, " OpenPIC  ");
 	BUG_ON(mpic == NULL);
 	BUG_ON(mpic == NULL);
 
 
@@ -195,6 +196,7 @@ static int __init mpc85xxds_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xxds_ids, NULL);
 	return of_platform_bus_probe(NULL, mpc85xxds_ids, NULL);
 }
 }
 machine_device_initcall(mpc8544_ds, mpc85xxds_publish_devices);
 machine_device_initcall(mpc8544_ds, mpc85xxds_publish_devices);
+machine_device_initcall(mpc8572_ds, mpc85xxds_publish_devices);
 
 
 /*
 /*
  * Called very early, device-tree isn't unflattened
  * Called very early, device-tree isn't unflattened