Patches in for-2.6.24
Subsystems (7)
cover Patches in for-2.6.24
This is the set of patches in:
master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc.git for-2.6.24
Posted here so everyone knows what's going in. I've asked Paul to pull this into his for-2.6.24 branch.
(Sorry for anyone getting duplicates of this, sent to linuxppc@ozlabs not linuxppc-dev@ozlabs)
- k
PATCH 1/22 ucc_geth: kill unused include
The ucc_geth_mii code is based on the gianfar_mii code that use to include ocp.h. ucc never need this and it causes issues when we want to kill arch/ppc includes from arch/powerpc.
--- drivers/net/ucc_geth_mii.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/net/ucc_geth_mii.c +0 -1
@@ -32,7 +32,6 @@#include <linux/mm.h> #include <linux/module.h> #include <linux/platform_device.h> -#include <asm/ocp.h> #include <linux/crc32.h> #include <linux/mii.h> #include <linux/phy.h>
Signature · 1 line
1.5.2.4
PATCH 2/22 85xx: Renamed mpc8544_ds.c to mpc85xx_ds.c
Renamed the mpc8544_ds.c board code to mpc85xx_ds.c to make it more generic in prep for other boards based on the same platform.
--- arch/powerpc/configs/mpc8544_ds_defconfig | 2 +- arch/powerpc/platforms/85xx/Kconfig | 8 +- arch/powerpc/platforms/85xx/Makefile | 2 +- arch/powerpc/platforms/85xx/mpc8544_ds.c | 188 ----------------------------- arch/powerpc/platforms/85xx/mpc85xx_ds.c | 188 +++++++++++++++++++++++++++++ 5 files changed, 194 insertions(+), 194 deletions(-) delete mode 100644 arch/powerpc/platforms/85xx/mpc8544_ds.c create mode 100644 arch/powerpc/platforms/85xx/mpc85xx_ds.c
arch/powerpc/configs/mpc8544_ds_defconfig +1 -1
@@ -136,7 +136,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" # CONFIG_MPC8560_ADS is not set # CONFIG_MPC85xx_CDS is not set # CONFIG_MPC85xx_MDS is not set -CONFIG_MPC8544_DS=y +CONFIG_MPC85xx_DS=y CONFIG_MPC85xx=y CONFIG_MPIC=y # CONFIG_MPIC_WEIRD is not set
arch/powerpc/platforms/85xx/Kconfig +4 -4
@@ -29,13 +29,13 @@ config MPC85xx_MDS help This option enables support for the MPC85xx MDS board -config MPC8544_DS - bool "Freescale MPC8544 DS" +config MPC85xx_DS + bool "Freescale MPC85xx DS" select PPC_I8259 select DEFAULT_UIMAGE select FSL_ULI1575 help - This option enables support for the MPC8544 DS board + This option enables support for the MPC85xx DS (MPC8544 DS) board endchoice
@@ -58,4 +58,4 @@ config MPC85xx select FSL_PCI if PCI select SERIAL_8250_SHARE_IRQ if SERIAL_8250 default y if MPC8540_ADS || MPC85xx_CDS || MPC8560_ADS \ - || MPC85xx_MDS || MPC8544_DS + || MPC85xx_MDS || MPC85xx_DS
arch/powerpc/platforms/85xx/Makefile +1 -1
@@ -5,5 +5,5 @@ obj-$(CONFIG_PPC_85xx) += misc.o obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o -obj-$(CONFIG_MPC8544_DS) += mpc8544_ds.o +obj-$(CONFIG_MPC85xx_DS) += mpc85xx_ds.o obj-$(CONFIG_MPC85xx_MDS) += mpc85xx_mds.o
arch/powerpc/platforms/85xx/mpc8544_ds.c deleted +0 -188
188 lines not on this page · raw message
arch/powerpc/platforms/85xx/mpc85xx_ds.c new file +188 -0
188 lines not on this page · raw message
Signature · 1 line
1.5.2.4
PATCH 3/22 85xx: Clean up from 85xx_ds rename
Renamed functions in 85xx_ds from 8544 to 85xx.
Kept an unique machine def/probe for the MPC8544 DS board to handle some subtle differences between the future board based on the DS platform.
Also fixed building w/o CONFIG_PCI and minor whitespace fixes.
--- arch/powerpc/platforms/85xx/mpc85xx_ds.c | 36 ++++++++++++++++++----------- 1 files changed, 22 insertions(+), 14 deletions(-)
arch/powerpc/platforms/85xx/mpc85xx_ds.c +22 -14
@@ -1,5 +1,5 @@/* -* MPC8544 DS Board Setup +* MPC85xx DS Board Setup * * Author Xianghua Xiao ([email protected]) * Roy Zang <[email protected]>
@@ -44,7 +44,7 @@#endif #ifdef CONFIG_PPC_I8259 -static void mpc8544_8259_cascade (unsigned int irq,struct irq_desc *desc) +static void mpc85xx_8259_cascade (unsigned int irq,struct irq_desc *desc) {unsigned int cascade_irq =i8259_irq ();
@@ -55,7 +55,7 @@ static void mpc8544_8259_cascade(unsigned int irq, struct irq_desc *desc) }#endif /* CONFIG_PPC_I8259 */ -void __init mpc8544_ds_pic_init (void ) +void __init mpc85xx_ds_pic_init (void ) {struct mpic *mpic;struct resource r;
@@ -104,16 +104,17 @@ void __init mpc8544_ds_pic_init(void) return; } -DBG ("mpc8544ds: cascade mapped to irq %d\n" , cascade_irq); +DBG ("mpc85xxds: cascade mapped to irq %d\n" , cascade_irq);i8259_init (cascade_node,0 );of_node_put (cascade_node); -set_irq_chained_handler (cascade_irq, mpc8544_8259_cascade); +set_irq_chained_handler (cascade_irq, mpc85xx_8259_cascade);#endif /* CONFIG_PPC_I8259 */ }#ifdef CONFIG_PCI +static int primary_phb_addr;extern int uses_fsl_uli_m1575;extern int uli_exclude_device (struct pci_controller *hose,u_char bus,u_char devfn);
@@ -121,13 +122,13 @@ extern int uli_exclude_device(struct pci_controller *hose,static int mpc85xx_exclude_device (struct pci_controller *hose,u_char bus,u_char devfn) { -struct device_node * node; +struct device_node * node;struct resource rsrc; node = (struct device_node *)hose->arch_data;of_address_to_resource (node,0 , &rsrc); -if ((rsrc.start &0xfffff ) ==0xb000 ) { +if ((rsrc.start &0xfffff ) == primary_phb_addr) {return uli_exclude_device (hose, bus, devfn); }
@@ -138,20 +139,20 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,/* * Setup the architecture */ -static void __init mpc8544_ds_setup_arch (void ) +static void __init mpc85xx_ds_setup_arch (void ) {#ifdef CONFIG_PCI struct device_node *np;#endif if (ppc_md.progress) - ppc_md.progress ("mpc8544_ds_setup_arch()" ,0 ); + ppc_md.progress ("mpc85xx_ds_setup_arch()" ,0 );#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;) {struct resource rsrc;of_address_to_resource (np,0 , &rsrc); -if ((rsrc.start &0xfffff ) ==0xb000 ) +if ((rsrc.start &0xfffff ) == primary_phb_addr)fsl_add_bridge (np,1 );else fsl_add_bridge (np,0 );
@@ -160,7 +161,7 @@ static void __init mpc8544_ds_setup_arch(void) ppc_md.pci_exclude_device = mpc85xx_exclude_device;#endif -printk ("MPC8544 DS board from Freescale Semiconductor\n" ); +printk ("MPC85xx DS board from Freescale Semiconductor\n" ); }/*
@@ -170,14 +171,21 @@ static int __init mpc8544_ds_probe(void) {unsigned long root =of_get_flat_dt_root (); -return of_flat_dt_is_compatible (root,"MPC8544DS" ); +if (of_flat_dt_is_compatible (root,"MPC8544DS" )) { +#ifdef CONFIG_PCI + primary_phb_addr =0xb000 ; +#endif +return 1 ; + }else { +return 0 ; + } }define_machine (mpc8544_ds) { .name = "MPC8544 DS", .probe = mpc8544_ds_probe, - .setup_arch = mpc8544_ds_setup_arch, - .init_IRQ = mpc8544_ds_pic_init, + .setup_arch = mpc85xx_ds_setup_arch, + .init_IRQ = mpc85xx_ds_pic_init, #ifdef CONFIG_PCI .pcibios_fixup_bus = fsl_pcibios_fixup_bus, #endif
Signature · 1 line
1.5.2.4
PATCH 4/22 Update mpc7448hpc2 device tree to be compatible for tsi109 chip
From: Roy Zang <[email protected]>
Update mpc7448hpc2 device tree to be compatible for tsi109 chip.
--- arch/powerpc/boot/dts/mpc7448hpc2.dts | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-)
arch/powerpc/boot/dts/mpc7448hpc2.dts +7 -6
@@ -41,11 +41,12 @@ >; }; - tsi108@c0000000 { + tsi109@c0000000 { #address-cells = <1>; #size-cells = <1>; #interrupt-cells = <2>; device_type = "tsi-bridge"; + compatible = "tsi109-bridge", "tsi108-bridge"; ranges = <00000000 c0000000 00010000>; reg = <c0000000 00010000>; bus-frequency = <0>;
@@ -55,12 +56,12 @@ interrupts = <E 0>; reg = <7000 400>; device_type = "i2c"; - compatible = "tsi108-i2c"; + compatible = "tsi109-i2c", "tsi108-i2c"; }; MDIO: mdio@6000 { device_type = "mdio"; - compatible = "tsi108-mdio"; + compatible = "tsi109-mdio", "tsi108-mdio"; reg = <6000 50>; #address-cells = <1>; #size-cells = <0>;
@@ -82,7 +83,7 @@ ethernet@6200 { #size-cells = <0>; device_type = "network"; - compatible = "tsi108-ethernet"; + compatible = "tsi109-ethernet", "tsi108-ethernet"; reg = <6000 200>; address = [ 00 06 D2 00 00 01 ]; interrupts = <10 2>;
@@ -95,7 +96,7 @@ #address-cells = <1>; #size-cells = <0>; device_type = "network"; - compatible = "tsi108-ethernet"; + compatible = "tsi109-ethernet", "tsi108-ethernet"; reg = <6400 200>; address = [ 00 06 D2 00 00 02 ]; interrupts = <11 2>;
@@ -134,7 +135,7 @@ big-endian; }; pci@1000 { - compatible = "tsi108-pci"; + compatible = "tsi109-pci", "tsi108-pci"; device_type = "pci"; #interrupt-cells = <1>; #size-cells = <2>;
Signature · 1 line
1.5.2.4
PATCH 5/22 linkstation updates
From: Guennadi Liakhovetski <[email protected]>
1. Fix RTC type - it is a rs5c372a, not rs5c372b
2. Configure both UART interrupts edge-triggered
3. Add a license header to ls_uart.c
4. Check for running on linkstation in a late_initcall() function. Needed for multiplatform builds, even though linkstation doesn't support them yet
5. Remove unneeded #include from linkstation.c
--- arch/powerpc/boot/dts/kuroboxHD.dts | 4 ++-- arch/powerpc/boot/dts/kuroboxHG.dts | 4 ++-- arch/powerpc/platforms/embedded6xx/linkstation.c | 1 - arch/powerpc/platforms/embedded6xx/ls_uart.c | 14 ++++++++++++++ 4 files changed, 18 insertions(+), 5 deletions(-)
arch/powerpc/boot/dts/kuroboxHD.dts +2 -2
@@ -69,7 +69,7 @@ XXXX add flash parts, rtc, ?? rtc@32 { device_type = "rtc"; - compatible = "ricoh,rs5c372b"; + compatible = "ricoh,rs5c372a"; reg = <32>; }; };
@@ -80,7 +80,7 @@ XXXX add flash parts, rtc, ?? reg = <80004500 8>; clock-frequency = <5d08d88>; current-speed = <2580>; - interrupts = <9 2>; + interrupts = <9 0>; interrupt-parent = <&mpic>; };
arch/powerpc/boot/dts/kuroboxHG.dts +2 -2
@@ -69,7 +69,7 @@ XXXX add flash parts, rtc, ?? rtc@32 { device_type = "rtc"; - compatible = "ricoh,rs5c372b"; + compatible = "ricoh,rs5c372a"; reg = <32>; }; };
@@ -80,7 +80,7 @@ XXXX add flash parts, rtc, ?? reg = <80004500 8>; clock-frequency = <7c044a8>; current-speed = <2580>; - interrupts = <9 2>; + interrupts = <9 0>; interrupt-parent = <&mpic>; };
arch/powerpc/platforms/embedded6xx/linkstation.c +0 -1
@@ -11,7 +11,6 @@*/ #include <linux/kernel.h> -#include <linux/pci.h> #include <linux/initrd.h> #include <linux/mtd/physmap.h>
arch/powerpc/platforms/embedded6xx/ls_uart.c +14 -0
@@ -1,3 +1,14 @@ +/* +* AVR power-management chip interface for the Buffalo Linkstation / +* Kurobox Platform. +* +* Author: 2006 (c) G. Liakhovetski +* [email protected] +* +* This file is licensed under the terms of the GNU General Public License +* version 2. This program is licensed "as is" without any warranty of +* any kind, whether express or implied. +*/ #include <linux/workqueue.h> #include <linux/string.h> #include <linux/delay.h>
@@ -106,6 +117,9 @@ static int __init ls_uarts_init(void)phys_addr_t phys_addr;int len; +if (!machine_is (linkstation)) +return 0 ; + avr =of_find_node_by_path ("/soc10x/serial@80004500" );if (!avr)return -EINVAL ;
Signature · 1 line
1.5.2.4
PATCH 6/22 86xx: Remove unnecessary loops_per_jiffy initialization code.
From: Jon Loeliger <[email protected]>
--- arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | 14 ++------------ 1 files changed, 2 insertions(+), 12 deletions(-)
arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +2 -12
@@ -132,23 +132,13 @@ static int mpc86xx_exclude_device(struct pci_controller *hose,static void __init mpc86xx_hpcn_setup_arch (void ) { +#ifdef CONFIG_PCI struct device_node *np; +#endif if (ppc_md.progress) ppc_md.progress ("mpc86xx_hpcn_setup_arch()" ,0 ); - np =of_find_node_by_type (NULL ,"cpu" ); -if (np !=0 ) { -const unsigned int *fp; - - fp =of_get_property (np,"clock-frequency" ,NULL ); -if (fp !=0 ) - loops_per_jiffy = *fp /HZ ; -else - loops_per_jiffy =50000000 /HZ ; -of_node_put (np); - } -#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;) {struct resource rsrc;
Signature · 1 line
1.5.2.4
PATCH 7/22 85xx: Remove unnecessary loops_per_jiffy initialization code.
From: Jon Loeliger <[email protected]>
--- arch/powerpc/platforms/85xx/mpc85xx_ads.c | 13 ------------- arch/powerpc/platforms/85xx/mpc85xx_cds.c | 13 ------------- arch/powerpc/platforms/85xx/mpc85xx_mds.c | 11 ----------- 3 files changed, 0 insertions(+), 37 deletions(-)
arch/powerpc/platforms/85xx/mpc85xx_ads.c +0 -13
@@ -192,7 +192,6 @@ void init_fcc_ioports(struct fs_platform_info *fpi)static void __init mpc85xx_ads_setup_arch (void ) { -struct device_node *cpu;#ifdef CONFIG_PCI struct device_node *np;#endif
@@ -200,18 +199,6 @@ static void __init mpc85xx_ads_setup_arch(void)if (ppc_md.progress) ppc_md.progress ("mpc85xx_ads_setup_arch()" ,0 ); - cpu =of_find_node_by_type (NULL ,"cpu" ); -if (cpu !=0 ) { -const unsigned int *fp; - - fp =of_get_property (cpu,"clock-frequency" ,NULL ); -if (fp !=0 ) - loops_per_jiffy = *fp /HZ ; -else - loops_per_jiffy =50000000 /HZ ; -of_node_put (cpu); - } -#ifdef CONFIG_CPM2 cpm2_reset ();#endif
arch/powerpc/platforms/85xx/mpc85xx_cds.c +0 -13
@@ -265,7 +265,6 @@ device_initcall(mpc85xx_cds_8259_attach);*/ static void __init mpc85xx_cds_setup_arch (void ) { -struct device_node *cpu;#ifdef CONFIG_PCI struct device_node *np;#endif
@@ -273,18 +272,6 @@ static void __init mpc85xx_cds_setup_arch(void)if (ppc_md.progress) ppc_md.progress ("mpc85xx_cds_setup_arch()" ,0 ); - cpu =of_find_node_by_type (NULL ,"cpu" ); -if (cpu !=0 ) { -const unsigned int *fp; - - fp =of_get_property (cpu,"clock-frequency" ,NULL ); -if (fp !=0 ) - loops_per_jiffy = *fp /HZ ; -else - loops_per_jiffy =500000000 /HZ ; -of_node_put (cpu); - } - cadmus =ioremap (CADMUS_BASE ,CADMUS_SIZE ); cds_pci_slot = ((cadmus[CM_CSR ] >>6 ) &0x3 ) +1 ;
arch/powerpc/platforms/85xx/mpc85xx_mds.c +0 -11
@@ -72,17 +72,6 @@ static void __init mpc85xx_mds_setup_arch(void)if (ppc_md.progress) ppc_md.progress ("mpc85xx_mds_setup_arch()" ,0 ); - np =of_find_node_by_type (NULL ,"cpu" ); -if (np !=NULL ) { -const unsigned int *fp = -of_get_property (np,"clock-frequency" ,NULL ); -if (fp !=NULL ) - loops_per_jiffy = *fp /HZ ; -else - loops_per_jiffy =50000000 /HZ ; -of_node_put (np); - } -/* Map BCSR area */ np =of_find_node_by_name (NULL ,"bcsr" );if (np !=NULL ) {
Signature · 1 line
1.5.2.4
PATCH 8/22 fsl_soc.c cleanup
From: Scott Wood <[email protected]>
1. Update the way get_brgfreq() finds things in the device tree.
It now uses names that are less namespace polluting. The old names are supported until all boards are converted.
2. "size" is changed from unsigned int to int, to match what of_get_property() expects.
--- arch/powerpc/sysdev/fsl_soc.c | 27 +++++++++++++++++---------- 1 files changed, 17 insertions(+), 10 deletions(-)
arch/powerpc/sysdev/fsl_soc.c +17 -10
@@ -52,13 +52,13 @@ phys_addr_t get_immrbase(void) soc =of_find_node_by_type (NULL ,"soc" );if (soc) { -unsigned int size; +int size;const void *prop =of_get_property (soc,"reg" , &size);if (prop) immrbase =of_translate_address (soc, prop);of_node_put (soc); - }; + }return immrbase; }
@@ -76,16 +76,23 @@ u32 get_brgfreq(void)if (brgfreq !=-1 )return brgfreq; - node =of_find_node_by_type (NULL ,"cpm" ); + node =of_find_compatible_node (NULL ,NULL ,"fsl,cpm1" ); +if (!node) + node =of_find_compatible_node (NULL ,NULL ,"fsl,cpm2" ); +if (!node) + node =of_find_node_by_type (NULL ,"cpm" );if (node) { -unsigned int size; -const unsigned int *prop =of_get_property (node, -"brg-frequency" , &size); +int size; +const unsigned int *prop; -if (prop) + prop =of_get_property (node,"fsl,brg-frequency" , &size); +if (!prop) + prop =of_get_property (node,"brg-frequency" , &size); +if (prop && size ==4 ) brgfreq = *prop; +of_node_put (node); - }; + }return brgfreq; }
@@ -103,14 +110,14 @@ u32 get_baudrate(void) node =of_find_node_by_type (NULL ,"serial" );if (node) { -unsigned int size; +int size;const unsigned int *prop =of_get_property (node,"current-speed" , &size);if (prop) fs_baudrate = *prop;of_node_put (node); - }; + }return fs_baudrate; }
Signature · 1 line
1.5.2.4
PATCH 9/22 Handle alignment faults on SPE load/store instructions
This adds code to handle alignment traps generated by the following SPE (signal processing engine) load/store instructions, by emulating the instruction in the kernel (as is done for other instructions that generate alignment traps):
evldd[x] Vector Load Double Word into Double Word [Indexed] evldw[x] Vector Load Double into Two Words [Indexed] evldh[x] Vector Load Double into Four Half Words [Indexed] evlhhesplat[x] Vector Load Half Word into Half Words Even and Splat [Indexed] evlhhousplat[x] Vector Load Half Word into Half Word Odd Unsigned and Splat [Indexed] evlhhossplat[x] Vector Load Half Word into Half Word Odd Signed and Splat [Indexed] evlwhe[x] Vector Load Word into Two Half Words Even [Indexed] evlwhou[x] Vector Load Word into Two Half Words Odd Unsigned (zero-extended) [Indexed] evlwhos[x] Vector Load Word into Two Half Words Odd Signed (with sign extension) [Indexed] evlwwsplat[x] Vector Load Word into Word and Splat [Indexed] evlwhsplat[x] Vector Load Word into Two Half Words and Splat [Indexed] evstdd[x] Vector Store Double of Double [Indexed] evstdw[x] Vector Store Double of Two Words [Indexed] evstdh[x] Vector Store Double of Four Half Words [Indexed] evstwhe[x] Vector Store Word of Two Half Words from Even [Indexed] evstwho[x] Vector Store Word of Two Half Words from Odd [Indexed] evstwwe[x] Vector Store Word of Word from Even [Indexed] evstwwo[x] Vector Store Word of Word from Odd [Indexed]
--- arch/powerpc/kernel/align.c | 250 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 250 insertions(+), 0 deletions(-)
arch/powerpc/kernel/align.c +250 -0
@@ -46,6 +46,8 @@ struct aligninfo {#define S 0x40/* single-precision fp or... */ #define SX 0x40/* ... byte count in XER */ #define HARD 0x80/* string, stwcx. */ +#define E4 0x40/* SPE endianness is word */ +#define E8 0x80/* SPE endianness is double word */ /* DSISR bits reported for a DCBZ instruction: */ #define DCBZ 0x5f/* 8xx/82xx dcbz faults when cache not enabled */
@@ -392,6 +394,248 @@ static int emulate_fp_pair(struct pt_regs *regs, unsigned char __user *addr,return 1 ;/* exception handled and fixed up */ } +#ifdef CONFIG_SPE + +static struct aligninfo spe_aligninfo[32 ] = { + {8 ,LD +E8 },/* 0 00 00: evldd[x] */ + {8 ,LD +E4 },/* 0 00 01: evldw[x] */ + {8 ,LD },/* 0 00 10: evldh[x] */ +INVALID ,/* 0 00 11 */ + {2 ,LD },/* 0 01 00: evlhhesplat[x] */ +INVALID ,/* 0 01 01 */ + {2 ,LD },/* 0 01 10: evlhhousplat[x] */ + {2 ,LD +SE },/* 0 01 11: evlhhossplat[x] */ + {4 ,LD },/* 0 10 00: evlwhe[x] */ +INVALID ,/* 0 10 01 */ + {4 ,LD },/* 0 10 10: evlwhou[x] */ + {4 ,LD +SE },/* 0 10 11: evlwhos[x] */ + {4 ,LD +E4 },/* 0 11 00: evlwwsplat[x] */ +INVALID ,/* 0 11 01 */ + {4 ,LD },/* 0 11 10: evlwhsplat[x] */ +INVALID ,/* 0 11 11 */ + + {8 ,ST +E8 },/* 1 00 00: evstdd[x] */ + {8 ,ST +E4 },/* 1 00 01: evstdw[x] */ + {8 ,ST },/* 1 00 10: evstdh[x] */ +INVALID ,/* 1 00 11 */ +INVALID ,/* 1 01 00 */ +INVALID ,/* 1 01 01 */ +INVALID ,/* 1 01 10 */ +INVALID ,/* 1 01 11 */ + {4 ,ST },/* 1 10 00: evstwhe[x] */ +INVALID ,/* 1 10 01 */ + {4 ,ST },/* 1 10 10: evstwho[x] */ +INVALID ,/* 1 10 11 */ + {4 ,ST +E4 },/* 1 11 00: evstwwe[x] */ +INVALID ,/* 1 11 01 */ + {4 ,ST +E4 },/* 1 11 10: evstwwo[x] */ +INVALID ,/* 1 11 11 */ +}; + +#define EVLDD 0x00 +#define EVLDW 0x01 +#define EVLDH 0x02 +#define EVLHHESPLAT 0x04 +#define EVLHHOUSPLAT 0x06 +#define EVLHHOSSPLAT 0x07 +#define EVLWHE 0x08 +#define EVLWHOU 0x0A +#define EVLWHOS 0x0B +#define EVLWWSPLAT 0x0C +#define EVLWHSPLAT 0x0E +#define EVSTDD 0x10 +#define EVSTDW 0x11 +#define EVSTDH 0x12 +#define EVSTWHE 0x18 +#define EVSTWHO 0x1A +#define EVSTWWE 0x1C +#define EVSTWWO 0x1E + +/* +* Emulate SPE loads and stores. +* Only Book-E has these instructions, and it does true little-endian, +* so we don't need the address swizzling. +*/ +static int emulate_spe (struct pt_regs *regs,unsigned int reg, +unsigned int instr) +{ +int t, ret; +union { +u64 ll; +u32 w[2 ]; +u16 h[4 ]; +u8 v[8 ]; + } data, temp; +unsigned char __user *p, *addr; +unsigned long *evr = ¤t->thread.evr[reg]; +unsigned int nb, flags; + + instr = (instr >>1 ) &0x1f ; + +/* DAR has the operand effective address */ + addr = (unsigned char __user *)regs->dar; + + nb = spe_aligninfo[instr].len; + flags = spe_aligninfo[instr].flags; + +/* Verify the address of the operand */ +if (unlikely (user_mode (regs) && + !access_ok ((flags &ST ?VERIFY_WRITE :VERIFY_READ ), + addr, nb))) +return -EFAULT ; + +/* userland only */ +if (unlikely (!user_mode (regs))) +return 0 ; + +flush_spe_to_thread (current); + +/* If we are loading, get the data from user space, else +* get it from register values +*/ +if (flags &ST ) { + data.ll =0 ; +switch (instr) { +case EVSTDD : +case EVSTDW : +case EVSTDH : + data.w[0 ] = *evr; + data.w[1 ] = regs->gpr[reg]; +break ; +case EVSTWHE : + data.h[2 ] = *evr >>16 ; + data.h[3 ] = regs->gpr[reg] >>16 ; +break ; +case EVSTWHO : + data.h[2 ] = *evr &0xffff ; + data.h[3 ] = regs->gpr[reg] &0xffff ; +break ; +case EVSTWWE : + data.w[1 ] = *evr; +break ; +case EVSTWWO : + data.w[1 ] = regs->gpr[reg]; +break ; +default : +return -EINVAL ; + } + }else { + temp.ll = data.ll =0 ; + ret =0 ; + p = addr; + +switch (nb) { +case 8 : + ret |=__get_user_inatomic (temp.v[0 ], p++); + ret |=__get_user_inatomic (temp.v[1 ], p++); + ret |=__get_user_inatomic (temp.v[2 ], p++); + ret |=__get_user_inatomic (temp.v[3 ], p++); +case 4 : + ret |=__get_user_inatomic (temp.v[4 ], p++); + ret |=__get_user_inatomic (temp.v[5 ], p++); +case 2 : + ret |=__get_user_inatomic (temp.v[6 ], p++); + ret |=__get_user_inatomic (temp.v[7 ], p++); +if (unlikely (ret)) +return -EFAULT ; + } + +switch (instr) { +case EVLDD : +case EVLDW : +case EVLDH : + data.ll = temp.ll; +break ; +case EVLHHESPLAT : + data.h[0 ] = temp.h[3 ]; + data.h[2 ] = temp.h[3 ]; +break ; +case EVLHHOUSPLAT : +case EVLHHOSSPLAT : + data.h[1 ] = temp.h[3 ]; + data.h[3 ] = temp.h[3 ]; +break ; +case EVLWHE : + data.h[0 ] = temp.h[2 ]; + data.h[2 ] = temp.h[3 ]; +break ; +case EVLWHOU : +case EVLWHOS : + data.h[1 ] = temp.h[2 ]; + data.h[3 ] = temp.h[3 ]; +break ; +case EVLWWSPLAT : + data.w[0 ] = temp.w[1 ]; + data.w[1 ] = temp.w[1 ]; +break ; +case EVLWHSPLAT : + data.h[0 ] = temp.h[2 ]; + data.h[1 ] = temp.h[2 ]; + data.h[2 ] = temp.h[3 ]; + data.h[3 ] = temp.h[3 ]; +break ; +default : +return -EINVAL ; + } + } + +if (flags &SW ) { +switch (flags &0xf0 ) { +case E8 : +SWAP (data.v[0 ], data.v[7 ]); +SWAP (data.v[1 ], data.v[6 ]); +SWAP (data.v[2 ], data.v[5 ]); +SWAP (data.v[3 ], data.v[4 ]); +break ; +case E4 : + +SWAP (data.v[0 ], data.v[3 ]); +SWAP (data.v[1 ], data.v[2 ]); +SWAP (data.v[4 ], data.v[7 ]); +SWAP (data.v[5 ], data.v[6 ]); +break ; +/* Its half word endian */ +default : +SWAP (data.v[0 ], data.v[1 ]); +SWAP (data.v[2 ], data.v[3 ]); +SWAP (data.v[4 ], data.v[5 ]); +SWAP (data.v[6 ], data.v[7 ]); +break ; + } + } + +if (flags &SE ) { + data.w[0 ] = (s16 )data.h[1 ]; + data.w[1 ] = (s16 )data.h[3 ]; + } + +/* Store result to memory or update registers */ +if (flags &ST ) { + ret =0 ; + p = addr; +switch (nb) { +case 8 : + ret |=__put_user_inatomic (data.v[0 ], p++); + ret |=__put_user_inatomic (data.v[1 ], p++); + ret |=__put_user_inatomic (data.v[2 ], p++); + ret |=__put_user_inatomic (data.v[3 ], p++); +case 4 : + ret |=__put_user_inatomic (data.v[4 ], p++); + ret |=__put_user_inatomic (data.v[5 ], p++); +case 2 : + ret |=__put_user_inatomic (data.v[6 ], p++); + ret |=__put_user_inatomic (data.v[7 ], p++); + } +if (unlikely (ret)) +return -EFAULT ; + }else { + *evr = data.w[0 ]; + regs->gpr[reg] = data.w[1 ]; + } + +return 1 ; +} +#endif /* CONFIG_SPE */ /* * Called on alignment exception. Attempts to fixup
@@ -450,6 +694,12 @@ int fix_alignment(struct pt_regs *regs)/* extract the operation and registers from the dsisr */ reg = (dsisr >>5 ) &0x1f ;/* source/dest register */ areg = dsisr &0x1f ;/* register to update */ + +#ifdef CONFIG_SPE +if ((instr >>26 ) ==0x4 ) +return emulate_spe (regs, reg, instr); +#endif + instr = (dsisr >>10 ) &0x7f ; instr |= (dsisr >>13 ) &0x60 ;
Signature · 1 line
1.5.2.4
PATCH 10/22 85xx: Add basic Uniprocessor MPC8572 DS port
Added basic board port for MPC8572 DS reference platform that is similiar to the MPC8544/33 DS reference platform in uniprocessor mode.
--- arch/powerpc/boot/dts/mpc8572ds.dts | 404 ++++++++ arch/powerpc/configs/mpc8572_ds_defconfig | 1496 +++++++++++++++++++++++++++++ arch/powerpc/platforms/85xx/mpc85xx_ds.c | 31 + arch/powerpc/sysdev/fsl_pci.c | 2 + include/linux/pci_ids.h | 2 + 5 files changed, 1935 insertions(+), 0 deletions(-) create mode 100644 arch/powerpc/boot/dts/mpc8572ds.dts create mode 100644 arch/powerpc/configs/mpc8572_ds_defconfig
arch/powerpc/boot/dts/mpc8572ds.dts new file +404 -0
@@ -0,0 +1,404 @@ +/* + * MPC8572 DS Device Tree Source + * + * Copyright 2007 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/ { + model = "fsl,MPC8572DS"; + compatible = "fsl,MPC8572DS"; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,8572@0 { + device_type = "cpu"; + reg = <0>; + d-cache-line-size = <20>; // 32 bytes + i-cache-line-size = <20>; // 32 bytes + d-cache-size = <8000>; // L1, 32K + i-cache-size = <8000>; // L1, 32K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + }; + }; + + memory { + device_type = "memory"; + reg = <00000000 00000000>; // Filled by U-Boot + }; + + soc8572@ffe00000 { + #address-cells = <1>; + #size-cells = <1>; + device_type = "soc"; + ranges = <00000000 ffe00000 00100000>; + reg = <ffe00000 00001000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed + bus-frequency = <0>; // Filled out by uboot. + + memory-controller@2000 { + compatible = "fsl,mpc8572-memory-controller"; + reg = <2000 1000>; + interrupt-parent = <&mpic>; + interrupts = <12 2>; + }; + + memory-controller@6000 { + compatible = "fsl,mpc8572-memory-controller"; + reg = <6000 1000>; + interrupt-parent = <&mpic>; + interrupts = <12 2>; + }; + + l2-cache-controller@20000 { + compatible = "fsl,mpc8572-l2-cache-controller"; + reg = <20000 1000>; + cache-line-size = <20>; // 32 bytes + cache-size = <80000>; // L2, 512K + interrupt-parent = <&mpic>; + interrupts = <10 2>; + }; + + i2c@3000 { + device_type = "i2c"; + compatible = "fsl-i2c"; + reg = <3000 100>; + interrupts = <2b 2>; + interrupt-parent = <&mpic>; + dfsrr; + }; + + i2c@3100 { + device_type = "i2c"; + compatible = "fsl-i2c"; + reg = <3100 100>; + interrupts = <2b 2>; + interrupt-parent = <&mpic>; + dfsrr; + }; + + mdio@24520 { + #address-cells = <1>; + #size-cells = <0>; + device_type = "mdio"; + compatible = "gianfar"; + reg = <24520 20>; + phy0: ethernet-phy@0 { + interrupt-parent = <&mpic>; + interrupts = <a 1>; + reg = <0>; + }; + phy1: ethernet-phy@1 { + interrupt-parent = <&mpic>; + interrupts = <a 1>; + reg = <1>; + }; + phy2: ethernet-phy@2 { + interrupt-parent = <&mpic>; + interrupts = <a 1>; + reg = <2>; + }; + phy3: ethernet-phy@3 { + interrupt-parent = <&mpic>; + interrupts = <a 1>; + reg = <3>; + }; + }; + + ethernet@24000 { + #address-cells = <1>; + #size-cells = <0>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <24000 1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <1d 2 1e 2 22 2>; + interrupt-parent = <&mpic>; + phy-handle = <&phy0>; + phy-connection-type = "rgmii-id"; + }; + + ethernet@25000 { + #address-cells = <1>; + #size-cells = <0>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <25000 1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <23 2 24 2 28 2>; + interrupt-parent = <&mpic>; + phy-handle = <&phy1>; + phy-connection-type = "rgmii-id"; + }; + + ethernet@26000 { + #address-cells = <1>; + #size-cells = <0>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <26000 1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <1f 2 20 2 21 2>; + interrupt-parent = <&mpic>; + phy-handle = <&phy2>; + phy-connection-type = "rgmii-id"; + }; + + ethernet@27000 { + #address-cells = <1>; + #size-cells = <0>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <27000 1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <25 2 26 2 27 2>; + interrupt-parent = <&mpic>; + phy-handle = <&phy3>; + phy-connection-type = "rgmii-id"; + }; + + serial@4500 { + device_type = "serial"; + compatible = "ns16550"; + reg = <4500 100>; + clock-frequency = <0>; + interrupts = <2a 2>; + interrupt-parent = <&mpic>; + }; + + serial@4600 { + device_type = "serial"; + compatible = "ns16550"; + reg = <4600 100>; + clock-frequency = <0>; + interrupts = <2a 2>; + interrupt-parent = <&mpic>; + }; + + global-utilities@e0000 { //global utilities block + compatible = "fsl,mpc8572-guts"; + reg = <e0000 1000>; + fsl,has-rstcr; + }; + + mpic: pic@40000 { + clock-frequency = <0>; + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + reg = <40000 40000>; + compatible = "chrp,open-pic"; + device_type = "open-pic"; + big-endian; + }; + }; + + pcie@ffe08000 { + compatible = "fsl,mpc8548-pcie"; + device_type = "pci"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <ffe08000 1000>; + bus-range = <0 ff>; + ranges = <02000000 0 80000000 80000000 0 20000000 + 01000000 0 00000000 ffc00000 0 00010000>; + clock-frequency = <1fca055>; + interrupt-parent = <&mpic>; + interrupts = <18 2>; + interrupt-map-mask = <fb00 0 0 0>; + interrupt-map = < + /* IDSEL 0x11 - PCI slot 1 */ + 8800 0 0 1 &mpic 2 1 + 8800 0 0 2 &mpic 3 1 + 8800 0 0 3 &mpic 4 1 + 8800 0 0 4 &mpic 1 1 + + /* IDSEL 0x12 - PCI slot 2 */ + 9000 0 0 1 &mpic 3 1 + 9000 0 0 2 &mpic 4 1 + 9000 0 0 3 &mpic 1 1 + 9000 0 0 4 &mpic 2 1 + + // IDSEL 0x1c USB + e000 0 0 0 &i8259 c 2 + e100 0 0 0 &i8259 9 2 + e200 0 0 0 &i8259 a 2 + e300 0 0 0 &i8259 b 2 + + // IDSEL 0x1d Audio + e800 0 0 0 &i8259 6 2 + + // IDSEL 0x1e Legacy + f000 0 0 0 &i8259 7 2 + f100 0 0 0 &i8259 7 2 + + // IDSEL 0x1f IDE/SATA + f800 0 0 0 &i8259 e 2 + f900 0 0 0 &i8259 5 2 + + >; + + pcie@0 { + reg = <0 0 0 0 0>; + #size-cells = <2>; + #address-cells = <3>; + device_type = "pci"; + ranges = <02000000 0 80000000 + 02000000 0 80000000 + 0 20000000 + + 01000000 0 00000000 + 01000000 0 00000000 + 0 00100000>; + uli1575@0 { + reg = <0 0 0 0 0>; + #size-cells = <2>; + #address-cells = <3>; + ranges = <02000000 0 80000000 + 02000000 0 80000000 + 0 20000000 + + 01000000 0 00000000 + 01000000 0 00000000 + 0 00100000>; + isa@1e { + device_type = "isa"; + #interrupt-cells = <2>; + #size-cells = <1>; + #address-cells = <2>; + reg = <f000 0 0 0 0>; + ranges = <1 0 01000000 0 0 + 00001000>; + interrupt-parent = <&i8259>; + + i8259: interrupt-controller@20 { + reg = <1 20 2 + 1 a0 2 + 1 4d0 2>; + interrupt-controller; + device_type = "interrupt-controller"; + #address-cells = <0>; + #interrupt-cells = <2>; + compatible = "chrp,iic"; + interrupts = <9 2>; + interrupt-parent = <&mpic>; + }; + + i8042@60 { + #size-cells = <0>; + #address-cells = <1>; + reg = <1 60 1 1 64 1>; + interrupts = <1 3 c 3>; + interrupt-parent = + <&i8259>; + + keyboard@0 { + reg = <0>; + compatible = "pnpPNP,303"; + }; + + mouse@1 { + reg = <1>; + compatible = "pnpPNP,f03"; + }; + }; + + rtc@70 { + compatible = "pnpPNP,b00"; + reg = <1 70 2>; + }; + + gpio@400 { + reg = <1 400 80>; + }; + }; + }; + }; + + }; + + pcie@ffe09000 { + compatible = "fsl,mpc8548-pcie"; + device_type = "pci"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <ffe09000 1000>; + bus-range = <0 ff>; + ranges = <02000000 0 a0000000 a0000000 0 20000000 + 01000000 0 00000000 ffc10000 0 00010000>; + clock-frequency = <1fca055>; + interrupt-parent = <&mpic>; + interrupts = <1a 2>; + interrupt-map-mask = <f800 0 0 7>; + interrupt-map = < + /* IDSEL 0x0 */ + 0000 0 0 1 &mpic 4 1 + 0000 0 0 2 &mpic 5 1 + 0000 0 0 3 &mpic 6 1 + 0000 0 0 4 &mpic 7 1 + >; + pcie@0 { + reg = <0 0 0 0 0>; + #size-cells = <2>; + #address-cells = <3>; + device_type = "pci"; + ranges = <02000000 0 a0000000 + 02000000 0 a0000000 + 0 20000000 + + 01000000 0 00000000 + 01000000 0 00000000 + 0 00100000>; + }; + }; + + pcie@ffe0a000 { + compatible = "fsl,mpc8548-pcie"; + device_type = "pci"; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <ffe0a000 1000>; + bus-range = <0 ff>; + ranges = <02000000 0 c0000000 c0000000 0 20000000 + 01000000 0 00000000 ffc20000 0 00010000>; + clock-frequency = <1fca055>; + interrupt-parent = <&mpic>; + interrupts = <1b 2>; + interrupt-map = < + /* IDSEL 0x0 */ + 0000 0 0 1 &mpic 0 1 + 0000 0 0 2 &mpic 1 1 + 0000 0 0 3 &mpic 2 1 + 0000 0 0 4 &mpic 3 1 + >; + pcie@0 { + reg = <0 0 0 0 0>; + #size-cells = <2>; + #address-cells = <3>; + device_type = "pci"; + ranges = <02000000 0 c0000000 + 02000000 0 c0000000 + 0 20000000 + + 01000000 0 00000000 + 01000000 0 00000000 + 0 00100000>; + }; + }; +};
arch/powerpc/configs/mpc8572_ds_defconfig new file +1496 -0
1,496 lines not on this page · raw message
arch/powerpc/platforms/85xx/mpc85xx_ds.c +31 -0
@@ -181,6 +181,23 @@ static int __init mpc8544_ds_probe(void) } } +/* +* Called very early, device-tree isn't unflattened +*/ +static int __init mpc8572_ds_probe (void ) +{ +unsigned long root =of_get_flat_dt_root (); + +if (of_flat_dt_is_compatible (root,"fsl,MPC8572DS" )) { +#ifdef CONFIG_PCI + primary_phb_addr =0x8000 ; +#endif +return 1 ; + }else { +return 0 ; + } +} +define_machine (mpc8544_ds) { .name = "MPC8544 DS", .probe = mpc8544_ds_probe,
@@ -194,3 +211,17 @@ define_machine(mpc8544_ds) { .calibrate_decr = generic_calibrate_decr, .progress = udbg_progress, }; + +define_machine (mpc8572_ds) { + .name = "MPC8572 DS", + .probe = mpc8572_ds_probe, + .setup_arch = mpc85xx_ds_setup_arch, + .init_IRQ = mpc85xx_ds_pic_init, +#ifdef CONFIG_PCI + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, +#endif + .get_irq = mpic_get_irq, + .restart = mpc85xx_restart, + .calibrate_decr = generic_calibrate_decr, + .progress = udbg_progress, +};
arch/powerpc/sysdev/fsl_pci.c +2 -0
@@ -255,5 +255,7 @@ DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transpareDECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8533 , quirk_fsl_pcie_transparent);DECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8544E , quirk_fsl_pcie_transparent);DECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8544 , quirk_fsl_pcie_transparent); +DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent) +DECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8572 , quirk_fsl_pcie_transparent);DECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8641 , quirk_fsl_pcie_transparent);DECLARE_PCI_FIXUP_EARLY (0x1957 ,PCI_DEVICE_ID_MPC8641D , quirk_fsl_pcie_transparent);
include/linux/pci_ids.h +2 -0
@@ -2100,6 +2100,8 @@#define PCI_DEVICE_ID_MPC8533 0x0031#define PCI_DEVICE_ID_MPC8544E 0x0032#define PCI_DEVICE_ID_MPC8544 0x0033 +#define PCI_DEVICE_ID_MPC8572E 0x0040 +#define PCI_DEVICE_ID_MPC8572 0x0041#define PCI_DEVICE_ID_MPC8641 0x7010#define PCI_DEVICE_ID_MPC8641D 0x7011
Signature · 1 line
1.5.2.4
PATCH 11/22 DTS cleanup
Removed the following cruft from .dts files:
* 32-bit in cpu node -- doesn't exist in any spec and not used by kernel
* removed built-in (chrp legacy)
* Removed #interrupt-cells in places they don't need to be set
* Fixed ranges on lite5200*
* Removed clock-frequency from i8259 pic node, not sure where this came from
* Removed big-endian from i8259 pic nodes, this was just bogus
--- arch/powerpc/boot/dts/holly.dts | 1 - arch/powerpc/boot/dts/kuroboxHD.dts | 2 -- arch/powerpc/boot/dts/kuroboxHG.dts | 2 -- arch/powerpc/boot/dts/lite5200.dts | 7 ++----- arch/powerpc/boot/dts/lite5200b.dts | 7 ++----- arch/powerpc/boot/dts/mpc7448hpc2.dts | 4 ---- arch/powerpc/boot/dts/mpc8272ads.dts | 5 ----- arch/powerpc/boot/dts/mpc8313erdb.dts | 3 --- arch/powerpc/boot/dts/mpc832x_mds.dts | 4 ---- arch/powerpc/boot/dts/mpc832x_rdb.dts | 4 ---- arch/powerpc/boot/dts/mpc8349emitx.dts | 3 --- arch/powerpc/boot/dts/mpc8349emitxgp.dts | 3 --- arch/powerpc/boot/dts/mpc834x_mds.dts | 3 --- arch/powerpc/boot/dts/mpc836x_mds.dts | 4 ---- arch/powerpc/boot/dts/mpc8540ads.dts | 3 --- arch/powerpc/boot/dts/mpc8541cds.dts | 6 ------ arch/powerpc/boot/dts/mpc8544ds.dts | 5 ----- arch/powerpc/boot/dts/mpc8548cds.dts | 5 ----- arch/powerpc/boot/dts/mpc8555cds.dts | 6 ------ arch/powerpc/boot/dts/mpc8560ads.dts | 5 ----- arch/powerpc/boot/dts/mpc8568mds.dts | 4 ---- arch/powerpc/boot/dts/mpc8641_hpcn.dts | 6 ------ arch/powerpc/boot/dts/mpc866ads.dts | 5 ----- arch/powerpc/boot/dts/mpc885ads.dts | 5 ----- arch/powerpc/boot/dts/prpmc2800.dts | 1 - 25 files changed, 4 insertions(+), 99 deletions(-)
arch/powerpc/boot/dts/holly.dts +0 -1
@@ -31,7 +31,6 @@ timebase-frequency = <2faf080>; clock-frequency = <23c34600>; bus-frequency = <bebc200>; - 32-bit; }; };
arch/powerpc/boot/dts/kuroboxHD.dts +0 -2
@@ -47,7 +47,6 @@ XXXX add flash parts, rtc, ?? soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; compatible = "mpc10x"; store-gathering = <0>; /* 0 == off, !0 == on */
@@ -101,7 +100,6 @@ XXXX add flash parts, rtc, ?? compatible = "chrp,open-pic"; interrupt-controller; reg = <80040000 40000>; - built-in; }; pci@fec00000 {
arch/powerpc/boot/dts/kuroboxHG.dts +0 -2
@@ -47,7 +47,6 @@ XXXX add flash parts, rtc, ?? soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; compatible = "mpc10x"; store-gathering = <0>; /* 0 == off, !0 == on */
@@ -101,7 +100,6 @@ XXXX add flash parts, rtc, ?? compatible = "chrp,open-pic"; interrupt-controller; reg = <80040000 40000>; - built-in; }; pci@fec00000 {
arch/powerpc/boot/dts/lite5200.dts +2 -5
@@ -37,7 +37,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -50,10 +49,9 @@ model = "fsl,mpc5200"; compatible = "mpc5200"; revision = ""; // from bootloader - #interrupt-cells = <3>; device_type = "soc"; - ranges = <0 f0000000 f0010000>; - reg = <f0000000 00010000>; + ranges = <0 f0000000 0000c000>; + reg = <f0000000 00000100>; bus-frequency = <0>; // from bootloader system-frequency = <0>; // from bootloader
@@ -69,7 +67,6 @@ device_type = "interrupt-controller"; compatible = "mpc5200-pic"; reg = <500 80>; - built-in; }; gpt@600 { // General Purpose Timer
arch/powerpc/boot/dts/lite5200b.dts +2 -5
@@ -37,7 +37,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -50,10 +49,9 @@ model = "fsl,mpc5200b"; compatible = "mpc5200"; revision = ""; // from bootloader - #interrupt-cells = <3>; device_type = "soc"; - ranges = <0 f0000000 f0010000>; - reg = <f0000000 00010000>; + ranges = <0 f0000000 0000c000>; + reg = <f0000000 00000100>; bus-frequency = <0>; // from bootloader system-frequency = <0>; // from bootloader
@@ -69,7 +67,6 @@ device_type = "interrupt-controller"; compatible = "mpc5200b-pic\0mpc5200-pic"; reg = <500 80>; - built-in; }; gpt@600 { // General Purpose Timer
arch/powerpc/boot/dts/mpc7448hpc2.dts +0 -4
@@ -31,7 +31,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot clock-frequency = <0>; // From U-Boot bus-frequency = <0>; // From U-Boot - 32-bit; }; };
@@ -44,7 +43,6 @@ tsi109@c0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "tsi-bridge"; compatible = "tsi109-bridge", "tsi108-bridge"; ranges = <00000000 c0000000 00010000>;
@@ -129,7 +127,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <7400 400>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
@@ -181,7 +178,6 @@ device_type = "pic-router"; #address-cells = <0>; #interrupt-cells = <2>; - built-in; big-endian; interrupts = <17 2>; interrupt-parent = <&mpic>;
arch/powerpc/boot/dts/mpc8272ads.dts +0 -5
@@ -29,7 +29,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; }; };
@@ -38,7 +37,6 @@ #interrupt-cells = <2>; interrupt-controller; reg = <f8200000 f8200004>; - built-in; device_type = "pci-pic"; };
@@ -56,7 +54,6 @@ soc8272@f0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <00000000 f0000000 00053000>; reg = <f0000000 10000>;
@@ -118,7 +115,6 @@ cpm@f0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "cpm"; model = "CPM2"; ranges = <00000000 00000000 20000>;
@@ -161,7 +157,6 @@ #interrupt-cells = <2>; interrupt-controller; reg = <10c00 80>; - built-in; device_type = "cpm-pic"; compatible = "CPM2"; };
arch/powerpc/boot/dts/mpc8313erdb.dts +0 -3
@@ -29,7 +29,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -41,7 +40,6 @@ soc8313@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -207,7 +205,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; }; };
arch/powerpc/boot/dts/mpc832x_mds.dts +0 -4
@@ -29,7 +29,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; }; };
@@ -46,7 +45,6 @@ soc8323@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -163,7 +161,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; };
@@ -333,7 +330,6 @@ #address-cells = <0>; #interrupt-cells = <1>; reg = <80 80>; - built-in; big-endian; interrupts = <20 8 21 8>; //high:32 low:33 interrupt-parent = < &ipic >;
arch/powerpc/boot/dts/mpc832x_rdb.dts +0 -4
@@ -29,7 +29,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; }; };
@@ -41,7 +40,6 @@ soc8323@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -132,7 +130,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; };
@@ -292,7 +289,6 @@ #address-cells = <0>; #interrupt-cells = <1>; reg = <80 80>; - built-in; big-endian; interrupts = <20 8 21 8>; //high:32 low:33 interrupt-parent = <&pic>;
arch/powerpc/boot/dts/mpc8349emitx.dts +0 -3
@@ -28,7 +28,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -40,7 +39,6 @@ soc8349@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -244,7 +242,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; }; };
arch/powerpc/boot/dts/mpc8349emitxgp.dts +0 -3
@@ -28,7 +28,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -40,7 +39,6 @@ soc8349@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -176,7 +174,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; }; };
arch/powerpc/boot/dts/mpc834x_mds.dts +0 -3
@@ -29,7 +29,6 @@ timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader - 32-bit; }; };
@@ -46,7 +45,6 @@ soc8349@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -332,7 +330,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; }; };
arch/powerpc/boot/dts/mpc836x_mds.dts +0 -4
@@ -34,7 +34,6 @@ timebase-frequency = <3EF1480>; bus-frequency = <FBC5200>; clock-frequency = <1F78A400>; - 32-bit; }; };
@@ -51,7 +50,6 @@ soc8360@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -178,7 +176,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <700 100>; - built-in; device_type = "ipic"; };
@@ -364,7 +361,6 @@ #address-cells = <0>; #interrupt-cells = <1>; reg = <80 80>; - built-in; big-endian; interrupts = <20 8 21 8>; //high:32 low:33 interrupt-parent = < &ipic >;
arch/powerpc/boot/dts/mpc8540ads.dts +0 -3
@@ -30,7 +30,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 825 MHz, from uboot - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8540@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>; // CCSRBAR 1M
@@ -268,7 +266,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc8541cds.dts +0 -6
@@ -30,7 +30,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 825 MHz, from uboot - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8541@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>; // CCSRBAR 1M
@@ -197,15 +195,12 @@ device_type = "pci"; i8259@19000 { - clock-frequency = <0>; interrupt-controller; device_type = "interrupt-controller"; reg = <19000 0 0 0 1>; #address-cells = <0>; #interrupt-cells = <2>; - built-in; compatible = "chrp,iic"; - big-endian; interrupts = <1>; interrupt-parent = <&pci1>; };
@@ -240,7 +235,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc8544ds.dts +0 -5
@@ -30,7 +30,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8544@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc";
@@ -295,12 +293,10 @@ reg = <1 20 2 1 a0 2 1 4d0 2>; - clock-frequency = <0>; interrupt-controller; device_type = "interrupt-controller"; #address-cells = <0>; #interrupt-cells = <2>; - built-in; compatible = "chrp,iic"; interrupts = <9 2>; interrupt-parent = <&mpic>;
@@ -350,7 +346,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc8548cds.dts +0 -5
@@ -30,7 +30,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 825 MHz, from uboot - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8548@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <00001000 e0001000 000ff000 80000000 80000000 10000000
@@ -318,7 +316,6 @@ interrupt-parent = <&i8259>; i8259: interrupt-controller@20 { - clock-frequency = <0>; interrupt-controller; device_type = "interrupt-controller"; reg = <1 20 2
@@ -326,7 +323,6 @@ 1 4d0 2>; #address-cells = <0>; #interrupt-cells = <2>; - built-in; compatible = "chrp,iic"; interrupts = <0 1>; interrupt-parent = <&mpic>;
@@ -394,7 +390,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc8555cds.dts +0 -6
@@ -30,7 +30,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 825 MHz, from uboot - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8555@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>; // CCSRBAR 1M
@@ -197,15 +195,12 @@ device_type = "pci"; i8259@19000 { - clock-frequency = <0>; interrupt-controller; device_type = "interrupt-controller"; reg = <19000 0 0 0 1>; #address-cells = <0>; #interrupt-cells = <2>; - built-in; compatible = "chrp,iic"; - big-endian; interrupts = <1>; interrupt-parent = <&pci1>; };
@@ -240,7 +235,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc8560ads.dts +0 -5
@@ -30,7 +30,6 @@ timebase-frequency = <04ead9a0>; bus-frequency = <13ab6680>; clock-frequency = <312c8040>; - 32-bit; }; };
@@ -42,7 +41,6 @@ soc8560@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00000200>;
@@ -227,14 +225,12 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; device_type = "open-pic"; }; cpm@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "cpm"; model = "CPM2"; ranges = <0 0 c0000>;
@@ -249,7 +245,6 @@ interrupts = <2e 2>; interrupt-parent = <&mpic>; reg = <90c00 80>; - built-in; device_type = "cpm-pic"; };
arch/powerpc/boot/dts/mpc8568mds.dts +0 -4
@@ -34,7 +34,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; }; };
@@ -51,7 +50,6 @@ soc8568@e0000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>;
@@ -258,7 +256,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
@@ -449,7 +446,6 @@ #address-cells = <0>; #interrupt-cells = <1>; reg = <80 80>; - built-in; big-endian; interrupts = <2e 2 2e 2>; //high:30 low:30 interrupt-parent = <&mpic>;
arch/powerpc/boot/dts/mpc8641_hpcn.dts +0 -6
@@ -30,7 +30,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // From uboot clock-frequency = <0>; // From uboot - 32-bit; }; PowerPC,8641@1 { device_type = "cpu";
@@ -42,7 +41,6 @@ timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // From uboot clock-frequency = <0>; // From uboot - 32-bit; }; };
@@ -54,7 +52,6 @@ soc8641@f8000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <00001000 f8001000 000ff000 80000000 80000000 20000000
@@ -291,12 +288,10 @@ reg = <1 20 2 1 a0 2 1 4d0 2>; - clock-frequency = <0>; interrupt-controller; device_type = "interrupt-controller"; #address-cells = <0>; #interrupt-cells = <2>; - built-in; compatible = "chrp,iic"; interrupts = <9 2>; interrupt-parent =
@@ -366,7 +361,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; - built-in; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian;
arch/powerpc/boot/dts/mpc866ads.dts +0 -5
@@ -30,7 +30,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; interrupts = <f 2>; // decrementer interrupt interrupt-parent = <&Mpc8xx_pic>; };
@@ -44,7 +43,6 @@ soc866@ff000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 ff000000 00100000>; reg = <ff000000 00000200>;
@@ -78,7 +76,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <0 24>; - built-in; device_type = "mpc8xx-pic"; compatible = "CPM"; };
@@ -86,7 +83,6 @@ cpm@ff000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "cpm"; model = "CPM"; ranges = <0 0 4000>;
@@ -103,7 +99,6 @@ interrupts = <5 2 0 2>; interrupt-parent = <&Mpc8xx_pic>; reg = <930 20>; - built-in; device_type = "cpm-pic"; compatible = "CPM"; };
arch/powerpc/boot/dts/mpc885ads.dts +0 -5
@@ -30,7 +30,6 @@ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; - 32-bit; interrupts = <f 2>; // decrementer interrupt interrupt-parent = <&Mpc8xx_pic>; };
@@ -44,7 +43,6 @@ soc885@ff000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "soc"; ranges = <0 ff000000 00100000>; reg = <ff000000 00000200>;
@@ -98,7 +96,6 @@ #address-cells = <0>; #interrupt-cells = <2>; reg = <0 24>; - built-in; device_type = "mpc8xx-pic"; compatible = "CPM"; };
@@ -117,7 +114,6 @@ cpm@ff000000 { #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <2>; device_type = "cpm"; model = "CPM"; ranges = <0 0 4000>;
@@ -134,7 +130,6 @@ interrupts = <5 2 0 2>; interrupt-parent = <&Mpc8xx_pic>; reg = <930 20>; - built-in; device_type = "cpm-pic"; compatible = "CPM"; };
arch/powerpc/boot/dts/prpmc2800.dts +0 -1
@@ -43,7 +43,6 @@ mv64x60@f1000000 { /* Marvell Discovery */ #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <1>; model = "mv64360"; /* Default */ compatible = "marvell,mv64x60"; clock-frequency = <7f28155>; /* 133.333333 MHz */
Signature · 1 line
1.5.2.4
PATCH 12/22 Move PCI nodes to be sibilings with SOC nodes
Updated the device trees to have the PCI nodes be at the same level as the SOC node. This is to make it so that the SOC nodes children address space is just on chip registers and not other bus memory as well.
Also, for PCIe nodes added a P2P bridge to handle the virtual P2P bridge that exists in the PHB.
--- arch/powerpc/boot/dts/lite5200.dts | 42 ++-- arch/powerpc/boot/dts/lite5200b.dts | 52 ++-- arch/powerpc/boot/dts/mpc8313erdb.dts | 60 +++--- arch/powerpc/boot/dts/mpc832x_mds.dts | 118 +++++----- arch/powerpc/boot/dts/mpc832x_rdb.dts | 66 +++--- arch/powerpc/boot/dts/mpc8349emitx.dts | 95 ++++---- arch/powerpc/boot/dts/mpc8349emitxgp.dts | 44 ++-- arch/powerpc/boot/dts/mpc834x_mds.dts | 240 +++++++++--------- arch/powerpc/boot/dts/mpc836x_mds.dts | 119 +++++----- arch/powerpc/boot/dts/mpc8540ads.dts | 172 +++++++------- arch/powerpc/boot/dts/mpc8541cds.dts | 190 +++++++------- arch/powerpc/boot/dts/mpc8544ds.dts | 372 +++++++++++++++------------- arch/powerpc/boot/dts/mpc8548cds.dts | 399 +++++++++++++++--------------- arch/powerpc/boot/dts/mpc8555cds.dts | 190 +++++++------- arch/powerpc/boot/dts/mpc8560ads.dts | 180 +++++++------- arch/powerpc/boot/dts/mpc8641_hpcn.dts | 269 +++++++++++---------- 16 files changed, 1323 insertions(+), 1285 deletions(-)
arch/powerpc/boot/dts/lite5200.dts +21 -21
@@ -182,27 +182,6 @@ interrupt-parent = <&mpc5200_pic>; }; - pci@0d00 { - #interrupt-cells = <1>; - #size-cells = <2>; - #address-cells = <3>; - device_type = "pci"; - compatible = "mpc5200-pci"; - reg = <d00 100>; - interrupt-map-mask = <f800 0 0 7>; - interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 - c000 0 0 2 &mpc5200_pic 0 0 3 - c000 0 0 3 &mpc5200_pic 0 0 3 - c000 0 0 4 &mpc5200_pic 0 0 3>; - clock-frequency = <0>; // From boot loader - interrupts = <2 8 0 2 9 0 2 a 0>; - interrupt-parent = <&mpc5200_pic>; - bus-range = <0 0>; - ranges = <42000000 0 80000000 80000000 0 20000000 - 02000000 0 a0000000 a0000000 0 10000000 - 01000000 0 00000000 b0000000 0 01000000>; - }; - spi@f00 { device_type = "spi"; compatible = "mpc5200-spi";
@@ -337,4 +316,25 @@ reg = <8000 4000>; }; }; + + pci@f0000d00 { + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + device_type = "pci"; + compatible = "mpc5200-pci"; + reg = <f0000d00 100>; + interrupt-map-mask = <f800 0 0 7>; + interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 + c000 0 0 2 &mpc5200_pic 0 0 3 + c000 0 0 3 &mpc5200_pic 0 0 3 + c000 0 0 4 &mpc5200_pic 0 0 3>; + clock-frequency = <0>; // From boot loader + interrupts = <2 8 0 2 9 0 2 a 0>; + interrupt-parent = <&mpc5200_pic>; + bus-range = <0 0>; + ranges = <42000000 0 80000000 80000000 0 20000000 + 02000000 0 a0000000 a0000000 0 10000000 + 01000000 0 00000000 b0000000 0 01000000>; + }; };
arch/powerpc/boot/dts/lite5200b.dts +26 -26
62 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8313erdb.dts +30 -30
70 lines not on this page · raw message
arch/powerpc/boot/dts/mpc832x_mds.dts +59 -59
128 lines not on this page · raw message
arch/powerpc/boot/dts/mpc832x_rdb.dts +33 -33
76 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8349emitx.dts +49 -46
105 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8349emitxgp.dts +22 -22
54 lines not on this page · raw message
arch/powerpc/boot/dts/mpc834x_mds.dts +120 -120
250 lines not on this page · raw message
arch/powerpc/boot/dts/mpc836x_mds.dts +59 -60
131 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8540ads.dts +86 -86
190 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8541cds.dts +95 -95
206 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8544ds.dts +196 -176
419 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8548cds.dts +203 -196
428 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8555cds.dts +95 -95
206 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8560ads.dts +90 -90
190 lines not on this page · raw message
arch/powerpc/boot/dts/mpc8641_hpcn.dts +139 -130
308 lines not on this page · raw message
Signature · 1 line
1.5.2.4
PATCH 13/22 83xx: Removed PCI exclude of PHB
Now that the generic code doesn't assign resources for Freescale PHBs we dont have to explicitly exclude it.
--- arch/powerpc/platforms/83xx/mpc8313_rdb.c | 2 -- arch/powerpc/platforms/83xx/mpc832x_mds.c | 1 - arch/powerpc/platforms/83xx/mpc832x_rdb.c | 2 -- arch/powerpc/platforms/83xx/mpc834x_itx.c | 2 -- arch/powerpc/platforms/83xx/mpc834x_mds.c | 2 -- arch/powerpc/platforms/83xx/mpc836x_mds.c | 1 - arch/powerpc/platforms/83xx/mpc83xx.h | 2 -- arch/powerpc/platforms/83xx/pci.c | 7 ------- 8 files changed, 0 insertions(+), 19 deletions(-)
arch/powerpc/platforms/83xx/mpc8313_rdb.c +0 -2
@@ -45,8 +45,6 @@ static void __init mpc8313_rdb_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif mpc831x_usb_cfg (); }
arch/powerpc/platforms/83xx/mpc832x_mds.c +0 -1
@@ -75,7 +75,6 @@ static void __init mpc832x_sys_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc832x_rdb.c +0 -2
@@ -49,8 +49,6 @@ static void __init mpc832x_rdb_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc834x_itx.c +0 -2
@@ -54,8 +54,6 @@ static void __init mpc834x_itx_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif mpc834x_usb_cfg ();
arch/powerpc/platforms/83xx/mpc834x_mds.c +0 -2
@@ -85,8 +85,6 @@ static void __init mpc834x_mds_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif mpc834xemds_usb_cfg ();
arch/powerpc/platforms/83xx/mpc836x_mds.c +0 -1
@@ -81,7 +81,6 @@ static void __init mpc836x_mds_setup_arch(void)#ifdef CONFIG_PCI for (np =NULL ; (np =of_find_node_by_type (np,"pci" )) !=NULL ;)mpc83xx_add_bridge (np); - ppc_md.pci_exclude_device = mpc83xx_exclude_device;#endif #ifdef CONFIG_QUICC_ENGINE
arch/powerpc/platforms/83xx/mpc83xx.h +0 -2
@@ -49,8 +49,6 @@*/ extern int mpc83xx_add_bridge (struct device_node *dev); -extern int mpc83xx_exclude_device (struct pci_controller *hose, -u_char bus,u_char devfn);extern void mpc83xx_restart (char *cmd);extern long mpc83xx_time_init (void );extern int mpc834x_usb_cfg (void );
arch/powerpc/platforms/83xx/pci.c +0 -7
@@ -33,13 +33,6 @@ #define DBG(x...)#endif -int mpc83xx_exclude_device (struct pci_controller *hose,u_char bus,u_char devfn) -{ -if ((bus == hose->first_busno) &&PCI_SLOT (devfn) ==0 ) -return PCIBIOS_DEVICE_NOT_FOUND ; -return PCIBIOS_SUCCESSFUL ; -} -int __init mpc83xx_add_bridge (struct device_node *dev) {int len;
Signature · 1 line
1.5.2.4
PATCH 14/22 Add cpu feature for SPE handling
Make it so that SPE support can be determined at runtime. This is similiar to how we handle AltiVec. This allows us to have SPE support built in and work on processors with and without SPE.
--- arch/powerpc/kernel/cputable.c | 23 +++++++---------------- arch/powerpc/kernel/entry_32.S | 4 ++++ arch/powerpc/kernel/process.c | 15 +++++++++++---- arch/powerpc/kernel/ptrace.c | 6 ++---- include/asm-powerpc/cputable.h | 26 ++++++++++++++++++++++---- 5 files changed, 46 insertions(+), 28 deletions(-)
arch/powerpc/kernel/cputable.c +7 -16
@@ -68,15 +68,6 @@ extern void __restore_cpu_ppc970(void);#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ PPC_FEATURE_BOOKE) -/* We only set the spe features if the kernel was compiled with -* spe support -*/ -#ifdef CONFIG_SPE -#define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE -#else -#define PPC_FEATURE_SPE_COMP 0 -#endif - static struct cpu_spec cpu_specs[] = { #ifdef CONFIG_PPC64 { /* Power3 */
@@ -1261,8 +1252,8 @@ static struct cpu_spec cpu_specs[] = {/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ .cpu_features = CPU_FTRS_E200, .cpu_user_features =COMMON_USER_BOOKE | -PPC_FEATURE_SPE_COMP | -PPC_FEATURE_HAS_EFP_SINGLE | +PPC_FEATURE_HAS_SPE_COMP | +PPC_FEATURE_HAS_EFP_SINGLE_COMP | PPC_FEATURE_UNIFIED_CACHE, .dcache_bsize = 32, .platform = "ppc5554",
@@ -1274,8 +1265,8 @@ static struct cpu_spec cpu_specs[] = {/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ .cpu_features = CPU_FTRS_E500, .cpu_user_features =COMMON_USER_BOOKE | -PPC_FEATURE_SPE_COMP | - PPC_FEATURE_HAS_EFP_SINGLE, +PPC_FEATURE_HAS_SPE_COMP | + PPC_FEATURE_HAS_EFP_SINGLE_COMP, .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 4,
@@ -1290,9 +1281,9 @@ static struct cpu_spec cpu_specs[] = {/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */ .cpu_features = CPU_FTRS_E500_2, .cpu_user_features =COMMON_USER_BOOKE | -PPC_FEATURE_SPE_COMP | -PPC_FEATURE_HAS_EFP_SINGLE | - PPC_FEATURE_HAS_EFP_DOUBLE, +PPC_FEATURE_HAS_SPE_COMP | +PPC_FEATURE_HAS_EFP_SINGLE_COMP | + PPC_FEATURE_HAS_EFP_DOUBLE_COMP, .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 4,
arch/powerpc/kernel/entry_32.S +4 -0
@@ -504,9 +504,11 @@ BEGIN_FTR_SECTION END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) #endif /* CONFIG_ALTIVEC */ #ifdef CONFIG_SPE +BEGIN_FTR_SECTION oris r0,r0,MSR_SPE@h /* Disable SPE */ mfspr r12,SPRN_SPEFSCR /* save spefscr register value */ stw r12,THREAD+THREAD_SPEFSCR(r2) +END_FTR_SECTION_IFSET(CPU_FTR_SPE) #endif /* CONFIG_SPE */ and. r0,r0,r11 /* FP or altivec or SPE enabled? */ beq+ 1f
@@ -542,8 +544,10 @@ BEGIN_FTR_SECTION END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) #endif /* CONFIG_ALTIVEC */ #ifdef CONFIG_SPE +BEGIN_FTR_SECTION lwz r0,THREAD+THREAD_SPEFSCR(r2) mtspr SPRN_SPEFSCR,r0 /* restore SPEFSCR reg */ +END_FTR_SECTION_IFSET(CPU_FTR_SPE) #endif /* CONFIG_SPE */ lwz r0,_CCR(r1)
arch/powerpc/kernel/process.c +11 -4
@@ -669,9 +669,13 @@ int set_fpexc_mode(struct task_struct *tsk, unsigned int val)* mode (asyn, precise, disabled) for 'Classic' FP. */ if (val &PR_FP_EXC_SW_ENABLE ) {#ifdef CONFIG_SPE - tsk->thread.fpexc_mode = val & - (PR_FP_EXC_SW_ENABLE |PR_FP_ALL_EXCEPT ); -return 0 ; +if (cpu_has_feature (CPU_FTR_SPE )) { + tsk->thread.fpexc_mode = val & + (PR_FP_EXC_SW_ENABLE |PR_FP_ALL_EXCEPT ); +return 0 ; + }else { +return -EINVAL ; + }#else return -EINVAL ;#endif
@@ -697,7 +701,10 @@ int get_fpexc_mode(struct task_struct *tsk, unsigned long adr) if (tsk->thread.fpexc_mode & PR_FP_EXC_SW_ENABLE)#ifdef CONFIG_SPE - val = tsk->thread.fpexc_mode; +if (cpu_has_feature (CPU_FTR_SPE )) + val = tsk->thread.fpexc_mode; +else +return -EINVAL ;#else return -EINVAL ;#endif
arch/powerpc/kernel/ptrace.c +2 -4
@@ -576,8 +576,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)#ifdef CONFIG_SPE case PTRACE_GETEVRREGS :/* Get the child spe register state. */ -if (child->thread.regs->msr &MSR_SPE ) -giveup_spe (child); +flush_spe_to_thread (child); ret =get_evrregs ((unsigned long __user *)data, child);break ;
@@ -585,8 +584,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)/* Set the child spe register state. */ /* this is to clear the MSR_SPE bit to force a reload * of register state from memory */ -if (child->thread.regs->msr &MSR_SPE ) -giveup_spe (child); +flush_spe_to_thread (child); ret =set_evrregs (child, (unsigned long __user *)data);break ;#endif
include/asm-powerpc/cputable.h +22 -4
@@ -136,6 +136,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,#define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000)#define CPU_FTR_FPU_UNAVAILABLE ASM_CONST(0x0000000000800000)#define CPU_FTR_UNIFIED_ID_CACHE ASM_CONST(0x0000000001000000) +#define CPU_FTR_SPE ASM_CONST(0x0000000002000000)/* * Add the 64-bit processor unique features in the top half of the word;
@@ -180,6 +181,21 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,#define PPC_FEATURE_HAS_ALTIVEC_COMP 0#endif +/* We only set the spe features if the kernel was compiled with spe +* support +*/ +#ifdef CONFIG_SPE +#define CPU_FTR_SPE_COMP CPU_FTR_SPE +#define PPC_FEATURE_HAS_SPE_COMP PPC_FEATURE_HAS_SPE +#define PPC_FEATURE_HAS_EFP_SINGLE_COMP PPC_FEATURE_HAS_EFP_SINGLE +#define PPC_FEATURE_HAS_EFP_DOUBLE_COMP PPC_FEATURE_HAS_EFP_DOUBLE +#else +#define CPU_FTR_SPE_COMP 0 +#define PPC_FEATURE_HAS_SPE_COMP 0 +#define PPC_FEATURE_HAS_EFP_SINGLE_COMP 0 +#define PPC_FEATURE_HAS_EFP_DOUBLE_COMP 0 +#endif +/* We need to mark all pages as being coherent if we're SMP or we * have a 74[45]x and an MPC107 host bridge. Also 83xx requires * it for PCI "streaming/prefetch" to work properly.
@@ -310,10 +326,12 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,#define CPU_FTRS_8XX (CPU_FTR_USE_TB)#define CPU_FTRS_40X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN)#define CPU_FTRS_44X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) -#define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ - CPU_FTR_COHERENT_ICACHE | CPU_FTR_UNIFIED_ID_CACHE) -#define CPU_FTRS_E500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) -#define CPU_FTRS_E500_2 (CPU_FTR_USE_TB | \ +#define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ + CPU_FTR_NODSISRALIGN | CPU_FTR_COHERENT_ICACHE | \ + CPU_FTR_UNIFIED_ID_CACHE) +#define CPU_FTRS_E500 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ + CPU_FTR_NODSISRALIGN) +#define CPU_FTRS_E500_2 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN)#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN)
Signature · 1 line
1.5.2.4
PATCH 15/22 Fix modpost warnings from head*.S on ppc32
We get warnings like the following from the various ppc32 head*.S files:
WARNING: vmlinux.o(.text+0x358): Section mismatch: reference to .init.text:early_init (between 'skpinv' and 'interrupt_base')
WARNING: vmlinux.o(.text+0x380): Section mismatch: reference to .init.text:machine_init (between 'skpinv' and 'interrupt_base')
WARNING: vmlinux.o(.text+0x384): Section mismatch: reference to .init.text:MMU_init (between 'skpinv' and 'interrupt_base')
WARNING: vmlinux.o(.text+0x3aa): Section mismatch: reference to .init.text:start_kernel (between 'skpinv' and 'interrupt_base')
WARNING: vmlinux.o(.text+0x3ae): Section mismatch: reference to .init.text:start_kernel (between 'skpinv' and 'interrupt_base')
Added a .text.head section simliar to what other architectures do since modpost already excludes this from its warnings.
--- arch/powerpc/kernel/head_32.S | 17 +++++++---------- arch/powerpc/kernel/head_40x.S | 12 ++++++------ arch/powerpc/kernel/head_44x.S | 6 +++--- arch/powerpc/kernel/head_8xx.S | 9 +++------ arch/powerpc/kernel/head_fsl_booke.S | 6 +++--- arch/powerpc/kernel/vmlinux.lds.S | 2 ++ include/asm-powerpc/ppc_asm.h | 4 ++++ 7 files changed, 28 insertions(+), 28 deletions(-)
arch/powerpc/kernel/head_32.S +7 -10
@@ -48,20 +48,17 @@ mtspr SPRN_DBAT##n##L,RB; \ 1: - .text + .section .text.head, "ax" .stabs "arch/powerpc/kernel/",N_SO,0,0,0f .stabs "head_32.S",N_SO,0,0,0f 0: - .globl _stext -_stext: +_ENTRY(_stext); /* * _start is defined this way because the XCOFF loader in the OpenFirmware * on the powermac expects the entry point to be a procedure descriptor. */ - .text - .globl _start -_start: +_ENTRY(_start); /* * These are here for legacy reasons, the kernel used to * need to look like a coff function entry for the pmac
@@ -841,7 +838,7 @@ relocate_kernel: * r3 = dest addr, r4 = source addr, r5 = copy limit, r6 = start offset * on exit, r3, r4, r5 are unchanged, r6 is updated to be >= r5. */ -_GLOBAL(copy_and_flush) +_ENTRY(copy_and_flush) addi r5,r5,-4 addi r6,r6,-4 4: li r0,L1_CACHE_BYTES/4
@@ -954,9 +951,9 @@ __secondary_start: * included in CONFIG_6xx */ #if !defined(CONFIG_6xx) -_GLOBAL(__save_cpu_setup) +_ENTRY(__save_cpu_setup) blr -_GLOBAL(__restore_cpu_setup) +_ENTRY(__restore_cpu_setup) blr #endif /* !defined(CONFIG_6xx) */
@@ -1080,7 +1077,7 @@ start_here: /* * Set up the segment registers for a new context. */ -_GLOBAL(set_context) +_ENTRY(set_context) mulli r3,r3,897 /* multiply context by skew factor */ rlwinm r3,r3,4,8,27 /* VSID = (context & 0xfffff) << 4 */ addis r3,r3,0x6000 /* Set Ks, Ku bits */
arch/powerpc/kernel/head_40x.S +6 -6
@@ -52,9 +52,9 @@ * * This is all going to change RSN when we add bi_recs....... -- Dan */ - .text -_GLOBAL(_stext) -_GLOBAL(_start) + .section .text.head, "ax" +_ENTRY(_stext); +_ENTRY(_start); /* Save parameters we are passed. */
@@ -89,9 +89,9 @@ turn_on_mmu: */ . = 0xc0 crit_save: -_GLOBAL(crit_r10) +_ENTRY(crit_r10) .space 4 -_GLOBAL(crit_r11) +_ENTRY(crit_r11) .space 4 /*
@@ -814,7 +814,7 @@ finish_tlb_load: * The PowerPC 4xx family of processors do not have an FPU, so this just * returns. */ -_GLOBAL(giveup_fpu) +_ENTRY(giveup_fpu) blr /* This is where the main kernel code starts.
arch/powerpc/kernel/head_44x.S +3 -3
@@ -50,9 +50,9 @@ * r7 - End of kernel command line string * */ - .text -_GLOBAL(_stext) -_GLOBAL(_start) + .section .text.head, "ax" +_ENTRY(_stext); +_ENTRY(_start); /* * Reserve a word at a fixed location to store the address * of abatron_pteptrs
arch/powerpc/kernel/head_8xx.S +3 -6
@@ -38,12 +38,9 @@ #else #define DO_8xx_CPU6(val, reg) #endif - .text - .globl _stext -_stext: - .text - .globl _start -_start: + .section .text.head, "ax" +_ENTRY(_stext); +_ENTRY(_start); /* MPC8xx * This port was done on an MBX board with an 860. Right now I only
arch/powerpc/kernel/head_fsl_booke.S +3 -3
@@ -52,9 +52,9 @@ * r7 - End of kernel command line string * */ - .text -_GLOBAL(_stext) -_GLOBAL(_start) + .section .text.head, "ax" +_ENTRY(_stext); +_ENTRY(_start); /* * Reserve a word at a fixed location to store the address * of abatron_pteptrs
arch/powerpc/kernel/vmlinux.lds.S +2 -0
@@ -34,6 +34,8 @@ SECTIONS /* Text and gots */ .text : { + ALIGN_FUNCTION(); + *(.text.head) _text = .; TEXT_TEXT SCHED_TEXT
include/asm-powerpc/ppc_asm.h +4 -0
@@ -209,6 +209,10 @@ GLUE(.,name):#else /* 32-bit */ +#define _ENTRY (n) \ + .globl n; \ +n: +#define _GLOBAL (n) \ .text; \ .stabs __stringify(n:F-1),N_FUN,0,0,n;\
Signature · 1 line
1.5.2.4
PATCH 16/22 Add clrbits8 and setbits8.
From: Scott Wood <[email protected]>
These I/O accessors will be used in code under drivers/, which is expected to still work in arch/ppc.
--- include/asm-ppc/io.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
include/asm-ppc/io.h +3 -0
@@ -553,4 +553,7 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);#define setbits16 (_addr, _v) out_be16((_addr), in_be16(_addr) | (_v))#define clrbits16 (_addr, _v) out_be16((_addr), in_be16(_addr) & ~(_v)) +#define setbits8 (_addr, _v) out_8((_addr), in_8(_addr) | (_v)) +#define clrbits8 (_addr, _v) out_8((_addr), in_8(_addr) & ~(_v)) +#endif /* __KERNEL__ */
Signature · 1 line
1.5.2.4
PATCH 17/22 QE: extern par_io_config_pin and par_io_data_set funcs
From: Anton Vorontsov <[email protected]>
This is needed to configure and control QE pario pins from the kernel.
--- include/asm-powerpc/qe.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
include/asm-powerpc/qe.h +3 -0
@@ -32,6 +32,9 @@extern void qe_reset (void );extern int par_io_init (struct device_node *np);extern int par_io_of_config (struct device_node *np); +extern int par_io_config_pin (u8 port,u8 pin,int dir,int open_drain, +int assignment,int has_irq); +extern int par_io_data_set (u8 port,u8 pin,u8 val);/* QE internal API */ int qe_issue_cmd (u32 cmd,u32 device,u8 mcn_protocol,u32 cmd_input);
Signature · 1 line
1.5.2.4
PATCH 18/22 add clrsetbits macros
From: Timur Tabi <[email protected]>
This patch adds the clrsetbits_xxx() macros, which are used to set and clear multiple bits in a single read-modify-write operation. Specify the bits to clear in the 'clear' parameter and the bits to set in the 'set' parameter. These macros can also be used to set a multiple-bit bit pattern using a mask, by specifying the mask in the 'clear' parameter and the new bit pattern in the 'set' parameter. There are big-endian and little-endian versions for 8, 16, 32, and 64 bits.
--- include/asm-powerpc/io.h | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-)
include/asm-powerpc/io.h +23 -0
@@ -737,6 +737,29 @@ static inline void * bus_to_virt(unsigned long address)#define setbits8 (_addr, _v) out_8((_addr), in_8(_addr) | (_v))#define clrbits8 (_addr, _v) out_8((_addr), in_8(_addr) & ~(_v)) +/* Clear and set bits in one shot. These macros can be used to clear and +* set multiple bits in a register using a single read-modify-write. These +* macros can also be used to set a multiple-bit bit pattern using a mask, +* by specifying the mask in the 'clear' parameter and the new bit pattern +* in the 'set' parameter. +*/ + +#define clrsetbits (type, addr, clear, set) \ + out_##type((addr), (in_##type(addr) & ~(clear)) | (set)) + +#ifdef __powerpc64__ +#define clrsetbits_be64 (addr, clear, set) clrsetbits(be64, addr, clear, set) +#define clrsetbits_le64 (addr, clear, set) clrsetbits(le64, addr, clear, set) +#endif + +#define clrsetbits_be32 (addr, clear, set) clrsetbits(be32, addr, clear, set) +#define clrsetbits_le32 (addr, clear, set) clrsetbits(le32, addr, clear, set) + +#define clrsetbits_be16 (addr, clear, set) clrsetbits(be16, addr, clear, set) +#define clrsetbits_le16 (addr, clear, set) clrsetbits(le32, addr, clear, set) + +#define clrsetbits_8 (addr, clear, set) clrsetbits(8, addr, clear, set) +#endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_IO_H */
Signature · 1 line
1.5.2.4
PATCH 19/22 86xx: Fix definition of global-utilites structure
From: Timur Tabi <[email protected]>
The current definition of struct ccsr_guts in immap_86xx.h was for 85xx. This patch fixes that and replaces the vague integer types with sized types of the correct endianness. The unused struct ccsr_pci is also deleted.
--- include/asm-powerpc/immap_86xx.h | 151 ++++++++++++-------------------------- 1 files changed, 46 insertions(+), 105 deletions(-)
include/asm-powerpc/immap_86xx.h +46 -105
@@ -1,124 +1,65 @@ -/* +/** * MPC86xx Internal Memory Map * -* Author: Jeff Brown +* Authors: Jeff Brown +* Timur Tabi <[email protected]> * -* Copyright 2004 Freescale Semiconductor, Inc +* Copyright 2004,2007 Freescale Semiconductor, Inc * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * +* This header file defines structures for various 86xx SOC devices that are +* used by multiple source files. */ #ifndef __ASM_POWERPC_IMMAP_86XX_H__#define __ASM_POWERPC_IMMAP_86XX_H__#ifdef __KERNEL__ -/* Eventually this should define all the IO block registers in 86xx */ - -/* PCI Registers */ -typedef struct ccsr_pci { -uint cfg_addr;/* 0x.000 - PCI Configuration Address Register */ -uint cfg_data;/* 0x.004 - PCI Configuration Data Register */ -uint int_ack;/* 0x.008 - PCI Interrupt Acknowledge Register */ -char res1[3060 ]; -uint potar0;/* 0x.c00 - PCI Outbound Transaction Address Register 0 */ -uint potear0;/* 0x.c04 - PCI Outbound Translation Extended Address Register 0 */ -uint powbar0;/* 0x.c08 - PCI Outbound Window Base Address Register 0 */ -char res2[4 ]; -uint powar0;/* 0x.c10 - PCI Outbound Window Attributes Register 0 */ -char res3[12 ]; -uint potar1;/* 0x.c20 - PCI Outbound Transaction Address Register 1 */ -uint potear1;/* 0x.c24 - PCI Outbound Translation Extended Address Register 1 */ -uint powbar1;/* 0x.c28 - PCI Outbound Window Base Address Register 1 */ -char res4[4 ]; -uint powar1;/* 0x.c30 - PCI Outbound Window Attributes Register 1 */ -char res5[12 ]; -uint potar2;/* 0x.c40 - PCI Outbound Transaction Address Register 2 */ -uint potear2;/* 0x.c44 - PCI Outbound Translation Extended Address Register 2 */ -uint powbar2;/* 0x.c48 - PCI Outbound Window Base Address Register 2 */ -char res6[4 ]; -uint powar2;/* 0x.c50 - PCI Outbound Window Attributes Register 2 */ -char res7[12 ]; -uint potar3;/* 0x.c60 - PCI Outbound Transaction Address Register 3 */ -uint potear3;/* 0x.c64 - PCI Outbound Translation Extended Address Register 3 */ -uint powbar3;/* 0x.c68 - PCI Outbound Window Base Address Register 3 */ -char res8[4 ]; -uint powar3;/* 0x.c70 - PCI Outbound Window Attributes Register 3 */ -char res9[12 ]; -uint potar4;/* 0x.c80 - PCI Outbound Transaction Address Register 4 */ -uint potear4;/* 0x.c84 - PCI Outbound Translation Extended Address Register 4 */ -uint powbar4;/* 0x.c88 - PCI Outbound Window Base Address Register 4 */ -char res10[4 ]; -uint powar4;/* 0x.c90 - PCI Outbound Window Attributes Register 4 */ -char res11[268 ]; -uint pitar3;/* 0x.da0 - PCI Inbound Translation Address Register 3 */ -char res12[4 ]; -uint piwbar3;/* 0x.da8 - PCI Inbound Window Base Address Register 3 */ -uint piwbear3;/* 0x.dac - PCI Inbound Window Base Extended Address Register 3 */ -uint piwar3;/* 0x.db0 - PCI Inbound Window Attributes Register 3 */ -char res13[12 ]; -uint pitar2;/* 0x.dc0 - PCI Inbound Translation Address Register 2 */ -char res14[4 ]; -uint piwbar2;/* 0x.dc8 - PCI Inbound Window Base Address Register 2 */ -uint piwbear2;/* 0x.dcc - PCI Inbound Window Base Extended Address Register 2 */ -uint piwar2;/* 0x.dd0 - PCI Inbound Window Attributes Register 2 */ -char res15[12 ]; -uint pitar1;/* 0x.de0 - PCI Inbound Translation Address Register 1 */ -char res16[4 ]; -uint piwbar1;/* 0x.de8 - PCI Inbound Window Base Address Register 1 */ -char res17[4 ]; -uint piwar1;/* 0x.df0 - PCI Inbound Window Attributes Register 1 */ -char res18[12 ]; -uint err_dr;/* 0x.e00 - PCI Error Detect Register */ -uint err_cap_dr;/* 0x.e04 - PCI Error Capture Disable Register */ -uint err_en;/* 0x.e08 - PCI Error Enable Register */ -uint err_attrib;/* 0x.e0c - PCI Error Attributes Capture Register */ -uint err_addr;/* 0x.e10 - PCI Error Address Capture Register */ -uint err_ext_addr;/* 0x.e14 - PCI Error Extended Address Capture Register */ -uint err_dl;/* 0x.e18 - PCI Error Data Low Capture Register */ -uint err_dh;/* 0x.e1c - PCI Error Data High Capture Register */ -uint gas_timr;/* 0x.e20 - PCI Gasket Timer Register */ -uint pci_timr;/* 0x.e24 - PCI Timer Register */ -char res19[472 ]; -}ccsr_pci_t ; -/* Global Utility Registers */ -typedef struct ccsr_guts { -uint porpllsr;/* 0x.0000 - POR PLL Ratio Status Register */ -uint porbmsr;/* 0x.0004 - POR Boot Mode Status Register */ -uint porimpscr;/* 0x.0008 - POR I/O Impedance Status and Control Register */ -uint pordevsr;/* 0x.000c - POR I/O Device Status Register */ -uint pordbgmsr;/* 0x.0010 - POR Debug Mode Status Register */ -char res1[12 ]; -uint gpporcr;/* 0x.0020 - General-Purpose POR Configuration Register */ -char res2[12 ]; -uint gpiocr;/* 0x.0030 - GPIO Control Register */ -char res3[12 ]; -uint gpoutdr;/* 0x.0040 - General-Purpose Output Data Register */ -char res4[12 ]; -uint gpindr;/* 0x.0050 - General-Purpose Input Data Register */ -char res5[12 ]; -uint pmuxcr;/* 0x.0060 - Alternate Function Signal Multiplex Control */ -char res6[12 ]; -uint devdisr;/* 0x.0070 - Device Disable Control */ -char res7[12 ]; -uint powmgtcsr;/* 0x.0080 - Power Management Status and Control Register */ -char res8[12 ]; -uint mcpsumr;/* 0x.0090 - Machine Check Summary Register */ -char res9[12 ]; -uint pvr;/* 0x.00a0 - Processor Version Register */ -uint svr;/* 0x.00a4 - System Version Register */ -char res10[3416 ]; -uint clkocr;/* 0x.0e00 - Clock Out Select Register */ -char res11[12 ]; -uint ddrdllcr;/* 0x.0e10 - DDR DLL Control Register */ -char res12[12 ]; -uint lbcdllcr;/* 0x.0e20 - LBC DLL Control Register */ -char res13[61916 ]; -}ccsr_guts_t ; +struct ccsr_guts { +__be32 porpllsr;/* 0x.0000 - POR PLL Ratio Status Register */ +__be32 porbmsr;/* 0x.0004 - POR Boot Mode Status Register */ +__be32 porimpscr;/* 0x.0008 - POR I/O Impedance Status and Control Register */ +__be32 pordevsr;/* 0x.000c - POR I/O Device Status Register */ +__be32 pordbgmsr;/* 0x.0010 - POR Debug Mode Status Register */ +u8 res1[0x20 -0x14 ]; +__be32 porcir;/* 0x.0020 - POR Configuration Information Register */ +u8 res2[0x30 -0x24 ]; +__be32 gpiocr;/* 0x.0030 - GPIO Control Register */ +u8 res3[0x40 -0x34 ]; +__be32 gpoutdr;/* 0x.0040 - General-Purpose Output Data Register */ +u8 res4[0x50 -0x44 ]; +__be32 gpindr;/* 0x.0050 - General-Purpose Input Data Register */ +u8 res5[0x60 -0x54 ]; +__be32 pmuxcr;/* 0x.0060 - Alternate Function Signal Multiplex Control */ +u8 res6[0x70 -0x64 ]; +__be32 devdisr;/* 0x.0070 - Device Disable Control */ +u8 res7[0x80 -0x74 ]; +__be32 powmgtcsr;/* 0x.0080 - Power Management Status and Control Register */ +u8 res8[0x90 -0x84 ]; +__be32 mcpsumr;/* 0x.0090 - Machine Check Summary Register */ +__be32 rstrscr;/* 0x.0094 - Reset Request Status and Control Register */ +u8 res9[0xA0 -0x98 ]; +__be32 pvr;/* 0x.00a0 - Processor Version Register */ +__be32 svr;/* 0x.00a4 - System Version Register */ +u8 res10[0xB0 -0xA8 ]; +__be32 rstcr;/* 0x.00b0 - Reset Control Register */ +u8 res11[0xB20 -0xB4 ]; +__be32 ddr1clkdr;/* 0x.0b20 - DDRC1 Clock Disable Register */ +__be32 ddr2clkdr;/* 0x.0b24 - DDRC2 Clock Disable Register */ +u8 res12[0xE00 -0xB28 ]; +__be32 clkocr;/* 0x.0e00 - Clock Out Select Register */ +u8 res13[0xF04 -0xE04 ]; +__be32 srds1cr0;/* 0x.0f04 - SerDes1 Control Register 0 */ +__be32 srds1cr1;/* 0x.0f08 - SerDes1 Control Register 0 */ +u8 res14[0xF40 -0xF0C ]; +__be32 srds2cr0;/* 0x.0f40 - SerDes1 Control Register 0 */ +__be32 srds2cr1;/* 0x.0f44 - SerDes1 Control Register 0 */ +};#endif /* __ASM_POWERPC_IMMAP_86XX_H__ */ #endif /* __KERNEL__ */
Signature · 1 line
1.5.2.4
PATCH 20/22 52xx: Fix mpc52xx_uart_of_assign to use correct index
From: John Rigby <[email protected]>
Use idx as index into mpc52xx_uart_nodes instead of i
--- drivers/serial/mpc52xx_uart.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/serial/mpc52xx_uart.c +1 -1
@@ -1051,7 +1051,7 @@ mpc52xx_uart_of_assign(struct device_node *np, int idx)/* If the slot is already occupied, then swap slots */ if (mpc52xx_uart_nodes[idx] && (free_idx !=-1 )) mpc52xx_uart_nodes[free_idx] = mpc52xx_uart_nodes[idx]; - mpc52xx_uart_nodes[i] = np; + mpc52xx_uart_nodes[idx] = np; } static void
Signature · 1 line
1.5.2.4
PATCH 21/22 fsl_soc: add support for fsl_spi
From: Anton Vorontsov <[email protected]>
Add helper function to setup SPI bus/device information
--- arch/powerpc/sysdev/fsl_soc.c | 87 +++++++++++++++++++++++++++++++++++++++++ arch/powerpc/sysdev/fsl_soc.h | 7 +++ 2 files changed, 94 insertions(+), 0 deletions(-)
arch/powerpc/sysdev/fsl_soc.c +87 -0
@@ -24,6 +24,7 @@#include <linux/platform_device.h> #include <linux/of_platform.h> #include <linux/phy.h> +#include <linux/spi/spi.h> #include <linux/fsl_devices.h> #include <linux/fs_enet_pd.h> #include <linux/fs_uart_pd.h>
@@ -1199,3 +1200,89 @@ err:arch_initcall (cpm_smc_uart_of_init);#endif /* CONFIG_8xx */ + +int __init fsl_spi_init (struct spi_board_info *board_infos, +unsigned int num_board_infos, +void (*activate_cs)(u8 cs,u8 polarity), +void (*deactivate_cs)(u8 cs,u8 polarity)) +{ +struct device_node *np; +unsigned int i; +const u32 *sysclk; + + np =of_find_node_by_type (NULL ,"qe" ); +if (!np) +return -ENODEV ; + + sysclk =of_get_property (np,"bus-frequency" ,NULL ); +if (!sysclk) +return -ENODEV ; + +for (np =NULL , i =1 ; + (np =of_find_compatible_node (np,"spi" ,"fsl_spi" )) !=NULL ; + i++) { +int ret =0 ; +unsigned int j; +const void *prop; +struct resource res[2 ]; +struct platform_device *pdev; +struct fsl_spi_platform_data pdata = { + .activate_cs = activate_cs, + .deactivate_cs = deactivate_cs, + }; + +memset (res,0 ,sizeof (res)); + + pdata.sysclk = *sysclk; + + prop =of_get_property (np,"reg" ,NULL ); +if (!prop) + goto err; + pdata.bus_num = *(u32 *)prop; + + prop =of_get_property (np,"mode" ,NULL ); +if (prop && !strcmp (prop,"cpu-qe" )) + pdata.qe_mode =1 ; + +for (j =0 ; j < num_board_infos; j++) { +if (board_infos[j].bus_num == pdata.bus_num) + pdata.max_chipselect++; + } + +if (!pdata.max_chipselect) + goto err; + + ret =of_address_to_resource (np,0 , &res[0 ]); +if (ret) + goto err; + + ret =of_irq_to_resource (np,0 , &res[1 ]); +if (ret ==NO_IRQ ) + goto err; + + pdev =platform_device_alloc ("mpc83xx_spi" , i); +if (!pdev) + goto err; + + ret =platform_device_add_data (pdev, &pdata,sizeof (pdata)); +if (ret) + goto unreg; + + ret =platform_device_add_resources (pdev, res, +ARRAY_SIZE (res)); +if (ret) + goto unreg; + + ret =platform_device_register (pdev); +if (ret) + goto unreg; + +continue ; +unreg: +platform_device_del (pdev); +err: +continue ; + } + +return spi_register_board_info (board_infos, num_board_infos); +}
arch/powerpc/sysdev/fsl_soc.h +7 -0
@@ -8,5 +8,12 @@ extern phys_addr_t get_immrbase(void);extern u32 get_brgfreq (void );extern u32 get_baudrate (void ); +struct spi_board_info ; + +extern int fsl_spi_init (struct spi_board_info *board_infos, +unsigned int num_board_infos, +void (*activate_cs)(u8 cs,u8 polarity), +void (*deactivate_cs)(u8 cs,u8 polarity)); +#endif #endif
Signature · 1 line
1.5.2.4
PATCH 22/22 MPC832x_RDB: Update dts to use SPI1 in QE, register mmc_spi stub
From: Anton Vorontsov <[email protected]>
mmc_spi already tested to work. When it will hit mainline the only change that will be needed is replacing "spidev" with "mmc_spi".
--- arch/powerpc/boot/dts/mpc832x_rdb.dts | 2 +- arch/powerpc/platforms/83xx/mpc832x_rdb.c | 46 +++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletions(-)
arch/powerpc/boot/dts/mpc832x_rdb.dts +1 -1
@@ -175,7 +175,7 @@ reg = <4c0 40>; interrupts = <2>; interrupt-parent = <&qeic>; - mode = "cpu"; + mode = "cpu-qe"; }; spi@500 {
arch/powerpc/platforms/83xx/mpc832x_rdb.c +46 -0
64 lines not on this page · raw message
Signature · 1 line
1.5.2.4
Re: [PATCH 22/22] [POWERPC] MPC832x_RDB: Update dts to use SPI1 in QE, register mmc_spi stub
Quoted 5 lines · Kumar Gala
From: Anton Vorontsov <[email protected]>
mmc_spialready tested to work. When it will hit mainline the only change that will be needed is replacing "spidev" with "mmc_spi".
That's a *remarkably* uninformative commit message. And what's the use of putting in something about "when it will hit mainline" when this is the point where it hits mainline?
Paul.
Re: [PATCH 22/22] [POWERPC] MPC832x_RDB: Update dts to use SPI1 in QE, register mmc_spi stub
Quoted 11 lines · Paul Mackerras
Quoted 5 lines · Kumar Gala
From: Anton Vorontsov <[email protected]>
mmc_spialready tested to work. When it will hit mainline the only change that will be needed is replacing "spidev" with "mmc_spi".That's a *remarkably* uninformative commit message. And what's the use of putting in something about "when it will hit mainline" when this is the point where it hits mainline?
Yeah, I was afraid of that when I glanced at Anton's patches.
I think the comment is in reference to a mainline SPI subsystem change intended for 2.6.24.
- k
Re: [PATCH 22/22] [POWERPC] MPC832x_RDB: Update dts to use SPI1 in QE, register mmc_spi stub
Quoted 11 lines · Kumar Gala
Quoted 8 lines · Paul Mackerras
Quoted 5 lines · Kumar Gala
From: Anton Vorontsov <[email protected]>
mmc_spialready tested to work. When it will hit mainline the only change that will be needed is replacing "spidev" with "mmc_spi".
Quoted 8 lines
Quoted 3 lines
That's a *remarkably* uninformative commit message. And what's the use of putting in something about "when it will hit mainline" when this is the point where it hits mainline?
Yeah, I was afraid of that when I glanced at Anton's patches.
I think the comment is in reference to a mainline SPI subsystem change intended for 2.6.24.
Let me know how you want to handle this. I see two options.
1. merge patch as is (with new commit message, see below)
2. drop patch for now and wait for mmc_spi to be merged.
Take a look at the following for Anton's comments on the situation:
http://ozlabs.org/pipermail/linuxppc-dev/2007-August/041370.html
How about a commit message like the following:
[POWERPC] MPC832x_RDB: Update dts to use SPI1 in QE, registermmc_spi stub
Enabled using SPI controller on the MPC832x RDB board. We
currently use
a modalias of "spidev" as a place holder (replace with
"mmc_spie") until
the mmc_spi driver support is merged in.
This gets us the ability to test SPI until then.
- k
Re: [PATCH 04/22] [POWERPC] Update mpc7448hpc2 device tree to be compatible for tsi109 chip
In reply to Kumar GalaQuoted 1 line
Update mpc7448hpc2 device tree to be compatible for tsi109 chip.
Do all those boards have a tsi109? If not, this patch is incorrect. If they do, is tsi109 actually backward-compatible to tsi108? That is, will a driver that knows about tsi108 only work correctly on a tsi109?
Also, all those names really should have a manufacturer prefix ("XXX,...").
Segher
Re: [PATCH 04/22] [POWERPC] Update mpc7448hpc2 device tree to be compatible for tsi109 chip
Quoted 6 lines · Segher Boessenkool
Quoted 1 line
Update mpc7448hpc2 device tree to be compatible for tsi109 chip.
Do all those boards have a tsi109? If not, this patch is incorrect. If they do, is tsi109 actually backward-compatible to tsi108? That is, will a driver that knows about tsi108 only work correctly on a tsi109?
I believe its a tsi108 and thus am going to drop this patch since I agree with you. Unless Roy tells me otherwise.
Quoted 2 lines
Also, all those names really should have a manufacturer prefix ("XXX,...").
More cleanup for someone :)
- k