Commit e041013ac0df7fc7dea73c9ca73a33ab5b48d155
Committed by
Kumar Gala
1 parent
44b24b74ab
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
powerpc/85xx: Board support for GE IMP3A
Initial board support for the GE IMP3A, a 3U compactPCI card with a p2020 processor. Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Showing 6 changed files with 802 additions and 0 deletions Side-by-side Diff
arch/powerpc/boot/dts/ge_imp3a.dts
1 | +/* | |
2 | + * GE IMP3A Device Tree Source | |
3 | + * | |
4 | + * Copyright 2010-2011 GE Intelligent Platforms Embedded Systems, Inc. | |
5 | + * | |
6 | + * This program is free software; you can redistribute it and/or modify it | |
7 | + * under the terms of the GNU General Public License as published by the | |
8 | + * Free Software Foundation; either version 2 of the License, or (at your | |
9 | + * option) any later version. | |
10 | + * | |
11 | + * Based on: P2020 DS Device Tree Source | |
12 | + * Copyright 2009 Freescale Semiconductor Inc. | |
13 | + */ | |
14 | + | |
15 | +/include/ "fsl/p2020si-pre.dtsi" | |
16 | + | |
17 | +/ { | |
18 | + model = "GE_IMP3A"; | |
19 | + compatible = "ge,imp3a"; | |
20 | + | |
21 | + memory { | |
22 | + device_type = "memory"; | |
23 | + }; | |
24 | + | |
25 | + lbc: localbus@fef05000 { | |
26 | + reg = <0 0xfef05000 0 0x1000>; | |
27 | + | |
28 | + ranges = <0x0 0x0 0x0 0xff000000 0x01000000 | |
29 | + 0x1 0x0 0x0 0xe0000000 0x08000000 | |
30 | + 0x2 0x0 0x0 0xe8000000 0x08000000 | |
31 | + 0x3 0x0 0x0 0xfc100000 0x00020000 | |
32 | + 0x4 0x0 0x0 0xfc000000 0x00008000 | |
33 | + 0x5 0x0 0x0 0xfc008000 0x00008000 | |
34 | + 0x6 0x0 0x0 0xfee00000 0x00040000 | |
35 | + 0x7 0x0 0x0 0xfee80000 0x00040000>; | |
36 | + | |
37 | + /* nor@0,0 is a mirror of part of the memory in nor@1,0 | |
38 | + nor@0,0 { | |
39 | + #address-cells = <1>; | |
40 | + #size-cells = <1>; | |
41 | + compatible = "ge,imp3a-firmware-mirror", "cfi-flash"; | |
42 | + reg = <0x0 0x0 0x1000000>; | |
43 | + bank-width = <2>; | |
44 | + device-width = <1>; | |
45 | + | |
46 | + partition@0 { | |
47 | + label = "firmware"; | |
48 | + reg = <0x0 0x1000000>; | |
49 | + read-only; | |
50 | + }; | |
51 | + }; | |
52 | + */ | |
53 | + | |
54 | + nor@1,0 { | |
55 | + #address-cells = <1>; | |
56 | + #size-cells = <1>; | |
57 | + compatible = "ge,imp3a-paged-flash", "cfi-flash"; | |
58 | + reg = <0x1 0x0 0x8000000>; | |
59 | + bank-width = <2>; | |
60 | + device-width = <1>; | |
61 | + | |
62 | + partition@0 { | |
63 | + label = "user"; | |
64 | + reg = <0x0 0x7800000>; | |
65 | + }; | |
66 | + | |
67 | + partition@7800000 { | |
68 | + label = "firmware"; | |
69 | + reg = <0x7800000 0x800000>; | |
70 | + read-only; | |
71 | + }; | |
72 | + }; | |
73 | + | |
74 | + nvram@3,0 { | |
75 | + device_type = "nvram"; | |
76 | + compatible = "simtek,stk14ca8"; | |
77 | + reg = <0x3 0x0 0x20000>; | |
78 | + }; | |
79 | + | |
80 | + fpga@4,0 { | |
81 | + compatible = "ge,imp3a-fpga-regs"; | |
82 | + reg = <0x4 0x0 0x20>; | |
83 | + }; | |
84 | + | |
85 | + gef_pic: pic@4,20 { | |
86 | + #interrupt-cells = <1>; | |
87 | + interrupt-controller; | |
88 | + device_type = "interrupt-controller"; | |
89 | + compatible = "ge,imp3a-fpga-pic", "gef,fpga-pic-1.00"; | |
90 | + reg = <0x4 0x20 0x20>; | |
91 | + interrupts = <6 7 0 0>; | |
92 | + }; | |
93 | + | |
94 | + gef_gpio: gpio@4,400 { | |
95 | + #gpio-cells = <2>; | |
96 | + compatible = "ge,imp3a-gpio"; | |
97 | + reg = <0x4 0x400 0x24>; | |
98 | + gpio-controller; | |
99 | + }; | |
100 | + | |
101 | + wdt@4,800 { | |
102 | + compatible = "ge,imp3a-fpga-wdt", "gef,fpga-wdt-1.00", | |
103 | + "gef,fpga-wdt"; | |
104 | + reg = <0x4 0x800 0x8>; | |
105 | + interrupts = <10 4>; | |
106 | + interrupt-parent = <&gef_pic>; | |
107 | + }; | |
108 | + | |
109 | + /* Second watchdog available, driver currently supports one. | |
110 | + wdt@4,808 { | |
111 | + compatible = "gef,imp3a-fpga-wdt", "gef,fpga-wdt-1.00", | |
112 | + "gef,fpga-wdt"; | |
113 | + reg = <0x4 0x808 0x8>; | |
114 | + interrupts = <9 4>; | |
115 | + interrupt-parent = <&gef_pic>; | |
116 | + }; | |
117 | + */ | |
118 | + | |
119 | + nand@6,0 { | |
120 | + compatible = "fsl,elbc-fcm-nand"; | |
121 | + reg = <0x6 0x0 0x40000>; | |
122 | + }; | |
123 | + | |
124 | + nand@7,0 { | |
125 | + compatible = "fsl,elbc-fcm-nand"; | |
126 | + reg = <0x7 0x0 0x40000>; | |
127 | + }; | |
128 | + }; | |
129 | + | |
130 | + soc: soc@fef00000 { | |
131 | + ranges = <0x0 0 0xfef00000 0x100000>; | |
132 | + | |
133 | + i2c@3000 { | |
134 | + hwmon@48 { | |
135 | + compatible = "national,lm92"; | |
136 | + reg = <0x48>; | |
137 | + }; | |
138 | + | |
139 | + hwmon@4c { | |
140 | + compatible = "adi,adt7461"; | |
141 | + reg = <0x4c>; | |
142 | + }; | |
143 | + | |
144 | + rtc@51 { | |
145 | + compatible = "epson,rx8581"; | |
146 | + reg = <0x51>; | |
147 | + }; | |
148 | + | |
149 | + eti@6b { | |
150 | + compatible = "dallas,ds1682"; | |
151 | + reg = <0x6b>; | |
152 | + }; | |
153 | + }; | |
154 | + | |
155 | + usb@22000 { | |
156 | + phy_type = "ulpi"; | |
157 | + dr_mode = "host"; | |
158 | + }; | |
159 | + | |
160 | + mdio@24520 { | |
161 | + phy0: ethernet-phy@0 { | |
162 | + interrupt-parent = <&gef_pic>; | |
163 | + interrupts = <0xc 0x4>; | |
164 | + reg = <0x1>; | |
165 | + }; | |
166 | + phy1: ethernet-phy@1 { | |
167 | + interrupt-parent = <&gef_pic>; | |
168 | + interrupts = <0xb 0x4>; | |
169 | + reg = <0x2>; | |
170 | + }; | |
171 | + tbi0: tbi-phy@11 { | |
172 | + reg = <0x11>; | |
173 | + device_type = "tbi-phy"; | |
174 | + }; | |
175 | + }; | |
176 | + | |
177 | + mdio@25520 { | |
178 | + tbi1: tbi-phy@11 { | |
179 | + reg = <0x11>; | |
180 | + device_type = "tbi-phy"; | |
181 | + }; | |
182 | + }; | |
183 | + | |
184 | + mdio@26520 { | |
185 | + status = "disabled"; | |
186 | + }; | |
187 | + | |
188 | + enet0: ethernet@24000 { | |
189 | + tbi-handle = <&tbi0>; | |
190 | + phy-handle = <&phy0>; | |
191 | + phy-connection-type = "gmii"; | |
192 | + }; | |
193 | + | |
194 | + enet1: ethernet@25000 { | |
195 | + tbi-handle = <&tbi1>; | |
196 | + phy-handle = <&phy1>; | |
197 | + phy-connection-type = "gmii"; | |
198 | + }; | |
199 | + | |
200 | + enet2: ethernet@26000 { | |
201 | + status = "disabled"; | |
202 | + }; | |
203 | + }; | |
204 | + | |
205 | + pci0: pcie@fef08000 { | |
206 | + ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 | |
207 | + 0x1000000 0x0 0x00000000 0 0xfe020000 0x0 0x10000>; | |
208 | + reg = <0 0xfef08000 0 0x1000>; | |
209 | + | |
210 | + pcie@0 { | |
211 | + ranges = <0x2000000 0x0 0xc0000000 | |
212 | + 0x2000000 0x0 0xc0000000 | |
213 | + 0x0 0x20000000 | |
214 | + | |
215 | + 0x1000000 0x0 0x0 | |
216 | + 0x1000000 0x0 0x0 | |
217 | + 0x0 0x10000>; | |
218 | + }; | |
219 | + }; | |
220 | + | |
221 | + pci1: pcie@fef09000 { | |
222 | + reg = <0 0xfef09000 0 0x1000>; | |
223 | + ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 | |
224 | + 0x1000000 0x0 0x00000000 0 0xfe010000 0x0 0x10000>; | |
225 | + | |
226 | + pcie@0 { | |
227 | + ranges = <0x2000000 0x0 0xa0000000 | |
228 | + 0x2000000 0x0 0xa0000000 | |
229 | + 0x0 0x20000000 | |
230 | + | |
231 | + 0x1000000 0x0 0x0 | |
232 | + 0x1000000 0x0 0x0 | |
233 | + 0x0 0x10000>; | |
234 | + }; | |
235 | + | |
236 | + }; | |
237 | + | |
238 | + pci2: pcie@fef0a000 { | |
239 | + reg = <0 0xfef0a000 0 0x1000>; | |
240 | + ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 | |
241 | + 0x1000000 0x0 0x00000000 0 0xfe000000 0x0 0x10000>; | |
242 | + | |
243 | + pcie@0 { | |
244 | + ranges = <0x2000000 0x0 0x80000000 | |
245 | + 0x2000000 0x0 0x80000000 | |
246 | + 0x0 0x20000000 | |
247 | + | |
248 | + 0x1000000 0x0 0x0 | |
249 | + 0x1000000 0x0 0x0 | |
250 | + 0x0 0x10000>; | |
251 | + }; | |
252 | + }; | |
253 | +}; | |
254 | + | |
255 | +/include/ "fsl/p2020si-post.dtsi" |
arch/powerpc/configs/85xx/ge_imp3a_defconfig
1 | +CONFIG_PPC_85xx=y | |
2 | +CONFIG_SMP=y | |
3 | +CONFIG_NR_CPUS=2 | |
4 | +CONFIG_EXPERIMENTAL=y | |
5 | +CONFIG_SYSVIPC=y | |
6 | +CONFIG_POSIX_MQUEUE=y | |
7 | +CONFIG_BSD_PROCESS_ACCT=y | |
8 | +CONFIG_BSD_PROCESS_ACCT_V3=y | |
9 | +CONFIG_SPARSE_IRQ=y | |
10 | +CONFIG_IKCONFIG=y | |
11 | +CONFIG_IKCONFIG_PROC=y | |
12 | +# CONFIG_UTS_NS is not set | |
13 | +# CONFIG_IPC_NS is not set | |
14 | +# CONFIG_USER_NS is not set | |
15 | +# CONFIG_PID_NS is not set | |
16 | +# CONFIG_NET_NS is not set | |
17 | +CONFIG_SYSFS_DEPRECATED=y | |
18 | +CONFIG_SYSFS_DEPRECATED_V2=y | |
19 | +CONFIG_RELAY=y | |
20 | +CONFIG_BLK_DEV_INITRD=y | |
21 | +CONFIG_PERF_EVENTS=y | |
22 | +CONFIG_SLAB=y | |
23 | +CONFIG_MODULES=y | |
24 | +CONFIG_MODULE_UNLOAD=y | |
25 | +# CONFIG_BLK_DEV_BSG is not set | |
26 | +CONFIG_GE_IMP3A=y | |
27 | +CONFIG_QUICC_ENGINE=y | |
28 | +CONFIG_QE_GPIO=y | |
29 | +CONFIG_CPM2=y | |
30 | +CONFIG_HIGHMEM=y | |
31 | +CONFIG_HIGH_RES_TIMERS=y | |
32 | +CONFIG_HZ_1000=y | |
33 | +CONFIG_PREEMPT=y | |
34 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | |
35 | +CONFIG_BINFMT_MISC=m | |
36 | +CONFIG_MATH_EMULATION=y | |
37 | +CONFIG_IRQ_ALL_CPUS=y | |
38 | +CONFIG_FORCE_MAX_ZONEORDER=17 | |
39 | +CONFIG_PCI=y | |
40 | +CONFIG_PCIEPORTBUS=y | |
41 | +CONFIG_PCI_MSI=y | |
42 | +CONFIG_PCCARD=y | |
43 | +# CONFIG_PCMCIA_LOAD_CIS is not set | |
44 | +CONFIG_YENTA=y | |
45 | +CONFIG_NET=y | |
46 | +CONFIG_PACKET=y | |
47 | +CONFIG_UNIX=y | |
48 | +CONFIG_XFRM_USER=m | |
49 | +CONFIG_NET_KEY=y | |
50 | +CONFIG_INET=y | |
51 | +CONFIG_IP_MULTICAST=y | |
52 | +CONFIG_IP_ADVANCED_ROUTER=y | |
53 | +CONFIG_IP_MULTIPLE_TABLES=y | |
54 | +CONFIG_IP_ROUTE_MULTIPATH=y | |
55 | +CONFIG_IP_ROUTE_VERBOSE=y | |
56 | +CONFIG_IP_PNP=y | |
57 | +CONFIG_IP_PNP_DHCP=y | |
58 | +CONFIG_IP_PNP_BOOTP=y | |
59 | +CONFIG_IP_PNP_RARP=y | |
60 | +CONFIG_NET_IPIP=m | |
61 | +CONFIG_IP_MROUTE=y | |
62 | +CONFIG_IP_PIMSM_V1=y | |
63 | +CONFIG_IP_PIMSM_V2=y | |
64 | +CONFIG_SYN_COOKIES=y | |
65 | +CONFIG_INET_AH=m | |
66 | +CONFIG_INET_ESP=m | |
67 | +CONFIG_INET_IPCOMP=m | |
68 | +# CONFIG_INET_XFRM_MODE_BEET is not set | |
69 | +CONFIG_INET6_AH=m | |
70 | +CONFIG_INET6_IPCOMP=m | |
71 | +CONFIG_IPV6_TUNNEL=m | |
72 | +CONFIG_NET_PKTGEN=m | |
73 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | |
74 | +CONFIG_MTD=y | |
75 | +CONFIG_MTD_OF_PARTS=y | |
76 | +CONFIG_MTD_CHAR=y | |
77 | +CONFIG_MTD_BLOCK=y | |
78 | +CONFIG_MTD_CFI=y | |
79 | +CONFIG_MTD_JEDECPROBE=y | |
80 | +CONFIG_MTD_CFI_INTELEXT=y | |
81 | +CONFIG_MTD_CFI_AMDSTD=y | |
82 | +CONFIG_MTD_PHYSMAP_OF=y | |
83 | +CONFIG_MTD_NAND=y | |
84 | +CONFIG_MTD_NAND_FSL_ELBC=y | |
85 | +CONFIG_PROC_DEVICETREE=y | |
86 | +CONFIG_BLK_DEV_LOOP=m | |
87 | +CONFIG_BLK_DEV_CRYPTOLOOP=m | |
88 | +CONFIG_BLK_DEV_NBD=m | |
89 | +CONFIG_BLK_DEV_RAM=y | |
90 | +CONFIG_BLK_DEV_RAM_SIZE=131072 | |
91 | +CONFIG_MISC_DEVICES=y | |
92 | +CONFIG_DS1682=y | |
93 | +CONFIG_BLK_DEV_SD=y | |
94 | +CONFIG_CHR_DEV_ST=y | |
95 | +CONFIG_BLK_DEV_SR=y | |
96 | +CONFIG_ATA=y | |
97 | +CONFIG_SATA_AHCI=y | |
98 | +CONFIG_SATA_SIL24=y | |
99 | +# CONFIG_ATA_SFF is not set | |
100 | +CONFIG_NETDEVICES=y | |
101 | +CONFIG_BONDING=m | |
102 | +CONFIG_DUMMY=m | |
103 | +CONFIG_NETCONSOLE=y | |
104 | +CONFIG_NETPOLL_TRAP=y | |
105 | +CONFIG_TUN=m | |
106 | +# CONFIG_NET_VENDOR_3COM is not set | |
107 | +CONFIG_FS_ENET=y | |
108 | +CONFIG_UCC_GETH=y | |
109 | +CONFIG_GIANFAR=y | |
110 | +CONFIG_PPP=m | |
111 | +CONFIG_PPP_BSDCOMP=m | |
112 | +CONFIG_PPP_DEFLATE=m | |
113 | +CONFIG_PPP_FILTER=y | |
114 | +CONFIG_PPP_MULTILINK=y | |
115 | +CONFIG_PPPOE=m | |
116 | +CONFIG_PPP_ASYNC=m | |
117 | +CONFIG_PPP_SYNC_TTY=m | |
118 | +CONFIG_SLIP=m | |
119 | +CONFIG_SLIP_COMPRESSED=y | |
120 | +CONFIG_SLIP_SMART=y | |
121 | +CONFIG_SLIP_MODE_SLIP6=y | |
122 | +# CONFIG_INPUT_KEYBOARD is not set | |
123 | +# CONFIG_INPUT_MOUSE is not set | |
124 | +# CONFIG_SERIO is not set | |
125 | +# CONFIG_LEGACY_PTYS is not set | |
126 | +CONFIG_SERIAL_8250=y | |
127 | +CONFIG_SERIAL_8250_CONSOLE=y | |
128 | +CONFIG_SERIAL_8250_NR_UARTS=2 | |
129 | +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | |
130 | +CONFIG_SERIAL_8250_EXTENDED=y | |
131 | +CONFIG_SERIAL_8250_MANY_PORTS=y | |
132 | +CONFIG_SERIAL_8250_DETECT_IRQ=y | |
133 | +CONFIG_SERIAL_8250_RSA=y | |
134 | +CONFIG_SERIAL_QE=m | |
135 | +CONFIG_NVRAM=y | |
136 | +CONFIG_I2C=y | |
137 | +CONFIG_I2C_CHARDEV=y | |
138 | +CONFIG_I2C_CPM=m | |
139 | +CONFIG_I2C_MPC=y | |
140 | +CONFIG_GPIO_SYSFS=y | |
141 | +CONFIG_GPIO_GE_FPGA=y | |
142 | +CONFIG_SENSORS_LM90=y | |
143 | +CONFIG_SENSORS_LM92=y | |
144 | +CONFIG_WATCHDOG=y | |
145 | +CONFIG_GEF_WDT=y | |
146 | +CONFIG_VIDEO_OUTPUT_CONTROL=m | |
147 | +CONFIG_HID_DRAGONRISE=y | |
148 | +CONFIG_HID_GYRATION=y | |
149 | +CONFIG_HID_TWINHAN=y | |
150 | +CONFIG_HID_ORTEK=y | |
151 | +CONFIG_HID_PANTHERLORD=y | |
152 | +CONFIG_HID_PETALYNX=y | |
153 | +CONFIG_HID_SAMSUNG=y | |
154 | +CONFIG_HID_SONY=y | |
155 | +CONFIG_HID_SUNPLUS=y | |
156 | +CONFIG_HID_GREENASIA=y | |
157 | +CONFIG_HID_SMARTJOYPLUS=y | |
158 | +CONFIG_HID_TOPSEED=y | |
159 | +CONFIG_HID_THRUSTMASTER=y | |
160 | +CONFIG_HID_ZEROPLUS=y | |
161 | +CONFIG_USB=y | |
162 | +CONFIG_USB_DEVICEFS=y | |
163 | +CONFIG_USB_EHCI_HCD=y | |
164 | +# CONFIG_USB_EHCI_TT_NEWSCHED is not set | |
165 | +CONFIG_USB_EHCI_FSL=y | |
166 | +CONFIG_USB_OHCI_HCD=y | |
167 | +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | |
168 | +CONFIG_USB_OHCI_HCD_PPC_OF_LE=y | |
169 | +CONFIG_USB_STORAGE=y | |
170 | +CONFIG_EDAC=y | |
171 | +CONFIG_EDAC_MM_EDAC=y | |
172 | +CONFIG_EDAC_MPC85XX=y | |
173 | +CONFIG_RTC_CLASS=y | |
174 | +# CONFIG_RTC_INTF_PROC is not set | |
175 | +CONFIG_RTC_DRV_RX8581=y | |
176 | +CONFIG_DMADEVICES=y | |
177 | +CONFIG_FSL_DMA=y | |
178 | +# CONFIG_NET_DMA is not set | |
179 | +CONFIG_EXT2_FS=y | |
180 | +CONFIG_EXT2_FS_XATTR=y | |
181 | +CONFIG_EXT2_FS_POSIX_ACL=y | |
182 | +CONFIG_EXT3_FS=y | |
183 | +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | |
184 | +CONFIG_EXT3_FS_POSIX_ACL=y | |
185 | +CONFIG_EXT4_FS=y | |
186 | +CONFIG_FUSE_FS=y | |
187 | +CONFIG_ISO9660_FS=y | |
188 | +CONFIG_JOLIET=y | |
189 | +CONFIG_ZISOFS=y | |
190 | +CONFIG_UDF_FS=y | |
191 | +CONFIG_MSDOS_FS=y | |
192 | +CONFIG_VFAT_FS=y | |
193 | +CONFIG_FAT_DEFAULT_CODEPAGE=850 | |
194 | +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" | |
195 | +CONFIG_NTFS_FS=y | |
196 | +CONFIG_PROC_KCORE=y | |
197 | +CONFIG_TMPFS=y | |
198 | +CONFIG_JFFS2_FS=y | |
199 | +CONFIG_NFS_FS=y | |
200 | +CONFIG_NFS_V3=y | |
201 | +CONFIG_NFS_V4=y | |
202 | +CONFIG_ROOT_NFS=y | |
203 | +CONFIG_NFSD=y | |
204 | +CONFIG_NFSD_V4=y | |
205 | +CONFIG_CIFS=m | |
206 | +CONFIG_CIFS_XATTR=y | |
207 | +CONFIG_CIFS_POSIX=y | |
208 | +CONFIG_NLS_CODEPAGE_437=y | |
209 | +CONFIG_NLS_CODEPAGE_737=m | |
210 | +CONFIG_NLS_CODEPAGE_775=m | |
211 | +CONFIG_NLS_CODEPAGE_850=y | |
212 | +CONFIG_NLS_CODEPAGE_852=m | |
213 | +CONFIG_NLS_CODEPAGE_855=m | |
214 | +CONFIG_NLS_CODEPAGE_857=m | |
215 | +CONFIG_NLS_CODEPAGE_860=m | |
216 | +CONFIG_NLS_CODEPAGE_861=m | |
217 | +CONFIG_NLS_CODEPAGE_862=m | |
218 | +CONFIG_NLS_CODEPAGE_863=m | |
219 | +CONFIG_NLS_CODEPAGE_864=m | |
220 | +CONFIG_NLS_CODEPAGE_865=m | |
221 | +CONFIG_NLS_CODEPAGE_866=m | |
222 | +CONFIG_NLS_CODEPAGE_869=m | |
223 | +CONFIG_NLS_CODEPAGE_936=m | |
224 | +CONFIG_NLS_CODEPAGE_950=m | |
225 | +CONFIG_NLS_CODEPAGE_932=m | |
226 | +CONFIG_NLS_CODEPAGE_949=m | |
227 | +CONFIG_NLS_CODEPAGE_874=m | |
228 | +CONFIG_NLS_ISO8859_8=m | |
229 | +CONFIG_NLS_CODEPAGE_1250=m | |
230 | +CONFIG_NLS_CODEPAGE_1251=m | |
231 | +CONFIG_NLS_ASCII=y | |
232 | +CONFIG_NLS_ISO8859_1=y | |
233 | +CONFIG_NLS_ISO8859_2=m | |
234 | +CONFIG_NLS_ISO8859_3=m | |
235 | +CONFIG_NLS_ISO8859_4=m | |
236 | +CONFIG_NLS_ISO8859_5=m | |
237 | +CONFIG_NLS_ISO8859_6=m | |
238 | +CONFIG_NLS_ISO8859_7=m | |
239 | +CONFIG_NLS_ISO8859_9=m | |
240 | +CONFIG_NLS_ISO8859_13=m | |
241 | +CONFIG_NLS_ISO8859_14=m | |
242 | +CONFIG_NLS_ISO8859_15=y | |
243 | +CONFIG_NLS_KOI8_R=m | |
244 | +CONFIG_NLS_KOI8_U=m | |
245 | +CONFIG_NLS_UTF8=y | |
246 | +CONFIG_CRC_CCITT=y | |
247 | +CONFIG_CRC_T10DIF=y | |
248 | +CONFIG_LIBCRC32C=y | |
249 | +CONFIG_MAGIC_SYSRQ=y | |
250 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | |
251 | +CONFIG_CRYPTO_CBC=y | |
252 | +CONFIG_CRYPTO_MD5=y | |
253 | +CONFIG_CRYPTO_SHA256=m | |
254 | +CONFIG_CRYPTO_SHA512=m | |
255 | +CONFIG_CRYPTO_DES=y | |
256 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | |
257 | +CONFIG_CRYPTO_DEV_TALITOS=y |
arch/powerpc/platforms/85xx/Kconfig
... | ... | @@ -172,6 +172,21 @@ |
172 | 172 | help |
173 | 173 | This option enables support for the Wind River SBC8560 board |
174 | 174 | |
175 | +config GE_IMP3A | |
176 | + bool "GE Intelligent Platforms IMP3A" | |
177 | + select DEFAULT_UIMAGE | |
178 | + select SWIOTLB | |
179 | + select MMIO_NVRAM | |
180 | + select GENERIC_GPIO | |
181 | + select ARCH_REQUIRE_GPIOLIB | |
182 | + select GE_FPGA | |
183 | + help | |
184 | + This option enables support for the GE Intelligent Platforms IMP3A | |
185 | + board. | |
186 | + | |
187 | + This board is a 3U CompactPCI Single Board Computer with a Freescale | |
188 | + P2020 processor. | |
189 | + | |
175 | 190 | config P2041_RDB |
176 | 191 | bool "Freescale P2041 RDB" |
177 | 192 | select DEFAULT_UIMAGE |
arch/powerpc/platforms/85xx/Makefile
arch/powerpc/platforms/85xx/ge_imp3a.c
1 | +/* | |
2 | + * GE IMP3A Board Setup | |
3 | + * | |
4 | + * Author Martyn Welch <martyn.welch@ge.com> | |
5 | + * | |
6 | + * Copyright 2010 GE Intelligent Platforms Embedded Systems, Inc. | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or modify it | |
9 | + * under the terms of the GNU General Public License as published by the | |
10 | + * Free Software Foundation; either version 2 of the License, or (at your | |
11 | + * option) any later version. | |
12 | + * | |
13 | + * Based on: mpc85xx_ds.c (MPC85xx DS Board Setup) | |
14 | + * Copyright 2007 Freescale Semiconductor Inc. | |
15 | + */ | |
16 | + | |
17 | +#include <linux/stddef.h> | |
18 | +#include <linux/kernel.h> | |
19 | +#include <linux/pci.h> | |
20 | +#include <linux/kdev_t.h> | |
21 | +#include <linux/delay.h> | |
22 | +#include <linux/seq_file.h> | |
23 | +#include <linux/interrupt.h> | |
24 | +#include <linux/of_platform.h> | |
25 | +#include <linux/memblock.h> | |
26 | + | |
27 | +#include <asm/system.h> | |
28 | +#include <asm/time.h> | |
29 | +#include <asm/machdep.h> | |
30 | +#include <asm/pci-bridge.h> | |
31 | +#include <mm/mmu_decl.h> | |
32 | +#include <asm/prom.h> | |
33 | +#include <asm/udbg.h> | |
34 | +#include <asm/mpic.h> | |
35 | +#include <asm/swiotlb.h> | |
36 | +#include <asm/nvram.h> | |
37 | + | |
38 | +#include <sysdev/fsl_soc.h> | |
39 | +#include <sysdev/fsl_pci.h> | |
40 | +#include "smp.h" | |
41 | + | |
42 | +#include "mpc85xx.h" | |
43 | +#include <sysdev/ge/ge_pic.h> | |
44 | + | |
45 | +void __iomem *imp3a_regs; | |
46 | + | |
47 | +void __init ge_imp3a_pic_init(void) | |
48 | +{ | |
49 | + struct mpic *mpic; | |
50 | + struct device_node *np; | |
51 | + struct device_node *cascade_node = NULL; | |
52 | + unsigned long root = of_get_flat_dt_root(); | |
53 | + | |
54 | + if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) { | |
55 | + mpic = mpic_alloc(NULL, 0, | |
56 | + MPIC_NO_RESET | | |
57 | + MPIC_BIG_ENDIAN | | |
58 | + MPIC_SINGLE_DEST_CPU, | |
59 | + 0, 256, " OpenPIC "); | |
60 | + } else { | |
61 | + mpic = mpic_alloc(NULL, 0, | |
62 | + MPIC_BIG_ENDIAN | | |
63 | + MPIC_SINGLE_DEST_CPU, | |
64 | + 0, 256, " OpenPIC "); | |
65 | + } | |
66 | + | |
67 | + BUG_ON(mpic == NULL); | |
68 | + mpic_init(mpic); | |
69 | + /* | |
70 | + * There is a simple interrupt handler in the main FPGA, this needs | |
71 | + * to be cascaded into the MPIC | |
72 | + */ | |
73 | + for_each_node_by_type(np, "interrupt-controller") | |
74 | + if (of_device_is_compatible(np, "gef,fpga-pic-1.00")) { | |
75 | + cascade_node = np; | |
76 | + break; | |
77 | + } | |
78 | + | |
79 | + if (cascade_node == NULL) { | |
80 | + printk(KERN_WARNING "IMP3A: No FPGA PIC\n"); | |
81 | + return; | |
82 | + } | |
83 | + | |
84 | + gef_pic_init(cascade_node); | |
85 | + of_node_put(cascade_node); | |
86 | +} | |
87 | + | |
88 | +#ifdef CONFIG_PCI | |
89 | +static int primary_phb_addr; | |
90 | +#endif /* CONFIG_PCI */ | |
91 | + | |
92 | +/* | |
93 | + * Setup the architecture | |
94 | + */ | |
95 | +static void __init ge_imp3a_setup_arch(void) | |
96 | +{ | |
97 | + struct device_node *regs; | |
98 | +#ifdef CONFIG_PCI | |
99 | + struct device_node *np; | |
100 | + struct pci_controller *hose; | |
101 | +#endif | |
102 | + dma_addr_t max = 0xffffffff; | |
103 | + | |
104 | + if (ppc_md.progress) | |
105 | + ppc_md.progress("ge_imp3a_setup_arch()", 0); | |
106 | + | |
107 | +#ifdef CONFIG_PCI | |
108 | + for_each_node_by_type(np, "pci") { | |
109 | + if (of_device_is_compatible(np, "fsl,mpc8540-pci") || | |
110 | + of_device_is_compatible(np, "fsl,mpc8548-pcie") || | |
111 | + of_device_is_compatible(np, "fsl,p2020-pcie")) { | |
112 | + struct resource rsrc; | |
113 | + of_address_to_resource(np, 0, &rsrc); | |
114 | + if ((rsrc.start & 0xfffff) == primary_phb_addr) | |
115 | + fsl_add_bridge(np, 1); | |
116 | + else | |
117 | + fsl_add_bridge(np, 0); | |
118 | + | |
119 | + hose = pci_find_hose_for_OF_device(np); | |
120 | + max = min(max, hose->dma_window_base_cur + | |
121 | + hose->dma_window_size); | |
122 | + } | |
123 | + } | |
124 | +#endif | |
125 | + | |
126 | + mpc85xx_smp_init(); | |
127 | + | |
128 | +#ifdef CONFIG_SWIOTLB | |
129 | + if (memblock_end_of_DRAM() > max) { | |
130 | + ppc_swiotlb_enable = 1; | |
131 | + set_pci_dma_ops(&swiotlb_dma_ops); | |
132 | + ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; | |
133 | + } | |
134 | +#endif | |
135 | + | |
136 | + /* Remap basic board registers */ | |
137 | + regs = of_find_compatible_node(NULL, NULL, "ge,imp3a-fpga-regs"); | |
138 | + if (regs) { | |
139 | + imp3a_regs = of_iomap(regs, 0); | |
140 | + if (imp3a_regs == NULL) | |
141 | + printk(KERN_WARNING "Unable to map board registers\n"); | |
142 | + of_node_put(regs); | |
143 | + } | |
144 | + | |
145 | +#if defined(CONFIG_MMIO_NVRAM) | |
146 | + mmio_nvram_init(); | |
147 | +#endif | |
148 | + | |
149 | + printk(KERN_INFO "GE Intelligent Platforms IMP3A 3U cPCI SBC\n"); | |
150 | +} | |
151 | + | |
152 | +/* Return the PCB revision */ | |
153 | +static unsigned int ge_imp3a_get_pcb_rev(void) | |
154 | +{ | |
155 | + unsigned int reg; | |
156 | + | |
157 | + reg = ioread16(imp3a_regs); | |
158 | + return (reg >> 8) & 0xff; | |
159 | +} | |
160 | + | |
161 | +/* Return the board (software) revision */ | |
162 | +static unsigned int ge_imp3a_get_board_rev(void) | |
163 | +{ | |
164 | + unsigned int reg; | |
165 | + | |
166 | + reg = ioread16(imp3a_regs + 0x2); | |
167 | + return reg & 0xff; | |
168 | +} | |
169 | + | |
170 | +/* Return the FPGA revision */ | |
171 | +static unsigned int ge_imp3a_get_fpga_rev(void) | |
172 | +{ | |
173 | + unsigned int reg; | |
174 | + | |
175 | + reg = ioread16(imp3a_regs + 0x2); | |
176 | + return (reg >> 8) & 0xff; | |
177 | +} | |
178 | + | |
179 | +/* Return compactPCI Geographical Address */ | |
180 | +static unsigned int ge_imp3a_get_cpci_geo_addr(void) | |
181 | +{ | |
182 | + unsigned int reg; | |
183 | + | |
184 | + reg = ioread16(imp3a_regs + 0x6); | |
185 | + return (reg & 0x0f00) >> 8; | |
186 | +} | |
187 | + | |
188 | +/* Return compactPCI System Controller Status */ | |
189 | +static unsigned int ge_imp3a_get_cpci_is_syscon(void) | |
190 | +{ | |
191 | + unsigned int reg; | |
192 | + | |
193 | + reg = ioread16(imp3a_regs + 0x6); | |
194 | + return reg & (1 << 12); | |
195 | +} | |
196 | + | |
197 | +static void ge_imp3a_show_cpuinfo(struct seq_file *m) | |
198 | +{ | |
199 | + seq_printf(m, "Vendor\t\t: GE Intelligent Platforms\n"); | |
200 | + | |
201 | + seq_printf(m, "Revision\t: %u%c\n", ge_imp3a_get_pcb_rev(), | |
202 | + ('A' + ge_imp3a_get_board_rev() - 1)); | |
203 | + | |
204 | + seq_printf(m, "FPGA Revision\t: %u\n", ge_imp3a_get_fpga_rev()); | |
205 | + | |
206 | + seq_printf(m, "cPCI geo. addr\t: %u\n", ge_imp3a_get_cpci_geo_addr()); | |
207 | + | |
208 | + seq_printf(m, "cPCI syscon\t: %s\n", | |
209 | + ge_imp3a_get_cpci_is_syscon() ? "yes" : "no"); | |
210 | +} | |
211 | + | |
212 | +/* | |
213 | + * Called very early, device-tree isn't unflattened | |
214 | + */ | |
215 | +static int __init ge_imp3a_probe(void) | |
216 | +{ | |
217 | + unsigned long root = of_get_flat_dt_root(); | |
218 | + | |
219 | + if (of_flat_dt_is_compatible(root, "ge,IMP3A")) { | |
220 | +#ifdef CONFIG_PCI | |
221 | + primary_phb_addr = 0x9000; | |
222 | +#endif | |
223 | + return 1; | |
224 | + } | |
225 | + | |
226 | + return 0; | |
227 | +} | |
228 | + | |
229 | +machine_device_initcall(ge_imp3a, mpc85xx_common_publish_devices); | |
230 | + | |
231 | +machine_arch_initcall(ge_imp3a, swiotlb_setup_bus_notifier); | |
232 | + | |
233 | +define_machine(ge_imp3a) { | |
234 | + .name = "GE_IMP3A", | |
235 | + .probe = ge_imp3a_probe, | |
236 | + .setup_arch = ge_imp3a_setup_arch, | |
237 | + .init_IRQ = ge_imp3a_pic_init, | |
238 | + .show_cpuinfo = ge_imp3a_show_cpuinfo, | |
239 | +#ifdef CONFIG_PCI | |
240 | + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, | |
241 | +#endif | |
242 | + .get_irq = mpic_get_irq, | |
243 | + .restart = fsl_rstcr_restart, | |
244 | + .calibrate_decr = generic_calibrate_decr, | |
245 | + .progress = udbg_progress, | |
246 | +}; |
drivers/gpio/gpio-ge.c
... | ... | @@ -162,6 +162,34 @@ |
162 | 162 | } |
163 | 163 | } |
164 | 164 | |
165 | + for_each_compatible_node(np, NULL, "ge,imp3a-gpio") { | |
166 | + | |
167 | + pr_debug("%s: Initialising GE GPIO\n", np->full_name); | |
168 | + | |
169 | + /* Allocate chip structure */ | |
170 | + gef_gpio_chip = kzalloc(sizeof(*gef_gpio_chip), GFP_KERNEL); | |
171 | + if (!gef_gpio_chip) { | |
172 | + pr_err("%s: Unable to allocate structure\n", | |
173 | + np->full_name); | |
174 | + continue; | |
175 | + } | |
176 | + | |
177 | + /* Setup pointers to chip functions */ | |
178 | + gef_gpio_chip->gc.of_gpio_n_cells = 2; | |
179 | + gef_gpio_chip->gc.ngpio = 16; | |
180 | + gef_gpio_chip->gc.direction_input = gef_gpio_dir_in; | |
181 | + gef_gpio_chip->gc.direction_output = gef_gpio_dir_out; | |
182 | + gef_gpio_chip->gc.get = gef_gpio_get; | |
183 | + gef_gpio_chip->gc.set = gef_gpio_set; | |
184 | + | |
185 | + /* This function adds a memory mapped GPIO chip */ | |
186 | + retval = of_mm_gpiochip_add(np, gef_gpio_chip); | |
187 | + if (retval) { | |
188 | + kfree(gef_gpio_chip); | |
189 | + pr_err("%s: Unable to add GPIO\n", np->full_name); | |
190 | + } | |
191 | + } | |
192 | + | |
165 | 193 | return 0; |
166 | 194 | }; |
167 | 195 | arch_initcall(gef_gpio_init); |