powerpc: Add MPC837xE MDS PCIE RC mode support
PATCH 1/2 powerpc: Add MPC837xE MDS PCIE RC mode support
Modified based on discussion in list.
1.Change the device node to pcie
2.Add PPC_83XX_PCI_PRIMARY flag
3.Rearrange the codes
The PCIE controller is initiated in u-boot.
Signed-off-by Tony Li <[email protected]>
--- arch/powerpc/boot/dts/mpc8377_mds.dts | 54 ++++++++-- arch/powerpc/boot/dts/mpc8378_mds.dts | 54 ++++++++-- arch/powerpc/platforms/83xx/Kconfig | 7 + arch/powerpc/platforms/83xx/mpc8313_rdb.c | 10 ++- arch/powerpc/platforms/83xx/mpc832x_mds.c | 12 ++- arch/powerpc/platforms/83xx/mpc832x_rdb.c | 10 ++- arch/powerpc/platforms/83xx/mpc834x_itx.c | 10 ++- arch/powerpc/platforms/83xx/mpc834x_mds.c | 10 ++- arch/powerpc/platforms/83xx/mpc836x_mds.c | 12 ++- arch/powerpc/platforms/83xx/mpc837x_mds.c | 19 +++- arch/powerpc/platforms/83xx/mpc83xx.h | 6 +- arch/powerpc/platforms/83xx/pci.c | 174 +++++++++++++++++++++++++++-- 12 files changed, 338 insertions(+), 40 deletions(-)
arch/powerpc/boot/dts/mpc8377_mds.dts +46 -8
@@ -197,14 +197,6 @@ clock = <d#100>; }; - serdes2:serdes@e3100 { - compatible = "fsl,serdes"; - reg = <e3100 100>; - vdd-1v; - protocol = "pcie"; - clock = <d#100>; - }; - /* IPIC * interrupts cell = <intr #, sense> * sense values match linux IORESOURCE_IRQ_* defines:
@@ -279,4 +271,50 @@ compatible = "fsl,mpc8349-pci"; device_type = "pci"; }; + + pcie@e0009000 { + interrupt-map-mask = <f800 0 0 7>; + interrupt-map = < + 0000 0 0 1 &ipic 1 8 + 0000 0 0 2 &ipic 1 8 + 0000 0 0 3 &ipic 1 8 + 0000 0 0 4 &ipic 1 8 + >; + interrupt-parent = < &ipic >; + interrupts = <1 8>; + bus-range = <0 0>; + ranges = <02000000 0 A8000000 A8000000 0 10000000 + 01000000 0 00000000 B8000000 0 00800000>; + clock-frequency = <0>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <e0009000 00001000 + a0000000 08000000>; + compatible = "fsl,mpc8377-pcie"; + device_type = "pci"; + }; + + pcie@e000a000 { + interrupt-map-mask = <f800 0 0 7>; + interrupt-map = < + 0000 0 0 1 &ipic 2 8 + 0000 0 0 2 &ipic 2 8 + 0000 0 0 3 &ipic 2 8 + 0000 0 0 4 &ipic 2 8 + >; + interrupt-parent = < &ipic >; + interrupts = <2 8>; + bus-range = <0 0>; + ranges = <02000000 0 C8000000 C8000000 0 10000000 + 01000000 0 00000000 D8000000 0 00800000>; + clock-frequency = <0>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <e000a000 00001000 + c0000000 08000000>; + compatible = "fsl,mpc8377-pcie"; + device_type = "pci"; + }; };
arch/powerpc/boot/dts/mpc8378_mds.dts +46 -8
64 lines not on this page · raw message
arch/powerpc/platforms/83xx/Kconfig +7 -0
@@ -87,3 +87,10 @@ config PPC_MPC837x select PPC_INDIRECT_PCI select FSL_SERDES default y if MPC837x_MDS + +config PPC_MPC83XX_PCIE + bool "MPC837X PCI Express support" + depends on PCIEPORTBUS && PPC_MPC837x + default n + help + Enables MPC837x PCI express RC mode
arch/powerpc/platforms/83xx/mpc8313_rdb.c +8 -2
@@ -37,14 +37,20 @@ static void __init mpc8313_rdb_setup_arch(void) {#ifdef CONFIG_PCI struct device_node *np; +int primary_pci_bus =1 ;#endif if (ppc_md.progress) ppc_md.progress ("mpc8313_rdb_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif mpc831x_usb_cfg (); }
arch/powerpc/platforms/83xx/mpc832x_mds.c +10 -2
@@ -58,6 +58,9 @@ static u8 *bcsr_regs = NULL;static void __init mpc832x_sys_setup_arch (void ) {struct device_node *np; +#ifdef CONFIG_PCI +int primary_pci_bus =1 ; +#endif if (ppc_md.progress) ppc_md.progress ("mpc832x_sys_setup_arch()" ,0 );
@@ -73,8 +76,13 @@ static void __init mpc832x_sys_setup_arch(void) }#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc832x_rdb.c +8 -2
@@ -87,14 +87,20 @@ static void __init mpc832x_rdb_setup_arch(void) {#if defined(CONFIG_PCI ) || defined(CONFIG_QUICC_ENGINE )struct device_node *np; +int primary_pci_bus =1 ;#endif if (ppc_md.progress) ppc_md.progress ("mpc832x_rdb_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc834x_itx.c +8 -2
@@ -46,14 +46,20 @@ static void __init mpc834x_itx_setup_arch(void) {#ifdef CONFIG_PCI struct device_node *np; +int primary_pci_bus =1 ;#endif if (ppc_md.progress) ppc_md.progress ("mpc834x_itx_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif mpc834x_usb_cfg ();
arch/powerpc/platforms/83xx/mpc834x_mds.c +8 -2
@@ -77,14 +77,20 @@ static void __init mpc834x_mds_setup_arch(void) {#ifdef CONFIG_PCI struct device_node *np; +int primary_pci_bus =1 ;#endif if (ppc_md.progress) ppc_md.progress ("mpc834x_mds_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif mpc834xemds_usb_cfg ();
arch/powerpc/platforms/83xx/mpc836x_mds.c +10 -2
@@ -64,6 +64,9 @@ static u8 *bcsr_regs = NULL;static void __init mpc836x_mds_setup_arch (void ) {struct device_node *np; +#ifdef CONFIG_PCI +int primary_pci_bus =1 ; +#endif if (ppc_md.progress) ppc_md.progress ("mpc836x_mds_setup_arch()" ,0 );
@@ -79,8 +82,13 @@ static void __init mpc836x_mds_setup_arch(void) }#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + }#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc837x_mds.c +17 -2
@@ -36,14 +36,29 @@ static void __init mpc837x_mds_setup_arch(void) {#ifdef CONFIG_PCI struct device_node *np; +int primary_pci_bus =1 ;#endif if (ppc_md.progress) ppc_md.progress ("mpc837x_mds_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) -mpc83xx_add_bridge (np); +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCI |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCI ); + } +#endif +#ifdef CONFIG_PPC_MPC83XX_PCIE +for_each_compatible_node (np,"pci" ,"fsl,mpc8377-pcie" ) { +if (primary_pci_bus) { +mpc83xx_add_bridge (np,PPC_83XX_PCIE |PPC_83XX_PCI_PRIMARY ); + primary_pci_bus =0 ; + }else +mpc83xx_add_bridge (np,PPC_83XX_PCIE ); + }#endif }
arch/powerpc/platforms/83xx/mpc83xx.h +4 -2
@@ -47,8 +47,10 @@* Declaration for the various functions exported by the * mpc83xx_* files. Mostly for use by mpc83xx_setup */ - -extern int mpc83xx_add_bridge (struct device_node *dev); +#define PPC_83XX_PCI_PRIMARY 0x1 +#define PPC_83XX_PCI 0x2 +#define PPC_83XX_PCIE 0x4 +extern int mpc83xx_add_bridge (struct device_node *dev,int flags);extern void mpc83xx_restart (char *cmd);extern long mpc83xx_time_init (void );extern int mpc834x_usb_cfg (void );
arch/powerpc/platforms/83xx/pci.c +166 -8
209 lines not on this page · raw message
Signature · 1 line
1.5.2