Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4286f84e
Commit
4286f84e
authored
Mar 21, 2012
by
Benjamin Herrenschmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'kumar/next' into next
parents
2d87e06e
e96dde2b
Changes
95
Hide whitespace changes
Inline
Side-by-side
Showing
95 changed files
with
6119 additions
and
730 deletions
+6119
-730
Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt
Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt
+63
-0
Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
+4
-2
arch/powerpc/boot/Makefile
arch/powerpc/boot/Makefile
+1
-1
arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
+2
-2
arch/powerpc/boot/dts/fsl/mpc8548si-post.dtsi
arch/powerpc/boot/dts/fsl/mpc8548si-post.dtsi
+16
-0
arch/powerpc/boot/dts/fsl/mpc8548si-pre.dtsi
arch/powerpc/boot/dts/fsl/mpc8548si-pre.dtsi
+3
-1
arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
+3
-0
arch/powerpc/boot/dts/fsl/p1020si-post.dtsi
arch/powerpc/boot/dts/fsl/p1020si-post.dtsi
+6
-0
arch/powerpc/boot/dts/fsl/p1021si-post.dtsi
arch/powerpc/boot/dts/fsl/p1021si-post.dtsi
+7
-0
arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
+11
-1
arch/powerpc/boot/dts/fsl/p1023si-post.dtsi
arch/powerpc/boot/dts/fsl/p1023si-post.dtsi
+3
-0
arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
+3
-0
arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
+2
-0
arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
+2
-0
arch/powerpc/boot/dts/fsl/p3060si-post.dtsi
arch/powerpc/boot/dts/fsl/p3060si-post.dtsi
+6
-0
arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
+2
-0
arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
+2
-1
arch/powerpc/boot/dts/fsl/pq3-etsec1-1.dtsi
arch/powerpc/boot/dts/fsl/pq3-etsec1-1.dtsi
+2
-1
arch/powerpc/boot/dts/fsl/pq3-etsec1-2.dtsi
arch/powerpc/boot/dts/fsl/pq3-etsec1-2.dtsi
+2
-1
arch/powerpc/boot/dts/fsl/pq3-etsec1-3.dtsi
arch/powerpc/boot/dts/fsl/pq3-etsec1-3.dtsi
+2
-1
arch/powerpc/boot/dts/fsl/pq3-sec4.4-0.dtsi
arch/powerpc/boot/dts/fsl/pq3-sec4.4-0.dtsi
+5
-5
arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi
arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi
+3
-3
arch/powerpc/boot/dts/ge_imp3a.dts
arch/powerpc/boot/dts/ge_imp3a.dts
+255
-0
arch/powerpc/boot/dts/mpc836x_mds.dts
arch/powerpc/boot/dts/mpc836x_mds.dts
+4
-0
arch/powerpc/boot/dts/mpc8536ds.dts
arch/powerpc/boot/dts/mpc8536ds.dts
+5
-1
arch/powerpc/boot/dts/mpc8536ds.dtsi
arch/powerpc/boot/dts/mpc8536ds.dtsi
+93
-0
arch/powerpc/boot/dts/mpc8536ds_36b.dts
arch/powerpc/boot/dts/mpc8536ds_36b.dts
+6
-2
arch/powerpc/boot/dts/mpc8548cds.dts
arch/powerpc/boot/dts/mpc8548cds.dts
+0
-306
arch/powerpc/boot/dts/mpc8548cds.dtsi
arch/powerpc/boot/dts/mpc8548cds.dtsi
+306
-0
arch/powerpc/boot/dts/mpc8548cds_32b.dts
arch/powerpc/boot/dts/mpc8548cds_32b.dts
+86
-0
arch/powerpc/boot/dts/mpc8548cds_36b.dts
arch/powerpc/boot/dts/mpc8548cds_36b.dts
+86
-0
arch/powerpc/boot/dts/mpc8572ds.dtsi
arch/powerpc/boot/dts/mpc8572ds.dtsi
+32
-18
arch/powerpc/boot/dts/p1010rdb.dtsi
arch/powerpc/boot/dts/p1010rdb.dtsi
+2
-2
arch/powerpc/boot/dts/p1020rdb-pc.dtsi
arch/powerpc/boot/dts/p1020rdb-pc.dtsi
+247
-0
arch/powerpc/boot/dts/p1020rdb-pc_32b.dts
arch/powerpc/boot/dts/p1020rdb-pc_32b.dts
+90
-0
arch/powerpc/boot/dts/p1020rdb-pc_36b.dts
arch/powerpc/boot/dts/p1020rdb-pc_36b.dts
+90
-0
arch/powerpc/boot/dts/p1020rdb-pc_camp_core0.dts
arch/powerpc/boot/dts/p1020rdb-pc_camp_core0.dts
+64
-0
arch/powerpc/boot/dts/p1020rdb-pc_camp_core1.dts
arch/powerpc/boot/dts/p1020rdb-pc_camp_core1.dts
+142
-0
arch/powerpc/boot/dts/p1021rdb.dts
arch/powerpc/boot/dts/p1021rdb.dts
+96
-0
arch/powerpc/boot/dts/p1021rdb.dtsi
arch/powerpc/boot/dts/p1021rdb.dtsi
+236
-0
arch/powerpc/boot/dts/p1021rdb_36b.dts
arch/powerpc/boot/dts/p1021rdb_36b.dts
+96
-0
arch/powerpc/boot/dts/p1022ds.dts
arch/powerpc/boot/dts/p1022ds.dts
+0
-274
arch/powerpc/boot/dts/p1022ds.dtsi
arch/powerpc/boot/dts/p1022ds.dtsi
+234
-0
arch/powerpc/boot/dts/p1022ds_32b.dts
arch/powerpc/boot/dts/p1022ds_32b.dts
+103
-0
arch/powerpc/boot/dts/p1022ds_36b.dts
arch/powerpc/boot/dts/p1022ds_36b.dts
+103
-0
arch/powerpc/boot/dts/p1025rdb.dtsi
arch/powerpc/boot/dts/p1025rdb.dtsi
+286
-0
arch/powerpc/boot/dts/p1025rdb_32b.dts
arch/powerpc/boot/dts/p1025rdb_32b.dts
+135
-0
arch/powerpc/boot/dts/p1025rdb_36b.dts
arch/powerpc/boot/dts/p1025rdb_36b.dts
+88
-0
arch/powerpc/boot/dts/p2020rdb-pc.dtsi
arch/powerpc/boot/dts/p2020rdb-pc.dtsi
+241
-0
arch/powerpc/boot/dts/p2020rdb-pc_32b.dts
arch/powerpc/boot/dts/p2020rdb-pc_32b.dts
+96
-0
arch/powerpc/boot/dts/p2020rdb-pc_36b.dts
arch/powerpc/boot/dts/p2020rdb-pc_36b.dts
+96
-0
arch/powerpc/boot/dts/p2020rdb.dts
arch/powerpc/boot/dts/p2020rdb.dts
+2
-2
arch/powerpc/configs/85xx/ge_imp3a_defconfig
arch/powerpc/configs/85xx/ge_imp3a_defconfig
+257
-0
arch/powerpc/configs/86xx/gef_ppc9a_defconfig
arch/powerpc/configs/86xx/gef_ppc9a_defconfig
+1
-0
arch/powerpc/configs/86xx/gef_sbc310_defconfig
arch/powerpc/configs/86xx/gef_sbc310_defconfig
+1
-0
arch/powerpc/configs/86xx/gef_sbc610_defconfig
arch/powerpc/configs/86xx/gef_sbc610_defconfig
+2
-0
arch/powerpc/configs/mpc85xx_defconfig
arch/powerpc/configs/mpc85xx_defconfig
+1
-0
arch/powerpc/configs/mpc85xx_smp_defconfig
arch/powerpc/configs/mpc85xx_smp_defconfig
+1
-0
arch/powerpc/include/asm/cputable.h
arch/powerpc/include/asm/cputable.h
+8
-4
arch/powerpc/include/asm/fsl_guts.h
arch/powerpc/include/asm/fsl_guts.h
+5
-1
arch/powerpc/include/asm/mpic_msgr.h
arch/powerpc/include/asm/mpic_msgr.h
+132
-0
arch/powerpc/include/asm/reg_booke.h
arch/powerpc/include/asm/reg_booke.h
+1
-0
arch/powerpc/kernel/cputable.c
arch/powerpc/kernel/cputable.c
+18
-0
arch/powerpc/mm/fsl_booke_mmu.c
arch/powerpc/mm/fsl_booke_mmu.c
+13
-6
arch/powerpc/platforms/85xx/Kconfig
arch/powerpc/platforms/85xx/Kconfig
+26
-1
arch/powerpc/platforms/85xx/Makefile
arch/powerpc/platforms/85xx/Makefile
+1
-0
arch/powerpc/platforms/85xx/ge_imp3a.c
arch/powerpc/platforms/85xx/ge_imp3a.c
+246
-0
arch/powerpc/platforms/85xx/mpc85xx_cds.c
arch/powerpc/platforms/85xx/mpc85xx_cds.c
+63
-18
arch/powerpc/platforms/85xx/mpc85xx_mds.c
arch/powerpc/platforms/85xx/mpc85xx_mds.c
+15
-20
arch/powerpc/platforms/85xx/mpc85xx_rdb.c
arch/powerpc/platforms/85xx/mpc85xx_rdb.c
+213
-2
arch/powerpc/platforms/85xx/p1022_ds.c
arch/powerpc/platforms/85xx/p1022_ds.c
+181
-22
arch/powerpc/platforms/86xx/Kconfig
arch/powerpc/platforms/86xx/Kconfig
+3
-0
arch/powerpc/platforms/86xx/Makefile
arch/powerpc/platforms/86xx/Makefile
+3
-4
arch/powerpc/platforms/86xx/gef_ppc9a.c
arch/powerpc/platforms/86xx/gef_ppc9a.c
+1
-1
arch/powerpc/platforms/86xx/gef_sbc310.c
arch/powerpc/platforms/86xx/gef_sbc310.c
+1
-1
arch/powerpc/platforms/86xx/gef_sbc610.c
arch/powerpc/platforms/86xx/gef_sbc610.c
+1
-1
arch/powerpc/platforms/Kconfig
arch/powerpc/platforms/Kconfig
+8
-0
arch/powerpc/sysdev/Kconfig
arch/powerpc/sysdev/Kconfig
+4
-0
arch/powerpc/sysdev/Makefile
arch/powerpc/sysdev/Makefile
+4
-0
arch/powerpc/sysdev/fsl_85xx_cache_sram.c
arch/powerpc/sysdev/fsl_85xx_cache_sram.c
+1
-0
arch/powerpc/sysdev/fsl_85xx_l2ctlr.c
arch/powerpc/sysdev/fsl_85xx_l2ctlr.c
+4
-0
arch/powerpc/sysdev/fsl_msi.c
arch/powerpc/sysdev/fsl_msi.c
+1
-0
arch/powerpc/sysdev/fsl_rio.c
arch/powerpc/sysdev/fsl_rio.c
+2
-2
arch/powerpc/sysdev/fsl_rmu.c
arch/powerpc/sysdev/fsl_rmu.c
+22
-20
arch/powerpc/sysdev/ge/Makefile
arch/powerpc/sysdev/ge/Makefile
+1
-0
arch/powerpc/sysdev/ge/ge_pic.c
arch/powerpc/sysdev/ge/ge_pic.c
+1
-1
arch/powerpc/sysdev/ge/ge_pic.h
arch/powerpc/sysdev/ge/ge_pic.h
+0
-0
arch/powerpc/sysdev/mpic_msgr.c
arch/powerpc/sysdev/mpic_msgr.c
+282
-0
drivers/gpio/Kconfig
drivers/gpio/Kconfig
+11
-0
drivers/gpio/Makefile
drivers/gpio/Makefile
+1
-0
drivers/gpio/gpio-ge.c
drivers/gpio/gpio-ge.c
+29
-1
drivers/mtd/nand/Kconfig
drivers/mtd/nand/Kconfig
+10
-0
drivers/mtd/nand/Makefile
drivers/mtd/nand/Makefile
+1
-0
drivers/mtd/nand/fsl_ifc_nand.c
drivers/mtd/nand/fsl_ifc_nand.c
+1072
-0
drivers/watchdog/Kconfig
drivers/watchdog/Kconfig
+1
-1
No files found.
Documentation/devicetree/bindings/powerpc/fsl/mpic-msgr.txt
0 → 100644
View file @
4286f84e
* FSL MPIC Message Registers
This binding specifies what properties must be available in the device tree
representation of the message register blocks found in some FSL MPIC
implementations.
Required properties:
- compatible: Specifies the compatibility list for the message register
block. The type shall be <string-list> and the value shall be of the form
"fsl,mpic-v<version>-msgr", where <version> is the version number of
the MPIC containing the message registers.
- reg: Specifies the base physical address(s) and size(s) of the
message register block's addressable register space. The type shall be
<prop-encoded-array>.
- interrupts: Specifies a list of interrupt-specifiers which are available
for receiving interrupts. Interrupt-specifier consists of two cells: first
cell is interrupt-number and second cell is level-sense. The type shall be
<prop-encoded-array>.
Optional properties:
- mpic-msgr-receive-mask: Specifies what registers in the containing block
are allowed to receive interrupts. The value is a bit mask where a set
bit at bit 'n' indicates that message register 'n' can receive interrupts.
Note that "bit 'n'" is numbered from LSB for PPC hardware. The type shall
be <u32>. If not present, then all of the message registers in the block
are available.
Aliases:
An alias should be created for every message register block. They are not
required, though. However, a particular implementation of this binding
may require aliases to be present. Aliases are of the form
'mpic-msgr-block<n>', where <n> is an integer specifying the block's number.
Numbers shall start at 0.
Example:
aliases {
mpic-msgr-block0 = &mpic_msgr_block0;
mpic-msgr-block1 = &mpic_msgr_block1;
};
mpic_msgr_block0: mpic-msgr-block@41400 {
compatible = "fsl,mpic-v3.1-msgr";
reg = <0x41400 0x200>;
// Message registers 0 and 2 in this block can receive interrupts on
// sources 0xb0 and 0xb2, respectively.
interrupts = <0xb0 2 0xb2 2>;
mpic-msgr-receive-mask = <0x5>;
};
mpic_msgr_block1: mpic-msgr-block@42400 {
compatible = "fsl,mpic-v3.1-msgr";
reg = <0x42400 0x200>;
// Message registers 0 and 2 in this block can receive interrupts on
// sources 0xb4 and 0xb6, respectively.
interrupts = <0xb4 2 0xb6 2>;
mpic-msgr-receive-mask = <0x5>;
};
Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
View file @
4286f84e
...
...
@@ -6,8 +6,10 @@ Required properties:
etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on
the parent type.
- reg : should contain the address and the length of the shared message
interrupt register set.
- reg : It may contain one or two regions. The first region should contain
the address and the length of the shared message interrupt register set.
The second region should contain the address of aliased MSIIR register for
platforms that have such an alias.
- msi-available-ranges: use <start count> style section to define which
msi interrupt can be used in the 256 msi interrupts. This property is
...
...
arch/powerpc/boot/Makefile
View file @
4286f84e
...
...
@@ -247,7 +247,7 @@ image-$(CONFIG_ASP834x) += dtbImage.asp834x-redboot
image-$(CONFIG_MPC8540_ADS)
+=
cuImage.mpc8540ads
image-$(CONFIG_MPC8560_ADS)
+=
cuImage.mpc8560ads
image-$(CONFIG_MPC85xx_CDS)
+=
cuImage.mpc8541cds
\
cuImage.mpc8548cds
\
cuImage.mpc8548cds
_32b
\
cuImage.mpc8555cds
image-$(CONFIG_MPC85xx_MDS)
+=
cuImage.mpc8568mds
image-$(CONFIG_MPC85xx_DS)
+=
cuImage.mpc8544ds
\
...
...
arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
View file @
4286f84e
...
...
@@ -202,7 +202,7 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-etsec1-timer-0.dtsi"
usb@22000 {
compatible = "fsl,mpc8536-usb2-mph", "fsl-usb2-mph";
compatible = "fsl
-usb2-mph-v1.2", "fsl
,mpc8536-usb2-mph", "fsl-usb2-mph";
reg = <0x22000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
...
...
@@ -210,7 +210,7 @@ usb@22000 {
};
usb@23000 {
compatible = "fsl,mpc8536-usb2-mph", "fsl-usb2-mph";
compatible = "fsl
-usb2-mph-v1.2", "fsl
,mpc8536-usb2-mph", "fsl-usb2-mph";
reg = <0x23000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
...
...
arch/powerpc/boot/dts/fsl/mpc8548si-post.dtsi
View file @
4286f84e
...
...
@@ -89,6 +89,21 @@ pcie@0 {
};
};
&rio {
compatible = "fsl,srio";
interrupts = <48 2 0 0>;
#address-cells = <2>;
#size-cells = <2>;
fsl,srio-rmu-handle = <&rmu>;
ranges;
port1 {
#address-cells = <2>;
#size-cells = <2>;
cell-index = <1>;
};
};
&soc {
#address-cells = <1>;
#size-cells = <1>;
...
...
@@ -134,6 +149,7 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-sec2.1-0.dtsi"
/include/ "pq3-mpic.dtsi"
/include/ "pq3-rmu-0.dtsi"
global-utilities@e0000 {
compatible = "fsl,mpc8548-guts";
...
...
arch/powerpc/boot/dts/fsl/mpc8548si-pre.dtsi
View file @
4286f84e
...
...
@@ -43,7 +43,9 @@ aliases {
serial0 = &serial0;
serial1 = &serial1;
ethernet0 = &enet0;
ethernet1 = &enet2;
ethernet1 = &enet1;
ethernet2 = &enet2;
ethernet3 = &enet3;
pci0 = &pci0;
pci1 = &pci1;
pci2 = &pci2;
...
...
arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
View file @
4286f84e
...
...
@@ -156,6 +156,9 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-esdhc-0.dtsi"
sdhc@2e000 {
compatible = "fsl,p1010-esdhc", "fsl,esdhc";
...
...
arch/powerpc/boot/dts/fsl/p1020si-post.dtsi
View file @
4286f84e
...
...
@@ -142,7 +142,13 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-usb2-dr-1.dtsi"
usb@23000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-esdhc-0.dtsi"
sdhc@2e000 {
...
...
arch/powerpc/boot/dts/fsl/p1021si-post.dtsi
View file @
4286f84e
...
...
@@ -142,8 +142,15 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-esdhc-0.dtsi"
sdhc@2e000 {
sdhci,auto-cmd12;
};
/include/ "pq3-sec3.3-0.dtsi"
/include/ "pq3-mpic.dtsi"
...
...
arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
View file @
4286f84e
...
...
@@ -35,7 +35,11 @@
&lbc {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,p1022-elbc", "fsl,elbc", "simple-bus";
/*
* The localbus on the P1022 is not a simple-bus because of the eLBC
* pin muxing when the DIU is enabled.
*/
compatible = "fsl,p1022-elbc", "fsl,elbc";
interrupts = <19 2 0 0>;
};
...
...
@@ -199,7 +203,13 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-usb2-dr-1.dtsi"
usb@23000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-esdhc-0.dtsi"
sdhc@2e000 {
...
...
arch/powerpc/boot/dts/fsl/p1023si-post.dtsi
View file @
4286f84e
...
...
@@ -142,6 +142,9 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
crypto: crypto@300000 {
compatible = "fsl,sec-v4.2", "fsl,sec-v4.0";
...
...
arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
View file @
4286f84e
...
...
@@ -171,6 +171,9 @@ L2: l2-cache-controller@20000 {
/include/ "pq3-dma-0.dtsi"
/include/ "pq3-usb2-dr-0.dtsi"
usb@22000 {
compatible = "fsl-usb2-dr-v1.6", "fsl-usb2-dr";
};
/include/ "pq3-etsec1-0.dtsi"
/include/ "pq3-etsec1-timer-0.dtsi"
...
...
arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
View file @
4286f84e
...
...
@@ -309,12 +309,14 @@ sdhc@114000 {
/include/ "qoriq-gpio-0.dtsi"
/include/ "qoriq-usb2-mph-0.dtsi"
usb0: usb@210000 {
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
phy_type = "utmi";
port0;
};
/include/ "qoriq-usb2-dr-0.dtsi"
usb1: usb@211000 {
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
dr_mode = "host";
phy_type = "utmi";
};
...
...
arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
View file @
4286f84e
...
...
@@ -336,12 +336,14 @@ sdhc@114000 {
/include/ "qoriq-gpio-0.dtsi"
/include/ "qoriq-usb2-mph-0.dtsi"
usb0: usb@210000 {
compatible = "fsl-usb2-mph-v1.6", "fsl-usb2-mph";
phy_type = "utmi";
port0;
};
/include/ "qoriq-usb2-dr-0.dtsi"
usb1: usb@211000 {
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
dr_mode = "host";
phy_type = "utmi";
};
...
...
arch/powerpc/boot/dts/fsl/p3060si-post.dtsi
View file @
4286f84e
...
...
@@ -291,6 +291,12 @@ spi@110000 {
/include/ "qoriq-duart-1.dtsi"
/include/ "qoriq-gpio-0.dtsi"
/include/ "qoriq-usb2-mph-0.dtsi"
usb@210000 {
compatible = "fsl-usb2-mph-v2.2", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
};
/include/ "qoriq-usb2-dr-0.dtsi"
usb@211000 {
compatible = "fsl-usb2-dr-v2.2", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
};
/include/ "qoriq-sec4.1-0.dtsi"
};
arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
View file @
4286f84e
...
...
@@ -339,12 +339,14 @@ sdhc@114000 {
/include/ "qoriq-gpio-0.dtsi"
/include/ "qoriq-usb2-mph-0.dtsi"
usb0: usb@210000 {
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
phy_type = "utmi";
port0;
};
/include/ "qoriq-usb2-dr-0.dtsi"
usb1: usb@211000 {
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
dr_mode = "host";
phy_type = "utmi";
};
...
...
arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
View file @
4286f84e
/*
*
PQ3
eTSEC
device
tree
stub
[
@
offsets
0x24000
]
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
Copyright
2011
-
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
...
...
@@ -41,6 +41,7 @@ ethernet@24000 {
compatible
=
"gianfar"
;
reg
=
<
0x24000
0x1000
>;
ranges
=
<
0x0
0x24000
0x1000
>;
fsl
,
magic
-
packet
;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
29
2
0
0
30
2
0
0
34
2
0
0
>;
};
...
...
arch/powerpc/boot/dts/fsl/pq3-etsec1-1.dtsi
View file @
4286f84e
/*
*
PQ3
eTSEC
device
tree
stub
[
@
offsets
0x25000
]
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
Copyright
2011
-
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
...
...
@@ -41,6 +41,7 @@ ethernet@25000 {
compatible
=
"gianfar"
;
reg
=
<
0x25000
0x1000
>;
ranges
=
<
0x0
0x25000
0x1000
>;
fsl
,
magic
-
packet
;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
35
2
0
0
36
2
0
0
40
2
0
0
>;
};
...
...
arch/powerpc/boot/dts/fsl/pq3-etsec1-2.dtsi
View file @
4286f84e
/*
*
PQ3
eTSEC
device
tree
stub
[
@
offsets
0x26000
]
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
Copyright
2011
-
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
...
...
@@ -41,6 +41,7 @@ ethernet@26000 {
compatible
=
"gianfar"
;
reg
=
<
0x26000
0x1000
>;
ranges
=
<
0x0
0x26000
0x1000
>;
fsl
,
magic
-
packet
;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
31
2
0
0
32
2
0
0
33
2
0
0
>;
};
...
...
arch/powerpc/boot/dts/fsl/pq3-etsec1-3.dtsi
View file @
4286f84e
/*
*
PQ3
eTSEC
device
tree
stub
[
@
offsets
0x27000
]
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
Copyright
2011
-
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
...
...
@@ -41,6 +41,7 @@ ethernet@27000 {
compatible
=
"gianfar"
;
reg
=
<
0x27000
0x1000
>;
ranges
=
<
0x0
0x27000
0x1000
>;
fsl
,
magic
-
packet
;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
37
2
0
0
38
2
0
0
39
2
0
0
>;
};
...
...
arch/powerpc/boot/dts/fsl/pq3-sec4.4-0.dtsi
View file @
4286f84e
...
...
@@ -33,32 +33,32 @@
*/
crypto@30000 {
compatible = "fsl,sec
4.4", "fsl,sec
4.0";
compatible = "fsl,sec
-v4.4", "fsl,sec-v
4.0";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x30000 0x10000>;
interrupts = <58 2 0 0>;
sec_jr0: jr@1000 {
compatible = "fsl,sec
4.4-job-ring", "fsl,sec
4.0-job-ring";
compatible = "fsl,sec
-v4.4-job-ring", "fsl,sec-v
4.0-job-ring";
reg = <0x1000 0x1000>;
interrupts = <45 2 0 0>;
};
sec_jr1: jr@2000 {
compatible = "fsl,sec
4.4-job-ring", "fsl,sec
4.0-job-ring";
compatible = "fsl,sec
-v4.4-job-ring", "fsl,sec-v
4.0-job-ring";
reg = <0x2000 0x1000>;
interrupts = <45 2 0 0>;
};
sec_jr2: jr@3000 {
compatible = "fsl,sec
4.4-job-ring", "fsl,sec
4.0-job-ring";
compatible = "fsl,sec
-v4.4-job-ring", "fsl,sec-v
4.0-job-ring";
reg = <0x3000 0x1000>;
interrupts = <45 2 0 0>;
};
sec_jr3: jr@4000 {
compatible = "fsl,sec
4.4-job-ring", "fsl,sec
4.0-job-ring";
compatible = "fsl,sec
-v4.4-job-ring", "fsl,sec-v
4.0-job-ring";
reg = <0x4000 0x1000>;
interrupts = <45 2 0 0>;
};
...
...
arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi
View file @
4286f84e
...
...
@@ -53,7 +53,7 @@ timer@41100 {
msi0: msi@41600 {
compatible = "fsl,mpic-msi";
reg = <0x41600 0x200>;
reg = <0x41600 0x200
0x44140 4
>;
msi-available-ranges = <0 0x100>;
interrupts = <
0xe0 0 0 0
...
...
@@ -68,7 +68,7 @@ msi0: msi@41600 {
msi1: msi@41800 {
compatible = "fsl,mpic-msi";
reg = <0x41800 0x200>;
reg = <0x41800 0x200
0x45140 4
>;
msi-available-ranges = <0 0x100>;
interrupts = <
0xe8 0 0 0
...
...
@@ -83,7 +83,7 @@ msi1: msi@41800 {
msi2: msi@41a00 {
compatible = "fsl,mpic-msi";
reg = <0x41a00 0x200>;
reg = <0x41a00 0x200
0x46140 4
>;
msi-available-ranges = <0 0x100>;
interrupts = <
0xf0 0 0 0
...
...
arch/powerpc/boot/dts/ge_imp3a.dts
0 → 100644
View file @
4286f84e
/*
*
GE
IMP3A
Device
Tree
Source
*
*
Copyright
2010
-
2011
GE
Intelligent
Platforms
Embedded
Systems
,
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
.
*
*
Based
on
:
P2020
DS
Device
Tree
Source
*
Copyright
2009
Freescale
Semiconductor
Inc
.
*/
/
include
/
"fsl/p2020si-pre.dtsi"
/
{
model
=
"GE_IMP3A"
;
compatible
=
"ge,imp3a"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fef05000
{
reg
=
<
0
0xfef05000
0
0x1000
>;
ranges
=
<
0x0
0x0
0x0
0xff000000
0x01000000
0x1
0x0
0x0
0xe0000000
0x08000000
0x2
0x0
0x0
0xe8000000
0x08000000
0x3
0x0
0x0
0xfc100000
0x00020000
0x4
0x0
0x0
0xfc000000
0x00008000
0x5
0x0
0x0
0xfc008000
0x00008000
0x6
0x0
0x0
0xfee00000
0x00040000
0x7
0x0
0x0
0xfee80000
0x00040000
>;
/*
nor
@
0
,
0
is
a
mirror
of
part
of
the
memory
in
nor
@
1
,
0
nor
@
0
,
0
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"ge,imp3a-firmware-mirror"
,
"cfi-flash"
;
reg
=
<
0x0
0x0
0x1000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
1
>;
partition
@
0
{
label
=
"firmware"
;
reg
=
<
0x0
0x1000000
>;
read
-
only
;
};
};
*/
nor
@
1
,
0
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"ge,imp3a-paged-flash"
,
"cfi-flash"
;
reg
=
<
0x1
0x0
0x8000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
1
>;
partition
@
0
{
label
=
"user"
;
reg
=
<
0x0
0x7800000
>;
};
partition
@
7800000
{
label
=
"firmware"
;
reg
=
<
0x7800000
0x800000
>;
read
-
only
;
};
};
nvram
@
3
,
0
{
device_type
=
"nvram"
;
compatible
=
"simtek,stk14ca8"
;
reg
=
<
0x3
0x0
0x20000
>;
};
fpga
@
4
,
0
{
compatible
=
"ge,imp3a-fpga-regs"
;
reg
=
<
0x4
0x0
0x20
>;
};
gef_pic
:
pic
@
4
,
20
{
#
interrupt
-
cells
=
<
1
>;
interrupt
-
controller
;
device_type
=
"interrupt-controller"
;
compatible
=
"ge,imp3a-fpga-pic"
,
"gef,fpga-pic-1.00"
;
reg
=
<
0x4
0x20
0x20
>;
interrupts
=
<
6
7
0
0
>;
};
gef_gpio
:
gpio
@
4
,
400
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"ge,imp3a-gpio"
;
reg
=
<
0x4
0x400
0x24
>;
gpio
-
controller
;
};
wdt
@
4
,
800
{
compatible
=
"ge,imp3a-fpga-wdt"
,
"gef,fpga-wdt-1.00"
,
"gef,fpga-wdt"
;
reg
=
<
0x4
0x800
0x8
>;
interrupts
=
<
10
4
>;
interrupt
-
parent
=
<&
gef_pic
>;
};
/*
Second
watchdog
available
,
driver
currently
supports
one
.
wdt
@
4
,
808
{
compatible
=
"gef,imp3a-fpga-wdt"
,
"gef,fpga-wdt-1.00"
,
"gef,fpga-wdt"
;
reg
=
<
0x4
0x808
0x8
>;
interrupts
=
<
9
4
>;
interrupt
-
parent
=
<&
gef_pic
>;
};
*/
nand
@
6
,
0
{
compatible
=
"fsl,elbc-fcm-nand"
;
reg
=
<
0x6
0x0
0x40000
>;
};
nand
@
7
,
0
{
compatible
=
"fsl,elbc-fcm-nand"
;
reg
=
<
0x7
0x0
0x40000
>;
};
};
soc
:
soc
@
fef00000
{
ranges
=
<
0x0
0
0xfef00000
0x100000
>;
i2c
@
3000
{
hwmon
@
48
{
compatible
=
"national,lm92"
;
reg
=
<
0x48
>;
};
hwmon
@
4
c
{
compatible
=
"adi,adt7461"
;
reg
=
<
0x4c
>;
};
rtc
@
51
{
compatible
=
"epson,rx8581"
;
reg
=
<
0x51
>;
};
eti
@
6
b
{
compatible
=
"dallas,ds1682"
;
reg
=
<
0x6b
>;
};
};
usb
@
22000
{
phy_type
=
"ulpi"
;
dr_mode
=
"host"
;
};
mdio
@
24520
{
phy0
:
ethernet
-
phy
@
0
{
interrupt
-
parent
=
<&
gef_pic
>;
interrupts
=
<
0xc
0x4
>;
reg
=
<
0x1
>;
};
phy1
:
ethernet
-
phy
@
1
{
interrupt
-
parent
=
<&
gef_pic
>;
interrupts
=
<
0xb
0x4
>;
reg
=
<
0x2
>;
};
tbi0
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
mdio
@
25520
{
tbi1
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
mdio
@
26520
{
status
=
"disabled"
;
};
enet0
:
ethernet
@
24000
{
tbi
-
handle
=
<&
tbi0
>;
phy
-
handle
=
<&
phy0
>;
phy
-
connection
-
type
=
"gmii"
;
};
enet1
:
ethernet
@
25000
{
tbi
-
handle
=
<&
tbi1
>;
phy
-
handle
=
<&
phy1
>;
phy
-
connection
-
type
=
"gmii"
;
};
enet2
:
ethernet
@
26000
{
status
=
"disabled"
;
};
};
pci0
:
pcie
@
fef08000
{
ranges
=
<
0x2000000
0x0
0xc0000000
0
0xc0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xfe020000
0x0
0x10000
>;
reg
=
<
0
0xfef08000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xc0000000
0x2000000
0x0
0xc0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x10000
>;
};
};
pci1
:
pcie
@
fef09000
{
reg
=
<
0
0xfef09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xa0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xfe010000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x10000
>;
};
};
pci2
:
pcie
@
fef0a000
{
reg
=
<
0
0xfef0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xfe000000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0x80000000
0x2000000
0x0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x10000
>;
};
};
};
/
include
/
"fsl/p2020si-post.dtsi"
arch/powerpc/boot/dts/mpc836x_mds.dts
View file @
4286f84e
...
...
@@ -405,6 +405,10 @@ phy1: ethernet-phy@01 {
reg
=
<
0x1
>;
device_type
=
"ethernet-phy"
;
};
tbi
-
phy
@
2
{
device_type
=
"tbi-phy"
;
reg
=
<
0x2
>;
};
};
qeic
:
interrupt
-
controller
@
80
{
...
...
arch/powerpc/boot/dts/mpc8536ds.dts
View file @
4286f84e
/*
*
MPC8536
DS
Device
Tree
Source
*
*
Copyright
2008
Freescale
Semiconductor
,
Inc
.
*
Copyright
2008
,
2011
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
...
...
@@ -34,6 +34,10 @@ memory {
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
ranges
=
<
0x0
0x0
0x0
0xe8000000
0x08000000
0x2
0x0
0x0
0xffa00000
0x00040000
0x3
0x0
0x0
0xffdf0000
0x00008000
>;
};
board_soc
:
soc
:
soc
@
ffe00000
{
...
...
arch/powerpc/boot/dts/mpc8536ds.dtsi
View file @
4286f84e
...
...
@@ -32,6 +32,99 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x8000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
reg = <0x0 0x03000000>;
label = "ramdisk-nor";
};
partition@3000000 {
reg = <0x03000000 0x00e00000>;
label = "diagnostic-nor";
read-only;
};
partition@3e00000 {
reg = <0x03e00000 0x00200000>;
label = "dink-nor";
read-only;
};
partition@4000000 {
reg = <0x04000000 0x00400000>;
label = "kernel-nor";
};
partition@4400000 {
reg = <0x04400000 0x03b00000>;
label = "fs-nor";
};
partition@7f00000 {
reg = <0x07f00000 0x00080000>;
label = "dtb-nor";
};
partition@7f80000 {
reg = <0x07f80000 0x00080000>;
label = "u-boot-nor";
read-only;
};
};
nand@2,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8536-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <0x2 0x0 0x40000>;
partition@0 {
reg = <0x0 0x02000000>;
label = "u-boot-nand";
read-only;
};
partition@2000000 {
reg = <0x02000000 0x10000000>;
label = "fs-nand";
};
partition@12000000 {
reg = <0x12000000 0x08000000>;
label = "ramdisk-nand";
};
partition@1a000000 {
reg = <0x1a000000 0x04000000>;
label = "kernel-nand";
};
partition@1e000000 {
reg = <0x1e000000 0x01000000>;
label = "dtb-nand";
};
partition@1f000000 {
reg = <0x1f000000 0x21000000>;
label = "empty-nand";
};
};
board-control@3,0 {
compatible = "fsl,mpc8536ds-fpga-pixis";
reg = <0x3 0x0 0x8000>;
};
};
&board_soc {
i2c@3100 {
rtc@68 {
...
...
arch/powerpc/boot/dts/mpc8536ds_36b.dts
View file @
4286f84e
/*
*
MPC8536DS
Device
Tree
Source
(
36
-
bit
address
map
)
*
*
Copyright
2008
-
2009
Freescale
Semiconductor
,
Inc
.
*
Copyright
2008
-
2009
,
2011
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
...
...
@@ -33,7 +33,11 @@ memory {
};
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
reg
=
<
0xf
0xffe05000
0
0x1000
>;
ranges
=
<
0x0
0x0
0xf
0xe8000000
0x08000000
0x2
0x0
0xf
0xffa00000
0x00040000
0x3
0x0
0xf
0xffdf0000
0x00008000
>;
};
board_soc
:
soc
:
soc
@
fffe00000
{
...
...
arch/powerpc/boot/dts/mpc8548cds.dts
deleted
100644 → 0
View file @
2d87e06e
/*
*
MPC8548
CDS
Device
Tree
Source
*
*
Copyright
2006
,
2008
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
.
*/
/
include
/
"fsl/mpc8548si-pre.dtsi"
/
{
model
=
"MPC8548CDS"
;
compatible
=
"MPC8548CDS"
,
"MPC85xxCDS"
;
aliases
{
ethernet0
=
&
enet0
;
ethernet1
=
&
enet1
;
ethernet2
=
&
enet2
;
ethernet3
=
&
enet3
;
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
memory
{
device_type
=
"memory"
;
reg
=
<
0
0
0x0
0x8000000
>;
//
128
M
at
0x0
};
lbc
:
localbus
@
e0005000
{
reg
=
<
0
0xe0005000
0
0x1000
>;
};
soc
:
soc8548
@
e0000000
{
ranges
=
<
0
0x0
0xe0000000
0x100000
>;
i2c
@
3000
{
eeprom
@
50
{
compatible
=
"atmel,24c64"
;
reg
=
<
0x50
>;
};
eeprom
@
56
{
compatible
=
"atmel,24c64"
;
reg
=
<
0x56
>;
};
eeprom
@
57
{
compatible
=
"atmel,24c64"
;
reg
=
<
0x57
>;
};
};
i2c
@
3100
{
eeprom
@
50
{
compatible
=
"atmel,24c64"
;
reg
=
<
0x50
>;
};
};
enet0
:
ethernet
@
24000
{
tbi
-
handle
=
<&
tbi0
>;
phy
-
handle
=
<&
phy0
>;
};
mdio
@
24520
{
phy0
:
ethernet
-
phy
@
0
{
interrupts
=
<
5
1
0
0
>;
reg
=
<
0x0
>;
device_type
=
"ethernet-phy"
;
};
phy1
:
ethernet
-
phy
@
1
{
interrupts
=
<
5
1
0
0
>;
reg
=
<
0x1
>;
device_type
=
"ethernet-phy"
;
};
phy2
:
ethernet
-
phy
@
2
{
interrupts
=
<
5
1
0
0
>;
reg
=
<
0x2
>;
device_type
=
"ethernet-phy"
;
};
phy3
:
ethernet
-
phy
@
3
{
interrupts
=
<
5
1
0
0
>;
reg
=
<
0x3
>;
device_type
=
"ethernet-phy"
;
};
tbi0
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
enet1
:
ethernet
@
25000
{
tbi
-
handle
=
<&
tbi1
>;
phy
-
handle
=
<&
phy1
>;
};
mdio
@
25520
{
tbi1
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
enet2
:
ethernet
@
26000
{
tbi
-
handle
=
<&
tbi2
>;
phy
-
handle
=
<&
phy2
>;
};
mdio
@
26520
{
tbi2
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
enet3
:
ethernet
@
27000
{
tbi
-
handle
=
<&
tbi3
>;
phy
-
handle
=
<&
phy3
>;
};
mdio
@
27520
{
tbi3
:
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
};
pci0
:
pci
@
e0008000
{
reg
=
<
0
0xe0008000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0
0x80000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0
0xe2000000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
/*
IDSEL
0x4
(
PCIX
Slot
2
)
*/
0x2000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0x2000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0x2000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0x2000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x5
(
PCIX
Slot
3
)
*/
0x2800
0x0
0x0
0x1
&
mpic
0x1
0x1
0
0
0x2800
0x0
0x0
0x2
&
mpic
0x2
0x1
0
0
0x2800
0x0
0x0
0x3
&
mpic
0x3
0x1
0
0
0x2800
0x0
0x0
0x4
&
mpic
0x0
0x1
0
0
/*
IDSEL
0x6
(
PCIX
Slot
4
)
*/
0x3000
0x0
0x0
0x1
&
mpic
0x2
0x1
0
0
0x3000
0x0
0x0
0x2
&
mpic
0x3
0x1
0
0
0x3000
0x0
0x0
0x3
&
mpic
0x0
0x1
0
0
0x3000
0x0
0x0
0x4
&
mpic
0x1
0x1
0
0
/*
IDSEL
0x8
(
PCIX
Slot
5
)
*/
0x4000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0x4000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0x4000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0x4000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0xC
(
Tsi310
bridge
)
*/
0x6000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0x6000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0x6000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0x6000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x14
(
Slot
2
)
*/
0xa000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0xa000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xa000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xa000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x15
(
Slot
3
)
*/
0xa800
0x0
0x0
0x1
&
mpic
0x1
0x1
0
0
0xa800
0x0
0x0
0x2
&
mpic
0x2
0x1
0
0
0xa800
0x0
0x0
0x3
&
mpic
0x3
0x1
0
0
0xa800
0x0
0x0
0x4
&
mpic
0x0
0x1
0
0
/*
IDSEL
0x16
(
Slot
4
)
*/
0xb000
0x0
0x0
0x1
&
mpic
0x2
0x1
0
0
0xb000
0x0
0x0
0x2
&
mpic
0x3
0x1
0
0
0xb000
0x0
0x0
0x3
&
mpic
0x0
0x1
0
0
0xb000
0x0
0x0
0x4
&
mpic
0x1
0x1
0
0
/*
IDSEL
0x18
(
Slot
5
)
*/
0xc000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0xc000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xc000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xc000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x1C
(
Tsi310
bridge
PCI
primary
)
*/
0xe000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0xe000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xe000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xe000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
>;
pci_bridge
@
1
c
{
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
/*
IDSEL
0x00
(
PrPMC
Site
)
*/
0000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x04
(
VIA
chip
)
*/
0x2000
0x0
0x0
0x1
&
mpic
0x0
0x1
0
0
0x2000
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0x2000
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0x2000
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
/*
IDSEL
0x05
(
8139
)
*/
0x2800
0x0
0x0
0x1
&
mpic
0x1
0x1
0
0
/*
IDSEL
0x06
(
Slot
6
)
*/
0x3000
0x0
0x0
0x1
&
mpic
0x2
0x1
0
0
0x3000
0x0
0x0
0x2
&
mpic
0x3
0x1
0
0
0x3000
0x0
0x0
0x3
&
mpic
0x0
0x1
0
0
0x3000
0x0
0x0
0x4
&
mpic
0x1
0x1
0
0
/*
IDESL
0x07
(
Slot
7
)
*/
0x3800
0x0
0x0
0x1
&
mpic
0x3
0x1
0
0
0x3800
0x0
0x0
0x2
&
mpic
0x0
0x1
0
0
0x3800
0x0
0x0
0x3
&
mpic
0x1
0x1
0
0
0x3800
0x0
0x0
0x4
&
mpic
0x2
0x1
0
0
>;
reg
=
<
0xe000
0x0
0x0
0x0
0x0
>;
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
ranges
=
<
0x2000000
0x0
0x80000000
0x2000000
0x0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x80000
>;
clock
-
frequency
=
<
33333333
>;
isa
@
4
{
device_type
=
"isa"
;
#
interrupt
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
#
address
-
cells
=
<
2
>;
reg
=
<
0x2000
0x0
0x0
0x0
0x0
>;
ranges
=
<
0x1
0x0
0x1000000
0x0
0x0
0x1000
>;
interrupt
-
parent
=
<&
i8259
>;
i8259
:
interrupt
-
controller
@
20
{
interrupt
-
controller
;
device_type
=
"interrupt-controller"
;
reg
=
<
0x1
0x20
0x2
0x1
0xa0
0x2
0x1
0x4d0
0x2
>;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
compatible
=
"chrp,iic"
;
interrupts
=
<
0
1
0
0
>;
interrupt
-
parent
=
<&
mpic
>;
};
rtc
@
70
{
compatible
=
"pnpPNP,b00"
;
reg
=
<
0x1
0x70
0x2
>;
};
};
};
};
pci1
:
pci
@
e0009000
{
reg
=
<
0
0xe0009000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x90000000
0
0x90000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0
0xe2800000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
/*
IDSEL
0x15
*/
0xa800
0x0
0x0
0x1
&
mpic
0xb
0x1
0
0
0xa800
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xa800
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xa800
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
>;
};
pci2
:
pcie
@
e000a000
{
reg
=
<
0
0xe000a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xa0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xe3000000
0x0
0x100000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"fsl/mpc8548si-post.dtsi"
arch/powerpc/boot/dts/mpc8548cds.dtsi
0 → 100644
View file @
4286f84e
/*
* MPC8548CDS Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2012 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&board_lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x01000000>;
bank-width = <2>;
device-width = <2>;
partition@0 {
reg = <0x0 0x0b00000>;
label = "ramdisk-nor";
};
partition@300000 {
reg = <0x0b00000 0x0400000>;
label = "kernel-nor";
};
partition@700000 {
reg = <0x0f00000 0x060000>;
label = "dtb-nor";
};
partition@760000 {
reg = <0x0f60000 0x020000>;
label = "env-nor";
read-only;
};
partition@780000 {
reg = <0x0f80000 0x080000>;
label = "u-boot-nor";
read-only;
};
};
board-control@1,0 {
compatible = "fsl,mpc8548cds-fpga";
reg = <0x1 0x0 0x1000>;
};
};
&board_soc {
i2c@3000 {
eeprom@50 {
compatible = "atmel,24c64";
reg = <0x50>;
};
eeprom@56 {
compatible = "atmel,24c64";
reg = <0x56>;
};
eeprom@57 {
compatible = "atmel,24c64";
reg = <0x57>;
};
};
i2c@3100 {
eeprom@50 {
compatible = "atmel,24c64";
reg = <0x50>;
};
};
enet0: ethernet@24000 {
tbi-handle = <&tbi0>;
phy-handle = <&phy0>;
};
mdio@24520 {
phy0: ethernet-phy@0 {
interrupts = <5 1 0 0>;
reg = <0x0>;
device_type = "ethernet-phy";
};
phy1: ethernet-phy@1 {
interrupts = <5 1 0 0>;
reg = <0x1>;
device_type = "ethernet-phy";
};
phy2: ethernet-phy@2 {
interrupts = <5 1 0 0>;
reg = <0x2>;
device_type = "ethernet-phy";
};
phy3: ethernet-phy@3 {
interrupts = <5 1 0 0>;
reg = <0x3>;
device_type = "ethernet-phy";
};
tbi0: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet1: ethernet@25000 {
tbi-handle = <&tbi1>;
phy-handle = <&phy1>;
};
mdio@25520 {
tbi1: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet2: ethernet@26000 {
tbi-handle = <&tbi2>;
phy-handle = <&phy2>;
};
mdio@26520 {
tbi2: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet3: ethernet@27000 {
tbi-handle = <&tbi3>;
phy-handle = <&phy3>;
};
mdio@27520 {
tbi3: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
};
&board_pci0 {
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
interrupt-map = <
/* IDSEL 0x4 (PCIX Slot 2) */
0x2000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0x2000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0x2000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0x2000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x5 (PCIX Slot 3) */
0x2800 0x0 0x0 0x1 &mpic 0x1 0x1 0 0
0x2800 0x0 0x0 0x2 &mpic 0x2 0x1 0 0
0x2800 0x0 0x0 0x3 &mpic 0x3 0x1 0 0
0x2800 0x0 0x0 0x4 &mpic 0x0 0x1 0 0
/* IDSEL 0x6 (PCIX Slot 4) */
0x3000 0x0 0x0 0x1 &mpic 0x2 0x1 0 0
0x3000 0x0 0x0 0x2 &mpic 0x3 0x1 0 0
0x3000 0x0 0x0 0x3 &mpic 0x0 0x1 0 0
0x3000 0x0 0x0 0x4 &mpic 0x1 0x1 0 0
/* IDSEL 0x8 (PCIX Slot 5) */
0x4000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0x4000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0x4000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0x4000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0xC (Tsi310 bridge) */
0x6000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0x6000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0x6000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0x6000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x14 (Slot 2) */
0xa000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0xa000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0xa000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0xa000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x15 (Slot 3) */
0xa800 0x0 0x0 0x1 &mpic 0x1 0x1 0 0
0xa800 0x0 0x0 0x2 &mpic 0x2 0x1 0 0
0xa800 0x0 0x0 0x3 &mpic 0x3 0x1 0 0
0xa800 0x0 0x0 0x4 &mpic 0x0 0x1 0 0
/* IDSEL 0x16 (Slot 4) */
0xb000 0x0 0x0 0x1 &mpic 0x2 0x1 0 0
0xb000 0x0 0x0 0x2 &mpic 0x3 0x1 0 0
0xb000 0x0 0x0 0x3 &mpic 0x0 0x1 0 0
0xb000 0x0 0x0 0x4 &mpic 0x1 0x1 0 0
/* IDSEL 0x18 (Slot 5) */
0xc000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0xc000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0xc000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0xc000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x1C (Tsi310 bridge PCI primary) */
0xe000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0xe000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0xe000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0xe000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0>;
pci_bridge@1c {
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
interrupt-map = <
/* IDSEL 0x00 (PrPMC Site) */
0000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x04 (VIA chip) */
0x2000 0x0 0x0 0x1 &mpic 0x0 0x1 0 0
0x2000 0x0 0x0 0x2 &mpic 0x1 0x1 0 0
0x2000 0x0 0x0 0x3 &mpic 0x2 0x1 0 0
0x2000 0x0 0x0 0x4 &mpic 0x3 0x1 0 0
/* IDSEL 0x05 (8139) */
0x2800 0x0 0x0 0x1 &mpic 0x1 0x1 0 0
/* IDSEL 0x06 (Slot 6) */
0x3000 0x0 0x0 0x1 &mpic 0x2 0x1 0 0
0x3000 0x0 0x0 0x2 &mpic 0x3 0x1 0 0
0x3000 0x0 0x0 0x3 &mpic 0x0 0x1 0 0
0x3000 0x0 0x0 0x4 &mpic 0x1 0x1 0 0
/* IDESL 0x07 (Slot 7) */
0x3800 0x0 0x0 0x1 &mpic 0x3 0x1 0 0
0x3800 0x0 0x0 0x2 &mpic 0x0 0x1 0 0
0x3800 0x0 0x0 0x3 &mpic 0x1 0x1 0 0
0x3800 0x0 0x0 0x4 &mpic 0x2 0x1 0 0>;
reg = <0xe000 0x0 0x0 0x0 0x0>;
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
ranges = <0x2000000 0x0 0x80000000
0x2000000 0x0 0x80000000
0x0 0x20000000
0x1000000 0x0 0x0
0x1000000 0x0 0x0
0x0 0x80000>;
clock-frequency = <33333333>;
isa@4 {
device_type = "isa";
#interrupt-cells = <2>;
#size-cells = <1>;
#address-cells = <2>;
reg = <0x2000 0x0 0x0 0x0 0x0>;
ranges = <0x1 0x0 0x1000000 0x0 0x0 0x1000>;
interrupt-parent = <&i8259>;
i8259: interrupt-controller@20 {
interrupt-controller;
device_type = "interrupt-controller";
reg = <0x1 0x20 0x2
0x1 0xa0 0x2
0x1 0x4d0 0x2>;
#address-cells = <0>;
#interrupt-cells = <2>;
compatible = "chrp,iic";
interrupts = <0 1 0 0>;
interrupt-parent = <&mpic>;
};
rtc@70 {
compatible = "pnpPNP,b00";
reg = <0x1 0x70 0x2>;
};
};
};
};
arch/powerpc/boot/dts/mpc8548cds_32b.dts
0 → 100644
View file @
4286f84e
/*
*
MPC8548
CDS
Device
Tree
Source
(
32
-
bit
address
map
)
*
*
Copyright
2006
,
2008
,
2011
-
2012
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
.
*/
/
include
/
"fsl/mpc8548si-pre.dtsi"
/
{
model
=
"MPC8548CDS"
;
compatible
=
"MPC8548CDS"
,
"MPC85xxCDS"
;
memory
{
device_type
=
"memory"
;
reg
=
<
0
0
0x0
0x8000000
>;
//
128
M
at
0x0
};
board_lbc
:
lbc
:
localbus
@
e0005000
{
reg
=
<
0
0xe0005000
0
0x1000
>;
ranges
=
<
0x0
0x0
0x0
0xff000000
0x01000000
0x1
0x0
0x0
0xf8004000
0x00001000
>;
};
board_soc
:
soc
:
soc8548
@
e0000000
{
ranges
=
<
0
0x0
0xe0000000
0x100000
>;
};
board_pci0
:
pci0
:
pci
@
e0008000
{
reg
=
<
0
0xe0008000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0
0x80000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0
0xe2000000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
};
pci1
:
pci
@
e0009000
{
reg
=
<
0
0xe0009000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x90000000
0
0x90000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0
0xe2800000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
/*
IDSEL
0x15
*/
0xa800
0x0
0x0
0x1
&
mpic
0xb
0x1
0
0
0xa800
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xa800
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xa800
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
>;
};
pci2
:
pcie
@
e000a000
{
reg
=
<
0
0xe000a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xa0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xe3000000
0x0
0x100000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
rio
:
rapidio
@
e00c0000
{
reg
=
<
0x0
0xe00c0000
0x0
0x20000
>;
port1
{
ranges
=
<
0x0
0x0
0x0
0xc0000000
0x0
0x20000000
>;
};
};
};
/*
*
mpc8548cds
.
dtsi
must
be
last
to
ensure
board_pci0
overrides
pci0
settings
*
for
interrupt
-
map
&
interrupt
-
map
-
mask
.
*/
/
include
/
"fsl/mpc8548si-post.dtsi"
/
include
/
"mpc8548cds.dtsi"
arch/powerpc/boot/dts/mpc8548cds_36b.dts
0 → 100644
View file @
4286f84e
/*
*
MPC8548
CDS
Device
Tree
Source
(
36
-
bit
address
map
)
*
*
Copyright
2012
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
.
*/
/
include
/
"fsl/mpc8548si-pre.dtsi"
/
{
model
=
"MPC8548CDS"
;
compatible
=
"MPC8548CDS"
,
"MPC85xxCDS"
;
memory
{
device_type
=
"memory"
;
reg
=
<
0
0
0x0
0x8000000
>;
//
128
M
at
0x0
};
board_lbc
:
lbc
:
localbus
@
fe0005000
{
reg
=
<
0xf
0xe0005000
0
0x1000
>;
ranges
=
<
0x0
0x0
0xf
0xff000000
0x01000000
0x1
0x0
0xf
0xf8004000
0x00001000
>;
};
board_soc
:
soc
:
soc8548
@
fe0000000
{
ranges
=
<
0
0xf
0xe0000000
0x100000
>;
};
board_pci0
:
pci0
:
pci
@
fe0008000
{
reg
=
<
0xf
0xe0008000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x00000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0xf
0xe2000000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
};
pci1
:
pci
@
fe0009000
{
reg
=
<
0xf
0xe0009000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x10000000
0x0
0x10000000
0x1000000
0x0
0x00000000
0xf
0xe2800000
0x0
0x800000
>;
clock
-
frequency
=
<
66666666
>;
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
/*
IDSEL
0x15
*/
0xa800
0x0
0x0
0x1
&
mpic
0xb
0x1
0
0
0xa800
0x0
0x0
0x2
&
mpic
0x1
0x1
0
0
0xa800
0x0
0x0
0x3
&
mpic
0x2
0x1
0
0
0xa800
0x0
0x0
0x4
&
mpic
0x3
0x1
0
0
>;
};
pci2
:
pcie
@
fe000a000
{
reg
=
<
0xf
0xe000a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xe3000000
0x0
0x100000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
rio
:
rapidio
@
fe00c0000
{
reg
=
<
0xf
0xe00c0000
0x0
0x20000
>;
port1
{
ranges
=
<
0x0
0x0
0xc
0x40000000
0x0
0x20000000
>;
};
};
};
/*
*
mpc8548cds
.
dtsi
must
be
last
to
ensure
board_pci0
overrides
pci0
settings
*
for
interrupt
-
map
&
interrupt
-
map
-
mask
.
*/
/
include
/
"fsl/mpc8548si-post.dtsi"
/
include
/
"mpc8548cds.dtsi"
arch/powerpc/boot/dts/mpc8572ds.dtsi
View file @
4286f84e
...
...
@@ -41,37 +41,47 @@ nor@0,0 {
bank-width = <2>;
device-width = <1>;
ramdisk
@0 {
partition
@0 {
reg = <0x0 0x03000000>;
read-only
;
label = "ramdisk-nor"
;
};
diagnostic
@3000000 {
partition
@3000000 {
reg = <0x03000000 0x00e00000>;
label = "diagnostic-nor";
read-only;
};
dink
@3e00000 {
partition
@3e00000 {
reg = <0x03e00000 0x00200000>;
label = "dink-nor";
read-only;
};
kernel
@4000000 {
partition
@4000000 {
reg = <0x04000000 0x00400000>;
read-only
;
label = "kernel-nor"
;
};
jffs2
@4400000 {
partition
@4400000 {
reg = <0x04400000 0x03b00000>;
label = "fs-nor";
};
partition@7f00000 {
reg = <0x07f00000 0x00060000>;
label = "dtb-nor";
};
dtb@7f00000 {
reg = <0x07f00000 0x00080000>;
partition@7f60000 {
reg = <0x07f60000 0x00020000>;
label = "env-nor";
read-only;
};
u-boot
@7f80000 {
partition
@7f80000 {
reg = <0x07f80000 0x00080000>;
label = "u-boot-nor";
read-only;
};
};
...
...
@@ -83,31 +93,35 @@ nand@2,0 {
"fsl,elbc-fcm-nand";
reg = <0x2 0x0 0x40000>;
u-boot
@0 {
partition
@0 {
reg = <0x0 0x02000000>;
label = "u-boot-nand";
read-only;
};
jffs2
@2000000 {
partition
@2000000 {
reg = <0x02000000 0x10000000>;
label = "fs-nand";
};
ramdisk
@12000000 {
partition
@12000000 {
reg = <0x12000000 0x08000000>;
read-only
;
label = "ramdisk-nand"
;
};
kernel
@1a000000 {
partition
@1a000000 {
reg = <0x1a000000 0x04000000>;
label = "kernel-nand";
};
dtb
@1e000000 {
partition
@1e000000 {
reg = <0x1e000000 0x01000000>;
read-only
;
label = "dtb-nand"
;
};
empty
@1f000000 {
partition
@1f000000 {
reg = <0x1f000000 0x21000000>;
label = "empty-nand";
};
};
...
...
arch/powerpc/boot/dts/p1010rdb.dtsi
View file @
4286f84e
...
...
@@ -138,7 +138,7 @@ flash@0 {
#size-cells = <1>;
compatible = "spansion,s25sl12801";
reg = <0>;
spi-max-frequency = <
5
0000000>;
spi-max-frequency = <
4
0000000>;
partition@0 {
/* 1MB for u-boot Bootloader Image */
...
...
@@ -196,7 +196,7 @@ phy2: ethernet-phy@2 {
};
tbi-phy@3 {
device
-
type = "tbi-phy";
device
_
type = "tbi-phy";
reg = <0x3>;
};
};
...
...
arch/powerpc/boot/dts/p1020rdb-pc.dtsi
0 → 100644
View file @
4286f84e
/*
* P1020 RDB-PC Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2012 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x1000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
/* This location must not be altered */
/* 256KB for Vitesse 7385 Switch firmware */
reg = <0x0 0x00040000>;
label = "NOR Vitesse-7385 Firmware";
read-only;
};
partition@40000 {
/* 256KB for DTB Image */
reg = <0x00040000 0x00040000>;
label = "NOR DTB Image";
};
partition@80000 {
/* 3.5 MB for Linux Kernel Image */
reg = <0x00080000 0x00380000>;
label = "NOR Linux Kernel Image";
};
partition@400000 {
/* 11MB for JFFS2 based Root file System */
reg = <0x00400000 0x00b00000>;
label = "NOR JFFS2 Root File System";
};
partition@f00000 {
/* This location must not be altered */
/* 512KB for u-boot Bootloader Image */
/* 512KB for u-boot Environment Variables */
reg = <0x00f00000 0x00100000>;
label = "NOR U-Boot Image";
read-only;
};
};
nand@1,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,p1020-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <0x1 0x0 0x40000>;
partition@0 {
/* This location must not be altered */
/* 1MB for u-boot Bootloader Image */
reg = <0x0 0x00100000>;
label = "NAND U-Boot Image";
read-only;
};
partition@100000 {
/* 1MB for DTB Image */
reg = <0x00100000 0x00100000>;
label = "NAND DTB Image";
};
partition@200000 {
/* 4MB for Linux Kernel Image */
reg = <0x00200000 0x00400000>;
label = "NAND Linux Kernel Image";
};
partition@600000 {
/* 4MB for Compressed Root file System Image */
reg = <0x00600000 0x00400000>;
label = "NAND Compressed RFS Image";
};
partition@a00000 {
/* 7MB for JFFS2 based Root file System */
reg = <0x00a00000 0x00700000>;
label = "NAND JFFS2 Root File System";
};
partition@1100000 {
/* 15MB for JFFS2 based Root file System */
reg = <0x01100000 0x00f00000>;
label = "NAND Writable User area";
};
};
L2switch@2,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "vitesse-7385";
reg = <0x2 0x0 0x20000>;
};
cpld@3,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cpld";
reg = <0x3 0x0 0x20000>;
read-only;
};
};
&soc {
i2c@3000 {
rtc@68 {
compatible = "pericom,pt7c4338";
reg = <0x68>;
};
};
spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spansion,s25sl12801";
reg = <0>;
spi-max-frequency = <40000000>; /* input clock */
partition@u-boot {
/* 512KB for u-boot Bootloader Image */
reg = <0x0 0x00080000>;
label = "u-boot";
read-only;
};
partition@dtb {
/* 512KB for DTB Image*/
reg = <0x00080000 0x00080000>;
label = "dtb";
};
partition@kernel {
/* 4MB for Linux Kernel Image */
reg = <0x00100000 0x00400000>;
label = "kernel";
};
partition@fs {
/* 4MB for Compressed RFS Image */
reg = <0x00500000 0x00400000>;
label = "file system";
};
partition@jffs-fs {
/* 7MB for JFFS2 based RFS */
reg = <0x00900000 0x00700000>;
label = "file system jffs2";
};
};
};
usb@22000 {
phy_type = "ulpi";
};
/* USB2 is shared with localbus, so it must be disabled
by default. We can't put 'status = "disabled";' here
since U-Boot doesn't clear the status property when
it enables USB2. OTOH, U-Boot does create a new node
when there isn't any. So, just comment it out.
usb@23000 {
phy_type = "ulpi";
};
*/
mdio@24000 {
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <3 1>;
reg = <0x0>;
};
phy1: ethernet-phy@1 {
interrupt-parent = <&mpic>;
interrupts = <2 1>;
reg = <0x1>;
};
tbi0: tbi-phy@11 {
device_type = "tbi-phy";
reg = <0x11>;
};
};
mdio@25000 {
tbi1: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet0: ethernet@b0000 {
fixed-link = <1 1 1000 0 0>;
phy-connection-type = "rgmii-id";
};
enet1: ethernet@b1000 {
phy-handle = <&phy0>;
tbi-handle = <&tbi1>;
phy-connection-type = "sgmii";
};
enet2: ethernet@b2000 {
phy-handle = <&phy1>;
phy-connection-type = "rgmii-id";
};
};
arch/powerpc/boot/dts/p1020rdb-pc_32b.dts
0 → 100644
View file @
4286f84e
/*
*
P1020
RDB
-
PC
Device
Tree
Source
(
32
-
bit
address
map
)
*
*
Copyright
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1020si-pre.dtsi"
/
{
model
=
"fsl,P1020RDB-PC"
;
compatible
=
"fsl,P1020RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
and
Vitesse
5
port
L2
switch
*/
ranges
=
<
0x0
0x0
0x0
0xef000000
0x01000000
0x1
0x0
0x0
0xff800000
0x00040000
0x2
0x0
0x0
0xffb00000
0x00020000
0x3
0x0
0x0
0xffa00000
0x00020000
>;
};
soc
:
soc
@
ffe00000
{
ranges
=
<
0x0
0x0
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
ffe09000
{
ranges
=
<
0x2000000
0x0
0xa0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc10000
0x0
0x10000
>;
reg
=
<
0
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
ffe0a000
{
reg
=
<
0
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0x80000000
0x2000000
0x0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"p1020rdb-pc.dtsi"
/
include
/
"fsl/p1020si-post.dtsi"
arch/powerpc/boot/dts/p1020rdb-pc_36b.dts
0 → 100644
View file @
4286f84e
/*
*
P1020
RDB
-
PC
Device
Tree
Source
(
36
-
bit
address
map
)
*
*
Copyright
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1020si-pre.dtsi"
/
{
model
=
"fsl,P1020RDB-PC"
;
compatible
=
"fsl,P1020RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fffe05000
{
reg
=
<
0xf
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
and
Vitesse
5
port
L2
switch
*/
ranges
=
<
0x0
0x0
0xf
0xef000000
0x01000000
0x1
0x0
0xf
0xff800000
0x00040000
0x2
0x0
0xf
0xffb00000
0x00040000
0x3
0x0
0xf
0xffa00000
0x00020000
>;
};
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
fffe09000
{
reg
=
<
0xf
0xffe09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xc0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xc0000000
0x2000000
0x0
0xc0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
fffe0a000
{
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0x80000000
0x2000000
0x0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"p1020rdb-pc.dtsi"
/
include
/
"fsl/p1020si-post.dtsi"
arch/powerpc/boot/dts/p1020rdb-pc_camp_core0.dts
0 → 100644
View file @
4286f84e
/*
*
P1020
RDB
-
PC
Core0
Device
Tree
Source
in
CAMP
mode
.
*
*
In
CAMP
mode
,
each
core
needs
to
have
its
own
dts
.
Only
mpic
and
L2
cache
*
can
be
shared
,
all
the
other
devices
must
be
assigned
to
one
core
only
.
*
This
dts
file
allows
core0
to
have
memory
,
l2
,
i2c
,
spi
,
gpio
,
tdm
,
dma
,
usb
,
*
eth1
,
eth2
,
sdhc
,
crypto
,
global
-
util
,
message
,
pci0
,
pci1
,
msi
.
*
*
Please
note
to
add
"-b 0"
for
core0
's dts compiling.
*
* Copyright 2012 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.
*/
/include/ "p1020rdb-pc_32b.dts"
/ {
model = "fsl,P1020RDB-PC";
compatible = "fsl,P1020RDB-PC";
aliases {
ethernet1 = &enet1;
ethernet2 = &enet2;
serial0 = &serial0;
pci0 = &pci0;
pci1 = &pci1;
};
cpus {
PowerPC,P1020@1 {
status = "disabled";
};
};
memory {
device_type = "memory";
};
localbus@ffe05000 {
status = "disabled";
};
soc@ffe00000 {
serial1: serial@4600 {
status = "disabled";
};
enet0: ethernet@b0000 {
status = "disabled";
};
mpic: pic@40000 {
protected-sources = <
42 29 30 34 /* serial1, enet0-queue-group0 */
17 18 24 45 /* enet0-queue-group1, crypto */
>;
pic-no-reset;
};
};
};
arch/powerpc/boot/dts/p1020rdb-pc_camp_core1.dts
0 → 100644
View file @
4286f84e
/*
*
P1020
RDB
-
PC
Core1
Device
Tree
Source
in
CAMP
mode
.
*
*
In
CAMP
mode
,
each
core
needs
to
have
its
own
dts
.
Only
mpic
and
L2
cache
*
can
be
shared
,
all
the
other
devices
must
be
assigned
to
one
core
only
.
*
This
dts
allows
core1
to
have
l2
,
eth0
,
crypto
.
*
*
Please
note
to
add
"-b 1"
for
core1
's dts compiling.
*
* Copyright 2012 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.
*/
/include/ "p1020rdb-pc_32b.dts"
/ {
model = "fsl,P1020RDB-PC";
compatible = "fsl,P1020RDB-PC";
aliases {
ethernet0 = &enet0;
serial0 = &serial1;
};
cpus {
PowerPC,P1020@0 {
status = "disabled";
};
};
memory {
device_type = "memory";
};
localbus@ffe05000 {
status = "disabled";
};
soc@ffe00000 {
ecm-law@0 {
status = "disabled";
};
ecm@1000 {
status = "disabled";
};
memory-controller@2000 {
status = "disabled";
};
i2c@3000 {
status = "disabled";
};
i2c@3100 {
status = "disabled";
};
serial0: serial@4500 {
status = "disabled";
};
spi@7000 {
status = "disabled";
};
gpio: gpio-controller@f000 {
status = "disabled";
};
dma@21300 {
status = "disabled";
};
mdio@24000 {
status = "disabled";
};
mdio@25000 {
status = "disabled";
};
enet1: ethernet@b1000 {
status = "disabled";
};
enet2: ethernet@b2000 {
status = "disabled";
};
usb@22000 {
status = "disabled";
};
sdhci@2e000 {
status = "disabled";
};
mpic: pic@40000 {
protected-sources = <
16 /* ecm, mem, L2, pci0, pci1 */
43 42 59 /* i2c, serial0, spi */
47 63 62 /* gpio, tdm */
20 21 22 23 /* dma */
03 02 /* mdio */
35 36 40 /* enet1-queue-group0 */
51 52 67 /* enet1-queue-group1 */
31 32 33 /* enet2-queue-group0 */
25 26 27 /* enet2-queue-group1 */
28 72 58 /* usb, sdhci, crypto */
0xb0 0xb1 0xb2 /* message */
0xb3 0xb4 0xb5
0xb6 0xb7
0xe0 0xe1 0xe2 /* msi */
0xe3 0xe4 0xe5
0xe6 0xe7 /* sdhci, crypto , pci */
>;
pic-no-reset;
};
msi@41600 {
status = "disabled";
};
global-utilities@e0000 { //global utilities block
status = "disabled";
};
};
pci0: pcie@ffe09000 {
status = "disabled";
};
pci1: pcie@ffe0a000 {
status = "disabled";
};
};
arch/powerpc/boot/dts/p1021rdb.dts
0 → 100644
View file @
4286f84e
/*
*
P1021
RDB
Device
Tree
Source
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
"AS IS"
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1021si-pre.dtsi"
/
{
model
=
"fsl,P1021RDB"
;
compatible
=
"fsl,P1021RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
and
Vitesse
5
port
L2
switch
*/
ranges
=
<
0x0
0x0
0x0
0xef000000
0x01000000
0x1
0x0
0x0
0xff800000
0x00040000
0x2
0x0
0x0
0xffb00000
0x00020000
>;
};
soc
:
soc
@
ffe00000
{
ranges
=
<
0x0
0x0
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
ffe09000
{
ranges
=
<
0x2000000
0x0
0xa0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc10000
0x0
0x10000
>;
reg
=
<
0
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
ffe0a000
{
reg
=
<
0
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0x80000000
0x2000000
0x0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
qe
:
qe
@
ffe80000
{
ranges
=
<
0x0
0x0
0xffe80000
0x40000
>;
reg
=
<
0
0xffe80000
0
0x480
>;
brg
-
frequency
=
<
0
>;
bus
-
frequency
=
<
0
>;
};
};
/
include
/
"p1021rdb.dtsi"
/
include
/
"fsl/p1021si-post.dtsi"
arch/powerpc/boot/dts/p1021rdb.dtsi
0 → 100644
View file @
4286f84e
/*
* P1021 RDB Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2011 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x1000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
/* This location must not be altered */
/* 256KB for Vitesse 7385 Switch firmware */
reg = <0x0 0x00040000>;
label = "NOR Vitesse-7385 Firmware";
read-only;
};
partition@40000 {
/* 256KB for DTB Image */
reg = <0x00040000 0x00040000>;
label = "NOR DTB Image";
};
partition@80000 {
/* 3.5 MB for Linux Kernel Image */
reg = <0x00080000 0x00380000>;
label = "NOR Linux Kernel Image";
};
partition@400000 {
/* 11MB for JFFS2 based Root file System */
reg = <0x00400000 0x00b00000>;
label = "NOR JFFS2 Root File System";
};
partition@f00000 {
/* This location must not be altered */
/* 512KB for u-boot Bootloader Image */
/* 512KB for u-boot Environment Variables */
reg = <0x00f00000 0x00100000>;
label = "NOR U-Boot Image";
};
};
nand@1,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,p1021-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <0x1 0x0 0x40000>;
partition@0 {
/* This location must not be altered */
/* 1MB for u-boot Bootloader Image */
reg = <0x0 0x00100000>;
label = "NAND U-Boot Image";
read-only;
};
partition@100000 {
/* 1MB for DTB Image */
reg = <0x00100000 0x00100000>;
label = "NAND DTB Image";
};
partition@200000 {
/* 4MB for Linux Kernel Image */
reg = <0x00200000 0x00400000>;
label = "NAND Linux Kernel Image";
};
partition@600000 {
/* 4MB for Compressed Root file System Image */
reg = <0x00600000 0x00400000>;
label = "NAND Compressed RFS Image";
};
partition@a00000 {
/* 7MB for JFFS2 based Root file System */
reg = <0x00a00000 0x00700000>;
label = "NAND JFFS2 Root File System";
};
partition@1100000 {
/* 15MB for User Writable Area */
reg = <0x01100000 0x00f00000>;
label = "NAND Writable User area";
};
};
L2switch@2,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "vitesse-7385";
reg = <0x2 0x0 0x20000>;
};
};
&soc {
i2c@3000 {
rtc@68 {
compatible = "pericom,pt7c4338";
reg = <0x68>;
};
};
spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spansion,s25sl12801";
reg = <0>;
spi-max-frequency = <40000000>; /* input clock */
partition@u-boot {
/* 512KB for u-boot Bootloader Image */
reg = <0x0 0x00080000>;
label = "SPI Flash U-Boot Image";
read-only;
};
partition@dtb {
/* 512KB for DTB Image */
reg = <0x00080000 0x00080000>;
label = "SPI Flash DTB Image";
};
partition@kernel {
/* 4MB for Linux Kernel Image */
reg = <0x00100000 0x00400000>;
label = "SPI Flash Linux Kernel Image";
};
partition@fs {
/* 4MB for Compressed RFS Image */
reg = <0x00500000 0x00400000>;
label = "SPI Flash Compressed RFSImage";
};
partition@jffs-fs {
/* 7MB for JFFS2 based RFS */
reg = <0x00900000 0x00700000>;
label = "SPI Flash JFFS2 RFS";
};
};
};
usb@22000 {
phy_type = "ulpi";
};
mdio@24000 {
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <3 1 0 0>;
reg = <0x0>;
};
phy1: ethernet-phy@1 {
interrupt-parent = <&mpic>;
interrupts = <2 1 0 0>;
reg = <0x1>;
};
tbi0: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
mdio@25000 {
tbi1: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
mdio@26000 {
tbi2: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet0: ethernet@b0000 {
fixed-link = <1 1 1000 0 0>;
phy-connection-type = "rgmii-id";
};
enet1: ethernet@b1000 {
phy-handle = <&phy0>;
tbi-handle = <&tbi1>;
phy-connection-type = "sgmii";
};
enet2: ethernet@b2000 {
phy-handle = <&phy1>;
tbi-handle = <&tbi2>;
phy-connection-type = "rgmii-id";
};
};
arch/powerpc/boot/dts/p1021rdb_36b.dts
0 → 100644
View file @
4286f84e
/*
*
P1021
RDB
Device
Tree
Source
(
36
-
bit
address
map
)
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
"AS IS"
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1021si-pre.dtsi"
/
{
model
=
"fsl,P1021RDB"
;
compatible
=
"fsl,P1021RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fffe05000
{
reg
=
<
0xf
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
and
Vitesse
5
port
L2
switch
*/
ranges
=
<
0x0
0x0
0xf
0xef000000
0x01000000
0x1
0x0
0xf
0xff800000
0x00040000
0x2
0x0
0xf
0xffb00000
0x00020000
>;
};
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
fffe09000
{
ranges
=
<
0x2000000
0x0
0xc0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
reg
=
<
0xf
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xa0000000
0x2000000
0x0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
fffe0a000
{
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0x80000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xc0000000
0x2000000
0x0
0xc0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
qe
:
qe
@
fffe80000
{
ranges
=
<
0x0
0xf
0xffe80000
0x40000
>;
reg
=
<
0xf
0xffe80000
0
0x480
>;
brg
-
frequency
=
<
0
>;
bus
-
frequency
=
<
0
>;
};
};
/
include
/
"p1021rdb.dtsi"
/
include
/
"fsl/p1021si-post.dtsi"
arch/powerpc/boot/dts/p1022ds.dts
deleted
100644 → 0
View file @
2d87e06e
/*
*
P1022
DS
36
Bit
Physical
Address
Map
Device
Tree
Source
*
*
Copyright
2010
Freescale
Semiconductor
,
Inc
.
*
*
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
/
"fsl/p1022si-pre.dtsi"
/
{
model
=
"fsl,P1022DS"
;
compatible
=
"fsl,P1022DS"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fffe05000
{
reg
=
<
0xf
0xffe05000
0
0x1000
>;
ranges
=
<
0x0
0x0
0xf
0xe8000000
0x08000000
0x1
0x0
0xf
0xe0000000
0x08000000
0x2
0x0
0xf
0xff800000
0x00040000
0x3
0x0
0xf
0xffdf0000
0x00008000
>;
/*
*
This
node
is
used
to
access
the
pixis
via
"indirect"
mode
,
*
which
is
done
by
writing
the
pixis
register
index
to
chip
*
select
0
and
the
value
to
/
from
chip
select
1.
Indirect
*
mode
is
the
only
way
to
access
the
pixis
when
DIU
video
*
is
enabled
.
Note
that
this
assumes
that
the
first
column
*
of
the
'ranges'
property
above
is
the
chip
select
number
.
*/
board
-
control
@
0
,
0
{
compatible
=
"fsl,p1022ds-indirect-pixis"
;
reg
=
<
0x0
0x0
1
/*
CS0
*/
0x1
0x0
1
>;
/*
CS1
*/
};
nor
@
0
,
0
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"cfi-flash"
;
reg
=
<
0x0
0x0
0x8000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
1
>;
partition
@
0
{
reg
=
<
0x0
0x03000000
>;
label
=
"ramdisk-nor"
;
read
-
only
;
};
partition
@
3000000
{
reg
=
<
0x03000000
0x00e00000
>;
label
=
"diagnostic-nor"
;
read
-
only
;
};
partition
@
3e00000
{
reg
=
<
0x03e00000
0x00200000
>;
label
=
"dink-nor"
;
read
-
only
;
};
partition
@
4000000
{
reg
=
<
0x04000000
0x00400000
>;
label
=
"kernel-nor"
;
read
-
only
;
};
partition
@
4400000
{
reg
=
<
0x04400000
0x03b00000
>;
label
=
"jffs2-nor"
;
};
partition
@
7f00000
{
reg
=
<
0x07f00000
0x00080000
>;
label
=
"dtb-nor"
;
read
-
only
;
};
partition
@
7f80000
{
reg
=
<
0x07f80000
0x00080000
>;
label
=
"u-boot-nor"
;
read
-
only
;
};
};
nand
@
2
,
0
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"fsl,elbc-fcm-nand"
;
reg
=
<
0x2
0x0
0x40000
>;
partition
@
0
{
reg
=
<
0x0
0x02000000
>;
label
=
"u-boot-nand"
;
read
-
only
;
};
partition
@
2000000
{
reg
=
<
0x02000000
0x10000000
>;
label
=
"jffs2-nand"
;
};
partition
@
12000000
{
reg
=
<
0x12000000
0x10000000
>;
label
=
"ramdisk-nand"
;
read
-
only
;
};
partition
@
22000000
{
reg
=
<
0x22000000
0x04000000
>;
label
=
"kernel-nand"
;
};
partition
@
26000000
{
reg
=
<
0x26000000
0x01000000
>;
label
=
"dtb-nand"
;
read
-
only
;
};
partition
@
27000000
{
reg
=
<
0x27000000
0x19000000
>;
label
=
"reserved-nand"
;
};
};
board
-
control
@
3
,
0
{
compatible
=
"fsl,p1022ds-fpga"
,
"fsl,fpga-ngpixis"
;
reg
=
<
3
0
0x30
>;
interrupt
-
parent
=
<&
mpic
>;
/*
*
IRQ8
is
generated
if
the
"EVENT"
switch
is
pressed
*
and
PX_CTL
[
EVESEL
]
is
set
to
00.
*/
interrupts
=
<
8
8
0
0
>;
};
};
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
i2c
@
3100
{
wm8776
:
codec
@
1
a
{
compatible
=
"wlf,wm8776"
;
reg
=
<
0x1a
>;
/*
*
clock
-
frequency
will
be
set
by
U
-
Boot
if
*
the
clock
is
enabled
.
*/
};
};
spi
@
7000
{
flash
@
0
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"spansion,s25sl12801"
;
reg
=
<
0
>;
spi
-
max
-
frequency
=
<
40000000
>;
/*
input
clock
*/
partition
@
0
{
label
=
"u-boot-spi"
;
reg
=
<
0x00000000
0x00100000
>;
read
-
only
;
};
partition
@
100000
{
label
=
"kernel-spi"
;
reg
=
<
0x00100000
0x00500000
>;
read
-
only
;
};
partition
@
600000
{
label
=
"dtb-spi"
;
reg
=
<
0x00600000
0x00100000
>;
read
-
only
;
};
partition
@
700000
{
label
=
"file system-spi"
;
reg
=
<
0x00700000
0x00900000
>;
};
};
};
ssi
@
15000
{
fsl
,
mode
=
"i2s-slave"
;
codec
-
handle
=
<&
wm8776
>;
fsl
,
ssi
-
asynchronous
;
};
usb
@
22000
{
phy_type
=
"ulpi"
;
};
usb
@
23000
{
status
=
"disabled"
;
};
mdio
@
24000
{
phy0
:
ethernet
-
phy
@
0
{
interrupts
=
<
3
1
0
0
>;
reg
=
<
0x1
>;
};
phy1
:
ethernet
-
phy
@
1
{
interrupts
=
<
9
1
0
0
>;
reg
=
<
0x2
>;
};
tbi
-
phy
@
2
{
device_type
=
"tbi-phy"
;
reg
=
<
0x2
>;
};
};
ethernet
@
b0000
{
phy
-
handle
=
<&
phy0
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
ethernet
@
b1000
{
phy
-
handle
=
<&
phy1
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
};
pci0
:
pcie
@
fffe09000
{
reg
=
<
0xf
0xffe09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
fffe0a000
{
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x40000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc20000
0x0
0x10000
>;
pcie
@
0
{
reg
=
<
0x0
0x0
0x0
0x0
0x0
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci2
:
pcie
@
fffe0b000
{
reg
=
<
0xf
0xffe0b000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"fsl/p1022si-post.dtsi"
arch/powerpc/boot/dts/p1022ds.dtsi
0 → 100644
View file @
4286f84e
/*
* P1022 DS Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2012 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&board_lbc {
/*
* This node is used to access the pixis via "indirect" mode,
* which is done by writing the pixis register index to chip
* select 0 and the value to/from chip select 1. Indirect
* mode is the only way to access the pixis when DIU video
* is enabled. Note that this assumes that the first column
* of the 'ranges' property above is the chip select number.
*/
board-control@0,0 {
compatible = "fsl,p1022ds-indirect-pixis";
reg = <0x0 0x0 1 /* CS0 */
0x1 0x0 1>; /* CS1 */
interrupt-parent = <&mpic>;
interrupts = <8 0 0 0>;
};
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x8000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
reg = <0x0 0x03000000>;
label = "ramdisk-nor";
read-only;
};
partition@3000000 {
reg = <0x03000000 0x00e00000>;
label = "diagnostic-nor";
read-only;
};
partition@3e00000 {
reg = <0x03e00000 0x00200000>;
label = "dink-nor";
read-only;
};
partition@4000000 {
reg = <0x04000000 0x00400000>;
label = "kernel-nor";
read-only;
};
partition@4400000 {
reg = <0x04400000 0x03b00000>;
label = "jffs2-nor";
};
partition@7f00000 {
reg = <0x07f00000 0x00080000>;
label = "dtb-nor";
read-only;
};
partition@7f80000 {
reg = <0x07f80000 0x00080000>;
label = "u-boot-nor";
read-only;
};
};
nand@2,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,elbc-fcm-nand";
reg = <0x2 0x0 0x40000>;
partition@0 {
reg = <0x0 0x02000000>;
label = "u-boot-nand";
read-only;
};
partition@2000000 {
reg = <0x02000000 0x10000000>;
label = "jffs2-nand";
};
partition@12000000 {
reg = <0x12000000 0x10000000>;
label = "ramdisk-nand";
read-only;
};
partition@22000000 {
reg = <0x22000000 0x04000000>;
label = "kernel-nand";
};
partition@26000000 {
reg = <0x26000000 0x01000000>;
label = "dtb-nand";
read-only;
};
partition@27000000 {
reg = <0x27000000 0x19000000>;
label = "reserved-nand";
};
};
board-control@3,0 {
compatible = "fsl,p1022ds-fpga", "fsl,fpga-ngpixis";
reg = <3 0 0x30>;
interrupt-parent = <&mpic>;
/*
* IRQ8 is generated if the "EVENT" switch is pressed
* and PX_CTL[EVESEL] is set to 00.
*/
interrupts = <8 0 0 0>;
};
};
&board_soc {
i2c@3100 {
wm8776:codec@1a {
compatible = "wlf,wm8776";
reg = <0x1a>;
/*
* clock-frequency will be set by U-Boot if
* the clock is enabled.
*/
};
};
spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spansion,s25sl12801";
reg = <0>;
spi-max-frequency = <40000000>; /* input clock */
partition@0 {
label = "u-boot-spi";
reg = <0x00000000 0x00100000>;
read-only;
};
partition@100000 {
label = "kernel-spi";
reg = <0x00100000 0x00500000>;
read-only;
};
partition@600000 {
label = "dtb-spi";
reg = <0x00600000 0x00100000>;
read-only;
};
partition@700000 {
label = "file system-spi";
reg = <0x00700000 0x00900000>;
};
};
};
ssi@15000 {
fsl,mode = "i2s-slave";
codec-handle = <&wm8776>;
fsl,ssi-asynchronous;
};
usb@22000 {
phy_type = "ulpi";
};
usb@23000 {
status = "disabled";
};
mdio@24000 {
phy0: ethernet-phy@0 {
interrupts = <3 1 0 0>;
reg = <0x1>;
};
phy1: ethernet-phy@1 {
interrupts = <9 1 0 0>;
reg = <0x2>;
};
tbi-phy@2 {
device_type = "tbi-phy";
reg = <0x2>;
};
};
ethernet@b0000 {
phy-handle = <&phy0>;
phy-connection-type = "rgmii-id";
};
ethernet@b1000 {
phy-handle = <&phy1>;
phy-connection-type = "rgmii-id";
};
};
arch/powerpc/boot/dts/p1022ds_32b.dts
0 → 100644
View file @
4286f84e
/*
*
P1022
DS
32
-
bit
Physical
Address
Map
Device
Tree
Source
*
*
Copyright
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
"AS IS"
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1022si-pre.dtsi"
/
{
model
=
"fsl,P1022DS"
;
compatible
=
"fsl,P1022DS"
;
memory
{
device_type
=
"memory"
;
};
board_lbc
:
lbc
:
localbus
@
ffe05000
{
ranges
=
<
0x0
0x0
0x0
0xe8000000
0x08000000
0x1
0x0
0x0
0xe0000000
0x08000000
0x2
0x0
0x0
0xff800000
0x00040000
0x3
0x0
0x0
0xffdf0000
0x00008000
>;
reg
=
<
0x0
0xffe05000
0
0x1000
>;
};
board_soc
:
soc
:
soc
@
ffe00000
{
ranges
=
<
0x0
0x0
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
ffe09000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc10000
0x0
0x10000
>;
reg
=
<
0x0
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
ffe0a000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0
0xc0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc20000
0x0
0x10000
>;
reg
=
<
0
0xffe0a000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci2
:
pcie
@
ffe0b000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc00000
0x0
0x10000
>;
reg
=
<
0
0xffe0b000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"fsl/p1022si-post.dtsi"
/
include
/
"p1022ds.dtsi"
arch/powerpc/boot/dts/p1022ds_36b.dts
0 → 100644
View file @
4286f84e
/*
*
P1022
DS
36
-
bit
Physical
Address
Map
Device
Tree
Source
*
*
Copyright
2012
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
"AS IS"
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1022si-pre.dtsi"
/
{
model
=
"fsl,P1022DS"
;
compatible
=
"fsl,P1022DS"
;
memory
{
device_type
=
"memory"
;
};
board_lbc
:
lbc
:
localbus
@
fffe05000
{
ranges
=
<
0x0
0x0
0xf
0xe8000000
0x08000000
0x1
0x0
0xf
0xe0000000
0x08000000
0x2
0x0
0xf
0xff800000
0x00040000
0x3
0x0
0xf
0xffdf0000
0x00008000
>;
reg
=
<
0xf
0xffe05000
0
0x1000
>;
};
board_soc
:
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
fffe09000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
reg
=
<
0xf
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
fffe0a000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x40000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc20000
0x0
0x10000
>;
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci2
:
pcie
@
fffe0b000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
reg
=
<
0xf
0xffe0b000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"fsl/p1022si-post.dtsi"
/
include
/
"p1022ds.dtsi"
arch/powerpc/boot/dts/p1025rdb.dtsi
0 → 100644
View file @
4286f84e
/*
* P1025 RDB Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2011 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x1000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
/* This location must not be altered */
/* 256KB for Vitesse 7385 Switch firmware */
reg = <0x0 0x00040000>;
label = "NOR Vitesse-7385 Firmware";
read-only;
};
partition@40000 {
/* 256KB for DTB Image */
reg = <0x00040000 0x00040000>;
label = "NOR DTB Image";
};
partition@80000 {
/* 3.5 MB for Linux Kernel Image */
reg = <0x00080000 0x00380000>;
label = "NOR Linux Kernel Image";
};
partition@400000 {
/* 11MB for JFFS2 based Root file System */
reg = <0x00400000 0x00b00000>;
label = "NOR JFFS2 Root File System";
};
partition@f00000 {
/* This location must not be altered */
/* 512KB for u-boot Bootloader Image */
/* 512KB for u-boot Environment Variables */
reg = <0x00f00000 0x00100000>;
label = "NOR U-Boot Image";
read-only;
};
};
nand@1,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,p1025-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <0x1 0x0 0x40000>;
partition@0 {
/* This location must not be altered */
/* 1MB for u-boot Bootloader Image */
reg = <0x0 0x00100000>;
label = "NAND U-Boot Image";
read-only;
};
partition@100000 {
/* 1MB for DTB Image */
reg = <0x00100000 0x00100000>;
label = "NAND DTB Image";
};
partition@200000 {
/* 4MB for Linux Kernel Image */
reg = <0x00200000 0x00400000>;
label = "NAND Linux Kernel Image";
};
partition@600000 {
/* 4MB for Compressed Root file System Image */
reg = <0x00600000 0x00400000>;
label = "NAND Compressed RFS Image";
};
partition@a00000 {
/* 7MB for JFFS2 based Root file System */
reg = <0x00a00000 0x00700000>;
label = "NAND JFFS2 Root File System";
};
partition@1100000 {
/* 15MB for JFFS2 based Root file System */
reg = <0x01100000 0x00f00000>;
label = "NAND Writable User area";
};
};
};
&soc {
i2c@3000 {
rtc@68 {
compatible = "dallas,ds1339";
reg = <0x68>;
};
};
spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spansion,s25sl12801";
reg = <0>;
spi-max-frequency = <40000000>; /* input clock */
partition@u-boot {
/* 512KB for u-boot Bootloader Image */
reg = <0x0 0x00080000>;
label = "u-boot";
read-only;
};
partition@dtb {
/* 512KB for DTB Image */
reg = <0x00080000 0x00080000>;
label = "dtb";
};
partition@kernel {
/* 4MB for Linux Kernel Image */
reg = <0x00100000 0x00400000>;
label = "kernel";
};
partition@fs {
/* 4MB for Compressed RFS Image */
reg = <0x00500000 0x00400000>;
label = "file system";
};
partition@jffs-fs {
/* 7MB for JFFS2 based RFS */
reg = <0x00900000 0x00700000>;
label = "file system jffs2";
};
};
};
usb@22000 {
phy_type = "ulpi";
};
/* USB2 is shared with localbus, so it must be disabled
by default. We can't put 'status = "disabled";' here
since U-Boot doesn't clear the status property when
it enables USB2. OTOH, U-Boot does create a new node
when there isn't any. So, just comment it out.
usb@23000 {
phy_type = "ulpi";
};
*/
mdio@24000 {
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <3 1>;
reg = <0x0>;
};
phy1: ethernet-phy@1 {
interrupt-parent = <&mpic>;
interrupts = <2 1>;
reg = <0x1>;
};
tbi0: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
mdio@25000 {
tbi1: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
mdio@26000 {
tbi2: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
enet0: ethernet@b0000 {
fixed-link = <1 1 1000 0 0>;
phy-connection-type = "rgmii-id";
};
enet1: ethernet@b1000 {
phy-handle = <&phy0>;
tbi-handle = <&tbi1>;
phy-connection-type = "sgmii";
};
enet2: ethernet@b2000 {
phy-handle = <&phy1>;
phy-connection-type = "rgmii-id";
};
par_io@e0100 {
#address-cells = <1>;
#size-cells = <1>;
reg = <0xe0100 0x60>;
ranges = <0x0 0xe0100 0x60>;
device_type = "par_io";
num-ports = <3>;
pio1: ucc_pin@01 {
pio-map = <
/* port pin dir open_drain assignment has_irq */
0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */
0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */
0x0 0x17 0x2 0x0 0x2 0x0 /* CLK12 */
0x0 0x18 0x2 0x0 0x1 0x0 /* CLK9 */
0x0 0x7 0x1 0x0 0x2 0x0 /* ENET1_TXD0_SER1_TXD0 */
0x0 0x9 0x1 0x0 0x2 0x0 /* ENET1_TXD1_SER1_TXD1 */
0x0 0xb 0x1 0x0 0x2 0x0 /* ENET1_TXD2_SER1_TXD2 */
0x0 0xc 0x1 0x0 0x2 0x0 /* ENET1_TXD3_SER1_TXD3 */
0x0 0x6 0x2 0x0 0x2 0x0 /* ENET1_RXD0_SER1_RXD0 */
0x0 0xa 0x2 0x0 0x2 0x0 /* ENET1_RXD1_SER1_RXD1 */
0x0 0xe 0x2 0x0 0x2 0x0 /* ENET1_RXD2_SER1_RXD2 */
0x0 0xf 0x2 0x0 0x2 0x0 /* ENET1_RXD3_SER1_RXD3 */
0x0 0x5 0x1 0x0 0x2 0x0 /* ENET1_TX_EN_SER1_RTS_B */
0x0 0xd 0x1 0x0 0x2 0x0 /* ENET1_TX_ER */
0x0 0x4 0x2 0x0 0x2 0x0 /* ENET1_RX_DV_SER1_CTS_B */
0x0 0x8 0x2 0x0 0x2 0x0 /* ENET1_RX_ER_SER1_CD_B */
0x0 0x11 0x2 0x0 0x2 0x0 /* ENET1_CRS */
0x0 0x10 0x2 0x0 0x2 0x0>; /* ENET1_COL */
};
pio2: ucc_pin@02 {
pio-map = <
/* port pin dir open_drain assignment has_irq */
0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */
0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */
0x1 0xb 0x2 0x0 0x1 0x0 /* CLK13 */
0x1 0x7 0x1 0x0 0x2 0x0 /* ENET5_TXD0_SER5_TXD0 */
0x1 0xa 0x1 0x0 0x2 0x0 /* ENET5_TXD1_SER5_TXD1 */
0x1 0x6 0x2 0x0 0x2 0x0 /* ENET5_RXD0_SER5_RXD0 */
0x1 0x9 0x2 0x0 0x2 0x0 /* ENET5_RXD1_SER5_RXD1 */
0x1 0x5 0x1 0x0 0x2 0x0 /* ENET5_TX_EN_SER5_RTS_B */
0x1 0x4 0x2 0x0 0x2 0x0 /* ENET5_RX_DV_SER5_CTS_B */
0x1 0x8 0x2 0x0 0x2 0x0>; /* ENET5_RX_ER_SER5_CD_B */
};
};
};
arch/powerpc/boot/dts/p1025rdb_32b.dts
0 → 100644
View file @
4286f84e
/*
*
P1025
RDB
Device
Tree
Source
(
32
-
bit
address
map
)
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1021si-pre.dtsi"
/
{
model
=
"fsl,P1025RDB"
;
compatible
=
"fsl,P1025RDB"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
*/
ranges
=
<
0x0
0x0
0x0
0xef000000
0x01000000
0x1
0x0
0x0
0xff800000
0x00040000
>;
};
soc
:
soc
@
ffe00000
{
ranges
=
<
0x0
0x0
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
ffe09000
{
ranges
=
<
0x2000000
0x0
0xe0000000
0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc10000
0x0
0x10000
>;
reg
=
<
0
0xffe09000
0
0x1000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
ffe0a000
{
reg
=
<
0
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
qe
:
qe
@
ffe80000
{
ranges
=
<
0x0
0x0
0xffe80000
0x40000
>;
reg
=
<
0
0xffe80000
0
0x480
>;
brg
-
frequency
=
<
0
>;
bus
-
frequency
=
<
0
>;
status
=
"disabled"
;
/*
no
firmware
loaded
*/
enet3
:
ucc
@
2000
{
device_type
=
"network"
;
compatible
=
"ucc_geth"
;
rx
-
clock
-
name
=
"clk12"
;
tx
-
clock
-
name
=
"clk9"
;
pio
-
handle
=
<&
pio1
>;
phy
-
handle
=
<&
qe_phy0
>;
phy
-
connection
-
type
=
"mii"
;
};
mdio
@
2120
{
qe_phy0
:
ethernet
-
phy
@
0
{
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
4
1
0
0
>;
reg
=
<
0x6
>;
device_type
=
"ethernet-phy"
;
};
qe_phy1
:
ethernet
-
phy
@
03
{
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
5
1
0
0
>;
reg
=
<
0x3
>;
device_type
=
"ethernet-phy"
;
};
tbi
-
phy
@
11
{
reg
=
<
0x11
>;
device_type
=
"tbi-phy"
;
};
};
enet4
:
ucc
@
2400
{
device_type
=
"network"
;
compatible
=
"ucc_geth"
;
rx
-
clock
-
name
=
"none"
;
tx
-
clock
-
name
=
"clk13"
;
pio
-
handle
=
<&
pio2
>;
phy
-
handle
=
<&
qe_phy1
>;
phy
-
connection
-
type
=
"rmii"
;
};
};
};
/
include
/
"p1025rdb.dtsi"
/
include
/
"fsl/p1021si-post.dtsi"
arch/powerpc/boot/dts/p1025rdb_36b.dts
0 → 100644
View file @
4286f84e
/*
*
P1025
RDB
Device
Tree
Source
(
36
-
bit
address
map
)
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p1021si-pre.dtsi"
/
{
model
=
"fsl,P1025RDB"
;
compatible
=
"fsl,P1025RDB"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fffe05000
{
reg
=
<
0xf
0xffe05000
0
0x1000
>;
/*
NOR
,
NAND
Flashes
*/
ranges
=
<
0x0
0x0
0xf
0xef000000
0x01000000
0x1
0x0
0xf
0xff800000
0x00040000
>;
};
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
fffe09000
{
reg
=
<
0xf
0xffe09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xe
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci1
:
pcie
@
fffe0a000
{
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"p1025rdb.dtsi"
/
include
/
"fsl/p1021si-post.dtsi"
arch/powerpc/boot/dts/p2020rdb-pc.dtsi
0 → 100644
View file @
4286f84e
/*
* P2020 RDB-PC Device Tree Source stub (no addresses or top-level ranges)
*
* Copyright 2011 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
&lbc {
nor@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x1000000>;
bank-width = <2>;
device-width = <1>;
partition@0 {
/* This location must not be altered */
/* 256KB for Vitesse 7385 Switch firmware */
reg = <0x0 0x00040000>;
label = "NOR Vitesse-7385 Firmware";
read-only;
};
partition@40000 {
/* 256KB for DTB Image */
reg = <0x00040000 0x00040000>;
label = "NOR DTB Image";
};
partition@80000 {
/* 3.5 MB for Linux Kernel Image */
reg = <0x00080000 0x00380000>;
label = "NOR Linux Kernel Image";
};
partition@400000 {
/* 11MB for JFFS2 based Root file System */
reg = <0x00400000 0x00b00000>;
label = "NOR JFFS2 Root File System";
};
partition@f00000 {
/* This location must not be altered */
/* 512KB for u-boot Bootloader Image */
/* 512KB for u-boot Environment Variables */
reg = <0x00f00000 0x00100000>;
label = "NOR U-Boot Image";
read-only;
};
};
nand@1,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,p2020-fcm-nand",
"fsl,elbc-fcm-nand";
reg = <0x1 0x0 0x40000>;
partition@0 {
/* This location must not be altered */
/* 1MB for u-boot Bootloader Image */
reg = <0x0 0x00100000>;
label = "NAND U-Boot Image";
read-only;
};
partition@100000 {
/* 1MB for DTB Image */
reg = <0x00100000 0x00100000>;
label = "NAND DTB Image";
};
partition@200000 {
/* 4MB for Linux Kernel Image */
reg = <0x00200000 0x00400000>;
label = "NAND Linux Kernel Image";
};
partition@600000 {
/* 4MB for Compressed Root file System Image */
reg = <0x00600000 0x00400000>;
label = "NAND Compressed RFS Image";
};
partition@a00000 {
/* 7MB for JFFS2 based Root file System */
reg = <0x00a00000 0x00700000>;
label = "NAND JFFS2 Root File System";
};
partition@1100000 {
/* 15MB for JFFS2 based Root file System */
reg = <0x01100000 0x00f00000>;
label = "NAND Writable User area";
};
};
L2switch@2,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "vitesse-7385";
reg = <0x2 0x0 0x20000>;
};
cpld@3,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cpld";
reg = <0x3 0x0 0x20000>;
read-only;
};
};
&soc {
i2c@3000 {
rtc@68 {
compatible = "pericom,pt7c4338";
reg = <0x68>;
};
};
spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spansion,m25p80";
reg = <0>;
spi-max-frequency = <40000000>;
partition@0 {
/* 512KB for u-boot Bootloader Image */
reg = <0x0 0x00080000>;
label = "SPI U-Boot Image";
read-only;
};
partition@80000 {
/* 512KB for DTB Image */
reg = <0x00080000 0x00080000>;
label = "SPI DTB Image";
};
partition@100000 {
/* 4MB for Linux Kernel Image */
reg = <0x00100000 0x00400000>;
label = "SPI Linux Kernel Image";
};
partition@500000 {
/* 4MB for Compressed RFS Image */
reg = <0x00500000 0x00400000>;
label = "SPI Compressed RFS Image";
};
partition@900000 {
/* 7MB for JFFS2 based RFS */
reg = <0x00900000 0x00700000>;
label = "SPI JFFS2 RFS";
};
};
};
usb@22000 {
phy_type = "ulpi";
};
mdio@24520 {
phy0: ethernet-phy@0 {
interrupts = <3 1 0 0>;
reg = <0x0>;
};
phy1: ethernet-phy@1 {
interrupts = <2 1 0 0>;
reg = <0x1>;
};
};
mdio@25520 {
tbi0: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
mdio@26520 {
status = "disabled";
};
ptp_clock@24e00 {
fsl,tclk-period = <5>;
fsl,tmr-prsc = <200>;
fsl,tmr-add = <0xCCCCCCCD>;
fsl,tmr-fiper1 = <0x3B9AC9FB>;
fsl,tmr-fiper2 = <0x0001869B>;
fsl,max-adj = <249999999>;
};
enet0: ethernet@24000 {
fixed-link = <1 1 1000 0 0>;
phy-connection-type = "rgmii-id";
};
enet1: ethernet@25000 {
tbi-handle = <&tbi0>;
phy-handle = <&phy0>;
phy-connection-type = "sgmii";
};
enet2: ethernet@26000 {
phy-handle = <&phy1>;
phy-connection-type = "rgmii-id";
};
};
arch/powerpc/boot/dts/p2020rdb-pc_32b.dts
0 → 100644
View file @
4286f84e
/*
*
P2020
RDB
-
PC
32
Bit
Physical
Address
Map
Device
Tree
Source
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p2020si-pre.dtsi"
/
{
model
=
"fsl,P2020RDB"
;
compatible
=
"fsl,P2020RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
ffe05000
{
reg
=
<
0
0xffe05000
0
0x1000
>;
/*
NOR
and
NAND
Flashes
*/
ranges
=
<
0x0
0x0
0x0
0xef000000
0x01000000
0x1
0x0
0x0
0xff800000
0x00040000
0x2
0x0
0x0
0xffb00000
0x00020000
0x3
0x0
0x0
0xffa00000
0x00020000
>;
};
soc
:
soc
@
ffe00000
{
ranges
=
<
0x0
0x0
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
ffe08000
{
reg
=
<
0
0xffe08000
0
0x1000
>;
status
=
"disabled"
;
};
pci1
:
pcie
@
ffe09000
{
reg
=
<
0
0xffe09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0
0xa0000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc10000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci2
:
pcie
@
ffe0a000
{
reg
=
<
0
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0
0x80000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"p2020rdb-pc.dtsi"
/
include
/
"fsl/p2020si-post.dtsi"
arch/powerpc/boot/dts/p2020rdb-pc_36b.dts
0 → 100644
View file @
4286f84e
/*
*
P2020
RDB
-
PC
36
Bit
Physical
Address
Map
Device
Tree
Source
*
*
Copyright
2011
Freescale
Semiconductor
Inc
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
*
notice
,
this
list
of
conditions
and
the
following
disclaimer
in
the
*
documentation
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
Freescale
Semiconductor
nor
the
*
names
of
its
contributors
may
be
used
to
endorse
or
promote
products
*
derived
from
this
software
without
specific
prior
written
permission
.
*
*
*
ALTERNATIVELY
,
this
software
may
be
distributed
under
the
terms
of
the
*
GNU
General
Public
License
(
"GPL"
)
as
published
by
the
Free
Software
*
Foundation
,
either
version
2
of
that
License
or
(
at
your
option
)
any
*
later
version
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
Freescale
Semiconductor
``
AS
IS
''
AND
ANY
*
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
IMPLIED
*
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
ARE
*
DISCLAIMED
.
IN
NO
EVENT
SHALL
Freescale
Semiconductor
BE
LIABLE
FOR
ANY
*
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
CONSEQUENTIAL
DAMAGES
*
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES
;
*
LOSS
OF
USE
,
DATA
,
OR
PROFITS
;
OR
BUSINESS
INTERRUPTION
)
HOWEVER
CAUSED
AND
*
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
*
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
*
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
/
include
/
"fsl/p2020si-pre.dtsi"
/
{
model
=
"fsl,P2020RDB"
;
compatible
=
"fsl,P2020RDB-PC"
;
memory
{
device_type
=
"memory"
;
};
lbc
:
localbus
@
fffe05000
{
reg
=
<
0xf
0xffe05000
0
0x1000
>;
/*
NOR
and
NAND
Flashes
*/
ranges
=
<
0x0
0x0
0xf
0xef000000
0x01000000
0x1
0x0
0xf
0xff800000
0x00040000
0x2
0x0
0xf
0xffb00000
0x00020000
0x3
0x0
0xf
0xffa00000
0x00020000
>;
};
soc
:
soc
@
fffe00000
{
ranges
=
<
0x0
0xf
0xffe00000
0x100000
>;
};
pci0
:
pcie
@
fffe08000
{
reg
=
<
0xf
0xffe08000
0
0x1000
>;
status
=
"disabled"
;
};
pci1
:
pcie
@
fffe09000
{
reg
=
<
0xf
0xffe09000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x20000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc10000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
pci2
:
pcie
@
fffe0a000
{
reg
=
<
0xf
0xffe0a000
0
0x1000
>;
ranges
=
<
0x2000000
0x0
0xe0000000
0xc
0x00000000
0x0
0x20000000
0x1000000
0x0
0x00000000
0xf
0xffc00000
0x0
0x10000
>;
pcie
@
0
{
ranges
=
<
0x2000000
0x0
0xe0000000
0x2000000
0x0
0xe0000000
0x0
0x20000000
0x1000000
0x0
0x0
0x1000000
0x0
0x0
0x0
0x100000
>;
};
};
};
/
include
/
"p2020rdb-pc.dtsi"
/
include
/
"fsl/p2020si-post.dtsi"
arch/powerpc/boot/dts/p2020rdb.dts
View file @
4286f84e
...
...
@@ -34,7 +34,7 @@ lbc: localbus@ffe05000 {
/*
NOR
and
NAND
Flashes
*/
ranges
=
<
0x0
0x0
0x0
0xef000000
0x01000000
0x1
0x0
0x0
0xff
a
00000
0x00040000
0x1
0x0
0x0
0xff
8
00000
0x00040000
0x2
0x0
0x0
0xffb00000
0x00020000
>;
nor
@
0
,
0
{
...
...
@@ -157,7 +157,7 @@ flash@0 {
#
size
-
cells
=
<
1
>;
compatible
=
"spansion,s25sl12801"
;
reg
=
<
0
>;
spi
-
max
-
frequency
=
<
5
0000000
>;
spi
-
max
-
frequency
=
<
4
0000000
>;
partition
@
0
{
/*
512
KB
for
u
-
boot
Bootloader
Image
*/
...
...
arch/powerpc/configs/85xx/ge_imp3a_defconfig
0 → 100644
View file @
4286f84e
CONFIG_PPC_85xx=y
CONFIG_SMP=y
CONFIG_NR_CPUS=2
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_SPARSE_IRQ=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_PERF_EVENTS=y
CONFIG_SLAB=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_GE_IMP3A=y
CONFIG_QUICC_ENGINE=y
CONFIG_QE_GPIO=y
CONFIG_CPM2=y
CONFIG_HIGHMEM=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_HZ_1000=y
CONFIG_PREEMPT=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_MISC=m
CONFIG_MATH_EMULATION=y
CONFIG_IRQ_ALL_CPUS=y
CONFIG_FORCE_MAX_ZONEORDER=17
CONFIG_PCI=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCI_MSI=y
CONFIG_PCCARD=y
# CONFIG_PCMCIA_LOAD_CIS is not set
CONFIG_YENTA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_XFRM_USER=m
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=m
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET6_AH=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_TUNNEL=m
CONFIG_NET_PKTGEN=m
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_MTD=y
CONFIG_MTD_OF_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_PHYSMAP_OF=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_FSL_ELBC=y
CONFIG_PROC_DEVICETREE=y
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=131072
CONFIG_MISC_DEVICES=y
CONFIG_DS1682=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_SIL24=y
# CONFIG_ATA_SFF is not set
CONFIG_NETDEVICES=y
CONFIG_BONDING=m
CONFIG_DUMMY=m
CONFIG_NETCONSOLE=y
CONFIG_NETPOLL_TRAP=y
CONFIG_TUN=m
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_FS_ENET=y
CONFIG_UCC_GETH=y
CONFIG_GIANFAR=y
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_FILTER=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=m
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=2
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_QE=m
CONFIG_NVRAM=y
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_CPM=m
CONFIG_I2C_MPC=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GE_FPGA=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_LM92=y
CONFIG_WATCHDOG=y
CONFIG_GEF_WDT=y
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_HID_DRAGONRISE=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
CONFIG_HID_PETALYNX=y
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
CONFIG_HID_SMARTJOYPLUS=y
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
CONFIG_HID_ZEROPLUS=y
CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
CONFIG_USB_EHCI_FSL=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
CONFIG_USB_STORAGE=y
CONFIG_EDAC=y
CONFIG_EDAC_MM_EDAC=y
CONFIG_EDAC_MPC85XX=y
CONFIG_RTC_CLASS=y
# CONFIG_RTC_INTF_PROC is not set
CONFIG_RTC_DRV_RX8581=y
CONFIG_DMADEVICES=y
CONFIG_FSL_DMA=y
# CONFIG_NET_DMA is not set
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4_FS=y
CONFIG_FUSE_FS=y
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=850
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_NTFS_FS=y
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_JFFS2_FS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NFSD_V4=y
CONFIG_CIFS=m
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
CONFIG_CRC_CCITT=y
CONFIG_CRC_T10DIF=y
CONFIG_LIBCRC32C=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_SYSCTL_SYSCALL_CHECK=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_DEV_TALITOS=y
arch/powerpc/configs/86xx/gef_ppc9a_defconfig
View file @
4286f84e
...
...
@@ -131,6 +131,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MPC=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GE_FPGA=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_LM92=y
CONFIG_WATCHDOG=y
...
...
arch/powerpc/configs/86xx/gef_sbc310_defconfig
View file @
4286f84e
...
...
@@ -132,6 +132,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MPC=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GE_FPGA=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_LM92=y
CONFIG_WATCHDOG=y
...
...
arch/powerpc/configs/86xx/gef_sbc610_defconfig
View file @
4286f84e
...
...
@@ -183,6 +183,8 @@ CONFIG_NVRAM=y
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MPC=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GE_FPGA=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_LM92=y
CONFIG_WATCHDOG=y
...
...
arch/powerpc/configs/mpc85xx_defconfig
View file @
4286f84e
CONFIG_PPC_85xx=y
CONFIG_PHYS_64BIT=y
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
...
...
arch/powerpc/configs/mpc85xx_smp_defconfig
View file @
4286f84e
CONFIG_PPC_85xx=y
CONFIG_PHYS_64BIT=y
CONFIG_SMP=y
CONFIG_NR_CPUS=8
CONFIG_EXPERIMENTAL=y
...
...
arch/powerpc/include/asm/cputable.h
View file @
4286f84e
...
...
@@ -390,6 +390,10 @@ extern const char *powerpc_base_platform;
CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \
CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
CPU_FTR_DEBUG_LVL_EXC)
#define CPU_FTRS_E6500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \
CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \
CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
CPU_FTR_DEBUG_LVL_EXC)
#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN)
/* 64-bit CPUs */
...
...
@@ -442,7 +446,7 @@ extern const char *powerpc_base_platform;
#ifdef __powerpc64__
#ifdef CONFIG_PPC_BOOK3E
#define CPU_FTRS_POSSIBLE (CPU_FTRS_E5500 | CPU_FTRS_A2)
#define CPU_FTRS_POSSIBLE (CPU_FTRS_E
6500 | CPU_FTRS_E
5500 | CPU_FTRS_A2)
#else
#define CPU_FTRS_POSSIBLE \
(CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \
...
...
@@ -483,7 +487,7 @@ enum {
#endif
#ifdef CONFIG_E500
CPU_FTRS_E500
|
CPU_FTRS_E500_2
|
CPU_FTRS_E500MC
|
CPU_FTRS_E5500
|
CPU_FTRS_E5500
|
CPU_FTRS_E6500
|
#endif
0
,
};
...
...
@@ -491,7 +495,7 @@ enum {
#ifdef __powerpc64__
#ifdef CONFIG_PPC_BOOK3E
#define CPU_FTRS_ALWAYS (CPU_FTRS_E5500 & CPU_FTRS_A2)
#define CPU_FTRS_ALWAYS (CPU_FTRS_E
6500 & CPU_FTRS_E
5500 & CPU_FTRS_A2)
#else
#define CPU_FTRS_ALWAYS \
(CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 & \
...
...
@@ -528,7 +532,7 @@ enum {
#endif
#ifdef CONFIG_E500
CPU_FTRS_E500
&
CPU_FTRS_E500_2
&
CPU_FTRS_E500MC
&
CPU_FTRS_E5500
&
CPU_FTRS_E5500
&
CPU_FTRS_E6500
&
#endif
CPU_FTRS_POSSIBLE
,
};
...
...
arch/powerpc/include/asm/fsl_guts.h
View file @
4286f84e
...
...
@@ -4,7 +4,7 @@
* Authors: Jeff Brown
* Timur Tabi <timur@freescale.com>
*
* Copyright 2004,2007 Freescale Semiconductor, Inc
* Copyright 2004,2007
,2012
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
...
...
@@ -114,6 +114,10 @@ struct ccsr_guts_86xx {
__be32
srds2cr1
;
/* 0x.0f44 - SerDes2 Control Register 0 */
}
__attribute__
((
packed
));
/* Alternate function signal multiplex control */
#define MPC85xx_PMUXCR_QE(x) (0x8000 >> (x))
#ifdef CONFIG_PPC_86xx
#define CCSR_GUTS_DMACR_DEV_SSI 0
/* DMA controller/channel set to SSI */
...
...
arch/powerpc/include/asm/mpic_msgr.h
0 → 100644
View file @
4286f84e
/*
* Copyright 2011-2012, Meador Inge, Mentor Graphics Corporation.
*
* 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; version 2 of the
* License.
*
*/
#ifndef _ASM_MPIC_MSGR_H
#define _ASM_MPIC_MSGR_H
#include <linux/types.h>
#include <linux/spinlock.h>
struct
mpic_msgr
{
u32
__iomem
*
base
;
u32
__iomem
*
mer
;
int
irq
;
unsigned
char
in_use
;
raw_spinlock_t
lock
;
int
num
;
};
/* Get a message register
*
* @reg_num: the MPIC message register to get
*
* A pointer to the message register is returned. If
* the message register asked for is already in use, then
* EBUSY is returned. If the number given is not associated
* with an actual message register, then ENODEV is returned.
* Successfully getting the register marks it as in use.
*/
extern
struct
mpic_msgr
*
mpic_msgr_get
(
unsigned
int
reg_num
);
/* Relinquish a message register
*
* @msgr: the message register to return
*
* Disables the given message register and marks it as free.
* After this call has completed successully the message
* register is available to be acquired by a call to
* mpic_msgr_get.
*/
extern
void
mpic_msgr_put
(
struct
mpic_msgr
*
msgr
);
/* Enable a message register
*
* @msgr: the message register to enable
*
* The given message register is enabled for sending
* messages.
*/
extern
void
mpic_msgr_enable
(
struct
mpic_msgr
*
msgr
);
/* Disable a message register
*
* @msgr: the message register to disable
*
* The given message register is disabled for sending
* messages.
*/
extern
void
mpic_msgr_disable
(
struct
mpic_msgr
*
msgr
);
/* Write a message to a message register
*
* @msgr: the message register to write to
* @message: the message to write
*
* The given 32-bit message is written to the given message
* register. Writing to an enabled message registers fires
* an interrupt.
*/
static
inline
void
mpic_msgr_write
(
struct
mpic_msgr
*
msgr
,
u32
message
)
{
out_be32
(
msgr
->
base
,
message
);
}
/* Read a message from a message register
*
* @msgr: the message register to read from
*
* Returns the 32-bit value currently in the given message register.
* Upon reading the register any interrupts for that register are
* cleared.
*/
static
inline
u32
mpic_msgr_read
(
struct
mpic_msgr
*
msgr
)
{
return
in_be32
(
msgr
->
base
);
}
/* Clear a message register
*
* @msgr: the message register to clear
*
* Clears any interrupts associated with the given message register.
*/
static
inline
void
mpic_msgr_clear
(
struct
mpic_msgr
*
msgr
)
{
(
void
)
mpic_msgr_read
(
msgr
);
}
/* Set the destination CPU for the message register
*
* @msgr: the message register whose destination is to be set
* @cpu_num: the Linux CPU number to bind the message register to
*
* Note that the CPU number given is the CPU number used by the kernel
* and *not* the actual hardware CPU number.
*/
static
inline
void
mpic_msgr_set_destination
(
struct
mpic_msgr
*
msgr
,
u32
cpu_num
)
{
out_be32
(
msgr
->
base
,
1
<<
get_hard_smp_processor_id
(
cpu_num
));
}
/* Get the IRQ number for the message register
* @msgr: the message register whose IRQ is to be returned
*
* Returns the IRQ number associated with the given message register.
* NO_IRQ is returned if this message register is not capable of
* receiving interrupts. What message register can and cannot receive
* interrupts is specified in the device tree for the system.
*/
static
inline
int
mpic_msgr_get_irq
(
struct
mpic_msgr
*
msgr
)
{
return
msgr
->
irq
;
}
#endif
arch/powerpc/include/asm/reg_booke.h
View file @
4286f84e
...
...
@@ -62,6 +62,7 @@
#define SPRN_DVC2 0x13F
/* Data Value Compare Register 2 */
#define SPRN_MAS8 0x155
/* MMU Assist Register 8 */
#define SPRN_TLB0PS 0x158
/* TLB 0 Page Size Register */
#define SPRN_TLB1PS 0x159
/* TLB 1 Page Size Register */
#define SPRN_MAS5_MAS6 0x15c
/* MMU Assist Register 5 || 6 */
#define SPRN_MAS8_MAS1 0x15d
/* MMU Assist Register 8 || 1 */
#define SPRN_EPTCFG 0x15e
/* Embedded Page Table Config */
...
...
arch/powerpc/kernel/cputable.c
View file @
4286f84e
...
...
@@ -2019,6 +2019,24 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
machine_check
=
machine_check_e500mc
,
.
platform
=
"ppce5500"
,
},
{
/* e6500 */
.
pvr_mask
=
0xffff0000
,
.
pvr_value
=
0x80400000
,
.
cpu_name
=
"e6500"
,
.
cpu_features
=
CPU_FTRS_E6500
,
.
cpu_user_features
=
COMMON_USER_BOOKE
|
PPC_FEATURE_HAS_FPU
,
.
mmu_features
=
MMU_FTR_TYPE_FSL_E
|
MMU_FTR_BIG_PHYS
|
MMU_FTR_USE_TLBILX
,
.
icache_bsize
=
64
,
.
dcache_bsize
=
64
,
.
num_pmcs
=
4
,
.
oprofile_cpu_type
=
"ppc/e6500"
,
.
oprofile_type
=
PPC_OPROFILE_FSL_EMB
,
.
cpu_setup
=
__setup_cpu_e5500
,
.
cpu_restore
=
__restore_cpu_e5500
,
.
machine_check
=
machine_check_e500mc
,
.
platform
=
"ppce6500"
,
},
#ifdef CONFIG_PPC32
{
/* default match */
.
pvr_mask
=
0x00000000
,
...
...
arch/powerpc/mm/fsl_booke_mmu.c
View file @
4286f84e
...
...
@@ -149,12 +149,19 @@ static void settlbcam(int index, unsigned long virt, phys_addr_t phys,
unsigned
long
calc_cam_sz
(
unsigned
long
ram
,
unsigned
long
virt
,
phys_addr_t
phys
)
{
unsigned
int
camsize
=
__ilog2
(
ram
)
&
~
1U
;
unsigned
int
align
=
__ffs
(
virt
|
phys
)
&
~
1U
;
unsigned
long
max_cam
=
(
mfspr
(
SPRN_TLB1CFG
)
>>
16
)
&
0xf
;
/* Convert (4^max) kB to (2^max) bytes */
max_cam
=
max_cam
*
2
+
10
;
unsigned
int
camsize
=
__ilog2
(
ram
);
unsigned
int
align
=
__ffs
(
virt
|
phys
);
unsigned
long
max_cam
;
if
((
mfspr
(
SPRN_MMUCFG
)
&
MMUCFG_MAVN
)
==
MMUCFG_MAVN_V1
)
{
/* Convert (4^max) kB to (2^max) bytes */
max_cam
=
((
mfspr
(
SPRN_TLB1CFG
)
>>
16
)
&
0xf
)
*
2
+
10
;
camsize
&=
~
1U
;
align
&=
~
1U
;
}
else
{
/* Convert (2^max) kB to (2^max) bytes */
max_cam
=
__ilog2
(
mfspr
(
SPRN_TLB1PS
))
+
10
;
}
if
(
camsize
>
align
)
camsize
=
align
;
...
...
arch/powerpc/platforms/85xx/Kconfig
View file @
4286f84e
...
...
@@ -6,6 +6,7 @@ menuconfig FSL_SOC_BOOKE
select MPIC
select PPC_PCI_CHOICE
select FSL_PCI if PCI
select SERIAL_8250_EXTENDED if SERIAL_8250
select SERIAL_8250_SHARE_IRQ if SERIAL_8250
default y
...
...
@@ -13,6 +14,15 @@ if FSL_SOC_BOOKE
if PPC32
config FSL_85XX_CACHE_SRAM
bool
select PPC_LIB_RHEAP
help
When selected, this option enables cache-sram support
for memory allocation on P1/P2 QorIQ platforms.
cache-sram-size and cache-sram-offset kernel boot
parameters should be passed when this option is enabled.
config MPC8540_ADS
bool "Freescale MPC8540 ADS"
select DEFAULT_UIMAGE
...
...
@@ -30,6 +40,7 @@ config MPC85xx_CDS
bool "Freescale MPC85xx CDS"
select DEFAULT_UIMAGE
select PPC_I8259
select HAS_RAPIDIO
help
This option enables support for the MPC85xx CDS board
...
...
@@ -80,7 +91,6 @@ config P1010_RDB
config P1022_DS
bool "Freescale P1022 DS"
select DEFAULT_UIMAGE
select PHYS_64BIT # The DTS has 36-bit addresses
select SWIOTLB
help
This option enables support for the Freescale P1022DS reference board.
...
...
@@ -171,6 +181,21 @@ config SBC8560
help
This option enables support for the Wind River SBC8560 board
config GE_IMP3A
bool "GE Intelligent Platforms IMP3A"
select DEFAULT_UIMAGE
select SWIOTLB
select MMIO_NVRAM
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
select GE_FPGA
help
This option enables support for the GE Intelligent Platforms IMP3A
board.
This board is a 3U CompactPCI Single Board Computer with a Freescale
P2020 processor.
config P2041_RDB
bool "Freescale P2041 RDB"
select DEFAULT_UIMAGE
...
...
arch/powerpc/platforms/85xx/Makefile
View file @
4286f84e
...
...
@@ -27,3 +27,4 @@ obj-$(CONFIG_SBC8548) += sbc8548.o
obj-$(CONFIG_SOCRATES)
+=
socrates.o socrates_fpga_pic.o
obj-$(CONFIG_KSI8560)
+=
ksi8560.o
obj-$(CONFIG_XES_MPC85xx)
+=
xes_mpc85xx.o
obj-$(CONFIG_GE_IMP3A)
+=
ge_imp3a.o
arch/powerpc/platforms/85xx/ge_imp3a.c
0 → 100644
View file @
4286f84e
/*
* GE IMP3A Board Setup
*
* Author Martyn Welch <martyn.welch@ge.com>
*
* Copyright 2010 GE Intelligent Platforms Embedded Systems, 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.
*
* Based on: mpc85xx_ds.c (MPC85xx DS Board Setup)
* Copyright 2007 Freescale Semiconductor Inc.
*/
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/kdev_t.h>
#include <linux/delay.h>
#include <linux/seq_file.h>
#include <linux/interrupt.h>
#include <linux/of_platform.h>
#include <linux/memblock.h>
#include <asm/system.h>
#include <asm/time.h>
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <mm/mmu_decl.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/mpic.h>
#include <asm/swiotlb.h>
#include <asm/nvram.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
#include "smp.h"
#include "mpc85xx.h"
#include <sysdev/ge/ge_pic.h>
void
__iomem
*
imp3a_regs
;
void
__init
ge_imp3a_pic_init
(
void
)
{
struct
mpic
*
mpic
;
struct
device_node
*
np
;
struct
device_node
*
cascade_node
=
NULL
;
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
of_flat_dt_is_compatible
(
root
,
"fsl,MPC8572DS-CAMP"
))
{
mpic
=
mpic_alloc
(
NULL
,
0
,
MPIC_NO_RESET
|
MPIC_BIG_ENDIAN
|
MPIC_SINGLE_DEST_CPU
,
0
,
256
,
" OpenPIC "
);
}
else
{
mpic
=
mpic_alloc
(
NULL
,
0
,
MPIC_BIG_ENDIAN
|
MPIC_SINGLE_DEST_CPU
,
0
,
256
,
" OpenPIC "
);
}
BUG_ON
(
mpic
==
NULL
);
mpic_init
(
mpic
);
/*
* There is a simple interrupt handler in the main FPGA, this needs
* to be cascaded into the MPIC
*/
for_each_node_by_type
(
np
,
"interrupt-controller"
)
if
(
of_device_is_compatible
(
np
,
"gef,fpga-pic-1.00"
))
{
cascade_node
=
np
;
break
;
}
if
(
cascade_node
==
NULL
)
{
printk
(
KERN_WARNING
"IMP3A: No FPGA PIC
\n
"
);
return
;
}
gef_pic_init
(
cascade_node
);
of_node_put
(
cascade_node
);
}
#ifdef CONFIG_PCI
static
int
primary_phb_addr
;
#endif
/* CONFIG_PCI */
/*
* Setup the architecture
*/
static
void
__init
ge_imp3a_setup_arch
(
void
)
{
struct
device_node
*
regs
;
#ifdef CONFIG_PCI
struct
device_node
*
np
;
struct
pci_controller
*
hose
;
#endif
dma_addr_t
max
=
0xffffffff
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"ge_imp3a_setup_arch()"
,
0
);
#ifdef CONFIG_PCI
for_each_node_by_type
(
np
,
"pci"
)
{
if
(
of_device_is_compatible
(
np
,
"fsl,mpc8540-pci"
)
||
of_device_is_compatible
(
np
,
"fsl,mpc8548-pcie"
)
||
of_device_is_compatible
(
np
,
"fsl,p2020-pcie"
))
{
struct
resource
rsrc
;
of_address_to_resource
(
np
,
0
,
&
rsrc
);
if
((
rsrc
.
start
&
0xfffff
)
==
primary_phb_addr
)
fsl_add_bridge
(
np
,
1
);
else
fsl_add_bridge
(
np
,
0
);
hose
=
pci_find_hose_for_OF_device
(
np
);
max
=
min
(
max
,
hose
->
dma_window_base_cur
+
hose
->
dma_window_size
);
}
}
#endif
mpc85xx_smp_init
();
#ifdef CONFIG_SWIOTLB
if
(
memblock_end_of_DRAM
()
>
max
)
{
ppc_swiotlb_enable
=
1
;
set_pci_dma_ops
(
&
swiotlb_dma_ops
);
ppc_md
.
pci_dma_dev_setup
=
pci_dma_dev_setup_swiotlb
;
}
#endif
/* Remap basic board registers */
regs
=
of_find_compatible_node
(
NULL
,
NULL
,
"ge,imp3a-fpga-regs"
);
if
(
regs
)
{
imp3a_regs
=
of_iomap
(
regs
,
0
);
if
(
imp3a_regs
==
NULL
)
printk
(
KERN_WARNING
"Unable to map board registers
\n
"
);
of_node_put
(
regs
);
}
#if defined(CONFIG_MMIO_NVRAM)
mmio_nvram_init
();
#endif
printk
(
KERN_INFO
"GE Intelligent Platforms IMP3A 3U cPCI SBC
\n
"
);
}
/* Return the PCB revision */
static
unsigned
int
ge_imp3a_get_pcb_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread16
(
imp3a_regs
);
return
(
reg
>>
8
)
&
0xff
;
}
/* Return the board (software) revision */
static
unsigned
int
ge_imp3a_get_board_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread16
(
imp3a_regs
+
0x2
);
return
reg
&
0xff
;
}
/* Return the FPGA revision */
static
unsigned
int
ge_imp3a_get_fpga_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread16
(
imp3a_regs
+
0x2
);
return
(
reg
>>
8
)
&
0xff
;
}
/* Return compactPCI Geographical Address */
static
unsigned
int
ge_imp3a_get_cpci_geo_addr
(
void
)
{
unsigned
int
reg
;
reg
=
ioread16
(
imp3a_regs
+
0x6
);
return
(
reg
&
0x0f00
)
>>
8
;
}
/* Return compactPCI System Controller Status */
static
unsigned
int
ge_imp3a_get_cpci_is_syscon
(
void
)
{
unsigned
int
reg
;
reg
=
ioread16
(
imp3a_regs
+
0x6
);
return
reg
&
(
1
<<
12
);
}
static
void
ge_imp3a_show_cpuinfo
(
struct
seq_file
*
m
)
{
seq_printf
(
m
,
"Vendor
\t\t
: GE Intelligent Platforms
\n
"
);
seq_printf
(
m
,
"Revision
\t
: %u%c
\n
"
,
ge_imp3a_get_pcb_rev
(),
(
'A'
+
ge_imp3a_get_board_rev
()
-
1
));
seq_printf
(
m
,
"FPGA Revision
\t
: %u
\n
"
,
ge_imp3a_get_fpga_rev
());
seq_printf
(
m
,
"cPCI geo. addr
\t
: %u
\n
"
,
ge_imp3a_get_cpci_geo_addr
());
seq_printf
(
m
,
"cPCI syscon
\t
: %s
\n
"
,
ge_imp3a_get_cpci_is_syscon
()
?
"yes"
:
"no"
);
}
/*
* Called very early, device-tree isn't unflattened
*/
static
int
__init
ge_imp3a_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
of_flat_dt_is_compatible
(
root
,
"ge,IMP3A"
))
{
#ifdef CONFIG_PCI
primary_phb_addr
=
0x9000
;
#endif
return
1
;
}
return
0
;
}
machine_device_initcall
(
ge_imp3a
,
mpc85xx_common_publish_devices
);
machine_arch_initcall
(
ge_imp3a
,
swiotlb_setup_bus_notifier
);
define_machine
(
ge_imp3a
)
{
.
name
=
"GE_IMP3A"
,
.
probe
=
ge_imp3a_probe
,
.
setup_arch
=
ge_imp3a_setup_arch
,
.
init_IRQ
=
ge_imp3a_pic_init
,
.
show_cpuinfo
=
ge_imp3a_show_cpuinfo
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
arch/powerpc/platforms/85xx/mpc85xx_cds.c
View file @
4286f84e
...
...
@@ -3,7 +3,7 @@
*
* Maintained by Kumar Gala (see MAINTAINERS for contact information)
*
* Copyright 2005 Freescale Semiconductor Inc.
* Copyright 2005
, 2011-2012
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
...
...
@@ -48,17 +48,24 @@
#include "mpc85xx.h"
/* CADMUS info */
/* xxx - galak, move into device tree */
#define CADMUS_BASE (0xf8004000)
#define CADMUS_SIZE (256)
#define CM_VER (0)
#define CM_CSR (1)
#define CM_RST (2)
/*
* The CDS board contains an FPGA/CPLD called "Cadmus", which collects
* various logic and performs system control functions.
* Here is the FPGA/CPLD register map.
*/
struct
cadmus_reg
{
u8
cm_ver
;
/* Board version */
u8
cm_csr
;
/* General control/status */
u8
cm_rst
;
/* Reset control */
u8
cm_hsclk
;
/* High speed clock */
u8
cm_hsxclk
;
/* High speed clock extended */
u8
cm_led
;
/* LED data */
u8
cm_pci
;
/* PCI control/status */
u8
cm_dma
;
/* DMA control */
u8
res
[
248
];
/* Total 256 bytes */
};
static
int
cds_pci_slot
=
2
;
static
volatile
u8
*
cadmus
;
static
struct
cadmus_reg
*
cadmus
;
#ifdef CONFIG_PCI
...
...
@@ -158,6 +165,33 @@ DECLARE_PCI_FIXUP_EARLY(0x1957, 0x3fff, skip_fake_bridge);
DECLARE_PCI_FIXUP_EARLY
(
0x3fff
,
0x1957
,
skip_fake_bridge
);
DECLARE_PCI_FIXUP_EARLY
(
0xff3f
,
0x5719
,
skip_fake_bridge
);
#define PCI_DEVICE_ID_IDT_TSI310 0x01a7
/*
* Fix Tsi310 PCI-X bridge resource.
* Force the bridge to open a window from 0x0000-0x1fff in PCI I/O space.
* This allows legacy I/O(i8259, etc) on the VIA southbridge to be accessed.
*/
void
mpc85xx_cds_fixup_bus
(
struct
pci_bus
*
bus
)
{
struct
pci_dev
*
dev
=
bus
->
self
;
struct
resource
*
res
=
bus
->
resource
[
0
];
if
(
dev
!=
NULL
&&
dev
->
vendor
==
PCI_VENDOR_ID_IBM
&&
dev
->
device
==
PCI_DEVICE_ID_IDT_TSI310
)
{
if
(
res
)
{
res
->
start
=
0
;
res
->
end
=
0x1fff
;
res
->
flags
=
IORESOURCE_IO
;
pr_info
(
"mpc85xx_cds: PCI bridge resource fixup applied
\n
"
);
pr_info
(
"mpc85xx_cds: %pR
\n
"
,
res
);
}
}
fsl_pcibios_fixup_bus
(
bus
);
}
#ifdef CONFIG_PPC_I8259
static
void
mpc85xx_8259_cascade_handler
(
unsigned
int
irq
,
struct
irq_desc
*
desc
)
...
...
@@ -248,20 +282,30 @@ machine_device_initcall(mpc85xx_cds, mpc85xx_cds_8259_attach);
*/
static
void
__init
mpc85xx_cds_setup_arch
(
void
)
{
#ifdef CONFIG_PCI
struct
device_node
*
np
;
#endif
int
cds_pci_slot
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"mpc85xx_cds_setup_arch()"
,
0
);
cadmus
=
ioremap
(
CADMUS_BASE
,
CADMUS_SIZE
);
cds_pci_slot
=
((
cadmus
[
CM_CSR
]
>>
6
)
&
0x3
)
+
1
;
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,mpc8548cds-fpga"
);
if
(
!
np
)
{
pr_err
(
"Could not find FPGA node.
\n
"
);
return
;
}
cadmus
=
of_iomap
(
np
,
0
);
of_node_put
(
np
);
if
(
!
cadmus
)
{
pr_err
(
"Fail to map FPGA area.
\n
"
);
return
;
}
if
(
ppc_md
.
progress
)
{
char
buf
[
40
];
cds_pci_slot
=
((
in_8
(
&
cadmus
->
cm_csr
)
>>
6
)
&
0x3
)
+
1
;
snprintf
(
buf
,
40
,
"CDS Version = 0x%x in slot %d
\n
"
,
cadmus
[
CM_VER
]
,
cds_pci_slot
);
in_8
(
&
cadmus
->
cm_ver
)
,
cds_pci_slot
);
ppc_md
.
progress
(
buf
,
0
);
}
...
...
@@ -291,7 +335,8 @@ static void mpc85xx_cds_show_cpuinfo(struct seq_file *m)
svid
=
mfspr
(
SPRN_SVR
);
seq_printf
(
m
,
"Vendor
\t\t
: Freescale Semiconductor
\n
"
);
seq_printf
(
m
,
"Machine
\t\t
: MPC85xx CDS (0x%x)
\n
"
,
cadmus
[
CM_VER
]);
seq_printf
(
m
,
"Machine
\t\t
: MPC85xx CDS (0x%x)
\n
"
,
in_8
(
&
cadmus
->
cm_ver
));
seq_printf
(
m
,
"PVR
\t\t
: 0x%x
\n
"
,
pvid
);
seq_printf
(
m
,
"SVR
\t\t
: 0x%x
\n
"
,
svid
);
...
...
@@ -322,7 +367,7 @@ define_machine(mpc85xx_cds) {
.
get_irq
=
mpic_get_irq
,
#ifdef CONFIG_PCI
.
restart
=
mpc85xx_cds_restart
,
.
pcibios_fixup_bus
=
fsl_pcibio
s_fixup_bus
,
.
pcibios_fixup_bus
=
mpc85xx_cd
s_fixup_bus
,
#else
.
restart
=
fsl_rstcr_restart
,
#endif
...
...
arch/powerpc/platforms/85xx/mpc85xx_mds.c
View file @
4286f84e
/*
* Copyright (C) Freescale Semicondutor, Inc. 2006-2010. All rights reserved.
* Copyright (C) 2006-2010, 2012 Freescale Semicondutor, Inc.
* All rights reserved.
*
* Author: Andy Fleming <afleming@freescale.com>
*
...
...
@@ -51,6 +52,7 @@
#include <asm/qe_ic.h>
#include <asm/mpic.h>
#include <asm/swiotlb.h>
#include <asm/fsl_guts.h>
#include "smp.h"
#include "mpc85xx.h"
...
...
@@ -268,34 +270,27 @@ static void __init mpc85xx_mds_qe_init(void)
mpc85xx_mds_reset_ucc_phys
();
if
(
machine_is
(
p1021_mds
))
{
#define MPC85xx_PMUXCR_OFFSET 0x60
#define MPC85xx_PMUXCR_QE0 0x00008000
#define MPC85xx_PMUXCR_QE3 0x00001000
#define MPC85xx_PMUXCR_QE9 0x00000040
#define MPC85xx_PMUXCR_QE12 0x00000008
static
__be32
__iomem
*
pmuxcr
;
np
=
of_find_node_by_name
(
NULL
,
"global-utilities"
)
;
struct
ccsr_guts_85xx
__iomem
*
guts
;
np
=
of_find_node_by_name
(
NULL
,
"global-utilities"
);
if
(
np
)
{
pmuxcr
=
of_iomap
(
np
,
0
)
+
MPC85xx_PMUXCR_OFFSET
;
if
(
!
pmuxcr
)
printk
(
KERN_EMERG
"Error: Alternate function"
" signal multiplex control register not"
" mapped!
\n
"
);
else
guts
=
of_iomap
(
np
,
0
);
if
(
!
guts
)
pr_err
(
"mpc85xx-rdb: could not map global utilities register
\n
"
);
else
{
/* P1021 has pins muxed for QE and other functions. To
* enable QE UEC mode, we need to set bit QE0 for UCC1
* in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9
* and QE12 for QE MII management signals in PMUXCR
* register.
*/
setbits32
(
pmuxcr
,
MPC85xx_PMUXCR_QE0
|
MPC85xx_PMUXCR_QE3
|
MPC85xx_PMUXCR_QE9
|
MPC85xx_PMUXCR_QE12
);
setbits32
(
&
guts
->
pmuxcr
,
MPC85xx_PMUXCR_QE
(
0
)
|
MPC85xx_PMUXCR_QE
(
3
)
|
MPC85xx_PMUXCR_QE
(
9
)
|
MPC85xx_PMUXCR_QE
(
12
));
iounmap
(
guts
);
}
of_node_put
(
np
);
}
...
...
arch/powerpc/platforms/85xx/mpc85xx_rdb.c
View file @
4286f84e
/*
* MPC85xx RDB Board Setup
*
* Copyright 2009 Freescale Semiconductor Inc.
* Copyright 2009
,2012
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
...
...
@@ -26,6 +26,9 @@
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/mpic.h>
#include <asm/qe.h>
#include <asm/qe_ic.h>
#include <asm/fsl_guts.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
...
...
@@ -47,6 +50,10 @@ void __init mpc85xx_rdb_pic_init(void)
struct
mpic
*
mpic
;
unsigned
long
root
=
of_get_flat_dt_root
();
#ifdef CONFIG_QUICC_ENGINE
struct
device_node
*
np
;
#endif
if
(
of_flat_dt_is_compatible
(
root
,
"fsl,MPC85XXRDB-CAMP"
))
{
mpic
=
mpic_alloc
(
NULL
,
0
,
MPIC_NO_RESET
|
MPIC_BIG_ENDIAN
|
...
...
@@ -61,6 +68,18 @@ void __init mpc85xx_rdb_pic_init(void)
BUG_ON
(
mpic
==
NULL
);
mpic_init
(
mpic
);
#ifdef CONFIG_QUICC_ENGINE
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,qe-ic"
);
if
(
np
)
{
qe_ic_init
(
np
,
0
,
qe_ic_cascade_low_mpic
,
qe_ic_cascade_high_mpic
);
of_node_put
(
np
);
}
else
pr_err
(
"%s: Could not find qe-ic node
\n
"
,
__func__
);
#endif
}
/*
...
...
@@ -68,7 +87,7 @@ void __init mpc85xx_rdb_pic_init(void)
*/
static
void
__init
mpc85xx_rdb_setup_arch
(
void
)
{
#if
def CONFIG_PCI
#if
defined(CONFIG_PCI) || defined(CONFIG_QUICC_ENGINE)
struct
device_node
*
np
;
#endif
...
...
@@ -84,11 +103,73 @@ static void __init mpc85xx_rdb_setup_arch(void)
#endif
mpc85xx_smp_init
();
#ifdef CONFIG_QUICC_ENGINE
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,qe"
);
if
(
!
np
)
{
pr_err
(
"%s: Could not find Quicc Engine node
\n
"
,
__func__
);
goto
qe_fail
;
}
qe_reset
();
of_node_put
(
np
);
np
=
of_find_node_by_name
(
NULL
,
"par_io"
);
if
(
np
)
{
struct
device_node
*
ucc
;
par_io_init
(
np
);
of_node_put
(
np
);
for_each_node_by_name
(
ucc
,
"ucc"
)
par_io_of_config
(
ucc
);
}
#if defined(CONFIG_UCC_GETH) || defined(CONFIG_SERIAL_QE)
if
(
machine_is
(
p1025_rdb
))
{
struct
ccsr_guts_85xx
__iomem
*
guts
;
np
=
of_find_node_by_name
(
NULL
,
"global-utilities"
);
if
(
np
)
{
guts
=
of_iomap
(
np
,
0
);
if
(
!
guts
)
{
pr_err
(
"mpc85xx-rdb: could not map global utilities register
\n
"
);
}
else
{
/* P1025 has pins muxed for QE and other functions. To
* enable QE UEC mode, we need to set bit QE0 for UCC1
* in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9
* and QE12 for QE MII management singals in PMUXCR
* register.
*/
setbits32
(
&
guts
->
pmuxcr
,
MPC85xx_PMUXCR_QE
(
0
)
|
MPC85xx_PMUXCR_QE
(
3
)
|
MPC85xx_PMUXCR_QE
(
9
)
|
MPC85xx_PMUXCR_QE
(
12
));
iounmap
(
guts
);
}
of_node_put
(
np
);
}
}
#endif
qe_fail:
#endif
/* CONFIG_QUICC_ENGINE */
printk
(
KERN_INFO
"MPC85xx RDB board from Freescale Semiconductor
\n
"
);
}
machine_device_initcall
(
p2020_rdb
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p2020_rdb_pc
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1020_mbg_pc
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1020_rdb
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1020_rdb_pc
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1020_utm_pc
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1021_rdb_pc
,
mpc85xx_common_publish_devices
);
machine_device_initcall
(
p1025_rdb
,
mpc85xx_common_publish_devices
);
/*
* Called very early, device-tree isn't unflattened
...
...
@@ -111,6 +192,52 @@ static int __init p1020_rdb_probe(void)
return
0
;
}
static
int
__init
p1020_rdb_pc_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
return
of_flat_dt_is_compatible
(
root
,
"fsl,P1020RDB-PC"
);
}
static
int
__init
p1021_rdb_pc_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
of_flat_dt_is_compatible
(
root
,
"fsl,P1021RDB-PC"
))
return
1
;
return
0
;
}
static
int
__init
p2020_rdb_pc_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
of_flat_dt_is_compatible
(
root
,
"fsl,P2020RDB-PC"
))
return
1
;
return
0
;
}
static
int
__init
p1025_rdb_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
return
of_flat_dt_is_compatible
(
root
,
"fsl,P1025RDB"
);
}
static
int
__init
p1020_mbg_pc_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
return
of_flat_dt_is_compatible
(
root
,
"fsl,P1020MBG-PC"
);
}
static
int
__init
p1020_utm_pc_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
return
of_flat_dt_is_compatible
(
root
,
"fsl,P1020UTM-PC"
);
}
define_machine
(
p2020_rdb
)
{
.
name
=
"P2020 RDB"
,
.
probe
=
p2020_rdb_probe
,
...
...
@@ -138,3 +265,87 @@ define_machine(p1020_rdb) {
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p1021_rdb_pc
)
{
.
name
=
"P1021 RDB-PC"
,
.
probe
=
p1021_rdb_pc_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p2020_rdb_pc
)
{
.
name
=
"P2020RDB-PC"
,
.
probe
=
p2020_rdb_pc_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p1025_rdb
)
{
.
name
=
"P1025 RDB"
,
.
probe
=
p1025_rdb_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p1020_mbg_pc
)
{
.
name
=
"P1020 MBG-PC"
,
.
probe
=
p1020_mbg_pc_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p1020_utm_pc
)
{
.
name
=
"P1020 UTM-PC"
,
.
probe
=
p1020_utm_pc_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
define_machine
(
p1020_rdb_pc
)
{
.
name
=
"P1020RDB-PC"
,
.
probe
=
p1020_rdb_pc_probe
,
.
setup_arch
=
mpc85xx_rdb_setup_arch
,
.
init_IRQ
=
mpc85xx_rdb_pic_init
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
arch/powerpc/platforms/85xx/p1022_ds.c
View file @
4286f84e
...
...
@@ -33,6 +33,10 @@
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
#define PMUXCR_ELBCDIU_MASK 0xc0000000
#define PMUXCR_ELBCDIU_NOR16 0x80000000
#define PMUXCR_ELBCDIU_DIU 0x40000000
/*
* Board-specific initialization of the DIU. This code should probably be
* executed when the DIU is opened, rather than in arch code, but the DIU
...
...
@@ -50,11 +54,22 @@
#define CLKDVDR_PXCLK_MASK 0x00FF0000
/* Some ngPIXIS register definitions */
#define PX_CTL 3
#define PX_BRDCFG0 8
#define PX_BRDCFG1 9
#define PX_BRDCFG0_ELBC_SPI_MASK 0xc0
#define PX_BRDCFG0_ELBC_SPI_ELBC 0x00
#define PX_BRDCFG0_ELBC_SPI_NULL 0xc0
#define PX_BRDCFG0_ELBC_DIU 0x02
#define PX_BRDCFG1_DVIEN 0x80
#define PX_BRDCFG1_DFPEN 0x40
#define PX_BRDCFG1_BACKLIGHT 0x20
#define PX_BRDCFG1_DDCEN 0x10
#define PX_CTL_ALTACC 0x80
/*
* DIU Area Descriptor
*
...
...
@@ -133,44 +148,117 @@ static void p1022ds_set_gamma_table(enum fsl_diu_monitor_port port,
*/
static
void
p1022ds_set_monitor_port
(
enum
fsl_diu_monitor_port
port
)
{
struct
device_node
*
np
;
void
__iomem
*
pixis
;
u8
__iomem
*
brdcfg1
;
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022ds-fpga"
);
if
(
!
np
)
/* older device trees used "fsl,p1022ds-pixis" */
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022ds-pixis"
);
if
(
!
np
)
{
pr_err
(
"p1022ds: missing ngPIXIS node
\n
"
);
struct
device_node
*
guts_node
;
struct
device_node
*
indirect_node
=
NULL
;
struct
ccsr_guts_85xx
__iomem
*
guts
;
u8
__iomem
*
lbc_lcs0_ba
=
NULL
;
u8
__iomem
*
lbc_lcs1_ba
=
NULL
;
u8
b
;
/* Map the global utilities registers. */
guts_node
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022-guts"
);
if
(
!
guts_node
)
{
pr_err
(
"p1022ds: missing global utilties device node
\n
"
);
return
;
}
pixis
=
of_iomap
(
np
,
0
);
if
(
!
pixi
s
)
{
pr_err
(
"p1022ds: could not map
ngPIXIS registers
\n
"
);
return
;
guts
=
of_iomap
(
guts_node
,
0
);
if
(
!
gut
s
)
{
pr_err
(
"p1022ds: could not map
global utilties device
\n
"
);
goto
exit
;
}
brdcfg1
=
pixis
+
9
;
/* BRDCFG1 is at offset 9 in the ngPIXIS */
indirect_node
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022ds-indirect-pixis"
);
if
(
!
indirect_node
)
{
pr_err
(
"p1022ds: missing pixis indirect mode node
\n
"
);
goto
exit
;
}
lbc_lcs0_ba
=
of_iomap
(
indirect_node
,
0
);
if
(
!
lbc_lcs0_ba
)
{
pr_err
(
"p1022ds: could not map localbus chip select 0
\n
"
);
goto
exit
;
}
lbc_lcs1_ba
=
of_iomap
(
indirect_node
,
1
);
if
(
!
lbc_lcs1_ba
)
{
pr_err
(
"p1022ds: could not map localbus chip select 1
\n
"
);
goto
exit
;
}
/* Make sure we're in indirect mode first. */
if
((
in_be32
(
&
guts
->
pmuxcr
)
&
PMUXCR_ELBCDIU_MASK
)
!=
PMUXCR_ELBCDIU_DIU
)
{
struct
device_node
*
pixis_node
;
void
__iomem
*
pixis
;
pixis_node
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022ds-fpga"
);
if
(
!
pixis_node
)
{
pr_err
(
"p1022ds: missing pixis node
\n
"
);
goto
exit
;
}
pixis
=
of_iomap
(
pixis_node
,
0
);
of_node_put
(
pixis_node
);
if
(
!
pixis
)
{
pr_err
(
"p1022ds: could not map pixis registers
\n
"
);
goto
exit
;
}
/* Enable indirect PIXIS mode. */
setbits8
(
pixis
+
PX_CTL
,
PX_CTL_ALTACC
);
iounmap
(
pixis
);
/* Switch the board mux to the DIU */
out_8
(
lbc_lcs0_ba
,
PX_BRDCFG0
);
/* BRDCFG0 */
b
=
in_8
(
lbc_lcs1_ba
);
b
|=
PX_BRDCFG0_ELBC_DIU
;
out_8
(
lbc_lcs1_ba
,
b
);
/* Set the chip mux to DIU mode. */
clrsetbits_be32
(
&
guts
->
pmuxcr
,
PMUXCR_ELBCDIU_MASK
,
PMUXCR_ELBCDIU_DIU
);
in_be32
(
&
guts
->
pmuxcr
);
}
switch
(
port
)
{
case
FSL_DIU_PORT_DVI
:
printk
(
KERN_INFO
"%s:%u
\n
"
,
__func__
,
__LINE__
);
/* Enable the DVI port, disable the DFP and the backlight */
clrsetbits_8
(
brdcfg1
,
PX_BRDCFG1_DFPEN
|
PX_BRDCFG1_BACKLIGHT
,
PX_BRDCFG1_DVIEN
);
out_8
(
lbc_lcs0_ba
,
PX_BRDCFG1
);
b
=
in_8
(
lbc_lcs1_ba
);
b
&=
~
(
PX_BRDCFG1_DFPEN
|
PX_BRDCFG1_BACKLIGHT
);
b
|=
PX_BRDCFG1_DVIEN
;
out_8
(
lbc_lcs1_ba
,
b
);
break
;
case
FSL_DIU_PORT_LVDS
:
printk
(
KERN_INFO
"%s:%u
\n
"
,
__func__
,
__LINE__
);
/*
* LVDS also needs backlight enabled, otherwise the display
* will be blank.
*/
/* Enable the DFP port, disable the DVI and the backlight */
clrsetbits_8
(
brdcfg1
,
PX_BRDCFG1_DVIEN
|
PX_BRDCFG1_BACKLIGHT
,
PX_BRDCFG1_DFPEN
);
out_8
(
lbc_lcs0_ba
,
PX_BRDCFG1
);
b
=
in_8
(
lbc_lcs1_ba
);
b
&=
~
PX_BRDCFG1_DVIEN
;
b
|=
PX_BRDCFG1_DFPEN
|
PX_BRDCFG1_BACKLIGHT
;
out_8
(
lbc_lcs1_ba
,
b
);
break
;
default:
pr_err
(
"p1022ds: unsupported monitor port %i
\n
"
,
port
);
}
iounmap
(
pixis
);
exit:
if
(
lbc_lcs1_ba
)
iounmap
(
lbc_lcs1_ba
);
if
(
lbc_lcs0_ba
)
iounmap
(
lbc_lcs0_ba
);
if
(
guts
)
iounmap
(
guts
);
of_node_put
(
indirect_node
);
of_node_put
(
guts_node
);
}
/**
...
...
@@ -249,6 +337,49 @@ void __init p1022_ds_pic_init(void)
mpic_init
(
mpic
);
}
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
/*
* Disables a node in the device tree.
*
* This function is called before kmalloc() is available, so the 'new' object
* should be allocated in the global area. The easiest way is to do that is
* to allocate one static local variable for each call to this function.
*/
static
void
__init
disable_one_node
(
struct
device_node
*
np
,
struct
property
*
new
)
{
struct
property
*
old
;
old
=
of_find_property
(
np
,
new
->
name
,
NULL
);
if
(
old
)
prom_update_property
(
np
,
new
,
old
);
else
prom_add_property
(
np
,
new
);
}
/* TRUE if there is a "video=fslfb" command-line parameter. */
static
bool
fslfb
;
/*
* Search for a "video=fslfb" command-line parameter, and set 'fslfb' to
* true if we find it.
*
* We need to use early_param() instead of __setup() because the normal
* __setup() gets called to late. However, early_param() gets called very
* early, before the device tree is unflattened, so all we can do now is set a
* global variable. Later on, p1022_ds_setup_arch() will use that variable
* to determine if we need to update the device tree.
*/
static
int
__init
early_video_setup
(
char
*
options
)
{
fslfb
=
(
strncmp
(
options
,
"fslfb:"
,
6
)
==
0
);
return
0
;
}
early_param
(
"video"
,
early_video_setup
);
#endif
/*
* Setup the architecture
*/
...
...
@@ -286,6 +417,34 @@ static void __init p1022_ds_setup_arch(void)
diu_ops
.
set_monitor_port
=
p1022ds_set_monitor_port
;
diu_ops
.
set_pixel_clock
=
p1022ds_set_pixel_clock
;
diu_ops
.
valid_monitor_port
=
p1022ds_valid_monitor_port
;
/*
* Disable the NOR flash node if there is video=fslfb... command-line
* parameter. When the DIU is active, NOR flash is unavailable, so we
* have to disable the node before the MTD driver loads.
*/
if
(
fslfb
)
{
struct
device_node
*
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,p1022-elbc"
);
if
(
np
)
{
np
=
of_find_compatible_node
(
np
,
NULL
,
"cfi-flash"
);
if
(
np
)
{
static
struct
property
nor_status
=
{
.
name
=
"status"
,
.
value
=
"disabled"
,
.
length
=
sizeof
(
"disabled"
),
};
pr_info
(
"p1022ds: disabling %s node"
,
np
->
full_name
);
disable_one_node
(
np
,
&
nor_status
);
of_node_put
(
np
);
}
}
}
#endif
mpc85xx_smp_init
();
...
...
arch/powerpc/platforms/86xx/Kconfig
View file @
4286f84e
...
...
@@ -39,6 +39,7 @@ config GEF_PPC9A
select MMIO_NVRAM
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
select GE_FPGA
help
This option enables support for the GE PPC9A.
...
...
@@ -48,6 +49,7 @@ config GEF_SBC310
select MMIO_NVRAM
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
select GE_FPGA
help
This option enables support for the GE SBC310.
...
...
@@ -57,6 +59,7 @@ config GEF_SBC610
select MMIO_NVRAM
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
select GE_FPGA
select HAS_RAPIDIO
help
This option enables support for the GE SBC610.
...
...
arch/powerpc/platforms/86xx/Makefile
View file @
4286f84e
...
...
@@ -7,7 +7,6 @@ obj-$(CONFIG_SMP) += mpc86xx_smp.o
obj-$(CONFIG_MPC8641_HPCN)
+=
mpc86xx_hpcn.o
obj-$(CONFIG_SBC8641D)
+=
sbc8641d.o
obj-$(CONFIG_MPC8610_HPCD)
+=
mpc8610_hpcd.o
gef-gpio-$(CONFIG_GPIOLIB)
+=
gef_gpio.o
obj-$(CONFIG_GEF_SBC610)
+=
gef_sbc610.o gef_pic.o
$
(
gef-gpio-y
)
obj-$(CONFIG_GEF_SBC310)
+=
gef_sbc310.o gef_pic.o
$
(
gef-gpio-y
)
obj-$(CONFIG_GEF_PPC9A)
+=
gef_ppc9a.o gef_pic.o
$
(
gef-gpio-y
)
obj-$(CONFIG_GEF_SBC610)
+=
gef_sbc610.o
obj-$(CONFIG_GEF_SBC310)
+=
gef_sbc310.o
obj-$(CONFIG_GEF_PPC9A)
+=
gef_ppc9a.o
arch/powerpc/platforms/86xx/gef_ppc9a.c
View file @
4286f84e
...
...
@@ -37,9 +37,9 @@
#include <sysdev/fsl_pci.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/ge/ge_pic.h>
#include "mpc86xx.h"
#include "gef_pic.h"
#undef DEBUG
...
...
arch/powerpc/platforms/86xx/gef_sbc310.c
View file @
4286f84e
...
...
@@ -37,9 +37,9 @@
#include <sysdev/fsl_pci.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/ge/ge_pic.h>
#include "mpc86xx.h"
#include "gef_pic.h"
#undef DEBUG
...
...
arch/powerpc/platforms/86xx/gef_sbc610.c
View file @
4286f84e
...
...
@@ -37,9 +37,9 @@
#include <sysdev/fsl_pci.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/ge/ge_pic.h>
#include "mpc86xx.h"
#include "gef_pic.h"
#undef DEBUG
...
...
arch/powerpc/platforms/Kconfig
View file @
4286f84e
...
...
@@ -86,6 +86,14 @@ config MPIC_WEIRD
bool
default n
config MPIC_MSGR
bool "MPIC message register support"
depends on MPIC
default n
help
Enables support for the MPIC message registers. These
registers are used for inter-processor communication.
config PPC_I8259
bool
default n
...
...
arch/powerpc/sysdev/Kconfig
View file @
4286f84e
...
...
@@ -29,3 +29,7 @@ config SCOM_DEBUGFS
bool "Expose SCOM controllers via debugfs"
depends on PPC_SCOM
default n
config GE_FPGA
bool
default n
arch/powerpc/sysdev/Makefile
View file @
4286f84e
...
...
@@ -4,6 +4,8 @@ ccflags-$(CONFIG_PPC64) := -mno-minimal-toc
mpic-msi-obj-$(CONFIG_PCI_MSI)
+=
mpic_msi.o mpic_u3msi.o mpic_pasemi_msi.o
obj-$(CONFIG_MPIC)
+=
mpic.o
$
(
mpic-msi-obj-y
)
mpic-msgr-obj-$(CONFIG_MPIC_MSGR)
+=
mpic_msgr.o
obj-$(CONFIG_MPIC)
+=
mpic.o
$
(
mpic-msi-obj-y
)
$
(
mpic-msgr-obj-y
)
obj-$(CONFIG_PPC_EPAPR_HV_PIC)
+=
ehv_pic.o
fsl-msi-obj-$(CONFIG_PCI_MSI)
+=
fsl_msi.o
obj-$(CONFIG_PPC_MSI_BITMAP)
+=
msi_bitmap.o
...
...
@@ -65,3 +67,5 @@ obj-$(CONFIG_PPC_SCOM) += scom.o
subdir-ccflags-$(CONFIG_PPC_WERROR)
:=
-Werror
obj-$(CONFIG_PPC_XICS)
+=
xics/
obj-$(CONFIG_GE_FPGA)
+=
ge/
arch/powerpc/sysdev/fsl_85xx_cache_sram.c
View file @
4286f84e
...
...
@@ -24,6 +24,7 @@
*/
#include <linux/kernel.h>
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/of_platform.h>
...
...
arch/powerpc/sysdev/fsl_85xx_l2ctlr.c
View file @
4286f84e
...
...
@@ -21,6 +21,7 @@
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_platform.h>
#include <asm/io.h>
...
...
@@ -200,6 +201,9 @@ static struct of_device_id mpc85xx_l2ctlr_of_match[] = {
{
.
compatible
=
"fsl,p1022-l2-cache-controller"
,
},
{
.
compatible
=
"fsl,mpc8548-l2-cache-controller"
,
},
{},
};
...
...
arch/powerpc/sysdev/fsl_msi.c
View file @
4286f84e
...
...
@@ -410,6 +410,7 @@ static int __devinit fsl_of_msi_probe(struct platform_device *dev)
msi
->
msi_regs
=
ioremap
(
res
.
start
,
resource_size
(
&
res
));
if
(
!
msi
->
msi_regs
)
{
err
=
-
ENOMEM
;
dev_err
(
&
dev
->
dev
,
"could not map node %s
\n
"
,
dev
->
dev
.
of_node
->
full_name
);
goto
error_out
;
...
...
arch/powerpc/sysdev/fsl_rio.c
View file @
4286f84e
...
...
@@ -66,8 +66,8 @@
" li %0,%3\n" \
" b 2b\n" \
".section __ex_table,\"a\"\n" \
" .align 2\n"
\
" .long 1b,3b\n"
\
PPC_LONG_ALIGN "\n"
\
PPC_LONG "1b,3b\n"
\
".text" \
: "=r" (err), "=r" (x) \
: "b" (addr), "i" (-EFAULT), "0" (err))
...
...
arch/powerpc/sysdev/fsl_rmu.c
View file @
4286f84e
...
...
@@ -100,14 +100,8 @@
#define DOORBELL_DSR_TE 0x00000080
#define DOORBELL_DSR_QFI 0x00000010
#define DOORBELL_DSR_DIQI 0x00000001
#define DOORBELL_TID_OFFSET 0x02
#define DOORBELL_SID_OFFSET 0x04
#define DOORBELL_INFO_OFFSET 0x06
#define DOORBELL_MESSAGE_SIZE 0x08
#define DBELL_SID(x) (*(u16 *)(x + DOORBELL_SID_OFFSET))
#define DBELL_TID(x) (*(u16 *)(x + DOORBELL_TID_OFFSET))
#define DBELL_INF(x) (*(u16 *)(x + DOORBELL_INFO_OFFSET))
struct
rio_msg_regs
{
u32
omr
;
...
...
@@ -193,6 +187,13 @@ struct fsl_rmu {
int
rxirq
;
};
struct
rio_dbell_msg
{
u16
pad1
;
u16
tid
;
u16
sid
;
u16
info
;
};
/**
* fsl_rio_tx_handler - MPC85xx outbound message interrupt handler
* @irq: Linux interrupt number
...
...
@@ -311,8 +312,8 @@ fsl_rio_dbell_handler(int irq, void *dev_instance)
/* XXX Need to check/dispatch until queue empty */
if
(
dsr
&
DOORBELL_DSR_DIQI
)
{
u32
dmsg
=
(
u32
)
fsl_dbell
->
dbell_ring
.
virt
+
struct
rio_dbell_msg
*
dmsg
=
fsl_dbell
->
dbell_ring
.
virt
+
(
in_be32
(
&
fsl_dbell
->
dbell_regs
->
dqdpar
)
&
0xfff
);
struct
rio_dbell
*
dbell
;
int
found
=
0
;
...
...
@@ -320,25 +321,25 @@ fsl_rio_dbell_handler(int irq, void *dev_instance)
pr_debug
(
"RIO: processing doorbell,"
" sid %2.2x tid %2.2x info %4.4x
\n
"
,
DBELL_SID
(
dmsg
),
DBELL_TID
(
dmsg
),
DBELL_INF
(
dmsg
)
);
dmsg
->
sid
,
dmsg
->
tid
,
dmsg
->
info
);
for
(
i
=
0
;
i
<
MAX_PORT_NUM
;
i
++
)
{
if
(
fsl_dbell
->
mport
[
i
])
{
list_for_each_entry
(
dbell
,
&
fsl_dbell
->
mport
[
i
]
->
dbells
,
node
)
{
if
((
dbell
->
res
->
start
<=
DBELL_INF
(
dmsg
)
)
<=
dmsg
->
info
)
&&
(
dbell
->
res
->
end
>=
DBELL_INF
(
dmsg
)
))
{
>=
dmsg
->
info
))
{
found
=
1
;
break
;
}
}
if
(
found
&&
dbell
->
dinb
)
{
dbell
->
dinb
(
fsl_dbell
->
mport
[
i
],
dbell
->
dev_id
,
DBELL_SID
(
dmsg
)
,
DBELL_TID
(
dmsg
)
,
DBELL_INF
(
dmsg
)
);
dbell
->
dev_id
,
dmsg
->
sid
,
dmsg
->
tid
,
dmsg
->
info
);
break
;
}
}
...
...
@@ -348,8 +349,8 @@ fsl_rio_dbell_handler(int irq, void *dev_instance)
pr_debug
(
"RIO: spurious doorbell,"
" sid %2.2x tid %2.2x info %4.4x
\n
"
,
DBELL_SID
(
dmsg
),
DBELL_TID
(
dmsg
)
,
DBELL_INF
(
dmsg
)
);
dmsg
->
sid
,
dmsg
->
tid
,
dmsg
->
info
);
}
setbits32
(
&
fsl_dbell
->
dbell_regs
->
dmr
,
DOORBELL_DMR_DI
);
out_be32
(
&
fsl_dbell
->
dbell_regs
->
dsr
,
DOORBELL_DSR_DIQI
);
...
...
@@ -657,7 +658,7 @@ fsl_add_outb_message(struct rio_mport *mport, struct rio_dev *rdev, int mbox,
int
ret
=
0
;
pr_debug
(
"RIO: fsl_add_outb_message(): destid %4.4x mbox %d buffer "
\
"%
8.8x len %8.8x
\n
"
,
rdev
->
destid
,
mbox
,
(
int
)
buffer
,
len
);
"%
p len %8.8zx
\n
"
,
rdev
->
destid
,
mbox
,
buffer
,
len
);
if
((
len
<
8
)
||
(
len
>
RIO_MAX_MSG_SIZE
))
{
ret
=
-
EINVAL
;
goto
out
;
...
...
@@ -972,7 +973,8 @@ int fsl_add_inb_buffer(struct rio_mport *mport, int mbox, void *buf)
void
*
fsl_get_inb_message
(
struct
rio_mport
*
mport
,
int
mbox
)
{
struct
fsl_rmu
*
rmu
=
GET_RMM_HANDLE
(
mport
);
u32
phys_buf
,
virt_buf
;
u32
phys_buf
;
void
*
virt_buf
;
void
*
buf
=
NULL
;
int
buf_idx
;
...
...
@@ -982,7 +984,7 @@ void *fsl_get_inb_message(struct rio_mport *mport, int mbox)
if
(
phys_buf
==
in_be32
(
&
rmu
->
msg_regs
->
ifqepar
))
goto
out2
;
virt_buf
=
(
u32
)
rmu
->
msg_rx_ring
.
virt
+
(
phys_buf
virt_buf
=
rmu
->
msg_rx_ring
.
virt
+
(
phys_buf
-
rmu
->
msg_rx_ring
.
phys
);
buf_idx
=
(
phys_buf
-
rmu
->
msg_rx_ring
.
phys
)
/
RIO_MAX_MSG_SIZE
;
buf
=
rmu
->
msg_rx_ring
.
virt_buffer
[
buf_idx
];
...
...
@@ -994,7 +996,7 @@ void *fsl_get_inb_message(struct rio_mport *mport, int mbox)
}
/* Copy max message size, caller is expected to allocate that big */
memcpy
(
buf
,
(
void
*
)
virt_buf
,
RIO_MAX_MSG_SIZE
);
memcpy
(
buf
,
virt_buf
,
RIO_MAX_MSG_SIZE
);
/* Clear the available buffer */
rmu
->
msg_rx_ring
.
virt_buffer
[
buf_idx
]
=
NULL
;
...
...
arch/powerpc/sysdev/ge/Makefile
0 → 100644
View file @
4286f84e
obj-$(CONFIG_GE_FPGA)
+=
ge_pic.o
arch/powerpc/
platforms/86xx/gef
_pic.c
→
arch/powerpc/
sysdev/ge/ge
_pic.c
View file @
4286f84e
...
...
@@ -22,7 +22,7 @@
#include <asm/prom.h>
#include <asm/irq.h>
#include "ge
f
_pic.h"
#include "ge_pic.h"
#define DEBUG
#undef DEBUG
...
...
arch/powerpc/
platforms/86xx/gef
_pic.h
→
arch/powerpc/
sysdev/ge/ge
_pic.h
View file @
4286f84e
File moved
arch/powerpc/sysdev/mpic_msgr.c
0 → 100644
View file @
4286f84e
/*
* Copyright 2011-2012, Meador Inge, Mentor Graphics Corporation.
*
* Some ideas based on un-pushed work done by Vivek Mahajan, Jason Jin, and
* Mingkai Hu from 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; version 2 of the
* License.
*
*/
#include <linux/list.h>
#include <linux/of_platform.h>
#include <linux/errno.h>
#include <asm/prom.h>
#include <asm/hw_irq.h>
#include <asm/ppc-pci.h>
#include <asm/mpic_msgr.h>
#define MPIC_MSGR_REGISTERS_PER_BLOCK 4
#define MPIC_MSGR_STRIDE 0x10
#define MPIC_MSGR_MER_OFFSET 0x100
#define MSGR_INUSE 0
#define MSGR_FREE 1
static
struct
mpic_msgr
**
mpic_msgrs
;
static
unsigned
int
mpic_msgr_count
;
static
inline
void
_mpic_msgr_mer_write
(
struct
mpic_msgr
*
msgr
,
u32
value
)
{
out_be32
(
msgr
->
mer
,
value
);
}
static
inline
u32
_mpic_msgr_mer_read
(
struct
mpic_msgr
*
msgr
)
{
return
in_be32
(
msgr
->
mer
);
}
static
inline
void
_mpic_msgr_disable
(
struct
mpic_msgr
*
msgr
)
{
u32
mer
=
_mpic_msgr_mer_read
(
msgr
);
_mpic_msgr_mer_write
(
msgr
,
mer
&
~
(
1
<<
msgr
->
num
));
}
struct
mpic_msgr
*
mpic_msgr_get
(
unsigned
int
reg_num
)
{
unsigned
long
flags
;
struct
mpic_msgr
*
msgr
;
/* Assume busy until proven otherwise. */
msgr
=
ERR_PTR
(
-
EBUSY
);
if
(
reg_num
>=
mpic_msgr_count
)
return
ERR_PTR
(
-
ENODEV
);
raw_spin_lock_irqsave
(
&
msgr
->
lock
,
flags
);
if
(
mpic_msgrs
[
reg_num
]
->
in_use
==
MSGR_FREE
)
{
msgr
=
mpic_msgrs
[
reg_num
];
msgr
->
in_use
=
MSGR_INUSE
;
}
raw_spin_unlock_irqrestore
(
&
msgr
->
lock
,
flags
);
return
msgr
;
}
EXPORT_SYMBOL_GPL
(
mpic_msgr_get
);
void
mpic_msgr_put
(
struct
mpic_msgr
*
msgr
)
{
unsigned
long
flags
;
raw_spin_lock_irqsave
(
&
msgr
->
lock
,
flags
);
msgr
->
in_use
=
MSGR_FREE
;
_mpic_msgr_disable
(
msgr
);
raw_spin_unlock_irqrestore
(
&
msgr
->
lock
,
flags
);
}
EXPORT_SYMBOL_GPL
(
mpic_msgr_put
);
void
mpic_msgr_enable
(
struct
mpic_msgr
*
msgr
)
{
unsigned
long
flags
;
u32
mer
;
raw_spin_lock_irqsave
(
&
msgr
->
lock
,
flags
);
mer
=
_mpic_msgr_mer_read
(
msgr
);
_mpic_msgr_mer_write
(
msgr
,
mer
|
(
1
<<
msgr
->
num
));
raw_spin_unlock_irqrestore
(
&
msgr
->
lock
,
flags
);
}
EXPORT_SYMBOL_GPL
(
mpic_msgr_enable
);
void
mpic_msgr_disable
(
struct
mpic_msgr
*
msgr
)
{
unsigned
long
flags
;
raw_spin_lock_irqsave
(
&
msgr
->
lock
,
flags
);
_mpic_msgr_disable
(
msgr
);
raw_spin_unlock_irqrestore
(
&
msgr
->
lock
,
flags
);
}
EXPORT_SYMBOL_GPL
(
mpic_msgr_disable
);
/* The following three functions are used to compute the order and number of
* the message register blocks. They are clearly very inefficent. However,
* they are called *only* a few times during device initialization.
*/
static
unsigned
int
mpic_msgr_number_of_blocks
(
void
)
{
unsigned
int
count
;
struct
device_node
*
aliases
;
count
=
0
;
aliases
=
of_find_node_by_name
(
NULL
,
"aliases"
);
if
(
aliases
)
{
char
buf
[
32
];
for
(;;)
{
snprintf
(
buf
,
sizeof
(
buf
),
"mpic-msgr-block%d"
,
count
);
if
(
!
of_find_property
(
aliases
,
buf
,
NULL
))
break
;
count
+=
1
;
}
}
return
count
;
}
static
unsigned
int
mpic_msgr_number_of_registers
(
void
)
{
return
mpic_msgr_number_of_blocks
()
*
MPIC_MSGR_REGISTERS_PER_BLOCK
;
}
static
int
mpic_msgr_block_number
(
struct
device_node
*
node
)
{
struct
device_node
*
aliases
;
unsigned
int
index
,
number_of_blocks
;
char
buf
[
64
];
number_of_blocks
=
mpic_msgr_number_of_blocks
();
aliases
=
of_find_node_by_name
(
NULL
,
"aliases"
);
if
(
!
aliases
)
return
-
1
;
for
(
index
=
0
;
index
<
number_of_blocks
;
++
index
)
{
struct
property
*
prop
;
snprintf
(
buf
,
sizeof
(
buf
),
"mpic-msgr-block%d"
,
index
);
prop
=
of_find_property
(
aliases
,
buf
,
NULL
);
if
(
node
==
of_find_node_by_path
(
prop
->
value
))
break
;
}
return
index
==
number_of_blocks
?
-
1
:
index
;
}
/* The probe function for a single message register block.
*/
static
__devinit
int
mpic_msgr_probe
(
struct
platform_device
*
dev
)
{
void
__iomem
*
msgr_block_addr
;
int
block_number
;
struct
resource
rsrc
;
unsigned
int
i
;
unsigned
int
irq_index
;
struct
device_node
*
np
=
dev
->
dev
.
of_node
;
unsigned
int
receive_mask
;
const
unsigned
int
*
prop
;
if
(
!
np
)
{
dev_err
(
&
dev
->
dev
,
"Device OF-Node is NULL"
);
return
-
EFAULT
;
}
/* Allocate the message register array upon the first device
* registered.
*/
if
(
!
mpic_msgrs
)
{
mpic_msgr_count
=
mpic_msgr_number_of_registers
();
dev_info
(
&
dev
->
dev
,
"Found %d message registers
\n
"
,
mpic_msgr_count
);
mpic_msgrs
=
kzalloc
(
sizeof
(
struct
mpic_msgr
)
*
mpic_msgr_count
,
GFP_KERNEL
);
if
(
!
mpic_msgrs
)
{
dev_err
(
&
dev
->
dev
,
"No memory for message register blocks
\n
"
);
return
-
ENOMEM
;
}
}
dev_info
(
&
dev
->
dev
,
"Of-device full name %s
\n
"
,
np
->
full_name
);
/* IO map the message register block. */
of_address_to_resource
(
np
,
0
,
&
rsrc
);
msgr_block_addr
=
ioremap
(
rsrc
.
start
,
rsrc
.
end
-
rsrc
.
start
);
if
(
!
msgr_block_addr
)
{
dev_err
(
&
dev
->
dev
,
"Failed to iomap MPIC message registers"
);
return
-
EFAULT
;
}
/* Ensure the block has a defined order. */
block_number
=
mpic_msgr_block_number
(
np
);
if
(
block_number
<
0
)
{
dev_err
(
&
dev
->
dev
,
"Failed to find message register block alias
\n
"
);
return
-
ENODEV
;
}
dev_info
(
&
dev
->
dev
,
"Setting up message register block %d
\n
"
,
block_number
);
/* Grab the receive mask which specifies what registers can receive
* interrupts.
*/
prop
=
of_get_property
(
np
,
"mpic-msgr-receive-mask"
,
NULL
);
receive_mask
=
(
prop
)
?
*
prop
:
0xF
;
/* Build up the appropriate message register data structures. */
for
(
i
=
0
,
irq_index
=
0
;
i
<
MPIC_MSGR_REGISTERS_PER_BLOCK
;
++
i
)
{
struct
mpic_msgr
*
msgr
;
unsigned
int
reg_number
;
msgr
=
kzalloc
(
sizeof
(
struct
mpic_msgr
),
GFP_KERNEL
);
if
(
!
msgr
)
{
dev_err
(
&
dev
->
dev
,
"No memory for message register
\n
"
);
return
-
ENOMEM
;
}
reg_number
=
block_number
*
MPIC_MSGR_REGISTERS_PER_BLOCK
+
i
;
msgr
->
base
=
msgr_block_addr
+
i
*
MPIC_MSGR_STRIDE
;
msgr
->
mer
=
msgr
->
base
+
MPIC_MSGR_MER_OFFSET
;
msgr
->
in_use
=
MSGR_FREE
;
msgr
->
num
=
i
;
raw_spin_lock_init
(
&
msgr
->
lock
);
if
(
receive_mask
&
(
1
<<
i
))
{
struct
resource
irq
;
if
(
of_irq_to_resource
(
np
,
irq_index
,
&
irq
)
==
NO_IRQ
)
{
dev_err
(
&
dev
->
dev
,
"Missing interrupt specifier"
);
kfree
(
msgr
);
return
-
EFAULT
;
}
msgr
->
irq
=
irq
.
start
;
irq_index
+=
1
;
}
else
{
msgr
->
irq
=
NO_IRQ
;
}
mpic_msgrs
[
reg_number
]
=
msgr
;
mpic_msgr_disable
(
msgr
);
dev_info
(
&
dev
->
dev
,
"Register %d initialized: irq %d
\n
"
,
reg_number
,
msgr
->
irq
);
}
return
0
;
}
static
const
struct
of_device_id
mpic_msgr_ids
[]
=
{
{
.
compatible
=
"fsl,mpic-v3.1-msgr"
,
.
data
=
NULL
,
},
{}
};
static
struct
platform_driver
mpic_msgr_driver
=
{
.
driver
=
{
.
name
=
"mpic-msgr"
,
.
owner
=
THIS_MODULE
,
.
of_match_table
=
mpic_msgr_ids
,
},
.
probe
=
mpic_msgr_probe
,
};
static
__init
int
mpic_msgr_init
(
void
)
{
return
platform_driver_register
(
&
mpic_msgr_driver
);
}
subsys_initcall
(
mpic_msgr_init
);
drivers/gpio/Kconfig
View file @
4286f84e
...
...
@@ -190,6 +190,17 @@ config GPIO_VX855
additional drivers must be enabled in order to use the
functionality of the device.
config GPIO_GE_FPGA
bool "GE FPGA based GPIO"
depends on GE_FPGA
help
Support for common GPIO functionality provided on some GE Single Board
Computers.
This driver provides basic support (configure as input or output, read
and write pin state) for GPIO implemented in a number of GE single
board computers.
comment "I2C GPIO expanders:"
config GPIO_MAX7300
...
...
drivers/gpio/Makefile
View file @
4286f84e
...
...
@@ -16,6 +16,7 @@ obj-$(CONFIG_GPIO_CS5535) += gpio-cs5535.o
obj-$(CONFIG_GPIO_DA9052)
+=
gpio-da9052.o
obj-$(CONFIG_ARCH_DAVINCI)
+=
gpio-davinci.o
obj-$(CONFIG_GPIO_EP93XX)
+=
gpio-ep93xx.o
obj-$(CONFIG_GPIO_GE_FPGA)
+=
gpio-ge.o
obj-$(CONFIG_GPIO_IT8761E)
+=
gpio-it8761e.o
obj-$(CONFIG_GPIO_JANZ_TTL)
+=
gpio-janz-ttl.o
obj-$(CONFIG_ARCH_KS8695)
+=
gpio-ks8695.o
...
...
arch/powerpc/platforms/86xx/gef_gpio
.c
→
drivers/gpio/gpio-ge
.c
View file @
4286f84e
...
...
@@ -14,7 +14,7 @@
*
* Configuration of output modes (totem-pole/open-drain)
* Interrupt configuration - interrupts are always generated the FPGA relies on
*
the I/O interrupt controllers mask to stop them propergating
* the I/O interrupt controllers mask to stop them propergating
*/
#include <linux/kernel.h>
...
...
@@ -162,6 +162,34 @@ static int __init gef_gpio_init(void)
}
}
for_each_compatible_node
(
np
,
NULL
,
"ge,imp3a-gpio"
)
{
pr_debug
(
"%s: Initialising GE GPIO
\n
"
,
np
->
full_name
);
/* Allocate chip structure */
gef_gpio_chip
=
kzalloc
(
sizeof
(
*
gef_gpio_chip
),
GFP_KERNEL
);
if
(
!
gef_gpio_chip
)
{
pr_err
(
"%s: Unable to allocate structure
\n
"
,
np
->
full_name
);
continue
;
}
/* Setup pointers to chip functions */
gef_gpio_chip
->
gc
.
of_gpio_n_cells
=
2
;
gef_gpio_chip
->
gc
.
ngpio
=
16
;
gef_gpio_chip
->
gc
.
direction_input
=
gef_gpio_dir_in
;
gef_gpio_chip
->
gc
.
direction_output
=
gef_gpio_dir_out
;
gef_gpio_chip
->
gc
.
get
=
gef_gpio_get
;
gef_gpio_chip
->
gc
.
set
=
gef_gpio_set
;
/* This function adds a memory mapped GPIO chip */
retval
=
of_mm_gpiochip_add
(
np
,
gef_gpio_chip
);
if
(
retval
)
{
kfree
(
gef_gpio_chip
);
pr_err
(
"%s: Unable to add GPIO
\n
"
,
np
->
full_name
);
}
}
return
0
;
};
arch_initcall
(
gef_gpio_init
);
...
...
drivers/mtd/nand/Kconfig
View file @
4286f84e
...
...
@@ -462,6 +462,16 @@ config MTD_NAND_FSL_ELBC
Enabling this option will enable you to use this to control
external NAND devices.
config MTD_NAND_FSL_IFC
tristate "NAND support for Freescale IFC controller"
depends on MTD_NAND && FSL_SOC
select FSL_IFC
help
Various Freescale chips e.g P1010, include a NAND Flash machine
with built-in hardware ECC capabilities.
Enabling this option will enable you to use this to control
external NAND devices.
config MTD_NAND_FSL_UPM
tristate "Support for NAND on Freescale UPM"
depends on PPC_83xx || PPC_85xx
...
...
drivers/mtd/nand/Makefile
View file @
4286f84e
...
...
@@ -37,6 +37,7 @@ obj-$(CONFIG_MTD_ALAUDA) += alauda.o
obj-$(CONFIG_MTD_NAND_PASEMI)
+=
pasemi_nand.o
obj-$(CONFIG_MTD_NAND_ORION)
+=
orion_nand.o
obj-$(CONFIG_MTD_NAND_FSL_ELBC)
+=
fsl_elbc_nand.o
obj-$(CONFIG_MTD_NAND_FSL_IFC)
+=
fsl_ifc_nand.o
obj-$(CONFIG_MTD_NAND_FSL_UPM)
+=
fsl_upm.o
obj-$(CONFIG_MTD_NAND_SH_FLCTL)
+=
sh_flctl.o
obj-$(CONFIG_MTD_NAND_MXC)
+=
mxc_nand.o
...
...
drivers/mtd/nand/fsl_ifc_nand.c
0 → 100644
View file @
4286f84e
/*
* Freescale Integrated Flash Controller NAND driver
*
* Copyright 2011-2012 Freescale Semiconductor, Inc
*
* Author: Dipen Dudhat <Dipen.Dudhat@freescale.com>
*
* 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 program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand_ecc.h>
#include <asm/fsl_ifc.h>
#define ERR_BYTE 0xFF
/* Value returned for read
bytes when read failed */
#define IFC_TIMEOUT_MSECS 500
/* Maximum number of mSecs to wait
for IFC NAND Machine */
struct
fsl_ifc_ctrl
;
/* mtd information per set */
struct
fsl_ifc_mtd
{
struct
mtd_info
mtd
;
struct
nand_chip
chip
;
struct
fsl_ifc_ctrl
*
ctrl
;
struct
device
*
dev
;
int
bank
;
/* Chip select bank number */
unsigned
int
bufnum_mask
;
/* bufnum = page & bufnum_mask */
u8
__iomem
*
vbase
;
/* Chip select base virtual address */
};
/* overview of the fsl ifc controller */
struct
fsl_ifc_nand_ctrl
{
struct
nand_hw_control
controller
;
struct
fsl_ifc_mtd
*
chips
[
FSL_IFC_BANK_COUNT
];
u8
__iomem
*
addr
;
/* Address of assigned IFC buffer */
unsigned
int
page
;
/* Last page written to / read from */
unsigned
int
read_bytes
;
/* Number of bytes read during command */
unsigned
int
column
;
/* Saved column from SEQIN */
unsigned
int
index
;
/* Pointer to next byte to 'read' */
unsigned
int
oob
;
/* Non zero if operating on OOB data */
unsigned
int
eccread
;
/* Non zero for a full-page ECC read */
unsigned
int
counter
;
/* counter for the initializations */
};
static
struct
fsl_ifc_nand_ctrl
*
ifc_nand_ctrl
;
/* 512-byte page with 4-bit ECC, 8-bit */
static
struct
nand_ecclayout
oob_512_8bit_ecc4
=
{
.
eccbytes
=
8
,
.
eccpos
=
{
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
},
.
oobfree
=
{
{
0
,
5
},
{
6
,
2
}
},
};
/* 512-byte page with 4-bit ECC, 16-bit */
static
struct
nand_ecclayout
oob_512_16bit_ecc4
=
{
.
eccbytes
=
8
,
.
eccpos
=
{
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
},
.
oobfree
=
{
{
2
,
6
},
},
};
/* 2048-byte page size with 4-bit ECC */
static
struct
nand_ecclayout
oob_2048_ecc4
=
{
.
eccbytes
=
32
,
.
eccpos
=
{
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
},
.
oobfree
=
{
{
2
,
6
},
{
40
,
24
}
},
};
/* 4096-byte page size with 4-bit ECC */
static
struct
nand_ecclayout
oob_4096_ecc4
=
{
.
eccbytes
=
64
,
.
eccpos
=
{
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
},
.
oobfree
=
{
{
2
,
6
},
{
72
,
56
}
},
};
/* 4096-byte page size with 8-bit ECC -- requires 218-byte OOB */
static
struct
nand_ecclayout
oob_4096_ecc8
=
{
.
eccbytes
=
128
,
.
eccpos
=
{
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
},
.
oobfree
=
{
{
2
,
6
},
{
136
,
82
}
},
};
/*
* Generic flash bbt descriptors
*/
static
u8
bbt_pattern
[]
=
{
'B'
,
'b'
,
't'
,
'0'
};
static
u8
mirror_pattern
[]
=
{
'1'
,
't'
,
'b'
,
'B'
};
static
struct
nand_bbt_descr
bbt_main_descr
=
{
.
options
=
NAND_BBT_LASTBLOCK
|
NAND_BBT_CREATE
|
NAND_BBT_WRITE
|
NAND_BBT_2BIT
|
NAND_BBT_VERSION
,
.
offs
=
2
,
/* 0 on 8-bit small page */
.
len
=
4
,
.
veroffs
=
6
,
.
maxblocks
=
4
,
.
pattern
=
bbt_pattern
,
};
static
struct
nand_bbt_descr
bbt_mirror_descr
=
{
.
options
=
NAND_BBT_LASTBLOCK
|
NAND_BBT_CREATE
|
NAND_BBT_WRITE
|
NAND_BBT_2BIT
|
NAND_BBT_VERSION
,
.
offs
=
2
,
/* 0 on 8-bit small page */
.
len
=
4
,
.
veroffs
=
6
,
.
maxblocks
=
4
,
.
pattern
=
mirror_pattern
,
};
/*
* Set up the IFC hardware block and page address fields, and the ifc nand
* structure addr field to point to the correct IFC buffer in memory
*/
static
void
set_addr
(
struct
mtd_info
*
mtd
,
int
column
,
int
page_addr
,
int
oob
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
int
buf_num
;
ifc_nand_ctrl
->
page
=
page_addr
;
/* Program ROW0/COL0 */
out_be32
(
&
ifc
->
ifc_nand
.
row0
,
page_addr
);
out_be32
(
&
ifc
->
ifc_nand
.
col0
,
(
oob
?
IFC_NAND_COL_MS
:
0
)
|
column
);
buf_num
=
page_addr
&
priv
->
bufnum_mask
;
ifc_nand_ctrl
->
addr
=
priv
->
vbase
+
buf_num
*
(
mtd
->
writesize
*
2
);
ifc_nand_ctrl
->
index
=
column
;
/* for OOB data point to the second half of the buffer */
if
(
oob
)
ifc_nand_ctrl
->
index
+=
mtd
->
writesize
;
}
static
int
is_blank
(
struct
mtd_info
*
mtd
,
unsigned
int
bufnum
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
u8
__iomem
*
addr
=
priv
->
vbase
+
bufnum
*
(
mtd
->
writesize
*
2
);
u32
__iomem
*
mainarea
=
(
u32
*
)
addr
;
u8
__iomem
*
oob
=
addr
+
mtd
->
writesize
;
int
i
;
for
(
i
=
0
;
i
<
mtd
->
writesize
/
4
;
i
++
)
{
if
(
__raw_readl
(
&
mainarea
[
i
])
!=
0xffffffff
)
return
0
;
}
for
(
i
=
0
;
i
<
chip
->
ecc
.
layout
->
eccbytes
;
i
++
)
{
int
pos
=
chip
->
ecc
.
layout
->
eccpos
[
i
];
if
(
__raw_readb
(
&
oob
[
pos
])
!=
0xff
)
return
0
;
}
return
1
;
}
/* returns nonzero if entire page is blank */
static
int
check_read_ecc
(
struct
mtd_info
*
mtd
,
struct
fsl_ifc_ctrl
*
ctrl
,
u32
*
eccstat
,
unsigned
int
bufnum
)
{
u32
reg
=
eccstat
[
bufnum
/
4
];
int
errors
;
errors
=
(
reg
>>
((
3
-
bufnum
%
4
)
*
8
))
&
15
;
return
errors
;
}
/*
* execute IFC NAND command and wait for it to complete
*/
static
void
fsl_ifc_run_command
(
struct
mtd_info
*
mtd
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_nand_ctrl
*
nctrl
=
ifc_nand_ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
u32
eccstat
[
4
];
int
i
;
/* set the chip select for NAND Transaction */
out_be32
(
&
ifc
->
ifc_nand
.
nand_csel
,
priv
->
bank
<<
IFC_NAND_CSEL_SHIFT
);
dev_vdbg
(
priv
->
dev
,
"%s: fir0=%08x fcr0=%08x
\n
"
,
__func__
,
in_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
),
in_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
));
ctrl
->
nand_stat
=
0
;
/* start read/write seq */
out_be32
(
&
ifc
->
ifc_nand
.
nandseq_strt
,
IFC_NAND_SEQ_STRT_FIR_STRT
);
/* wait for command complete flag or timeout */
wait_event_timeout
(
ctrl
->
nand_wait
,
ctrl
->
nand_stat
,
IFC_TIMEOUT_MSECS
*
HZ
/
1000
);
/* ctrl->nand_stat will be updated from IRQ context */
if
(
!
ctrl
->
nand_stat
)
dev_err
(
priv
->
dev
,
"Controller is not responding
\n
"
);
if
(
ctrl
->
nand_stat
&
IFC_NAND_EVTER_STAT_FTOER
)
dev_err
(
priv
->
dev
,
"NAND Flash Timeout Error
\n
"
);
if
(
ctrl
->
nand_stat
&
IFC_NAND_EVTER_STAT_WPER
)
dev_err
(
priv
->
dev
,
"NAND Flash Write Protect Error
\n
"
);
if
(
nctrl
->
eccread
)
{
int
errors
;
int
bufnum
=
nctrl
->
page
&
priv
->
bufnum_mask
;
int
sector
=
bufnum
*
chip
->
ecc
.
steps
;
int
sector_end
=
sector
+
chip
->
ecc
.
steps
-
1
;
for
(
i
=
sector
/
4
;
i
<=
sector_end
/
4
;
i
++
)
eccstat
[
i
]
=
in_be32
(
&
ifc
->
ifc_nand
.
nand_eccstat
[
i
]);
for
(
i
=
sector
;
i
<=
sector_end
;
i
++
)
{
errors
=
check_read_ecc
(
mtd
,
ctrl
,
eccstat
,
i
);
if
(
errors
==
15
)
{
/*
* Uncorrectable error.
* OK only if the whole page is blank.
*
* We disable ECCER reporting due to...
* erratum IFC-A002770 -- so report it now if we
* see an uncorrectable error in ECCSTAT.
*/
if
(
!
is_blank
(
mtd
,
bufnum
))
ctrl
->
nand_stat
|=
IFC_NAND_EVTER_STAT_ECCER
;
break
;
}
mtd
->
ecc_stats
.
corrected
+=
errors
;
}
nctrl
->
eccread
=
0
;
}
}
static
void
fsl_ifc_do_read
(
struct
nand_chip
*
chip
,
int
oob
,
struct
mtd_info
*
mtd
)
{
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
/* Program FIR/IFC_NAND_FCR0 for Small/Large page */
if
(
mtd
->
writesize
>
512
)
{
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_CA0
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_RA0
<<
IFC_NAND_FIR0_OP2_SHIFT
)
|
(
IFC_FIR_OP_CMD1
<<
IFC_NAND_FIR0_OP3_SHIFT
)
|
(
IFC_FIR_OP_RBCD
<<
IFC_NAND_FIR0_OP4_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir1
,
0x0
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
(
NAND_CMD_READ0
<<
IFC_NAND_FCR0_CMD0_SHIFT
)
|
(
NAND_CMD_READSTART
<<
IFC_NAND_FCR0_CMD1_SHIFT
));
}
else
{
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_CA0
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_RA0
<<
IFC_NAND_FIR0_OP2_SHIFT
)
|
(
IFC_FIR_OP_RBCD
<<
IFC_NAND_FIR0_OP3_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir1
,
0x0
);
if
(
oob
)
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_READOOB
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
else
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_READ0
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
}
}
/* cmdfunc send commands to the IFC NAND Machine */
static
void
fsl_ifc_cmdfunc
(
struct
mtd_info
*
mtd
,
unsigned
int
command
,
int
column
,
int
page_addr
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
/* clear the read buffer */
ifc_nand_ctrl
->
read_bytes
=
0
;
if
(
command
!=
NAND_CMD_PAGEPROG
)
ifc_nand_ctrl
->
index
=
0
;
switch
(
command
)
{
/* READ0 read the entire buffer to use hardware ECC. */
case
NAND_CMD_READ0
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
0
);
set_addr
(
mtd
,
0
,
page_addr
,
0
);
ifc_nand_ctrl
->
read_bytes
=
mtd
->
writesize
+
mtd
->
oobsize
;
ifc_nand_ctrl
->
index
+=
column
;
if
(
chip
->
ecc
.
mode
==
NAND_ECC_HW
)
ifc_nand_ctrl
->
eccread
=
1
;
fsl_ifc_do_read
(
chip
,
0
,
mtd
);
fsl_ifc_run_command
(
mtd
);
return
;
/* READOOB reads only the OOB because no ECC is performed. */
case
NAND_CMD_READOOB
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
mtd
->
oobsize
-
column
);
set_addr
(
mtd
,
column
,
page_addr
,
1
);
ifc_nand_ctrl
->
read_bytes
=
mtd
->
writesize
+
mtd
->
oobsize
;
fsl_ifc_do_read
(
chip
,
1
,
mtd
);
fsl_ifc_run_command
(
mtd
);
return
;
/* READID must read all 8 possible bytes */
case
NAND_CMD_READID
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CMD0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_UA
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_RB
<<
IFC_NAND_FIR0_OP2_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_READID
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
/* 8 bytes for manuf, device and exts */
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
8
);
ifc_nand_ctrl
->
read_bytes
=
8
;
set_addr
(
mtd
,
0
,
0
,
0
);
fsl_ifc_run_command
(
mtd
);
return
;
/* ERASE1 stores the block and page address */
case
NAND_CMD_ERASE1
:
set_addr
(
mtd
,
0
,
page_addr
,
0
);
return
;
/* ERASE2 uses the block and page address from ERASE1 */
case
NAND_CMD_ERASE2
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_RA0
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_CMD1
<<
IFC_NAND_FIR0_OP2_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
(
NAND_CMD_ERASE1
<<
IFC_NAND_FCR0_CMD0_SHIFT
)
|
(
NAND_CMD_ERASE2
<<
IFC_NAND_FCR0_CMD1_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
0
);
ifc_nand_ctrl
->
read_bytes
=
0
;
fsl_ifc_run_command
(
mtd
);
return
;
/* SEQIN sets up the addr buffer and all registers except the length */
case
NAND_CMD_SEQIN
:
{
u32
nand_fcr0
;
ifc_nand_ctrl
->
column
=
column
;
ifc_nand_ctrl
->
oob
=
0
;
if
(
mtd
->
writesize
>
512
)
{
nand_fcr0
=
(
NAND_CMD_SEQIN
<<
IFC_NAND_FCR0_CMD0_SHIFT
)
|
(
NAND_CMD_PAGEPROG
<<
IFC_NAND_FCR0_CMD1_SHIFT
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_CA0
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_RA0
<<
IFC_NAND_FIR0_OP2_SHIFT
)
|
(
IFC_FIR_OP_WBCD
<<
IFC_NAND_FIR0_OP3_SHIFT
)
|
(
IFC_FIR_OP_CW1
<<
IFC_NAND_FIR0_OP4_SHIFT
));
}
else
{
nand_fcr0
=
((
NAND_CMD_PAGEPROG
<<
IFC_NAND_FCR0_CMD1_SHIFT
)
|
(
NAND_CMD_SEQIN
<<
IFC_NAND_FCR0_CMD2_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_CMD2
<<
IFC_NAND_FIR0_OP1_SHIFT
)
|
(
IFC_FIR_OP_CA0
<<
IFC_NAND_FIR0_OP2_SHIFT
)
|
(
IFC_FIR_OP_RA0
<<
IFC_NAND_FIR0_OP3_SHIFT
)
|
(
IFC_FIR_OP_WBCD
<<
IFC_NAND_FIR0_OP4_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir1
,
(
IFC_FIR_OP_CW1
<<
IFC_NAND_FIR1_OP5_SHIFT
));
if
(
column
>=
mtd
->
writesize
)
nand_fcr0
|=
NAND_CMD_READOOB
<<
IFC_NAND_FCR0_CMD0_SHIFT
;
else
nand_fcr0
|=
NAND_CMD_READ0
<<
IFC_NAND_FCR0_CMD0_SHIFT
;
}
if
(
column
>=
mtd
->
writesize
)
{
/* OOB area --> READOOB */
column
-=
mtd
->
writesize
;
ifc_nand_ctrl
->
oob
=
1
;
}
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
nand_fcr0
);
set_addr
(
mtd
,
column
,
page_addr
,
ifc_nand_ctrl
->
oob
);
return
;
}
/* PAGEPROG reuses all of the setup from SEQIN and adds the length */
case
NAND_CMD_PAGEPROG
:
{
if
(
ifc_nand_ctrl
->
oob
)
{
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
ifc_nand_ctrl
->
index
-
ifc_nand_ctrl
->
column
);
}
else
{
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
0
);
}
fsl_ifc_run_command
(
mtd
);
return
;
}
case
NAND_CMD_STATUS
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_RB
<<
IFC_NAND_FIR0_OP1_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_STATUS
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
1
);
set_addr
(
mtd
,
0
,
0
,
0
);
ifc_nand_ctrl
->
read_bytes
=
1
;
fsl_ifc_run_command
(
mtd
);
/*
* The chip always seems to report that it is
* write-protected, even when it is not.
*/
setbits8
(
ifc_nand_ctrl
->
addr
,
NAND_STATUS_WP
);
return
;
case
NAND_CMD_RESET
:
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_RESET
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
fsl_ifc_run_command
(
mtd
);
return
;
default:
dev_err
(
priv
->
dev
,
"%s: error, unsupported command 0x%x.
\n
"
,
__func__
,
command
);
}
}
static
void
fsl_ifc_select_chip
(
struct
mtd_info
*
mtd
,
int
chip
)
{
/* The hardware does not seem to support multiple
* chips per bank.
*/
}
/*
* Write buf to the IFC NAND Controller Data Buffer
*/
static
void
fsl_ifc_write_buf
(
struct
mtd_info
*
mtd
,
const
u8
*
buf
,
int
len
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
unsigned
int
bufsize
=
mtd
->
writesize
+
mtd
->
oobsize
;
if
(
len
<=
0
)
{
dev_err
(
priv
->
dev
,
"%s: len %d bytes"
,
__func__
,
len
);
return
;
}
if
((
unsigned
int
)
len
>
bufsize
-
ifc_nand_ctrl
->
index
)
{
dev_err
(
priv
->
dev
,
"%s: beyond end of buffer (%d requested, %u available)
\n
"
,
__func__
,
len
,
bufsize
-
ifc_nand_ctrl
->
index
);
len
=
bufsize
-
ifc_nand_ctrl
->
index
;
}
memcpy_toio
(
&
ifc_nand_ctrl
->
addr
[
ifc_nand_ctrl
->
index
],
buf
,
len
);
ifc_nand_ctrl
->
index
+=
len
;
}
/*
* Read a byte from either the IFC hardware buffer
* read function for 8-bit buswidth
*/
static
uint8_t
fsl_ifc_read_byte
(
struct
mtd_info
*
mtd
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
/*
* If there are still bytes in the IFC buffer, then use the
* next byte.
*/
if
(
ifc_nand_ctrl
->
index
<
ifc_nand_ctrl
->
read_bytes
)
return
in_8
(
&
ifc_nand_ctrl
->
addr
[
ifc_nand_ctrl
->
index
++
]);
dev_err
(
priv
->
dev
,
"%s: beyond end of buffer
\n
"
,
__func__
);
return
ERR_BYTE
;
}
/*
* Read two bytes from the IFC hardware buffer
* read function for 16-bit buswith
*/
static
uint8_t
fsl_ifc_read_byte16
(
struct
mtd_info
*
mtd
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
uint16_t
data
;
/*
* If there are still bytes in the IFC buffer, then use the
* next byte.
*/
if
(
ifc_nand_ctrl
->
index
<
ifc_nand_ctrl
->
read_bytes
)
{
data
=
in_be16
((
uint16_t
*
)
&
ifc_nand_ctrl
->
addr
[
ifc_nand_ctrl
->
index
]);
ifc_nand_ctrl
->
index
+=
2
;
return
(
uint8_t
)
data
;
}
dev_err
(
priv
->
dev
,
"%s: beyond end of buffer
\n
"
,
__func__
);
return
ERR_BYTE
;
}
/*
* Read from the IFC Controller Data Buffer
*/
static
void
fsl_ifc_read_buf
(
struct
mtd_info
*
mtd
,
u8
*
buf
,
int
len
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
int
avail
;
if
(
len
<
0
)
{
dev_err
(
priv
->
dev
,
"%s: len %d bytes"
,
__func__
,
len
);
return
;
}
avail
=
min
((
unsigned
int
)
len
,
ifc_nand_ctrl
->
read_bytes
-
ifc_nand_ctrl
->
index
);
memcpy_fromio
(
buf
,
&
ifc_nand_ctrl
->
addr
[
ifc_nand_ctrl
->
index
],
avail
);
ifc_nand_ctrl
->
index
+=
avail
;
if
(
len
>
avail
)
dev_err
(
priv
->
dev
,
"%s: beyond end of buffer (%d requested, %d available)
\n
"
,
__func__
,
len
,
avail
);
}
/*
* Verify buffer against the IFC Controller Data Buffer
*/
static
int
fsl_ifc_verify_buf
(
struct
mtd_info
*
mtd
,
const
u_char
*
buf
,
int
len
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_nand_ctrl
*
nctrl
=
ifc_nand_ctrl
;
int
i
;
if
(
len
<
0
)
{
dev_err
(
priv
->
dev
,
"%s: write_buf of %d bytes"
,
__func__
,
len
);
return
-
EINVAL
;
}
if
((
unsigned
int
)
len
>
nctrl
->
read_bytes
-
nctrl
->
index
)
{
dev_err
(
priv
->
dev
,
"%s: beyond end of buffer (%d requested, %u available)
\n
"
,
__func__
,
len
,
nctrl
->
read_bytes
-
nctrl
->
index
);
nctrl
->
index
=
nctrl
->
read_bytes
;
return
-
EINVAL
;
}
for
(
i
=
0
;
i
<
len
;
i
++
)
if
(
in_8
(
&
nctrl
->
addr
[
nctrl
->
index
+
i
])
!=
buf
[
i
])
break
;
nctrl
->
index
+=
len
;
if
(
i
!=
len
)
return
-
EIO
;
if
(
ctrl
->
nand_stat
!=
IFC_NAND_EVTER_STAT_OPC
)
return
-
EIO
;
return
0
;
}
/*
* This function is called after Program and Erase Operations to
* check for success or failure.
*/
static
int
fsl_ifc_wait
(
struct
mtd_info
*
mtd
,
struct
nand_chip
*
chip
)
{
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
u32
nand_fsr
;
/* Use READ_STATUS command, but wait for the device to be ready */
out_be32
(
&
ifc
->
ifc_nand
.
nand_fir0
,
(
IFC_FIR_OP_CW0
<<
IFC_NAND_FIR0_OP0_SHIFT
)
|
(
IFC_FIR_OP_RDSTAT
<<
IFC_NAND_FIR0_OP1_SHIFT
));
out_be32
(
&
ifc
->
ifc_nand
.
nand_fcr0
,
NAND_CMD_STATUS
<<
IFC_NAND_FCR0_CMD0_SHIFT
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_fbcr
,
1
);
set_addr
(
mtd
,
0
,
0
,
0
);
ifc_nand_ctrl
->
read_bytes
=
1
;
fsl_ifc_run_command
(
mtd
);
nand_fsr
=
in_be32
(
&
ifc
->
ifc_nand
.
nand_fsr
);
/*
* The chip always seems to report that it is
* write-protected, even when it is not.
*/
return
nand_fsr
|
NAND_STATUS_WP
;
}
static
int
fsl_ifc_read_page
(
struct
mtd_info
*
mtd
,
struct
nand_chip
*
chip
,
uint8_t
*
buf
,
int
page
)
{
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
fsl_ifc_read_buf
(
mtd
,
buf
,
mtd
->
writesize
);
fsl_ifc_read_buf
(
mtd
,
chip
->
oob_poi
,
mtd
->
oobsize
);
if
(
ctrl
->
nand_stat
&
IFC_NAND_EVTER_STAT_ECCER
)
dev_err
(
priv
->
dev
,
"NAND Flash ECC Uncorrectable Error
\n
"
);
if
(
ctrl
->
nand_stat
!=
IFC_NAND_EVTER_STAT_OPC
)
mtd
->
ecc_stats
.
failed
++
;
return
0
;
}
/* ECC will be calculated automatically, and errors will be detected in
* waitfunc.
*/
static
void
fsl_ifc_write_page
(
struct
mtd_info
*
mtd
,
struct
nand_chip
*
chip
,
const
uint8_t
*
buf
)
{
fsl_ifc_write_buf
(
mtd
,
buf
,
mtd
->
writesize
);
fsl_ifc_write_buf
(
mtd
,
chip
->
oob_poi
,
mtd
->
oobsize
);
}
static
int
fsl_ifc_chip_init_tail
(
struct
mtd_info
*
mtd
)
{
struct
nand_chip
*
chip
=
mtd
->
priv
;
struct
fsl_ifc_mtd
*
priv
=
chip
->
priv
;
dev_dbg
(
priv
->
dev
,
"%s: nand->numchips = %d
\n
"
,
__func__
,
chip
->
numchips
);
dev_dbg
(
priv
->
dev
,
"%s: nand->chipsize = %lld
\n
"
,
__func__
,
chip
->
chipsize
);
dev_dbg
(
priv
->
dev
,
"%s: nand->pagemask = %8x
\n
"
,
__func__
,
chip
->
pagemask
);
dev_dbg
(
priv
->
dev
,
"%s: nand->chip_delay = %d
\n
"
,
__func__
,
chip
->
chip_delay
);
dev_dbg
(
priv
->
dev
,
"%s: nand->badblockpos = %d
\n
"
,
__func__
,
chip
->
badblockpos
);
dev_dbg
(
priv
->
dev
,
"%s: nand->chip_shift = %d
\n
"
,
__func__
,
chip
->
chip_shift
);
dev_dbg
(
priv
->
dev
,
"%s: nand->page_shift = %d
\n
"
,
__func__
,
chip
->
page_shift
);
dev_dbg
(
priv
->
dev
,
"%s: nand->phys_erase_shift = %d
\n
"
,
__func__
,
chip
->
phys_erase_shift
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecclayout = %p
\n
"
,
__func__
,
chip
->
ecclayout
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecc.mode = %d
\n
"
,
__func__
,
chip
->
ecc
.
mode
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecc.steps = %d
\n
"
,
__func__
,
chip
->
ecc
.
steps
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecc.bytes = %d
\n
"
,
__func__
,
chip
->
ecc
.
bytes
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecc.total = %d
\n
"
,
__func__
,
chip
->
ecc
.
total
);
dev_dbg
(
priv
->
dev
,
"%s: nand->ecc.layout = %p
\n
"
,
__func__
,
chip
->
ecc
.
layout
);
dev_dbg
(
priv
->
dev
,
"%s: mtd->flags = %08x
\n
"
,
__func__
,
mtd
->
flags
);
dev_dbg
(
priv
->
dev
,
"%s: mtd->size = %lld
\n
"
,
__func__
,
mtd
->
size
);
dev_dbg
(
priv
->
dev
,
"%s: mtd->erasesize = %d
\n
"
,
__func__
,
mtd
->
erasesize
);
dev_dbg
(
priv
->
dev
,
"%s: mtd->writesize = %d
\n
"
,
__func__
,
mtd
->
writesize
);
dev_dbg
(
priv
->
dev
,
"%s: mtd->oobsize = %d
\n
"
,
__func__
,
mtd
->
oobsize
);
return
0
;
}
static
int
fsl_ifc_chip_init
(
struct
fsl_ifc_mtd
*
priv
)
{
struct
fsl_ifc_ctrl
*
ctrl
=
priv
->
ctrl
;
struct
fsl_ifc_regs
__iomem
*
ifc
=
ctrl
->
regs
;
struct
nand_chip
*
chip
=
&
priv
->
chip
;
struct
nand_ecclayout
*
layout
;
u32
csor
;
/* Fill in fsl_ifc_mtd structure */
priv
->
mtd
.
priv
=
chip
;
priv
->
mtd
.
owner
=
THIS_MODULE
;
/* fill in nand_chip structure */
/* set up function call table */
if
((
in_be32
(
&
ifc
->
cspr_cs
[
priv
->
bank
].
cspr
))
&
CSPR_PORT_SIZE_16
)
chip
->
read_byte
=
fsl_ifc_read_byte16
;
else
chip
->
read_byte
=
fsl_ifc_read_byte
;
chip
->
write_buf
=
fsl_ifc_write_buf
;
chip
->
read_buf
=
fsl_ifc_read_buf
;
chip
->
verify_buf
=
fsl_ifc_verify_buf
;
chip
->
select_chip
=
fsl_ifc_select_chip
;
chip
->
cmdfunc
=
fsl_ifc_cmdfunc
;
chip
->
waitfunc
=
fsl_ifc_wait
;
chip
->
bbt_td
=
&
bbt_main_descr
;
chip
->
bbt_md
=
&
bbt_mirror_descr
;
out_be32
(
&
ifc
->
ifc_nand
.
ncfgr
,
0x0
);
/* set up nand options */
chip
->
options
=
NAND_NO_READRDY
|
NAND_NO_AUTOINCR
;
chip
->
bbt_options
=
NAND_BBT_USE_FLASH
;
if
(
in_be32
(
&
ifc
->
cspr_cs
[
priv
->
bank
].
cspr
)
&
CSPR_PORT_SIZE_16
)
{
chip
->
read_byte
=
fsl_ifc_read_byte16
;
chip
->
options
|=
NAND_BUSWIDTH_16
;
}
else
{
chip
->
read_byte
=
fsl_ifc_read_byte
;
}
chip
->
controller
=
&
ifc_nand_ctrl
->
controller
;
chip
->
priv
=
priv
;
chip
->
ecc
.
read_page
=
fsl_ifc_read_page
;
chip
->
ecc
.
write_page
=
fsl_ifc_write_page
;
csor
=
in_be32
(
&
ifc
->
csor_cs
[
priv
->
bank
].
csor
);
/* Hardware generates ECC per 512 Bytes */
chip
->
ecc
.
size
=
512
;
chip
->
ecc
.
bytes
=
8
;
switch
(
csor
&
CSOR_NAND_PGS_MASK
)
{
case
CSOR_NAND_PGS_512
:
if
(
chip
->
options
&
NAND_BUSWIDTH_16
)
{
layout
=
&
oob_512_16bit_ecc4
;
}
else
{
layout
=
&
oob_512_8bit_ecc4
;
/* Avoid conflict with bad block marker */
bbt_main_descr
.
offs
=
0
;
bbt_mirror_descr
.
offs
=
0
;
}
priv
->
bufnum_mask
=
15
;
break
;
case
CSOR_NAND_PGS_2K
:
layout
=
&
oob_2048_ecc4
;
priv
->
bufnum_mask
=
3
;
break
;
case
CSOR_NAND_PGS_4K
:
if
((
csor
&
CSOR_NAND_ECC_MODE_MASK
)
==
CSOR_NAND_ECC_MODE_4
)
{
layout
=
&
oob_4096_ecc4
;
}
else
{
layout
=
&
oob_4096_ecc8
;
chip
->
ecc
.
bytes
=
16
;
}
priv
->
bufnum_mask
=
1
;
break
;
default:
dev_err
(
priv
->
dev
,
"bad csor %#x: bad page size
\n
"
,
csor
);
return
-
ENODEV
;
}
/* Must also set CSOR_NAND_ECC_ENC_EN if DEC_EN set */
if
(
csor
&
CSOR_NAND_ECC_DEC_EN
)
{
chip
->
ecc
.
mode
=
NAND_ECC_HW
;
chip
->
ecc
.
layout
=
layout
;
}
else
{
chip
->
ecc
.
mode
=
NAND_ECC_SOFT
;
}
return
0
;
}
static
int
fsl_ifc_chip_remove
(
struct
fsl_ifc_mtd
*
priv
)
{
nand_release
(
&
priv
->
mtd
);
kfree
(
priv
->
mtd
.
name
);
if
(
priv
->
vbase
)
iounmap
(
priv
->
vbase
);
ifc_nand_ctrl
->
chips
[
priv
->
bank
]
=
NULL
;
dev_set_drvdata
(
priv
->
dev
,
NULL
);
kfree
(
priv
);
return
0
;
}
static
int
match_bank
(
struct
fsl_ifc_regs
__iomem
*
ifc
,
int
bank
,
phys_addr_t
addr
)
{
u32
cspr
=
in_be32
(
&
ifc
->
cspr_cs
[
bank
].
cspr
);
if
(
!
(
cspr
&
CSPR_V
))
return
0
;
if
((
cspr
&
CSPR_MSEL
)
!=
CSPR_MSEL_NAND
)
return
0
;
return
(
cspr
&
CSPR_BA
)
==
convert_ifc_address
(
addr
);
}
static
DEFINE_MUTEX
(
fsl_ifc_nand_mutex
);
static
int
__devinit
fsl_ifc_nand_probe
(
struct
platform_device
*
dev
)
{
struct
fsl_ifc_regs
__iomem
*
ifc
;
struct
fsl_ifc_mtd
*
priv
;
struct
resource
res
;
static
const
char
*
part_probe_types
[]
=
{
"cmdlinepart"
,
"RedBoot"
,
"ofpart"
,
NULL
};
int
ret
;
int
bank
;
struct
device_node
*
node
=
dev
->
dev
.
of_node
;
struct
mtd_part_parser_data
ppdata
;
ppdata
.
of_node
=
dev
->
dev
.
of_node
;
if
(
!
fsl_ifc_ctrl_dev
||
!
fsl_ifc_ctrl_dev
->
regs
)
return
-
ENODEV
;
ifc
=
fsl_ifc_ctrl_dev
->
regs
;
/* get, allocate and map the memory resource */
ret
=
of_address_to_resource
(
node
,
0
,
&
res
);
if
(
ret
)
{
dev_err
(
&
dev
->
dev
,
"%s: failed to get resource
\n
"
,
__func__
);
return
ret
;
}
/* find which chip select it is connected to */
for
(
bank
=
0
;
bank
<
FSL_IFC_BANK_COUNT
;
bank
++
)
{
if
(
match_bank
(
ifc
,
bank
,
res
.
start
))
break
;
}
if
(
bank
>=
FSL_IFC_BANK_COUNT
)
{
dev_err
(
&
dev
->
dev
,
"%s: address did not match any chip selects
\n
"
,
__func__
);
return
-
ENODEV
;
}
priv
=
devm_kzalloc
(
&
dev
->
dev
,
sizeof
(
*
priv
),
GFP_KERNEL
);
if
(
!
priv
)
return
-
ENOMEM
;
mutex_lock
(
&
fsl_ifc_nand_mutex
);
if
(
!
fsl_ifc_ctrl_dev
->
nand
)
{
ifc_nand_ctrl
=
kzalloc
(
sizeof
(
*
ifc_nand_ctrl
),
GFP_KERNEL
);
if
(
!
ifc_nand_ctrl
)
{
dev_err
(
&
dev
->
dev
,
"failed to allocate memory
\n
"
);
mutex_unlock
(
&
fsl_ifc_nand_mutex
);
return
-
ENOMEM
;
}
ifc_nand_ctrl
->
read_bytes
=
0
;
ifc_nand_ctrl
->
index
=
0
;
ifc_nand_ctrl
->
addr
=
NULL
;
fsl_ifc_ctrl_dev
->
nand
=
ifc_nand_ctrl
;
spin_lock_init
(
&
ifc_nand_ctrl
->
controller
.
lock
);
init_waitqueue_head
(
&
ifc_nand_ctrl
->
controller
.
wq
);
}
else
{
ifc_nand_ctrl
=
fsl_ifc_ctrl_dev
->
nand
;
}
mutex_unlock
(
&
fsl_ifc_nand_mutex
);
ifc_nand_ctrl
->
chips
[
bank
]
=
priv
;
priv
->
bank
=
bank
;
priv
->
ctrl
=
fsl_ifc_ctrl_dev
;
priv
->
dev
=
&
dev
->
dev
;
priv
->
vbase
=
ioremap
(
res
.
start
,
resource_size
(
&
res
));
if
(
!
priv
->
vbase
)
{
dev_err
(
priv
->
dev
,
"%s: failed to map chip region
\n
"
,
__func__
);
ret
=
-
ENOMEM
;
goto
err
;
}
dev_set_drvdata
(
priv
->
dev
,
priv
);
out_be32
(
&
ifc
->
ifc_nand
.
nand_evter_en
,
IFC_NAND_EVTER_EN_OPC_EN
|
IFC_NAND_EVTER_EN_FTOER_EN
|
IFC_NAND_EVTER_EN_WPER_EN
);
/* enable NAND Machine Interrupts */
out_be32
(
&
ifc
->
ifc_nand
.
nand_evter_intr_en
,
IFC_NAND_EVTER_INTR_OPCIR_EN
|
IFC_NAND_EVTER_INTR_FTOERIR_EN
|
IFC_NAND_EVTER_INTR_WPERIR_EN
);
priv
->
mtd
.
name
=
kasprintf
(
GFP_KERNEL
,
"%x.flash"
,
(
unsigned
)
res
.
start
);
if
(
!
priv
->
mtd
.
name
)
{
ret
=
-
ENOMEM
;
goto
err
;
}
ret
=
fsl_ifc_chip_init
(
priv
);
if
(
ret
)
goto
err
;
ret
=
nand_scan_ident
(
&
priv
->
mtd
,
1
,
NULL
);
if
(
ret
)
goto
err
;
ret
=
fsl_ifc_chip_init_tail
(
&
priv
->
mtd
);
if
(
ret
)
goto
err
;
ret
=
nand_scan_tail
(
&
priv
->
mtd
);
if
(
ret
)
goto
err
;
/* First look for RedBoot table or partitions on the command
* line, these take precedence over device tree information */
mtd_device_parse_register
(
&
priv
->
mtd
,
part_probe_types
,
&
ppdata
,
NULL
,
0
);
dev_info
(
priv
->
dev
,
"IFC NAND device at 0x%llx, bank %d
\n
"
,
(
unsigned
long
long
)
res
.
start
,
priv
->
bank
);
return
0
;
err:
fsl_ifc_chip_remove
(
priv
);
return
ret
;
}
static
int
fsl_ifc_nand_remove
(
struct
platform_device
*
dev
)
{
struct
fsl_ifc_mtd
*
priv
=
dev_get_drvdata
(
&
dev
->
dev
);
fsl_ifc_chip_remove
(
priv
);
mutex_lock
(
&
fsl_ifc_nand_mutex
);
ifc_nand_ctrl
->
counter
--
;
if
(
!
ifc_nand_ctrl
->
counter
)
{
fsl_ifc_ctrl_dev
->
nand
=
NULL
;
kfree
(
ifc_nand_ctrl
);
}
mutex_unlock
(
&
fsl_ifc_nand_mutex
);
return
0
;
}
static
const
struct
of_device_id
fsl_ifc_nand_match
[]
=
{
{
.
compatible
=
"fsl,ifc-nand"
,
},
{}
};
static
struct
platform_driver
fsl_ifc_nand_driver
=
{
.
driver
=
{
.
name
=
"fsl,ifc-nand"
,
.
owner
=
THIS_MODULE
,
.
of_match_table
=
fsl_ifc_nand_match
,
},
.
probe
=
fsl_ifc_nand_probe
,
.
remove
=
fsl_ifc_nand_remove
,
};
static
int
__init
fsl_ifc_nand_init
(
void
)
{
int
ret
;
ret
=
platform_driver_register
(
&
fsl_ifc_nand_driver
);
if
(
ret
)
printk
(
KERN_ERR
"fsl-ifc: Failed to register platform"
"driver
\n
"
);
return
ret
;
}
static
void
__exit
fsl_ifc_nand_exit
(
void
)
{
platform_driver_unregister
(
&
fsl_ifc_nand_driver
);
}
module_init
(
fsl_ifc_nand_init
);
module_exit
(
fsl_ifc_nand_exit
);
MODULE_LICENSE
(
"GPL"
);
MODULE_AUTHOR
(
"Freescale"
);
MODULE_DESCRIPTION
(
"Freescale Integrated Flash Controller MTD NAND driver"
);
drivers/watchdog/Kconfig
View file @
4286f84e
...
...
@@ -1039,7 +1039,7 @@ config LANTIQ_WDT
config GEF_WDT
tristate "GE Watchdog Timer"
depends on GE
F_SBC610 || GEF_SBC310 || GEF_PPC9
A
depends on GE
_FPG
A
---help---
Watchdog timer found in a number of GE single board computers.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment