Commit edb6310aaa0dfc3da303a4ba6dff9dce3fbaa8d3
Committed by
Ralf Baechle
1 parent
537fa37c86
Exists in
master
and in
7 other branches
MIPS: Add support for NXP PNX833x (STB222/5) into linux kernel
The following patch add support for the NXP PNX833x SOC. More specifically it adds support for the STB222/5 variant. It fixes the vectored interrupt issue. Signed-off-by: daniel.j.laird <daniel.j.laird@nxp.com> Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Showing 16 changed files with 2783 additions and 0 deletions Side-by-side Diff
- arch/mips/Kconfig
- arch/mips/Makefile
- arch/mips/configs/pnx8335-stb225_defconfig
- arch/mips/include/asm/mach-pnx833x/gpio.h
- arch/mips/include/asm/mach-pnx833x/irq-mapping.h
- arch/mips/include/asm/mach-pnx833x/irq.h
- arch/mips/include/asm/mach-pnx833x/pnx833x.h
- arch/mips/include/asm/mach-pnx833x/war.h
- arch/mips/nxp/pnx833x/common/Makefile
- arch/mips/nxp/pnx833x/common/interrupts.c
- arch/mips/nxp/pnx833x/common/platform.c
- arch/mips/nxp/pnx833x/common/prom.c
- arch/mips/nxp/pnx833x/common/reset.c
- arch/mips/nxp/pnx833x/common/setup.c
- arch/mips/nxp/pnx833x/stb22x/Makefile
- arch/mips/nxp/pnx833x/stb22x/board.c
arch/mips/Kconfig
... | ... | @@ -261,6 +261,19 @@ |
261 | 261 | select SYS_HAS_CPU_VR41XX |
262 | 262 | select GENERIC_HARDIRQS_NO__DO_IRQ |
263 | 263 | |
264 | +config NXP_STB220 | |
265 | + bool "NXP STB220 board" | |
266 | + select SOC_PNX833X | |
267 | + help | |
268 | + Support for NXP Semiconductors STB220 Development Board. | |
269 | + | |
270 | +config NXP_STB225 | |
271 | + bool "NXP 225 board" | |
272 | + select SOC_PNX833X | |
273 | + select SOC_PNX8335 | |
274 | + help | |
275 | + Support for NXP Semiconductors STB225 Development Board. | |
276 | + | |
264 | 277 | config PNX8550_JBS |
265 | 278 | bool "NXP PNX8550 based JBS board" |
266 | 279 | select PNX8550 |
... | ... | @@ -848,6 +861,24 @@ |
848 | 861 | config MIPS_RM9122 |
849 | 862 | bool |
850 | 863 | select SERIAL_RM9000 |
864 | + | |
865 | +config SOC_PNX833X | |
866 | + bool | |
867 | + select CEVT_R4K | |
868 | + select CSRC_R4K | |
869 | + select IRQ_CPU | |
870 | + select DMA_NONCOHERENT | |
871 | + select SYS_HAS_CPU_MIPS32_R2 | |
872 | + select SYS_SUPPORTS_32BIT_KERNEL | |
873 | + select SYS_SUPPORTS_LITTLE_ENDIAN | |
874 | + select SYS_SUPPORTS_BIG_ENDIAN | |
875 | + select GENERIC_HARDIRQS_NO__DO_IRQ | |
876 | + select GENERIC_GPIO | |
877 | + select CPU_MIPSR2_IRQ_VI | |
878 | + | |
879 | +config SOC_PNX8335 | |
880 | + bool | |
881 | + select SOC_PNX833X | |
851 | 882 | |
852 | 883 | config PNX8550 |
853 | 884 | bool |
arch/mips/Makefile
... | ... | @@ -381,6 +381,14 @@ |
381 | 381 | # |
382 | 382 | load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000 |
383 | 383 | |
384 | +# NXP STB225 | |
385 | +core-$(CONFIG_SOC_PNX833X) += arch/mips/nxp/pnx833x/common/ | |
386 | +cflags-$(CONFIG_SOC_PNX833X) += -Iarch/mips/include/asm/mach-pnx833x | |
387 | +libs-$(CONFIG_NXP_STB220) += arch/mips/nxp/pnx833x/stb22x/ | |
388 | +load-$(CONFIG_NXP_STB220) += 0xffffffff80001000 | |
389 | +libs-$(CONFIG_NXP_STB225) += arch/mips/nxp/pnx833x/stb22x/ | |
390 | +load-$(CONFIG_NXP_STB225) += 0xffffffff80001000 | |
391 | + | |
384 | 392 | # |
385 | 393 | # Common NXP PNX8550 |
386 | 394 | # |
arch/mips/configs/pnx8335-stb225_defconfig
Changes suppressed. Click to show
1 | +# | |
2 | +# Automatically generated make config: don't edit | |
3 | +# Linux kernel version: 2.6.26 | |
4 | +# Sat Jul 26 09:02:59 2008 | |
5 | +# | |
6 | +CONFIG_MIPS=y | |
7 | + | |
8 | +# | |
9 | +# Machine selection | |
10 | +# | |
11 | +# CONFIG_MACH_ALCHEMY is not set | |
12 | +# CONFIG_BASLER_EXCITE is not set | |
13 | +# CONFIG_BCM47XX is not set | |
14 | +# CONFIG_MIPS_COBALT is not set | |
15 | +# CONFIG_MACH_DECSTATION is not set | |
16 | +# CONFIG_MACH_JAZZ is not set | |
17 | +# CONFIG_LASAT is not set | |
18 | +# CONFIG_LEMOTE_FULONG is not set | |
19 | +# CONFIG_MIPS_MALTA is not set | |
20 | +# CONFIG_MIPS_SIM is not set | |
21 | +# CONFIG_MARKEINS is not set | |
22 | +# CONFIG_MACH_VR41XX is not set | |
23 | +# CONFIG_NXP_STB220 is not set | |
24 | +CONFIG_NXP_STB225=y | |
25 | +# CONFIG_PNX8550_JBS is not set | |
26 | +# CONFIG_PNX8550_STB810 is not set | |
27 | +# CONFIG_PMC_MSP is not set | |
28 | +# CONFIG_PMC_YOSEMITE is not set | |
29 | +# CONFIG_SGI_IP22 is not set | |
30 | +# CONFIG_SGI_IP27 is not set | |
31 | +# CONFIG_SGI_IP28 is not set | |
32 | +# CONFIG_SGI_IP32 is not set | |
33 | +# CONFIG_SIBYTE_CRHINE is not set | |
34 | +# CONFIG_SIBYTE_CARMEL is not set | |
35 | +# CONFIG_SIBYTE_CRHONE is not set | |
36 | +# CONFIG_SIBYTE_RHONE is not set | |
37 | +# CONFIG_SIBYTE_SWARM is not set | |
38 | +# CONFIG_SIBYTE_LITTLESUR is not set | |
39 | +# CONFIG_SIBYTE_SENTOSA is not set | |
40 | +# CONFIG_SIBYTE_BIGSUR is not set | |
41 | +# CONFIG_SNI_RM is not set | |
42 | +# CONFIG_MACH_TX39XX is not set | |
43 | +# CONFIG_MACH_TX49XX is not set | |
44 | +# CONFIG_WR_PPMC is not set | |
45 | +CONFIG_RWSEM_GENERIC_SPINLOCK=y | |
46 | +# CONFIG_ARCH_HAS_ILOG2_U32 is not set | |
47 | +# CONFIG_ARCH_HAS_ILOG2_U64 is not set | |
48 | +CONFIG_ARCH_SUPPORTS_OPROFILE=y | |
49 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | |
50 | +CONFIG_GENERIC_HWEIGHT=y | |
51 | +CONFIG_GENERIC_CALIBRATE_DELAY=y | |
52 | +CONFIG_GENERIC_CLOCKEVENTS=y | |
53 | +CONFIG_GENERIC_TIME=y | |
54 | +CONFIG_GENERIC_CMOS_UPDATE=y | |
55 | +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | |
56 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | |
57 | +CONFIG_CEVT_R4K=y | |
58 | +CONFIG_CSRC_R4K=y | |
59 | +CONFIG_DMA_NONCOHERENT=y | |
60 | +CONFIG_DMA_NEED_PCI_MAP_STATE=y | |
61 | +# CONFIG_HOTPLUG_CPU is not set | |
62 | +# CONFIG_NO_IOPORT is not set | |
63 | +CONFIG_GENERIC_GPIO=y | |
64 | +# CONFIG_CPU_BIG_ENDIAN is not set | |
65 | +CONFIG_CPU_LITTLE_ENDIAN=y | |
66 | +CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y | |
67 | +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y | |
68 | +CONFIG_IRQ_CPU=y | |
69 | +CONFIG_SOC_PNX833X=y | |
70 | +CONFIG_SOC_PNX8335=y | |
71 | +CONFIG_MIPS_L1_CACHE_SHIFT=5 | |
72 | + | |
73 | +# | |
74 | +# CPU selection | |
75 | +# | |
76 | +# CONFIG_CPU_LOONGSON2 is not set | |
77 | +# CONFIG_CPU_MIPS32_R1 is not set | |
78 | +CONFIG_CPU_MIPS32_R2=y | |
79 | +# CONFIG_CPU_MIPS64_R1 is not set | |
80 | +# CONFIG_CPU_MIPS64_R2 is not set | |
81 | +# CONFIG_CPU_R3000 is not set | |
82 | +# CONFIG_CPU_TX39XX is not set | |
83 | +# CONFIG_CPU_VR41XX is not set | |
84 | +# CONFIG_CPU_R4300 is not set | |
85 | +# CONFIG_CPU_R4X00 is not set | |
86 | +# CONFIG_CPU_TX49XX is not set | |
87 | +# CONFIG_CPU_R5000 is not set | |
88 | +# CONFIG_CPU_R5432 is not set | |
89 | +# CONFIG_CPU_R6000 is not set | |
90 | +# CONFIG_CPU_NEVADA is not set | |
91 | +# CONFIG_CPU_R8000 is not set | |
92 | +# CONFIG_CPU_R10000 is not set | |
93 | +# CONFIG_CPU_RM7000 is not set | |
94 | +# CONFIG_CPU_RM9000 is not set | |
95 | +# CONFIG_CPU_SB1 is not set | |
96 | +CONFIG_SYS_HAS_CPU_MIPS32_R2=y | |
97 | +CONFIG_CPU_MIPS32=y | |
98 | +CONFIG_CPU_MIPSR2=y | |
99 | +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | |
100 | +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | |
101 | + | |
102 | +# | |
103 | +# Kernel type | |
104 | +# | |
105 | +CONFIG_32BIT=y | |
106 | +# CONFIG_64BIT is not set | |
107 | +CONFIG_PAGE_SIZE_4KB=y | |
108 | +# CONFIG_PAGE_SIZE_8KB is not set | |
109 | +# CONFIG_PAGE_SIZE_16KB is not set | |
110 | +# CONFIG_PAGE_SIZE_64KB is not set | |
111 | +CONFIG_CPU_HAS_PREFETCH=y | |
112 | +CONFIG_MIPS_MT_DISABLED=y | |
113 | +# CONFIG_MIPS_MT_SMP is not set | |
114 | +# CONFIG_MIPS_MT_SMTC is not set | |
115 | +CONFIG_CPU_HAS_LLSC=y | |
116 | +CONFIG_CPU_MIPSR2_IRQ_VI=y | |
117 | +CONFIG_CPU_HAS_SYNC=y | |
118 | +CONFIG_GENERIC_HARDIRQS=y | |
119 | +CONFIG_GENERIC_IRQ_PROBE=y | |
120 | +CONFIG_CPU_SUPPORTS_HIGHMEM=y | |
121 | +CONFIG_ARCH_FLATMEM_ENABLE=y | |
122 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | |
123 | +CONFIG_SELECT_MEMORY_MODEL=y | |
124 | +CONFIG_FLATMEM_MANUAL=y | |
125 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | |
126 | +# CONFIG_SPARSEMEM_MANUAL is not set | |
127 | +CONFIG_FLATMEM=y | |
128 | +CONFIG_FLAT_NODE_MEM_MAP=y | |
129 | +# CONFIG_SPARSEMEM_STATIC is not set | |
130 | +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | |
131 | +CONFIG_PAGEFLAGS_EXTENDED=y | |
132 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | |
133 | +# CONFIG_RESOURCES_64BIT is not set | |
134 | +CONFIG_ZONE_DMA_FLAG=0 | |
135 | +CONFIG_VIRT_TO_BUS=y | |
136 | +CONFIG_TICK_ONESHOT=y | |
137 | +CONFIG_NO_HZ=y | |
138 | +CONFIG_HIGH_RES_TIMERS=y | |
139 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | |
140 | +# CONFIG_HZ_48 is not set | |
141 | +# CONFIG_HZ_100 is not set | |
142 | +CONFIG_HZ_128=y | |
143 | +# CONFIG_HZ_250 is not set | |
144 | +# CONFIG_HZ_256 is not set | |
145 | +# CONFIG_HZ_1000 is not set | |
146 | +# CONFIG_HZ_1024 is not set | |
147 | +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y | |
148 | +CONFIG_HZ=128 | |
149 | +# CONFIG_PREEMPT_NONE is not set | |
150 | +CONFIG_PREEMPT_VOLUNTARY=y | |
151 | +# CONFIG_PREEMPT is not set | |
152 | +# CONFIG_KEXEC is not set | |
153 | +# CONFIG_SECCOMP is not set | |
154 | +CONFIG_LOCKDEP_SUPPORT=y | |
155 | +CONFIG_STACKTRACE_SUPPORT=y | |
156 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | |
157 | + | |
158 | +# | |
159 | +# General setup | |
160 | +# | |
161 | +CONFIG_EXPERIMENTAL=y | |
162 | +CONFIG_BROKEN_ON_SMP=y | |
163 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | |
164 | +CONFIG_LOCALVERSION="" | |
165 | +# CONFIG_LOCALVERSION_AUTO is not set | |
166 | +# CONFIG_SWAP is not set | |
167 | +CONFIG_SYSVIPC=y | |
168 | +CONFIG_SYSVIPC_SYSCTL=y | |
169 | +# CONFIG_POSIX_MQUEUE is not set | |
170 | +# CONFIG_BSD_PROCESS_ACCT is not set | |
171 | +# CONFIG_TASKSTATS is not set | |
172 | +# CONFIG_AUDIT is not set | |
173 | +# CONFIG_IKCONFIG is not set | |
174 | +CONFIG_LOG_BUF_SHIFT=14 | |
175 | +# CONFIG_CGROUPS is not set | |
176 | +# CONFIG_GROUP_SCHED is not set | |
177 | +CONFIG_SYSFS_DEPRECATED=y | |
178 | +CONFIG_SYSFS_DEPRECATED_V2=y | |
179 | +# CONFIG_RELAY is not set | |
180 | +# CONFIG_NAMESPACES is not set | |
181 | +# CONFIG_BLK_DEV_INITRD is not set | |
182 | +CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |
183 | +CONFIG_SYSCTL=y | |
184 | +CONFIG_EMBEDDED=y | |
185 | +CONFIG_SYSCTL_SYSCALL=y | |
186 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | |
187 | +CONFIG_KALLSYMS=y | |
188 | +# CONFIG_KALLSYMS_EXTRA_PASS is not set | |
189 | +CONFIG_HOTPLUG=y | |
190 | +CONFIG_PRINTK=y | |
191 | +CONFIG_BUG=y | |
192 | +CONFIG_ELF_CORE=y | |
193 | +CONFIG_PCSPKR_PLATFORM=y | |
194 | +CONFIG_COMPAT_BRK=y | |
195 | +CONFIG_BASE_FULL=y | |
196 | +CONFIG_FUTEX=y | |
197 | +CONFIG_ANON_INODES=y | |
198 | +CONFIG_EPOLL=y | |
199 | +CONFIG_SIGNALFD=y | |
200 | +CONFIG_TIMERFD=y | |
201 | +CONFIG_EVENTFD=y | |
202 | +CONFIG_SHMEM=y | |
203 | +CONFIG_VM_EVENT_COUNTERS=y | |
204 | +CONFIG_SLAB=y | |
205 | +# CONFIG_SLUB is not set | |
206 | +# CONFIG_SLOB is not set | |
207 | +# CONFIG_PROFILING is not set | |
208 | +# CONFIG_MARKERS is not set | |
209 | +CONFIG_HAVE_OPROFILE=y | |
210 | +# CONFIG_HAVE_KPROBES is not set | |
211 | +# CONFIG_HAVE_KRETPROBES is not set | |
212 | +# CONFIG_HAVE_DMA_ATTRS is not set | |
213 | +# CONFIG_USE_GENERIC_SMP_HELPERS is not set | |
214 | +CONFIG_PROC_PAGE_MONITOR=y | |
215 | +CONFIG_SLABINFO=y | |
216 | +CONFIG_RT_MUTEXES=y | |
217 | +# CONFIG_TINY_SHMEM is not set | |
218 | +CONFIG_BASE_SMALL=0 | |
219 | +CONFIG_MODULES=y | |
220 | +# CONFIG_MODULE_FORCE_LOAD is not set | |
221 | +CONFIG_MODULE_UNLOAD=y | |
222 | +# CONFIG_MODULE_FORCE_UNLOAD is not set | |
223 | +# CONFIG_MODVERSIONS is not set | |
224 | +# CONFIG_MODULE_SRCVERSION_ALL is not set | |
225 | +CONFIG_KMOD=y | |
226 | +CONFIG_BLOCK=y | |
227 | +# CONFIG_LBD is not set | |
228 | +# CONFIG_BLK_DEV_IO_TRACE is not set | |
229 | +# CONFIG_LSF is not set | |
230 | +# CONFIG_BLK_DEV_BSG is not set | |
231 | +# CONFIG_BLK_DEV_INTEGRITY is not set | |
232 | + | |
233 | +# | |
234 | +# IO Schedulers | |
235 | +# | |
236 | +CONFIG_IOSCHED_NOOP=y | |
237 | +# CONFIG_IOSCHED_AS is not set | |
238 | +# CONFIG_IOSCHED_DEADLINE is not set | |
239 | +# CONFIG_IOSCHED_CFQ is not set | |
240 | +# CONFIG_DEFAULT_AS is not set | |
241 | +# CONFIG_DEFAULT_DEADLINE is not set | |
242 | +# CONFIG_DEFAULT_CFQ is not set | |
243 | +CONFIG_DEFAULT_NOOP=y | |
244 | +CONFIG_DEFAULT_IOSCHED="noop" | |
245 | +CONFIG_CLASSIC_RCU=y | |
246 | + | |
247 | +# | |
248 | +# Bus options (PCI, PCMCIA, EISA, ISA, TC) | |
249 | +# | |
250 | +# CONFIG_ARCH_SUPPORTS_MSI is not set | |
251 | +CONFIG_MMU=y | |
252 | +# CONFIG_PCCARD is not set | |
253 | + | |
254 | +# | |
255 | +# Executable file formats | |
256 | +# | |
257 | +CONFIG_BINFMT_ELF=y | |
258 | +# CONFIG_BINFMT_MISC is not set | |
259 | +CONFIG_TRAD_SIGNALS=y | |
260 | + | |
261 | +# | |
262 | +# Power management options | |
263 | +# | |
264 | +CONFIG_ARCH_SUSPEND_POSSIBLE=y | |
265 | +CONFIG_PM=y | |
266 | +# CONFIG_PM_DEBUG is not set | |
267 | +CONFIG_PM_SLEEP=y | |
268 | +CONFIG_SUSPEND=y | |
269 | +CONFIG_SUSPEND_FREEZER=y | |
270 | + | |
271 | +# | |
272 | +# Networking | |
273 | +# | |
274 | +CONFIG_NET=y | |
275 | + | |
276 | +# | |
277 | +# Networking options | |
278 | +# | |
279 | +CONFIG_PACKET=y | |
280 | +# CONFIG_PACKET_MMAP is not set | |
281 | +CONFIG_UNIX=y | |
282 | +CONFIG_XFRM=y | |
283 | +# CONFIG_XFRM_USER is not set | |
284 | +# CONFIG_XFRM_SUB_POLICY is not set | |
285 | +# CONFIG_XFRM_MIGRATE is not set | |
286 | +# CONFIG_XFRM_STATISTICS is not set | |
287 | +# CONFIG_NET_KEY is not set | |
288 | +CONFIG_INET=y | |
289 | +CONFIG_IP_MULTICAST=y | |
290 | +# CONFIG_IP_ADVANCED_ROUTER is not set | |
291 | +CONFIG_IP_FIB_HASH=y | |
292 | +CONFIG_IP_PNP=y | |
293 | +CONFIG_IP_PNP_DHCP=y | |
294 | +# CONFIG_IP_PNP_BOOTP is not set | |
295 | +# CONFIG_IP_PNP_RARP is not set | |
296 | +# CONFIG_NET_IPIP is not set | |
297 | +# CONFIG_NET_IPGRE is not set | |
298 | +# CONFIG_IP_MROUTE is not set | |
299 | +# CONFIG_ARPD is not set | |
300 | +# CONFIG_SYN_COOKIES is not set | |
301 | +CONFIG_INET_AH=y | |
302 | +# CONFIG_INET_ESP is not set | |
303 | +# CONFIG_INET_IPCOMP is not set | |
304 | +# CONFIG_INET_XFRM_TUNNEL is not set | |
305 | +# CONFIG_INET_TUNNEL is not set | |
306 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | |
307 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | |
308 | +CONFIG_INET_XFRM_MODE_BEET=y | |
309 | +# CONFIG_INET_LRO is not set | |
310 | +CONFIG_INET_DIAG=y | |
311 | +CONFIG_INET_TCP_DIAG=y | |
312 | +# CONFIG_TCP_CONG_ADVANCED is not set | |
313 | +CONFIG_TCP_CONG_CUBIC=y | |
314 | +CONFIG_DEFAULT_TCP_CONG="cubic" | |
315 | +# CONFIG_TCP_MD5SIG is not set | |
316 | +# CONFIG_IPV6 is not set | |
317 | +# CONFIG_NETWORK_SECMARK is not set | |
318 | +# CONFIG_NETFILTER is not set | |
319 | +# CONFIG_IP_DCCP is not set | |
320 | +# CONFIG_IP_SCTP is not set | |
321 | +# CONFIG_TIPC is not set | |
322 | +# CONFIG_ATM is not set | |
323 | +# CONFIG_BRIDGE is not set | |
324 | +# CONFIG_VLAN_8021Q is not set | |
325 | +# CONFIG_DECNET is not set | |
326 | +# CONFIG_LLC2 is not set | |
327 | +# CONFIG_IPX is not set | |
328 | +# CONFIG_ATALK is not set | |
329 | +# CONFIG_X25 is not set | |
330 | +# CONFIG_LAPB is not set | |
331 | +# CONFIG_ECONET is not set | |
332 | +# CONFIG_WAN_ROUTER is not set | |
333 | +# CONFIG_NET_SCHED is not set | |
334 | + | |
335 | +# | |
336 | +# Network testing | |
337 | +# | |
338 | +# CONFIG_NET_PKTGEN is not set | |
339 | +# CONFIG_HAMRADIO is not set | |
340 | +# CONFIG_CAN is not set | |
341 | +# CONFIG_IRDA is not set | |
342 | +# CONFIG_BT is not set | |
343 | +# CONFIG_AF_RXRPC is not set | |
344 | + | |
345 | +# | |
346 | +# Wireless | |
347 | +# | |
348 | +# CONFIG_CFG80211 is not set | |
349 | +# CONFIG_WIRELESS_EXT is not set | |
350 | +# CONFIG_MAC80211 is not set | |
351 | +# CONFIG_IEEE80211 is not set | |
352 | +# CONFIG_RFKILL is not set | |
353 | +# CONFIG_NET_9P is not set | |
354 | + | |
355 | +# | |
356 | +# Device Drivers | |
357 | +# | |
358 | + | |
359 | +# | |
360 | +# Generic Driver Options | |
361 | +# | |
362 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | |
363 | +CONFIG_STANDALONE=y | |
364 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | |
365 | +CONFIG_FW_LOADER=y | |
366 | +CONFIG_FIRMWARE_IN_KERNEL=y | |
367 | +CONFIG_EXTRA_FIRMWARE="" | |
368 | +# CONFIG_SYS_HYPERVISOR is not set | |
369 | +# CONFIG_CONNECTOR is not set | |
370 | +CONFIG_MTD=y | |
371 | +# CONFIG_MTD_DEBUG is not set | |
372 | +# CONFIG_MTD_CONCAT is not set | |
373 | +CONFIG_MTD_PARTITIONS=y | |
374 | +# CONFIG_MTD_REDBOOT_PARTS is not set | |
375 | +CONFIG_MTD_CMDLINE_PARTS=y | |
376 | +# CONFIG_MTD_AR7_PARTS is not set | |
377 | + | |
378 | +# | |
379 | +# User Modules And Translation Layers | |
380 | +# | |
381 | +CONFIG_MTD_CHAR=y | |
382 | +CONFIG_MTD_BLKDEVS=y | |
383 | +CONFIG_MTD_BLOCK=y | |
384 | +# CONFIG_FTL is not set | |
385 | +# CONFIG_NFTL is not set | |
386 | +# CONFIG_INFTL is not set | |
387 | +# CONFIG_RFD_FTL is not set | |
388 | +# CONFIG_SSFDC is not set | |
389 | +# CONFIG_MTD_OOPS is not set | |
390 | + | |
391 | +# | |
392 | +# RAM/ROM/Flash chip drivers | |
393 | +# | |
394 | +CONFIG_MTD_CFI=y | |
395 | +# CONFIG_MTD_JEDECPROBE is not set | |
396 | +CONFIG_MTD_GEN_PROBE=y | |
397 | +CONFIG_MTD_CFI_ADV_OPTIONS=y | |
398 | +# CONFIG_MTD_CFI_NOSWAP is not set | |
399 | +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | |
400 | +CONFIG_MTD_CFI_LE_BYTE_SWAP=y | |
401 | +CONFIG_MTD_CFI_GEOMETRY=y | |
402 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | |
403 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | |
404 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | |
405 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | |
406 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | |
407 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | |
408 | +CONFIG_MTD_CFI_I1=y | |
409 | +CONFIG_MTD_CFI_I2=y | |
410 | +# CONFIG_MTD_CFI_I4 is not set | |
411 | +# CONFIG_MTD_CFI_I8 is not set | |
412 | +# CONFIG_MTD_OTP is not set | |
413 | +# CONFIG_MTD_CFI_INTELEXT is not set | |
414 | +CONFIG_MTD_CFI_AMDSTD=y | |
415 | +# CONFIG_MTD_CFI_STAA is not set | |
416 | +CONFIG_MTD_CFI_UTIL=y | |
417 | +# CONFIG_MTD_RAM is not set | |
418 | +# CONFIG_MTD_ROM is not set | |
419 | +# CONFIG_MTD_ABSENT is not set | |
420 | + | |
421 | +# | |
422 | +# Mapping drivers for chip access | |
423 | +# | |
424 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | |
425 | +CONFIG_MTD_PHYSMAP=y | |
426 | +CONFIG_MTD_PHYSMAP_START=0x18000000 | |
427 | +CONFIG_MTD_PHYSMAP_LEN=0x04000000 | |
428 | +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |
429 | +# CONFIG_MTD_PLATRAM is not set | |
430 | + | |
431 | +# | |
432 | +# Self-contained MTD device drivers | |
433 | +# | |
434 | +# CONFIG_MTD_SLRAM is not set | |
435 | +# CONFIG_MTD_PHRAM is not set | |
436 | +# CONFIG_MTD_MTDRAM is not set | |
437 | +# CONFIG_MTD_BLOCK2MTD is not set | |
438 | + | |
439 | +# | |
440 | +# Disk-On-Chip Device Drivers | |
441 | +# | |
442 | +# CONFIG_MTD_DOC2000 is not set | |
443 | +# CONFIG_MTD_DOC2001 is not set | |
444 | +# CONFIG_MTD_DOC2001PLUS is not set | |
445 | +# CONFIG_MTD_NAND is not set | |
446 | +# CONFIG_MTD_ONENAND is not set | |
447 | + | |
448 | +# | |
449 | +# UBI - Unsorted block images | |
450 | +# | |
451 | +# CONFIG_MTD_UBI is not set | |
452 | +# CONFIG_PARPORT is not set | |
453 | +CONFIG_BLK_DEV=y | |
454 | +# CONFIG_BLK_DEV_COW_COMMON is not set | |
455 | +CONFIG_BLK_DEV_LOOP=y | |
456 | +# CONFIG_BLK_DEV_CRYPTOLOOP is not set | |
457 | +# CONFIG_BLK_DEV_NBD is not set | |
458 | +# CONFIG_BLK_DEV_RAM is not set | |
459 | +# CONFIG_CDROM_PKTCDVD is not set | |
460 | +# CONFIG_ATA_OVER_ETH is not set | |
461 | +# CONFIG_BLK_DEV_HD is not set | |
462 | +# CONFIG_MISC_DEVICES is not set | |
463 | +CONFIG_HAVE_IDE=y | |
464 | +# CONFIG_IDE is not set | |
465 | + | |
466 | +# | |
467 | +# SCSI device support | |
468 | +# | |
469 | +# CONFIG_RAID_ATTRS is not set | |
470 | +CONFIG_SCSI=y | |
471 | +CONFIG_SCSI_DMA=y | |
472 | +# CONFIG_SCSI_TGT is not set | |
473 | +# CONFIG_SCSI_NETLINK is not set | |
474 | +CONFIG_SCSI_PROC_FS=y | |
475 | + | |
476 | +# | |
477 | +# SCSI support type (disk, tape, CD-ROM) | |
478 | +# | |
479 | +CONFIG_BLK_DEV_SD=y | |
480 | +# CONFIG_CHR_DEV_ST is not set | |
481 | +# CONFIG_CHR_DEV_OSST is not set | |
482 | +# CONFIG_BLK_DEV_SR is not set | |
483 | +# CONFIG_CHR_DEV_SG is not set | |
484 | +# CONFIG_CHR_DEV_SCH is not set | |
485 | + | |
486 | +# | |
487 | +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs | |
488 | +# | |
489 | +# CONFIG_SCSI_MULTI_LUN is not set | |
490 | +# CONFIG_SCSI_CONSTANTS is not set | |
491 | +# CONFIG_SCSI_LOGGING is not set | |
492 | +# CONFIG_SCSI_SCAN_ASYNC is not set | |
493 | +CONFIG_SCSI_WAIT_SCAN=m | |
494 | + | |
495 | +# | |
496 | +# SCSI Transports | |
497 | +# | |
498 | +# CONFIG_SCSI_SPI_ATTRS is not set | |
499 | +# CONFIG_SCSI_FC_ATTRS is not set | |
500 | +# CONFIG_SCSI_ISCSI_ATTRS is not set | |
501 | +# CONFIG_SCSI_SAS_LIBSAS is not set | |
502 | +# CONFIG_SCSI_SRP_ATTRS is not set | |
503 | +# CONFIG_SCSI_LOWLEVEL is not set | |
504 | +# CONFIG_SCSI_DH is not set | |
505 | +CONFIG_ATA=y | |
506 | +# CONFIG_ATA_NONSTANDARD is not set | |
507 | +CONFIG_SATA_PMP=y | |
508 | +CONFIG_ATA_SFF=y | |
509 | +# CONFIG_SATA_MV is not set | |
510 | +# CONFIG_PATA_PLATFORM is not set | |
511 | +# CONFIG_MD is not set | |
512 | +CONFIG_NETDEVICES=y | |
513 | +# CONFIG_DUMMY is not set | |
514 | +# CONFIG_BONDING is not set | |
515 | +# CONFIG_MACVLAN is not set | |
516 | +# CONFIG_EQUALIZER is not set | |
517 | +# CONFIG_TUN is not set | |
518 | +# CONFIG_VETH is not set | |
519 | +# CONFIG_PHYLIB is not set | |
520 | +CONFIG_NET_ETHERNET=y | |
521 | +CONFIG_MII=y | |
522 | +# CONFIG_AX88796 is not set | |
523 | +# CONFIG_DM9000 is not set | |
524 | +# CONFIG_IBM_NEW_EMAC_ZMII is not set | |
525 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | |
526 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | |
527 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | |
528 | +# CONFIG_B44 is not set | |
529 | +# CONFIG_NETDEV_1000 is not set | |
530 | +# CONFIG_NETDEV_10000 is not set | |
531 | + | |
532 | +# | |
533 | +# Wireless LAN | |
534 | +# | |
535 | +# CONFIG_WLAN_PRE80211 is not set | |
536 | +# CONFIG_WLAN_80211 is not set | |
537 | +# CONFIG_IWLWIFI_LEDS is not set | |
538 | +# CONFIG_WAN is not set | |
539 | +# CONFIG_PPP is not set | |
540 | +# CONFIG_SLIP is not set | |
541 | +# CONFIG_NETCONSOLE is not set | |
542 | +# CONFIG_NETPOLL is not set | |
543 | +# CONFIG_NET_POLL_CONTROLLER is not set | |
544 | +# CONFIG_ISDN is not set | |
545 | +# CONFIG_PHONE is not set | |
546 | + | |
547 | +# | |
548 | +# Input device support | |
549 | +# | |
550 | +CONFIG_INPUT=y | |
551 | +# CONFIG_INPUT_FF_MEMLESS is not set | |
552 | +# CONFIG_INPUT_POLLDEV is not set | |
553 | + | |
554 | +# | |
555 | +# Userland interfaces | |
556 | +# | |
557 | +# CONFIG_INPUT_MOUSEDEV is not set | |
558 | +# CONFIG_INPUT_JOYDEV is not set | |
559 | +CONFIG_INPUT_EVDEV=m | |
560 | +CONFIG_INPUT_EVBUG=m | |
561 | + | |
562 | +# | |
563 | +# Input Device Drivers | |
564 | +# | |
565 | +# CONFIG_INPUT_KEYBOARD is not set | |
566 | +# CONFIG_INPUT_MOUSE is not set | |
567 | +# CONFIG_INPUT_JOYSTICK is not set | |
568 | +# CONFIG_INPUT_TABLET is not set | |
569 | +# CONFIG_INPUT_TOUCHSCREEN is not set | |
570 | +# CONFIG_INPUT_MISC is not set | |
571 | + | |
572 | +# | |
573 | +# Hardware I/O ports | |
574 | +# | |
575 | +CONFIG_SERIO=y | |
576 | +# CONFIG_SERIO_I8042 is not set | |
577 | +CONFIG_SERIO_SERPORT=y | |
578 | +# CONFIG_SERIO_LIBPS2 is not set | |
579 | +# CONFIG_SERIO_RAW is not set | |
580 | +# CONFIG_GAMEPORT is not set | |
581 | + | |
582 | +# | |
583 | +# Character devices | |
584 | +# | |
585 | +CONFIG_VT=y | |
586 | +CONFIG_CONSOLE_TRANSLATIONS=y | |
587 | +# CONFIG_VT_CONSOLE is not set | |
588 | +CONFIG_HW_CONSOLE=y | |
589 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set | |
590 | +CONFIG_DEVKMEM=y | |
591 | +# CONFIG_SERIAL_NONSTANDARD is not set | |
592 | + | |
593 | +# | |
594 | +# Serial drivers | |
595 | +# | |
596 | +# CONFIG_SERIAL_8250 is not set | |
597 | + | |
598 | +# | |
599 | +# Non-8250 serial port support | |
600 | +# | |
601 | +CONFIG_SERIAL_PNX8XXX=y | |
602 | +CONFIG_SERIAL_PNX8XXX_CONSOLE=y | |
603 | +CONFIG_SERIAL_CORE=y | |
604 | +CONFIG_SERIAL_CORE_CONSOLE=y | |
605 | +CONFIG_UNIX98_PTYS=y | |
606 | +# CONFIG_LEGACY_PTYS is not set | |
607 | +# CONFIG_IPMI_HANDLER is not set | |
608 | +CONFIG_HW_RANDOM=y | |
609 | +# CONFIG_R3964 is not set | |
610 | +# CONFIG_RAW_DRIVER is not set | |
611 | +# CONFIG_TCG_TPM is not set | |
612 | +CONFIG_I2C=y | |
613 | +CONFIG_I2C_BOARDINFO=y | |
614 | +CONFIG_I2C_CHARDEV=y | |
615 | + | |
616 | +# | |
617 | +# I2C Hardware Bus support | |
618 | +# | |
619 | + | |
620 | +# | |
621 | +# I2C system bus drivers (mostly embedded / system-on-chip) | |
622 | +# | |
623 | +# CONFIG_I2C_GPIO is not set | |
624 | +# CONFIG_I2C_OCORES is not set | |
625 | +# CONFIG_I2C_SIMTEC is not set | |
626 | + | |
627 | +# | |
628 | +# External I2C/SMBus adapter drivers | |
629 | +# | |
630 | +# CONFIG_I2C_PARPORT_LIGHT is not set | |
631 | +# CONFIG_I2C_TAOS_EVM is not set | |
632 | + | |
633 | +# | |
634 | +# Other I2C/SMBus bus drivers | |
635 | +# | |
636 | +# CONFIG_I2C_PCA_PLATFORM is not set | |
637 | +# CONFIG_I2C_STUB is not set | |
638 | + | |
639 | +# | |
640 | +# Miscellaneous I2C Chip support | |
641 | +# | |
642 | +# CONFIG_DS1682 is not set | |
643 | +# CONFIG_AT24 is not set | |
644 | +# CONFIG_SENSORS_EEPROM is not set | |
645 | +# CONFIG_SENSORS_PCF8574 is not set | |
646 | +# CONFIG_PCF8575 is not set | |
647 | +# CONFIG_SENSORS_PCA9539 is not set | |
648 | +# CONFIG_SENSORS_PCF8591 is not set | |
649 | +# CONFIG_SENSORS_MAX6875 is not set | |
650 | +# CONFIG_SENSORS_TSL2550 is not set | |
651 | +# CONFIG_I2C_DEBUG_CORE is not set | |
652 | +# CONFIG_I2C_DEBUG_ALGO is not set | |
653 | +# CONFIG_I2C_DEBUG_BUS is not set | |
654 | +# CONFIG_I2C_DEBUG_CHIP is not set | |
655 | +# CONFIG_SPI is not set | |
656 | +# CONFIG_W1 is not set | |
657 | +# CONFIG_POWER_SUPPLY is not set | |
658 | +# CONFIG_HWMON is not set | |
659 | +# CONFIG_THERMAL is not set | |
660 | +# CONFIG_THERMAL_HWMON is not set | |
661 | +# CONFIG_WATCHDOG is not set | |
662 | + | |
663 | +# | |
664 | +# Sonics Silicon Backplane | |
665 | +# | |
666 | +CONFIG_SSB_POSSIBLE=y | |
667 | +# CONFIG_SSB is not set | |
668 | + | |
669 | +# | |
670 | +# Multifunction device drivers | |
671 | +# | |
672 | +# CONFIG_MFD_CORE is not set | |
673 | +# CONFIG_MFD_SM501 is not set | |
674 | +# CONFIG_HTC_PASIC3 is not set | |
675 | + | |
676 | +# | |
677 | +# Multimedia devices | |
678 | +# | |
679 | + | |
680 | +# | |
681 | +# Multimedia core support | |
682 | +# | |
683 | +# CONFIG_VIDEO_DEV is not set | |
684 | +CONFIG_DVB_CORE=y | |
685 | +CONFIG_VIDEO_MEDIA=y | |
686 | + | |
687 | +# | |
688 | +# Multimedia drivers | |
689 | +# | |
690 | +# CONFIG_MEDIA_ATTACH is not set | |
691 | +CONFIG_MEDIA_TUNER=y | |
692 | +# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set | |
693 | +CONFIG_MEDIA_TUNER_SIMPLE=y | |
694 | +CONFIG_MEDIA_TUNER_TDA8290=y | |
695 | +CONFIG_MEDIA_TUNER_TDA9887=y | |
696 | +CONFIG_MEDIA_TUNER_TEA5761=y | |
697 | +CONFIG_MEDIA_TUNER_TEA5767=y | |
698 | +CONFIG_MEDIA_TUNER_MT20XX=y | |
699 | +CONFIG_MEDIA_TUNER_XC2028=y | |
700 | +CONFIG_MEDIA_TUNER_XC5000=y | |
701 | +CONFIG_DVB_CAPTURE_DRIVERS=y | |
702 | +# CONFIG_TTPCI_EEPROM is not set | |
703 | +# CONFIG_DVB_B2C2_FLEXCOP is not set | |
704 | + | |
705 | +# | |
706 | +# Supported DVB Frontends | |
707 | +# | |
708 | + | |
709 | +# | |
710 | +# Customise DVB Frontends | |
711 | +# | |
712 | +# CONFIG_DVB_FE_CUSTOMISE is not set | |
713 | + | |
714 | +# | |
715 | +# DVB-S (satellite) frontends | |
716 | +# | |
717 | +# CONFIG_DVB_CX24110 is not set | |
718 | +# CONFIG_DVB_CX24123 is not set | |
719 | +# CONFIG_DVB_MT312 is not set | |
720 | +# CONFIG_DVB_S5H1420 is not set | |
721 | +# CONFIG_DVB_STV0299 is not set | |
722 | +# CONFIG_DVB_TDA8083 is not set | |
723 | +# CONFIG_DVB_TDA10086 is not set | |
724 | +# CONFIG_DVB_VES1X93 is not set | |
725 | +# CONFIG_DVB_TUNER_ITD1000 is not set | |
726 | +# CONFIG_DVB_TDA826X is not set | |
727 | +# CONFIG_DVB_TUA6100 is not set | |
728 | + | |
729 | +# | |
730 | +# DVB-T (terrestrial) frontends | |
731 | +# | |
732 | +# CONFIG_DVB_SP8870 is not set | |
733 | +# CONFIG_DVB_SP887X is not set | |
734 | +# CONFIG_DVB_CX22700 is not set | |
735 | +# CONFIG_DVB_CX22702 is not set | |
736 | +# CONFIG_DVB_DRX397XD is not set | |
737 | +# CONFIG_DVB_L64781 is not set | |
738 | +CONFIG_DVB_TDA1004X=y | |
739 | +# CONFIG_DVB_NXT6000 is not set | |
740 | +# CONFIG_DVB_MT352 is not set | |
741 | +# CONFIG_DVB_ZL10353 is not set | |
742 | +# CONFIG_DVB_DIB3000MB is not set | |
743 | +# CONFIG_DVB_DIB3000MC is not set | |
744 | +# CONFIG_DVB_DIB7000M is not set | |
745 | +# CONFIG_DVB_DIB7000P is not set | |
746 | +# CONFIG_DVB_TDA10048 is not set | |
747 | + | |
748 | +# | |
749 | +# DVB-C (cable) frontends | |
750 | +# | |
751 | +# CONFIG_DVB_VES1820 is not set | |
752 | +# CONFIG_DVB_TDA10021 is not set | |
753 | +# CONFIG_DVB_TDA10023 is not set | |
754 | +# CONFIG_DVB_STV0297 is not set | |
755 | + | |
756 | +# | |
757 | +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends | |
758 | +# | |
759 | +# CONFIG_DVB_NXT200X is not set | |
760 | +# CONFIG_DVB_OR51211 is not set | |
761 | +# CONFIG_DVB_OR51132 is not set | |
762 | +# CONFIG_DVB_BCM3510 is not set | |
763 | +# CONFIG_DVB_LGDT330X is not set | |
764 | +# CONFIG_DVB_S5H1409 is not set | |
765 | +# CONFIG_DVB_AU8522 is not set | |
766 | +# CONFIG_DVB_S5H1411 is not set | |
767 | + | |
768 | +# | |
769 | +# Digital terrestrial only tuners/PLL | |
770 | +# | |
771 | +# CONFIG_DVB_PLL is not set | |
772 | +# CONFIG_DVB_TUNER_DIB0070 is not set | |
773 | + | |
774 | +# | |
775 | +# SEC control devices for DVB-S | |
776 | +# | |
777 | +# CONFIG_DVB_LNBP21 is not set | |
778 | +# CONFIG_DVB_ISL6405 is not set | |
779 | +# CONFIG_DVB_ISL6421 is not set | |
780 | +# CONFIG_DAB is not set | |
781 | + | |
782 | +# | |
783 | +# Graphics support | |
784 | +# | |
785 | +# CONFIG_VGASTATE is not set | |
786 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | |
787 | +CONFIG_FB=y | |
788 | +# CONFIG_FIRMWARE_EDID is not set | |
789 | +# CONFIG_FB_DDC is not set | |
790 | +# CONFIG_FB_CFB_FILLRECT is not set | |
791 | +# CONFIG_FB_CFB_COPYAREA is not set | |
792 | +# CONFIG_FB_CFB_IMAGEBLIT is not set | |
793 | +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | |
794 | +# CONFIG_FB_SYS_FILLRECT is not set | |
795 | +# CONFIG_FB_SYS_COPYAREA is not set | |
796 | +# CONFIG_FB_SYS_IMAGEBLIT is not set | |
797 | +# CONFIG_FB_FOREIGN_ENDIAN is not set | |
798 | +# CONFIG_FB_SYS_FOPS is not set | |
799 | +# CONFIG_FB_SVGALIB is not set | |
800 | +# CONFIG_FB_MACMODES is not set | |
801 | +# CONFIG_FB_BACKLIGHT is not set | |
802 | +# CONFIG_FB_MODE_HELPERS is not set | |
803 | +# CONFIG_FB_TILEBLITTING is not set | |
804 | + | |
805 | +# | |
806 | +# Frame buffer hardware drivers | |
807 | +# | |
808 | +# CONFIG_FB_S1D13XXX is not set | |
809 | +# CONFIG_FB_VIRTUAL is not set | |
810 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | |
811 | + | |
812 | +# | |
813 | +# Display device support | |
814 | +# | |
815 | +# CONFIG_DISPLAY_SUPPORT is not set | |
816 | + | |
817 | +# | |
818 | +# Console display driver support | |
819 | +# | |
820 | +# CONFIG_VGA_CONSOLE is not set | |
821 | +CONFIG_DUMMY_CONSOLE=y | |
822 | +# CONFIG_FRAMEBUFFER_CONSOLE is not set | |
823 | +# CONFIG_LOGO is not set | |
824 | +CONFIG_SOUND=m | |
825 | +CONFIG_SND=m | |
826 | +CONFIG_SND_TIMER=m | |
827 | +CONFIG_SND_PCM=m | |
828 | +CONFIG_SND_SEQUENCER=m | |
829 | +# CONFIG_SND_SEQ_DUMMY is not set | |
830 | +CONFIG_SND_OSSEMUL=y | |
831 | +CONFIG_SND_MIXER_OSS=m | |
832 | +CONFIG_SND_PCM_OSS=m | |
833 | +CONFIG_SND_PCM_OSS_PLUGINS=y | |
834 | +CONFIG_SND_SEQUENCER_OSS=y | |
835 | +# CONFIG_SND_DYNAMIC_MINORS is not set | |
836 | +CONFIG_SND_SUPPORT_OLD_API=y | |
837 | +CONFIG_SND_VERBOSE_PROCFS=y | |
838 | +CONFIG_SND_VERBOSE_PRINTK=y | |
839 | +CONFIG_SND_DEBUG=y | |
840 | +# CONFIG_SND_DEBUG_VERBOSE is not set | |
841 | +# CONFIG_SND_PCM_XRUN_DEBUG is not set | |
842 | +CONFIG_SND_DRIVERS=y | |
843 | +# CONFIG_SND_DUMMY is not set | |
844 | +# CONFIG_SND_VIRMIDI is not set | |
845 | +# CONFIG_SND_MTPAV is not set | |
846 | +# CONFIG_SND_SERIAL_U16550 is not set | |
847 | +# CONFIG_SND_MPU401 is not set | |
848 | +CONFIG_SND_MIPS=y | |
849 | +# CONFIG_SND_SOC is not set | |
850 | +# CONFIG_SOUND_PRIME is not set | |
851 | +CONFIG_HID_SUPPORT=y | |
852 | +CONFIG_HID=y | |
853 | +# CONFIG_HID_DEBUG is not set | |
854 | +# CONFIG_HIDRAW is not set | |
855 | +CONFIG_USB_SUPPORT=y | |
856 | +# CONFIG_USB_ARCH_HAS_HCD is not set | |
857 | +# CONFIG_USB_ARCH_HAS_OHCI is not set | |
858 | +# CONFIG_USB_ARCH_HAS_EHCI is not set | |
859 | +# CONFIG_USB_OTG_WHITELIST is not set | |
860 | +# CONFIG_USB_OTG_BLACKLIST_HUB is not set | |
861 | + | |
862 | +# | |
863 | +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | |
864 | +# | |
865 | +# CONFIG_USB_GADGET is not set | |
866 | +# CONFIG_MMC is not set | |
867 | +# CONFIG_MEMSTICK is not set | |
868 | +# CONFIG_NEW_LEDS is not set | |
869 | +# CONFIG_ACCESSIBILITY is not set | |
870 | +CONFIG_RTC_LIB=y | |
871 | +# CONFIG_RTC_CLASS is not set | |
872 | +# CONFIG_DMADEVICES is not set | |
873 | +# CONFIG_UIO is not set | |
874 | + | |
875 | +# | |
876 | +# File systems | |
877 | +# | |
878 | +CONFIG_EXT2_FS=m | |
879 | +# CONFIG_EXT2_FS_XATTR is not set | |
880 | +# CONFIG_EXT2_FS_XIP is not set | |
881 | +# CONFIG_EXT3_FS is not set | |
882 | +# CONFIG_EXT4DEV_FS is not set | |
883 | +# CONFIG_REISERFS_FS is not set | |
884 | +# CONFIG_JFS_FS is not set | |
885 | +# CONFIG_FS_POSIX_ACL is not set | |
886 | +# CONFIG_XFS_FS is not set | |
887 | +# CONFIG_OCFS2_FS is not set | |
888 | +# CONFIG_DNOTIFY is not set | |
889 | +CONFIG_INOTIFY=y | |
890 | +CONFIG_INOTIFY_USER=y | |
891 | +# CONFIG_QUOTA is not set | |
892 | +# CONFIG_AUTOFS_FS is not set | |
893 | +# CONFIG_AUTOFS4_FS is not set | |
894 | +# CONFIG_FUSE_FS is not set | |
895 | + | |
896 | +# | |
897 | +# CD-ROM/DVD Filesystems | |
898 | +# | |
899 | +# CONFIG_ISO9660_FS is not set | |
900 | +# CONFIG_UDF_FS is not set | |
901 | + | |
902 | +# | |
903 | +# DOS/FAT/NT Filesystems | |
904 | +# | |
905 | +CONFIG_FAT_FS=m | |
906 | +CONFIG_MSDOS_FS=m | |
907 | +CONFIG_VFAT_FS=m | |
908 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 | |
909 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |
910 | +# CONFIG_NTFS_FS is not set | |
911 | + | |
912 | +# | |
913 | +# Pseudo filesystems | |
914 | +# | |
915 | +CONFIG_PROC_FS=y | |
916 | +# CONFIG_PROC_KCORE is not set | |
917 | +CONFIG_PROC_SYSCTL=y | |
918 | +CONFIG_SYSFS=y | |
919 | +CONFIG_TMPFS=y | |
920 | +# CONFIG_TMPFS_POSIX_ACL is not set | |
921 | +# CONFIG_HUGETLB_PAGE is not set | |
922 | +# CONFIG_CONFIGFS_FS is not set | |
923 | + | |
924 | +# | |
925 | +# Miscellaneous filesystems | |
926 | +# | |
927 | +# CONFIG_ADFS_FS is not set | |
928 | +# CONFIG_AFFS_FS is not set | |
929 | +# CONFIG_HFS_FS is not set | |
930 | +# CONFIG_HFSPLUS_FS is not set | |
931 | +# CONFIG_BEFS_FS is not set | |
932 | +# CONFIG_BFS_FS is not set | |
933 | +# CONFIG_EFS_FS is not set | |
934 | +CONFIG_JFFS2_FS=y | |
935 | +CONFIG_JFFS2_FS_DEBUG=0 | |
936 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | |
937 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | |
938 | +# CONFIG_JFFS2_SUMMARY is not set | |
939 | +# CONFIG_JFFS2_FS_XATTR is not set | |
940 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | |
941 | +CONFIG_JFFS2_ZLIB=y | |
942 | +# CONFIG_JFFS2_LZO is not set | |
943 | +CONFIG_JFFS2_RTIME=y | |
944 | +# CONFIG_JFFS2_RUBIN is not set | |
945 | +CONFIG_CRAMFS=y | |
946 | +# CONFIG_VXFS_FS is not set | |
947 | +# CONFIG_MINIX_FS is not set | |
948 | +# CONFIG_HPFS_FS is not set | |
949 | +# CONFIG_QNX4FS_FS is not set | |
950 | +# CONFIG_ROMFS_FS is not set | |
951 | +# CONFIG_SYSV_FS is not set | |
952 | +# CONFIG_UFS_FS is not set | |
953 | +CONFIG_NETWORK_FILESYSTEMS=y | |
954 | +CONFIG_NFS_FS=y | |
955 | +CONFIG_NFS_V3=y | |
956 | +# CONFIG_NFS_V3_ACL is not set | |
957 | +# CONFIG_NFS_V4 is not set | |
958 | +CONFIG_ROOT_NFS=y | |
959 | +CONFIG_NFSD=m | |
960 | +CONFIG_NFSD_V3=y | |
961 | +# CONFIG_NFSD_V3_ACL is not set | |
962 | +# CONFIG_NFSD_V4 is not set | |
963 | +CONFIG_LOCKD=y | |
964 | +CONFIG_LOCKD_V4=y | |
965 | +CONFIG_EXPORTFS=m | |
966 | +CONFIG_NFS_COMMON=y | |
967 | +CONFIG_SUNRPC=y | |
968 | +# CONFIG_RPCSEC_GSS_KRB5 is not set | |
969 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set | |
970 | +# CONFIG_SMB_FS is not set | |
971 | +# CONFIG_CIFS is not set | |
972 | +# CONFIG_NCP_FS is not set | |
973 | +# CONFIG_CODA_FS is not set | |
974 | +# CONFIG_AFS_FS is not set | |
975 | + | |
976 | +# | |
977 | +# Partition Types | |
978 | +# | |
979 | +# CONFIG_PARTITION_ADVANCED is not set | |
980 | +CONFIG_MSDOS_PARTITION=y | |
981 | +CONFIG_NLS=y | |
982 | +CONFIG_NLS_DEFAULT="iso8859-1" | |
983 | +CONFIG_NLS_CODEPAGE_437=m | |
984 | +# CONFIG_NLS_CODEPAGE_737 is not set | |
985 | +# CONFIG_NLS_CODEPAGE_775 is not set | |
986 | +CONFIG_NLS_CODEPAGE_850=m | |
987 | +# CONFIG_NLS_CODEPAGE_852 is not set | |
988 | +# CONFIG_NLS_CODEPAGE_855 is not set | |
989 | +# CONFIG_NLS_CODEPAGE_857 is not set | |
990 | +# CONFIG_NLS_CODEPAGE_860 is not set | |
991 | +# CONFIG_NLS_CODEPAGE_861 is not set | |
992 | +# CONFIG_NLS_CODEPAGE_862 is not set | |
993 | +# CONFIG_NLS_CODEPAGE_863 is not set | |
994 | +# CONFIG_NLS_CODEPAGE_864 is not set | |
995 | +# CONFIG_NLS_CODEPAGE_865 is not set | |
996 | +# CONFIG_NLS_CODEPAGE_866 is not set | |
997 | +# CONFIG_NLS_CODEPAGE_869 is not set | |
998 | +# CONFIG_NLS_CODEPAGE_936 is not set | |
999 | +# CONFIG_NLS_CODEPAGE_950 is not set | |
1000 | +CONFIG_NLS_CODEPAGE_932=m | |
1001 | +# CONFIG_NLS_CODEPAGE_949 is not set | |
1002 | +# CONFIG_NLS_CODEPAGE_874 is not set | |
1003 | +# CONFIG_NLS_ISO8859_8 is not set | |
1004 | +# CONFIG_NLS_CODEPAGE_1250 is not set | |
1005 | +# CONFIG_NLS_CODEPAGE_1251 is not set | |
1006 | +CONFIG_NLS_ASCII=m | |
1007 | +CONFIG_NLS_ISO8859_1=m | |
1008 | +# CONFIG_NLS_ISO8859_2 is not set | |
1009 | +# CONFIG_NLS_ISO8859_3 is not set | |
1010 | +# CONFIG_NLS_ISO8859_4 is not set | |
1011 | +# CONFIG_NLS_ISO8859_5 is not set | |
1012 | +# CONFIG_NLS_ISO8859_6 is not set | |
1013 | +# CONFIG_NLS_ISO8859_7 is not set | |
1014 | +# CONFIG_NLS_ISO8859_9 is not set | |
1015 | +# CONFIG_NLS_ISO8859_13 is not set | |
1016 | +# CONFIG_NLS_ISO8859_14 is not set | |
1017 | +CONFIG_NLS_ISO8859_15=m | |
1018 | +# CONFIG_NLS_KOI8_R is not set | |
1019 | +# CONFIG_NLS_KOI8_U is not set | |
1020 | +CONFIG_NLS_UTF8=m | |
1021 | +# CONFIG_DLM is not set | |
1022 | + | |
1023 | +# | |
1024 | +# Kernel hacking | |
1025 | +# | |
1026 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |
1027 | +# CONFIG_PRINTK_TIME is not set | |
1028 | +CONFIG_ENABLE_WARN_DEPRECATED=y | |
1029 | +CONFIG_ENABLE_MUST_CHECK=y | |
1030 | +CONFIG_FRAME_WARN=1024 | |
1031 | +# CONFIG_MAGIC_SYSRQ is not set | |
1032 | +# CONFIG_UNUSED_SYMBOLS is not set | |
1033 | +# CONFIG_DEBUG_FS is not set | |
1034 | +# CONFIG_HEADERS_CHECK is not set | |
1035 | +# CONFIG_DEBUG_KERNEL is not set | |
1036 | +# CONFIG_SAMPLES is not set | |
1037 | +# CONFIG_KERNEL_TESTS is not set | |
1038 | +CONFIG_CMDLINE="" | |
1039 | + | |
1040 | +# | |
1041 | +# Security options | |
1042 | +# | |
1043 | +# CONFIG_KEYS is not set | |
1044 | +# CONFIG_SECURITY is not set | |
1045 | +# CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
1046 | +CONFIG_CRYPTO=y | |
1047 | + | |
1048 | +# | |
1049 | +# Crypto core or helper | |
1050 | +# | |
1051 | +CONFIG_CRYPTO_ALGAPI=y | |
1052 | +CONFIG_CRYPTO_HASH=y | |
1053 | +CONFIG_CRYPTO_MANAGER=y | |
1054 | +# CONFIG_CRYPTO_GF128MUL is not set | |
1055 | +# CONFIG_CRYPTO_NULL is not set | |
1056 | +# CONFIG_CRYPTO_CRYPTD is not set | |
1057 | +# CONFIG_CRYPTO_AUTHENC is not set | |
1058 | +# CONFIG_CRYPTO_TEST is not set | |
1059 | + | |
1060 | +# | |
1061 | +# Authenticated Encryption with Associated Data | |
1062 | +# | |
1063 | +# CONFIG_CRYPTO_CCM is not set | |
1064 | +# CONFIG_CRYPTO_GCM is not set | |
1065 | +# CONFIG_CRYPTO_SEQIV is not set | |
1066 | + | |
1067 | +# | |
1068 | +# Block modes | |
1069 | +# | |
1070 | +# CONFIG_CRYPTO_CBC is not set | |
1071 | +# CONFIG_CRYPTO_CTR is not set | |
1072 | +# CONFIG_CRYPTO_CTS is not set | |
1073 | +# CONFIG_CRYPTO_ECB is not set | |
1074 | +# CONFIG_CRYPTO_LRW is not set | |
1075 | +# CONFIG_CRYPTO_PCBC is not set | |
1076 | +# CONFIG_CRYPTO_XTS is not set | |
1077 | + | |
1078 | +# | |
1079 | +# Hash modes | |
1080 | +# | |
1081 | +CONFIG_CRYPTO_HMAC=y | |
1082 | +# CONFIG_CRYPTO_XCBC is not set | |
1083 | + | |
1084 | +# | |
1085 | +# Digest | |
1086 | +# | |
1087 | +# CONFIG_CRYPTO_CRC32C is not set | |
1088 | +# CONFIG_CRYPTO_MD4 is not set | |
1089 | +CONFIG_CRYPTO_MD5=y | |
1090 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | |
1091 | +# CONFIG_CRYPTO_RMD128 is not set | |
1092 | +# CONFIG_CRYPTO_RMD160 is not set | |
1093 | +# CONFIG_CRYPTO_RMD256 is not set | |
1094 | +# CONFIG_CRYPTO_RMD320 is not set | |
1095 | +CONFIG_CRYPTO_SHA1=y | |
1096 | +# CONFIG_CRYPTO_SHA256 is not set | |
1097 | +# CONFIG_CRYPTO_SHA512 is not set | |
1098 | +# CONFIG_CRYPTO_TGR192 is not set | |
1099 | +# CONFIG_CRYPTO_WP512 is not set | |
1100 | + | |
1101 | +# | |
1102 | +# Ciphers | |
1103 | +# | |
1104 | +# CONFIG_CRYPTO_AES is not set | |
1105 | +# CONFIG_CRYPTO_ANUBIS is not set | |
1106 | +# CONFIG_CRYPTO_ARC4 is not set | |
1107 | +# CONFIG_CRYPTO_BLOWFISH is not set | |
1108 | +# CONFIG_CRYPTO_CAMELLIA is not set | |
1109 | +# CONFIG_CRYPTO_CAST5 is not set | |
1110 | +# CONFIG_CRYPTO_CAST6 is not set | |
1111 | +# CONFIG_CRYPTO_DES is not set | |
1112 | +# CONFIG_CRYPTO_FCRYPT is not set | |
1113 | +# CONFIG_CRYPTO_KHAZAD is not set | |
1114 | +# CONFIG_CRYPTO_SALSA20 is not set | |
1115 | +# CONFIG_CRYPTO_SEED is not set | |
1116 | +# CONFIG_CRYPTO_SERPENT is not set | |
1117 | +# CONFIG_CRYPTO_TEA is not set | |
1118 | +# CONFIG_CRYPTO_TWOFISH is not set | |
1119 | + | |
1120 | +# | |
1121 | +# Compression | |
1122 | +# | |
1123 | +# CONFIG_CRYPTO_DEFLATE is not set | |
1124 | +# CONFIG_CRYPTO_LZO is not set | |
1125 | + | |
1126 | +# | |
1127 | +# Random Number Generation | |
1128 | +# | |
1129 | +# CONFIG_CRYPTO_PRNG is not set | |
1130 | +CONFIG_CRYPTO_HW=y | |
1131 | + | |
1132 | +# | |
1133 | +# Library routines | |
1134 | +# | |
1135 | +CONFIG_BITREVERSE=y | |
1136 | +# CONFIG_GENERIC_FIND_FIRST_BIT is not set | |
1137 | +# CONFIG_CRC_CCITT is not set | |
1138 | +# CONFIG_CRC16 is not set | |
1139 | +# CONFIG_CRC_T10DIF is not set | |
1140 | +# CONFIG_CRC_ITU_T is not set | |
1141 | +CONFIG_CRC32=y | |
1142 | +# CONFIG_CRC7 is not set | |
1143 | +# CONFIG_LIBCRC32C is not set | |
1144 | +CONFIG_ZLIB_INFLATE=y | |
1145 | +CONFIG_ZLIB_DEFLATE=y | |
1146 | +CONFIG_PLIST=y | |
1147 | +CONFIG_HAS_IOMEM=y | |
1148 | +CONFIG_HAS_IOPORT=y | |
1149 | +CONFIG_HAS_DMA=y |
arch/mips/include/asm/mach-pnx833x/gpio.h
1 | +/* | |
2 | + * gpio.h: GPIO Support for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or modify | |
9 | + * it under the terms of the GNU General Public License as published by | |
10 | + * the Free Software Foundation; either version 2 of the License, or | |
11 | + * (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | + */ | |
22 | +#ifndef __ASM_MIPS_MACH_PNX833X_GPIO_H | |
23 | +#define __ASM_MIPS_MACH_PNX833X_GPIO_H | |
24 | + | |
25 | +/* BIG FAT WARNING: races danger! | |
26 | + No protections exist here. Current users are only early init code, | |
27 | + when locking is not needed because no cuncurency yet exists there, | |
28 | + and GPIO IRQ dispatcher, which does locking. | |
29 | + However, if many uses will ever happen, proper locking will be needed | |
30 | + - including locking between different uses | |
31 | +*/ | |
32 | + | |
33 | +#include "pnx833x.h" | |
34 | + | |
35 | +#define SET_REG_BIT(reg, bit) do { (reg |= (1 << (bit))); } while (0) | |
36 | +#define CLEAR_REG_BIT(reg, bit) do { (reg &= ~(1 << (bit))); } while (0) | |
37 | + | |
38 | +/* Initialize GPIO to a known state */ | |
39 | +static inline void pnx833x_gpio_init(void) | |
40 | +{ | |
41 | + PNX833X_PIO_DIR = 0; | |
42 | + PNX833X_PIO_DIR2 = 0; | |
43 | + PNX833X_PIO_SEL = 0; | |
44 | + PNX833X_PIO_SEL2 = 0; | |
45 | + PNX833X_PIO_INT_EDGE = 0; | |
46 | + PNX833X_PIO_INT_HI = 0; | |
47 | + PNX833X_PIO_INT_LO = 0; | |
48 | + | |
49 | + /* clear any GPIO interrupt requests */ | |
50 | + PNX833X_PIO_INT_CLEAR = 0xffff; | |
51 | + PNX833X_PIO_INT_CLEAR = 0; | |
52 | + PNX833X_PIO_INT_ENABLE = 0; | |
53 | +} | |
54 | + | |
55 | +/* Select GPIO direction for a pin */ | |
56 | +static inline void pnx833x_gpio_select_input(unsigned int pin) | |
57 | +{ | |
58 | + if (pin < 32) | |
59 | + CLEAR_REG_BIT(PNX833X_PIO_DIR, pin); | |
60 | + else | |
61 | + CLEAR_REG_BIT(PNX833X_PIO_DIR2, pin & 31); | |
62 | +} | |
63 | +static inline void pnx833x_gpio_select_output(unsigned int pin) | |
64 | +{ | |
65 | + if (pin < 32) | |
66 | + SET_REG_BIT(PNX833X_PIO_DIR, pin); | |
67 | + else | |
68 | + SET_REG_BIT(PNX833X_PIO_DIR2, pin & 31); | |
69 | +} | |
70 | + | |
71 | +/* Select GPIO or alternate function for a pin */ | |
72 | +static inline void pnx833x_gpio_select_function_io(unsigned int pin) | |
73 | +{ | |
74 | + if (pin < 32) | |
75 | + CLEAR_REG_BIT(PNX833X_PIO_SEL, pin); | |
76 | + else | |
77 | + CLEAR_REG_BIT(PNX833X_PIO_SEL2, pin & 31); | |
78 | +} | |
79 | +static inline void pnx833x_gpio_select_function_alt(unsigned int pin) | |
80 | +{ | |
81 | + if (pin < 32) | |
82 | + SET_REG_BIT(PNX833X_PIO_SEL, pin); | |
83 | + else | |
84 | + SET_REG_BIT(PNX833X_PIO_SEL2, pin & 31); | |
85 | +} | |
86 | + | |
87 | +/* Read GPIO pin */ | |
88 | +static inline int pnx833x_gpio_read(unsigned int pin) | |
89 | +{ | |
90 | + if (pin < 32) | |
91 | + return (PNX833X_PIO_IN >> pin) & 1; | |
92 | + else | |
93 | + return (PNX833X_PIO_IN2 >> (pin & 31)) & 1; | |
94 | +} | |
95 | + | |
96 | +/* Write GPIO pin */ | |
97 | +static inline void pnx833x_gpio_write(unsigned int val, unsigned int pin) | |
98 | +{ | |
99 | + if (pin < 32) { | |
100 | + if (val) | |
101 | + SET_REG_BIT(PNX833X_PIO_OUT, pin); | |
102 | + else | |
103 | + CLEAR_REG_BIT(PNX833X_PIO_OUT, pin); | |
104 | + } else { | |
105 | + if (val) | |
106 | + SET_REG_BIT(PNX833X_PIO_OUT2, pin & 31); | |
107 | + else | |
108 | + CLEAR_REG_BIT(PNX833X_PIO_OUT2, pin & 31); | |
109 | + } | |
110 | +} | |
111 | + | |
112 | +/* Configure GPIO interrupt */ | |
113 | +#define GPIO_INT_NONE 0 | |
114 | +#define GPIO_INT_LEVEL_LOW 1 | |
115 | +#define GPIO_INT_LEVEL_HIGH 2 | |
116 | +#define GPIO_INT_EDGE_RISING 3 | |
117 | +#define GPIO_INT_EDGE_FALLING 4 | |
118 | +#define GPIO_INT_EDGE_BOTH 5 | |
119 | +static inline void pnx833x_gpio_setup_irq(int when, unsigned int pin) | |
120 | +{ | |
121 | + switch (when) { | |
122 | + case GPIO_INT_LEVEL_LOW: | |
123 | + CLEAR_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
124 | + CLEAR_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
125 | + SET_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
126 | + break; | |
127 | + case GPIO_INT_LEVEL_HIGH: | |
128 | + CLEAR_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
129 | + SET_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
130 | + CLEAR_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
131 | + break; | |
132 | + case GPIO_INT_EDGE_RISING: | |
133 | + SET_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
134 | + SET_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
135 | + CLEAR_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
136 | + break; | |
137 | + case GPIO_INT_EDGE_FALLING: | |
138 | + SET_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
139 | + CLEAR_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
140 | + SET_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
141 | + break; | |
142 | + case GPIO_INT_EDGE_BOTH: | |
143 | + SET_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
144 | + SET_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
145 | + SET_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
146 | + break; | |
147 | + default: | |
148 | + CLEAR_REG_BIT(PNX833X_PIO_INT_EDGE, pin); | |
149 | + CLEAR_REG_BIT(PNX833X_PIO_INT_HI, pin); | |
150 | + CLEAR_REG_BIT(PNX833X_PIO_INT_LO, pin); | |
151 | + break; | |
152 | + } | |
153 | +} | |
154 | + | |
155 | +/* Enable/disable GPIO interrupt */ | |
156 | +static inline void pnx833x_gpio_enable_irq(unsigned int pin) | |
157 | +{ | |
158 | + SET_REG_BIT(PNX833X_PIO_INT_ENABLE, pin); | |
159 | +} | |
160 | +static inline void pnx833x_gpio_disable_irq(unsigned int pin) | |
161 | +{ | |
162 | + CLEAR_REG_BIT(PNX833X_PIO_INT_ENABLE, pin); | |
163 | +} | |
164 | + | |
165 | +/* Clear GPIO interrupt request */ | |
166 | +static inline void pnx833x_gpio_clear_irq(unsigned int pin) | |
167 | +{ | |
168 | + SET_REG_BIT(PNX833X_PIO_INT_CLEAR, pin); | |
169 | + CLEAR_REG_BIT(PNX833X_PIO_INT_CLEAR, pin); | |
170 | +} | |
171 | + | |
172 | +#endif |
arch/mips/include/asm/mach-pnx833x/irq-mapping.h
1 | + | |
2 | +/* | |
3 | + * irq.h: IRQ mappings for PNX833X. | |
4 | + * | |
5 | + * Copyright 2008 NXP Semiconductors | |
6 | + * Chris Steel <chris.steel@nxp.com> | |
7 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
8 | + * | |
9 | + * This program is free software; you can redistribute it and/or modify | |
10 | + * it under the terms of the GNU General Public License as published by | |
11 | + * the Free Software Foundation; either version 2 of the License, or | |
12 | + * (at your option) any later version. | |
13 | + * | |
14 | + * This program is distributed in the hope that it will be useful, | |
15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | + * GNU General Public License for more details. | |
18 | + * | |
19 | + * You should have received a copy of the GNU General Public License | |
20 | + * along with this program; if not, write to the Free Software | |
21 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
22 | + */ | |
23 | + | |
24 | +#ifndef __ASM_MIPS_MACH_PNX833X_IRQ_MAPPING_H | |
25 | +#define __ASM_MIPS_MACH_PNX833X_IRQ_MAPPING_H | |
26 | +/* | |
27 | + * The "IRQ numbers" are completely virtual. | |
28 | + * | |
29 | + * In PNX8330/1, we have 48 interrupt lines, numbered from 1 to 48. | |
30 | + * Let's use numbers 1..48 for PIC interrupts, number 0 for timer interrupt, | |
31 | + * numbers 49..64 for (virtual) GPIO interrupts. | |
32 | + * | |
33 | + * In PNX8335, we have 57 interrupt lines, numbered from 1 to 57, | |
34 | + * connected to PIC, which uses core hardware interrupt 2, and also | |
35 | + * a timer interrupt through hardware interrupt 5. | |
36 | + * Let's use numbers 1..64 for PIC interrupts, number 0 for timer interrupt, | |
37 | + * numbers 65..80 for (virtual) GPIO interrupts. | |
38 | + * | |
39 | + */ | |
40 | +#include <irq.h> | |
41 | + | |
42 | +#define PNX833X_TIMER_IRQ (MIPS_CPU_IRQ_BASE + 7) | |
43 | + | |
44 | +/* Interrupts supported by PIC */ | |
45 | +#define PNX833X_PIC_I2C0_INT (PNX833X_PIC_IRQ_BASE + 1) | |
46 | +#define PNX833X_PIC_I2C1_INT (PNX833X_PIC_IRQ_BASE + 2) | |
47 | +#define PNX833X_PIC_UART0_INT (PNX833X_PIC_IRQ_BASE + 3) | |
48 | +#define PNX833X_PIC_UART1_INT (PNX833X_PIC_IRQ_BASE + 4) | |
49 | +#define PNX833X_PIC_TS_IN0_DV_INT (PNX833X_PIC_IRQ_BASE + 5) | |
50 | +#define PNX833X_PIC_TS_IN0_DMA_INT (PNX833X_PIC_IRQ_BASE + 6) | |
51 | +#define PNX833X_PIC_GPIO_INT (PNX833X_PIC_IRQ_BASE + 7) | |
52 | +#define PNX833X_PIC_AUDIO_DEC_INT (PNX833X_PIC_IRQ_BASE + 8) | |
53 | +#define PNX833X_PIC_VIDEO_DEC_INT (PNX833X_PIC_IRQ_BASE + 9) | |
54 | +#define PNX833X_PIC_CONFIG_INT (PNX833X_PIC_IRQ_BASE + 10) | |
55 | +#define PNX833X_PIC_AOI_INT (PNX833X_PIC_IRQ_BASE + 11) | |
56 | +#define PNX833X_PIC_SYNC_INT (PNX833X_PIC_IRQ_BASE + 12) | |
57 | +#define PNX8330_PIC_SPU_INT (PNX833X_PIC_IRQ_BASE + 13) | |
58 | +#define PNX8335_PIC_SATA_INT (PNX833X_PIC_IRQ_BASE + 13) | |
59 | +#define PNX833X_PIC_OSD_INT (PNX833X_PIC_IRQ_BASE + 14) | |
60 | +#define PNX833X_PIC_DISP1_INT (PNX833X_PIC_IRQ_BASE + 15) | |
61 | +#define PNX833X_PIC_DEINTERLACER_INT (PNX833X_PIC_IRQ_BASE + 16) | |
62 | +#define PNX833X_PIC_DISPLAY2_INT (PNX833X_PIC_IRQ_BASE + 17) | |
63 | +#define PNX833X_PIC_VC_INT (PNX833X_PIC_IRQ_BASE + 18) | |
64 | +#define PNX833X_PIC_SC_INT (PNX833X_PIC_IRQ_BASE + 19) | |
65 | +#define PNX833X_PIC_IDE_INT (PNX833X_PIC_IRQ_BASE + 20) | |
66 | +#define PNX833X_PIC_IDE_DMA_INT (PNX833X_PIC_IRQ_BASE + 21) | |
67 | +#define PNX833X_PIC_TS_IN1_DV_INT (PNX833X_PIC_IRQ_BASE + 22) | |
68 | +#define PNX833X_PIC_TS_IN1_DMA_INT (PNX833X_PIC_IRQ_BASE + 23) | |
69 | +#define PNX833X_PIC_SGDX_DMA_INT (PNX833X_PIC_IRQ_BASE + 24) | |
70 | +#define PNX833X_PIC_TS_OUT_INT (PNX833X_PIC_IRQ_BASE + 25) | |
71 | +#define PNX833X_PIC_IR_INT (PNX833X_PIC_IRQ_BASE + 26) | |
72 | +#define PNX833X_PIC_VMSP1_INT (PNX833X_PIC_IRQ_BASE + 27) | |
73 | +#define PNX833X_PIC_VMSP2_INT (PNX833X_PIC_IRQ_BASE + 28) | |
74 | +#define PNX833X_PIC_PIBC_INT (PNX833X_PIC_IRQ_BASE + 29) | |
75 | +#define PNX833X_PIC_TS_IN0_TRD_INT (PNX833X_PIC_IRQ_BASE + 30) | |
76 | +#define PNX833X_PIC_SGDX_TPD_INT (PNX833X_PIC_IRQ_BASE + 31) | |
77 | +#define PNX833X_PIC_USB_INT (PNX833X_PIC_IRQ_BASE + 32) | |
78 | +#define PNX833X_PIC_TS_IN1_TRD_INT (PNX833X_PIC_IRQ_BASE + 33) | |
79 | +#define PNX833X_PIC_CLOCK_INT (PNX833X_PIC_IRQ_BASE + 34) | |
80 | +#define PNX833X_PIC_SGDX_PARSER_INT (PNX833X_PIC_IRQ_BASE + 35) | |
81 | +#define PNX833X_PIC_VMSP_DMA_INT (PNX833X_PIC_IRQ_BASE + 36) | |
82 | + | |
83 | +#if defined(CONFIG_SOC_PNX8335) | |
84 | +#define PNX8335_PIC_MIU_INT (PNX833X_PIC_IRQ_BASE + 37) | |
85 | +#define PNX8335_PIC_AVCHIP_IRQ_INT (PNX833X_PIC_IRQ_BASE + 38) | |
86 | +#define PNX8335_PIC_SYNC_HD_INT (PNX833X_PIC_IRQ_BASE + 39) | |
87 | +#define PNX8335_PIC_DISP_HD_INT (PNX833X_PIC_IRQ_BASE + 40) | |
88 | +#define PNX8335_PIC_DISP_SCALER_INT (PNX833X_PIC_IRQ_BASE + 41) | |
89 | +#define PNX8335_PIC_OSD_HD1_INT (PNX833X_PIC_IRQ_BASE + 42) | |
90 | +#define PNX8335_PIC_DTL_WRITER_Y_INT (PNX833X_PIC_IRQ_BASE + 43) | |
91 | +#define PNX8335_PIC_DTL_WRITER_C_INT (PNX833X_PIC_IRQ_BASE + 44) | |
92 | +#define PNX8335_PIC_DTL_EMULATOR_Y_IR_INT (PNX833X_PIC_IRQ_BASE + 45) | |
93 | +#define PNX8335_PIC_DTL_EMULATOR_C_IR_INT (PNX833X_PIC_IRQ_BASE + 46) | |
94 | +#define PNX8335_PIC_DENC_TTX_INT (PNX833X_PIC_IRQ_BASE + 47) | |
95 | +#define PNX8335_PIC_MMI_SIF0_INT (PNX833X_PIC_IRQ_BASE + 48) | |
96 | +#define PNX8335_PIC_MMI_SIF1_INT (PNX833X_PIC_IRQ_BASE + 49) | |
97 | +#define PNX8335_PIC_MMI_CDMMU_INT (PNX833X_PIC_IRQ_BASE + 50) | |
98 | +#define PNX8335_PIC_PIBCS_INT (PNX833X_PIC_IRQ_BASE + 51) | |
99 | +#define PNX8335_PIC_ETHERNET_INT (PNX833X_PIC_IRQ_BASE + 52) | |
100 | +#define PNX8335_PIC_VMSP1_0_INT (PNX833X_PIC_IRQ_BASE + 53) | |
101 | +#define PNX8335_PIC_VMSP1_1_INT (PNX833X_PIC_IRQ_BASE + 54) | |
102 | +#define PNX8335_PIC_VMSP1_DMA_INT (PNX833X_PIC_IRQ_BASE + 55) | |
103 | +#define PNX8335_PIC_TDGR_DE_INT (PNX833X_PIC_IRQ_BASE + 56) | |
104 | +#define PNX8335_PIC_IR1_IRQ_INT (PNX833X_PIC_IRQ_BASE + 57) | |
105 | +#endif | |
106 | + | |
107 | +/* GPIO interrupts */ | |
108 | +#define PNX833X_GPIO_0_INT (PNX833X_GPIO_IRQ_BASE + 0) | |
109 | +#define PNX833X_GPIO_1_INT (PNX833X_GPIO_IRQ_BASE + 1) | |
110 | +#define PNX833X_GPIO_2_INT (PNX833X_GPIO_IRQ_BASE + 2) | |
111 | +#define PNX833X_GPIO_3_INT (PNX833X_GPIO_IRQ_BASE + 3) | |
112 | +#define PNX833X_GPIO_4_INT (PNX833X_GPIO_IRQ_BASE + 4) | |
113 | +#define PNX833X_GPIO_5_INT (PNX833X_GPIO_IRQ_BASE + 5) | |
114 | +#define PNX833X_GPIO_6_INT (PNX833X_GPIO_IRQ_BASE + 6) | |
115 | +#define PNX833X_GPIO_7_INT (PNX833X_GPIO_IRQ_BASE + 7) | |
116 | +#define PNX833X_GPIO_8_INT (PNX833X_GPIO_IRQ_BASE + 8) | |
117 | +#define PNX833X_GPIO_9_INT (PNX833X_GPIO_IRQ_BASE + 9) | |
118 | +#define PNX833X_GPIO_10_INT (PNX833X_GPIO_IRQ_BASE + 10) | |
119 | +#define PNX833X_GPIO_11_INT (PNX833X_GPIO_IRQ_BASE + 11) | |
120 | +#define PNX833X_GPIO_12_INT (PNX833X_GPIO_IRQ_BASE + 12) | |
121 | +#define PNX833X_GPIO_13_INT (PNX833X_GPIO_IRQ_BASE + 13) | |
122 | +#define PNX833X_GPIO_14_INT (PNX833X_GPIO_IRQ_BASE + 14) | |
123 | +#define PNX833X_GPIO_15_INT (PNX833X_GPIO_IRQ_BASE + 15) | |
124 | + | |
125 | +#endif |
arch/mips/include/asm/mach-pnx833x/irq.h
1 | +/* | |
2 | + * irq.h: IRQ mappings for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or modify | |
9 | + * it under the terms of the GNU General Public License as published by | |
10 | + * the Free Software Foundation; either version 2 of the License, or | |
11 | + * (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | + */ | |
22 | + | |
23 | +#ifndef __ASM_MIPS_MACH_PNX833X_IRQ_H | |
24 | +#define __ASM_MIPS_MACH_PNX833X_IRQ_H | |
25 | +/* | |
26 | + * The "IRQ numbers" are completely virtual. | |
27 | + * | |
28 | + * In PNX8330/1, we have 48 interrupt lines, numbered from 1 to 48. | |
29 | + * Let's use numbers 1..48 for PIC interrupts, number 0 for timer interrupt, | |
30 | + * numbers 49..64 for (virtual) GPIO interrupts. | |
31 | + * | |
32 | + * In PNX8335, we have 57 interrupt lines, numbered from 1 to 57, | |
33 | + * connected to PIC, which uses core hardware interrupt 2, and also | |
34 | + * a timer interrupt through hardware interrupt 5. | |
35 | + * Let's use numbers 1..64 for PIC interrupts, number 0 for timer interrupt, | |
36 | + * numbers 65..80 for (virtual) GPIO interrupts. | |
37 | + * | |
38 | + */ | |
39 | +#if defined(CONFIG_SOC_PNX8335) | |
40 | + #define PNX833X_PIC_NUM_IRQ 58 | |
41 | +#else | |
42 | + #define PNX833X_PIC_NUM_IRQ 37 | |
43 | +#endif | |
44 | + | |
45 | +#define MIPS_CPU_NUM_IRQ 8 | |
46 | +#define PNX833X_GPIO_NUM_IRQ 16 | |
47 | + | |
48 | +#define MIPS_CPU_IRQ_BASE 0 | |
49 | +#define PNX833X_PIC_IRQ_BASE (MIPS_CPU_IRQ_BASE + MIPS_CPU_NUM_IRQ) | |
50 | +#define PNX833X_GPIO_IRQ_BASE (PNX833X_PIC_IRQ_BASE + PNX833X_PIC_NUM_IRQ) | |
51 | +#define NR_IRQS (MIPS_CPU_NUM_IRQ + PNX833X_PIC_NUM_IRQ + PNX833X_GPIO_NUM_IRQ) | |
52 | + | |
53 | +#endif |
arch/mips/include/asm/mach-pnx833x/pnx833x.h
1 | +/* | |
2 | + * pnx833x.h: Register mappings for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or modify | |
9 | + * it under the terms of the GNU General Public License as published by | |
10 | + * the Free Software Foundation; either version 2 of the License, or | |
11 | + * (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | + */ | |
22 | +#ifndef __ASM_MIPS_MACH_PNX833X_PNX833X_H | |
23 | +#define __ASM_MIPS_MACH_PNX833X_PNX833X_H | |
24 | + | |
25 | +/* All regs are accessed in KSEG1 */ | |
26 | +#define PNX833X_BASE (0xa0000000ul + 0x17E00000ul) | |
27 | + | |
28 | +#define PNX833X_REG(offs) (*((volatile unsigned long *)(PNX833X_BASE + offs))) | |
29 | + | |
30 | +/* Registers are named exactly as in PNX833X docs, just with PNX833X_ prefix */ | |
31 | + | |
32 | +/* Read access to multibit fields */ | |
33 | +#define PNX833X_BIT(val, reg, field) ((val) & PNX833X_##reg##_##field) | |
34 | +#define PNX833X_REGBIT(reg, field) PNX833X_BIT(PNX833X_##reg, reg, field) | |
35 | + | |
36 | +/* Use PNX833X_FIELD to extract a field from val */ | |
37 | +#define PNX_FIELD(cpu, val, reg, field) \ | |
38 | + (((val) & PNX##cpu##_##reg##_##field##_MASK) >> \ | |
39 | + PNX##cpu##_##reg##_##field##_SHIFT) | |
40 | +#define PNX833X_FIELD(val, reg, field) PNX_FIELD(833X, val, reg, field) | |
41 | +#define PNX8330_FIELD(val, reg, field) PNX_FIELD(8330, val, reg, field) | |
42 | +#define PNX8335_FIELD(val, reg, field) PNX_FIELD(8335, val, reg, field) | |
43 | + | |
44 | +/* Use PNX833X_REGFIELD to extract a field from a register */ | |
45 | +#define PNX833X_REGFIELD(reg, field) PNX833X_FIELD(PNX833X_##reg, reg, field) | |
46 | +#define PNX8330_REGFIELD(reg, field) PNX8330_FIELD(PNX8330_##reg, reg, field) | |
47 | +#define PNX8335_REGFIELD(reg, field) PNX8335_FIELD(PNX8335_##reg, reg, field) | |
48 | + | |
49 | + | |
50 | +#define PNX_WRITEFIELD(cpu, val, reg, field) \ | |
51 | + (PNX##cpu##_##reg = (PNX##cpu##_##reg & ~(PNX##cpu##_##reg##_##field##_MASK)) | \ | |
52 | + ((val) << PNX##cpu##_##reg##_##field##_SHIFT)) | |
53 | +#define PNX833X_WRITEFIELD(val, reg, field) \ | |
54 | + PNX_WRITEFIELD(833X, val, reg, field) | |
55 | +#define PNX8330_WRITEFIELD(val, reg, field) \ | |
56 | + PNX_WRITEFIELD(8330, val, reg, field) | |
57 | +#define PNX8335_WRITEFIELD(val, reg, field) \ | |
58 | + PNX_WRITEFIELD(8335, val, reg, field) | |
59 | + | |
60 | + | |
61 | +/* Macros to detect CPU type */ | |
62 | + | |
63 | +#define PNX833X_CONFIG_MODULE_ID PNX833X_REG(0x7FFC) | |
64 | +#define PNX833X_CONFIG_MODULE_ID_MAJREV_MASK 0x0000f000 | |
65 | +#define PNX833X_CONFIG_MODULE_ID_MAJREV_SHIFT 12 | |
66 | +#define PNX8330_CONFIG_MODULE_MAJREV 4 | |
67 | +#define PNX8335_CONFIG_MODULE_MAJREV 5 | |
68 | +#define CPU_IS_PNX8330 (PNX833X_REGFIELD(CONFIG_MODULE_ID, MAJREV) == \ | |
69 | + PNX8330_CONFIG_MODULE_MAJREV) | |
70 | +#define CPU_IS_PNX8335 (PNX833X_REGFIELD(CONFIG_MODULE_ID, MAJREV) == \ | |
71 | + PNX8335_CONFIG_MODULE_MAJREV) | |
72 | + | |
73 | + | |
74 | + | |
75 | +#define PNX833X_RESET_CONTROL PNX833X_REG(0x8004) | |
76 | +#define PNX833X_RESET_CONTROL_2 PNX833X_REG(0x8014) | |
77 | + | |
78 | +#define PNX833X_PIC_REG(offs) PNX833X_REG(0x01000 + (offs)) | |
79 | +#define PNX833X_PIC_INT_PRIORITY PNX833X_PIC_REG(0x0) | |
80 | +#define PNX833X_PIC_INT_SRC PNX833X_PIC_REG(0x4) | |
81 | +#define PNX833X_PIC_INT_SRC_INT_SRC_MASK 0x00000FF8ul /* bits 11:3 */ | |
82 | +#define PNX833X_PIC_INT_SRC_INT_SRC_SHIFT 3 | |
83 | +#define PNX833X_PIC_INT_REG(irq) PNX833X_PIC_REG(0x10 + 4*(irq)) | |
84 | + | |
85 | +#define PNX833X_CLOCK_CPUCP_CTL PNX833X_REG(0x9228) | |
86 | +#define PNX833X_CLOCK_CPUCP_CTL_EXIT_RESET 0x00000002ul /* bit 1 */ | |
87 | +#define PNX833X_CLOCK_CPUCP_CTL_DIV_CLOCK_MASK 0x00000018ul /* bits 4:3 */ | |
88 | +#define PNX833X_CLOCK_CPUCP_CTL_DIV_CLOCK_SHIFT 3 | |
89 | + | |
90 | +#define PNX8335_CLOCK_PLL_CPU_CTL PNX833X_REG(0x9020) | |
91 | +#define PNX8335_CLOCK_PLL_CPU_CTL_FREQ_MASK 0x1f | |
92 | +#define PNX8335_CLOCK_PLL_CPU_CTL_FREQ_SHIFT 0 | |
93 | + | |
94 | +#define PNX833X_CONFIG_MUX PNX833X_REG(0x7004) | |
95 | +#define PNX833X_CONFIG_MUX_IDE_MUX 0x00000080 /* bit 7 */ | |
96 | + | |
97 | +#define PNX8330_CONFIG_POLYFUSE_7 PNX833X_REG(0x7040) | |
98 | +#define PNX8330_CONFIG_POLYFUSE_7_BOOT_MODE_MASK 0x00180000 | |
99 | +#define PNX8330_CONFIG_POLYFUSE_7_BOOT_MODE_SHIFT 19 | |
100 | + | |
101 | +#define PNX833X_PIO_IN PNX833X_REG(0xF000) | |
102 | +#define PNX833X_PIO_OUT PNX833X_REG(0xF004) | |
103 | +#define PNX833X_PIO_DIR PNX833X_REG(0xF008) | |
104 | +#define PNX833X_PIO_SEL PNX833X_REG(0xF014) | |
105 | +#define PNX833X_PIO_INT_EDGE PNX833X_REG(0xF020) | |
106 | +#define PNX833X_PIO_INT_HI PNX833X_REG(0xF024) | |
107 | +#define PNX833X_PIO_INT_LO PNX833X_REG(0xF028) | |
108 | +#define PNX833X_PIO_INT_STATUS PNX833X_REG(0xFFE0) | |
109 | +#define PNX833X_PIO_INT_ENABLE PNX833X_REG(0xFFE4) | |
110 | +#define PNX833X_PIO_INT_CLEAR PNX833X_REG(0xFFE8) | |
111 | +#define PNX833X_PIO_IN2 PNX833X_REG(0xF05C) | |
112 | +#define PNX833X_PIO_OUT2 PNX833X_REG(0xF060) | |
113 | +#define PNX833X_PIO_DIR2 PNX833X_REG(0xF064) | |
114 | +#define PNX833X_PIO_SEL2 PNX833X_REG(0xF068) | |
115 | + | |
116 | +#define PNX833X_UART0_PORTS_START (PNX833X_BASE + 0xB000) | |
117 | +#define PNX833X_UART0_PORTS_END (PNX833X_BASE + 0xBFFF) | |
118 | +#define PNX833X_UART1_PORTS_START (PNX833X_BASE + 0xC000) | |
119 | +#define PNX833X_UART1_PORTS_END (PNX833X_BASE + 0xCFFF) | |
120 | + | |
121 | +#define PNX833X_USB_PORTS_START (PNX833X_BASE + 0x19000) | |
122 | +#define PNX833X_USB_PORTS_END (PNX833X_BASE + 0x19FFF) | |
123 | + | |
124 | +#define PNX833X_CONFIG_USB PNX833X_REG(0x7008) | |
125 | + | |
126 | +#define PNX833X_I2C0_PORTS_START (PNX833X_BASE + 0xD000) | |
127 | +#define PNX833X_I2C0_PORTS_END (PNX833X_BASE + 0xDFFF) | |
128 | +#define PNX833X_I2C1_PORTS_START (PNX833X_BASE + 0xE000) | |
129 | +#define PNX833X_I2C1_PORTS_END (PNX833X_BASE + 0xEFFF) | |
130 | + | |
131 | +#define PNX833X_IDE_PORTS_START (PNX833X_BASE + 0x1A000) | |
132 | +#define PNX833X_IDE_PORTS_END (PNX833X_BASE + 0x1AFFF) | |
133 | +#define PNX833X_IDE_MODULE_ID PNX833X_REG(0x1AFFC) | |
134 | + | |
135 | +#define PNX833X_IDE_MODULE_ID_MODULE_ID_MASK 0xFFFF0000 | |
136 | +#define PNX833X_IDE_MODULE_ID_MODULE_ID_SHIFT 16 | |
137 | +#define PNX833X_IDE_MODULE_ID_VALUE 0xA009 | |
138 | + | |
139 | + | |
140 | +#define PNX833X_MIU_SEL0 PNX833X_REG(0x2004) | |
141 | +#define PNX833X_MIU_SEL0_TIMING PNX833X_REG(0x2008) | |
142 | +#define PNX833X_MIU_SEL1 PNX833X_REG(0x200C) | |
143 | +#define PNX833X_MIU_SEL1_TIMING PNX833X_REG(0x2010) | |
144 | +#define PNX833X_MIU_SEL2 PNX833X_REG(0x2014) | |
145 | +#define PNX833X_MIU_SEL2_TIMING PNX833X_REG(0x2018) | |
146 | +#define PNX833X_MIU_SEL3 PNX833X_REG(0x201C) | |
147 | +#define PNX833X_MIU_SEL3_TIMING PNX833X_REG(0x2020) | |
148 | + | |
149 | +#define PNX833X_MIU_SEL0_SPI_MODE_ENABLE_MASK (1 << 14) | |
150 | +#define PNX833X_MIU_SEL0_SPI_MODE_ENABLE_SHIFT 14 | |
151 | + | |
152 | +#define PNX833X_MIU_SEL0_BURST_MODE_ENABLE_MASK (1 << 7) | |
153 | +#define PNX833X_MIU_SEL0_BURST_MODE_ENABLE_SHIFT 7 | |
154 | + | |
155 | +#define PNX833X_MIU_SEL0_BURST_PAGE_LEN_MASK (0xF << 9) | |
156 | +#define PNX833X_MIU_SEL0_BURST_PAGE_LEN_SHIFT 9 | |
157 | + | |
158 | +#define PNX833X_MIU_CONFIG_SPI PNX833X_REG(0x2000) | |
159 | + | |
160 | +#define PNX833X_MIU_CONFIG_SPI_OPCODE_MASK (0xFF << 3) | |
161 | +#define PNX833X_MIU_CONFIG_SPI_OPCODE_SHIFT 3 | |
162 | + | |
163 | +#define PNX833X_MIU_CONFIG_SPI_DATA_ENABLE_MASK (1 << 2) | |
164 | +#define PNX833X_MIU_CONFIG_SPI_DATA_ENABLE_SHIFT 2 | |
165 | + | |
166 | +#define PNX833X_MIU_CONFIG_SPI_ADDR_ENABLE_MASK (1 << 1) | |
167 | +#define PNX833X_MIU_CONFIG_SPI_ADDR_ENABLE_SHIFT 1 | |
168 | + | |
169 | +#define PNX833X_MIU_CONFIG_SPI_SYNC_MASK (1 << 0) | |
170 | +#define PNX833X_MIU_CONFIG_SPI_SYNC_SHIFT 0 | |
171 | + | |
172 | +#define PNX833X_WRITE_CONFIG_SPI(opcode, data_enable, addr_enable, sync) \ | |
173 | + (PNX833X_MIU_CONFIG_SPI = \ | |
174 | + ((opcode) << PNX833X_MIU_CONFIG_SPI_OPCODE_SHIFT) | \ | |
175 | + ((data_enable) << PNX833X_MIU_CONFIG_SPI_DATA_ENABLE_SHIFT) | \ | |
176 | + ((addr_enable) << PNX833X_MIU_CONFIG_SPI_ADDR_ENABLE_SHIFT) | \ | |
177 | + ((sync) << PNX833X_MIU_CONFIG_SPI_SYNC_SHIFT)) | |
178 | + | |
179 | +#define PNX8335_IP3902_PORTS_START (PNX833X_BASE + 0x2F000) | |
180 | +#define PNX8335_IP3902_PORTS_END (PNX833X_BASE + 0x2FFFF) | |
181 | +#define PNX8335_IP3902_MODULE_ID PNX833X_REG(0x2FFFC) | |
182 | + | |
183 | +#define PNX8335_IP3902_MODULE_ID_MODULE_ID_MASK 0xFFFF0000 | |
184 | +#define PNX8335_IP3902_MODULE_ID_MODULE_ID_SHIFT 16 | |
185 | +#define PNX8335_IP3902_MODULE_ID_VALUE 0x3902 | |
186 | + | |
187 | + /* I/O location(gets remapped)*/ | |
188 | +#define PNX8335_NAND_BASE 0x18000000 | |
189 | +/* I/O location with CLE high */ | |
190 | +#define PNX8335_NAND_CLE_MASK 0x00100000 | |
191 | +/* I/O location with ALE high */ | |
192 | +#define PNX8335_NAND_ALE_MASK 0x00010000 | |
193 | + | |
194 | +#define PNX8335_SATA_PORTS_START (PNX833X_BASE + 0x2E000) | |
195 | +#define PNX8335_SATA_PORTS_END (PNX833X_BASE + 0x2EFFF) | |
196 | +#define PNX8335_SATA_MODULE_ID PNX833X_REG(0x2EFFC) | |
197 | + | |
198 | +#define PNX8335_SATA_MODULE_ID_MODULE_ID_MASK 0xFFFF0000 | |
199 | +#define PNX8335_SATA_MODULE_ID_MODULE_ID_SHIFT 16 | |
200 | +#define PNX8335_SATA_MODULE_ID_VALUE 0xA099 | |
201 | + | |
202 | +#endif |
arch/mips/include/asm/mach-pnx833x/war.h
1 | +/* | |
2 | + * This file is subject to the terms and conditions of the GNU General Public | |
3 | + * License. See the file "COPYING" in the main directory of this archive | |
4 | + * for more details. | |
5 | + * | |
6 | + * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> | |
7 | + */ | |
8 | +#ifndef __ASM_MIPS_MACH_PNX833X_WAR_H | |
9 | +#define __ASM_MIPS_MACH_PNX833X_WAR_H | |
10 | + | |
11 | +#define R4600_V1_INDEX_ICACHEOP_WAR 0 | |
12 | +#define R4600_V1_HIT_CACHEOP_WAR 0 | |
13 | +#define R4600_V2_HIT_CACHEOP_WAR 0 | |
14 | +#define R5432_CP0_INTERRUPT_WAR 0 | |
15 | +#define BCM1250_M3_WAR 0 | |
16 | +#define SIBYTE_1956_WAR 0 | |
17 | +#define MIPS4K_ICACHE_REFILL_WAR 0 | |
18 | +#define MIPS_CACHE_SYNC_WAR 0 | |
19 | +#define TX49XX_ICACHE_INDEX_INV_WAR 0 | |
20 | +#define RM9000_CDEX_SMP_WAR 0 | |
21 | +#define ICACHE_REFILLS_WORKAROUND_WAR 0 | |
22 | +#define R10000_LLSC_WAR 0 | |
23 | +#define MIPS34K_MISSED_ITLB_WAR 0 | |
24 | + | |
25 | +#endif /* __ASM_MIPS_MACH_PNX8550_WAR_H */ |
arch/mips/nxp/pnx833x/common/Makefile
arch/mips/nxp/pnx833x/common/interrupts.c
1 | +/* | |
2 | + * interrupts.c: Interrupt mappings for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or modify | |
9 | + * it under the terms of the GNU General Public License as published by | |
10 | + * the Free Software Foundation; either version 2 of the License, or | |
11 | + * (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | + */ | |
22 | +#include <linux/kernel.h> | |
23 | +#include <linux/irq.h> | |
24 | +#include <linux/hardirq.h> | |
25 | +#include <linux/interrupt.h> | |
26 | +#include <asm/mipsregs.h> | |
27 | +#include <asm/irq_cpu.h> | |
28 | +#include <irq.h> | |
29 | +#include <irq-mapping.h> | |
30 | +#include <gpio.h> | |
31 | + | |
32 | +static int mips_cpu_timer_irq; | |
33 | + | |
34 | +static const unsigned int irq_prio[PNX833X_PIC_NUM_IRQ] = | |
35 | +{ | |
36 | + 0, /* unused */ | |
37 | + 4, /* PNX833X_PIC_I2C0_INT 1 */ | |
38 | + 4, /* PNX833X_PIC_I2C1_INT 2 */ | |
39 | + 1, /* PNX833X_PIC_UART0_INT 3 */ | |
40 | + 1, /* PNX833X_PIC_UART1_INT 4 */ | |
41 | + 6, /* PNX833X_PIC_TS_IN0_DV_INT 5 */ | |
42 | + 6, /* PNX833X_PIC_TS_IN0_DMA_INT 6 */ | |
43 | + 7, /* PNX833X_PIC_GPIO_INT 7 */ | |
44 | + 4, /* PNX833X_PIC_AUDIO_DEC_INT 8 */ | |
45 | + 5, /* PNX833X_PIC_VIDEO_DEC_INT 9 */ | |
46 | + 4, /* PNX833X_PIC_CONFIG_INT 10 */ | |
47 | + 4, /* PNX833X_PIC_AOI_INT 11 */ | |
48 | + 9, /* PNX833X_PIC_SYNC_INT 12 */ | |
49 | + 9, /* PNX8335_PIC_SATA_INT 13 */ | |
50 | + 4, /* PNX833X_PIC_OSD_INT 14 */ | |
51 | + 9, /* PNX833X_PIC_DISP1_INT 15 */ | |
52 | + 4, /* PNX833X_PIC_DEINTERLACER_INT 16 */ | |
53 | + 9, /* PNX833X_PIC_DISPLAY2_INT 17 */ | |
54 | + 4, /* PNX833X_PIC_VC_INT 18 */ | |
55 | + 4, /* PNX833X_PIC_SC_INT 19 */ | |
56 | + 9, /* PNX833X_PIC_IDE_INT 20 */ | |
57 | + 9, /* PNX833X_PIC_IDE_DMA_INT 21 */ | |
58 | + 6, /* PNX833X_PIC_TS_IN1_DV_INT 22 */ | |
59 | + 6, /* PNX833X_PIC_TS_IN1_DMA_INT 23 */ | |
60 | + 4, /* PNX833X_PIC_SGDX_DMA_INT 24 */ | |
61 | + 4, /* PNX833X_PIC_TS_OUT_INT 25 */ | |
62 | + 4, /* PNX833X_PIC_IR_INT 26 */ | |
63 | + 3, /* PNX833X_PIC_VMSP1_INT 27 */ | |
64 | + 3, /* PNX833X_PIC_VMSP2_INT 28 */ | |
65 | + 4, /* PNX833X_PIC_PIBC_INT 29 */ | |
66 | + 4, /* PNX833X_PIC_TS_IN0_TRD_INT 30 */ | |
67 | + 4, /* PNX833X_PIC_SGDX_TPD_INT 31 */ | |
68 | + 5, /* PNX833X_PIC_USB_INT 32 */ | |
69 | + 4, /* PNX833X_PIC_TS_IN1_TRD_INT 33 */ | |
70 | + 4, /* PNX833X_PIC_CLOCK_INT 34 */ | |
71 | + 4, /* PNX833X_PIC_SGDX_PARSER_INT 35 */ | |
72 | + 4, /* PNX833X_PIC_VMSP_DMA_INT 36 */ | |
73 | +#if defined(CONFIG_SOC_PNX8335) | |
74 | + 4, /* PNX8335_PIC_MIU_INT 37 */ | |
75 | + 4, /* PNX8335_PIC_AVCHIP_IRQ_INT 38 */ | |
76 | + 9, /* PNX8335_PIC_SYNC_HD_INT 39 */ | |
77 | + 9, /* PNX8335_PIC_DISP_HD_INT 40 */ | |
78 | + 9, /* PNX8335_PIC_DISP_SCALER_INT 41 */ | |
79 | + 4, /* PNX8335_PIC_OSD_HD1_INT 42 */ | |
80 | + 4, /* PNX8335_PIC_DTL_WRITER_Y_INT 43 */ | |
81 | + 4, /* PNX8335_PIC_DTL_WRITER_C_INT 44 */ | |
82 | + 4, /* PNX8335_PIC_DTL_EMULATOR_Y_IR_INT 45 */ | |
83 | + 4, /* PNX8335_PIC_DTL_EMULATOR_C_IR_INT 46 */ | |
84 | + 4, /* PNX8335_PIC_DENC_TTX_INT 47 */ | |
85 | + 4, /* PNX8335_PIC_MMI_SIF0_INT 48 */ | |
86 | + 4, /* PNX8335_PIC_MMI_SIF1_INT 49 */ | |
87 | + 4, /* PNX8335_PIC_MMI_CDMMU_INT 50 */ | |
88 | + 4, /* PNX8335_PIC_PIBCS_INT 51 */ | |
89 | + 12, /* PNX8335_PIC_ETHERNET_INT 52 */ | |
90 | + 3, /* PNX8335_PIC_VMSP1_0_INT 53 */ | |
91 | + 3, /* PNX8335_PIC_VMSP1_1_INT 54 */ | |
92 | + 4, /* PNX8335_PIC_VMSP1_DMA_INT 55 */ | |
93 | + 4, /* PNX8335_PIC_TDGR_DE_INT 56 */ | |
94 | + 4, /* PNX8335_PIC_IR1_IRQ_INT 57 */ | |
95 | +#endif | |
96 | +}; | |
97 | + | |
98 | +static void pnx833x_timer_dispatch(void) | |
99 | +{ | |
100 | + do_IRQ(mips_cpu_timer_irq); | |
101 | +} | |
102 | + | |
103 | +static void pic_dispatch(void) | |
104 | +{ | |
105 | + unsigned int irq = PNX833X_REGFIELD(PIC_INT_SRC, INT_SRC); | |
106 | + | |
107 | + if ((irq >= 1) && (irq < (PNX833X_PIC_NUM_IRQ))) { | |
108 | + unsigned long priority = PNX833X_PIC_INT_PRIORITY; | |
109 | + PNX833X_PIC_INT_PRIORITY = irq_prio[irq]; | |
110 | + | |
111 | + if (irq == PNX833X_PIC_GPIO_INT) { | |
112 | + unsigned long mask = PNX833X_PIO_INT_STATUS & PNX833X_PIO_INT_ENABLE; | |
113 | + int pin; | |
114 | + while ((pin = ffs(mask & 0xffff))) { | |
115 | + pin -= 1; | |
116 | + do_IRQ(PNX833X_GPIO_IRQ_BASE + pin); | |
117 | + mask &= ~(1 << pin); | |
118 | + } | |
119 | + } else { | |
120 | + do_IRQ(irq + PNX833X_PIC_IRQ_BASE); | |
121 | + } | |
122 | + | |
123 | + PNX833X_PIC_INT_PRIORITY = priority; | |
124 | + } else { | |
125 | + printk(KERN_ERR "plat_irq_dispatch: unexpected irq %u\n", irq); | |
126 | + } | |
127 | +} | |
128 | + | |
129 | +asmlinkage void plat_irq_dispatch(void) | |
130 | +{ | |
131 | + unsigned int pending = read_c0_status() & read_c0_cause(); | |
132 | + | |
133 | + if (pending & STATUSF_IP4) | |
134 | + pic_dispatch(); | |
135 | + else if (pending & STATUSF_IP7) | |
136 | + do_IRQ(PNX833X_TIMER_IRQ); | |
137 | + else | |
138 | + spurious_interrupt(); | |
139 | +} | |
140 | + | |
141 | +static inline void pnx833x_hard_enable_pic_irq(unsigned int irq) | |
142 | +{ | |
143 | + /* Currently we do this by setting IRQ priority to 1. | |
144 | + If priority support is being implemented, 1 should be repalced | |
145 | + by a better value. */ | |
146 | + PNX833X_PIC_INT_REG(irq) = irq_prio[irq]; | |
147 | +} | |
148 | + | |
149 | +static inline void pnx833x_hard_disable_pic_irq(unsigned int irq) | |
150 | +{ | |
151 | + /* Disable IRQ by writing setting it's priority to 0 */ | |
152 | + PNX833X_PIC_INT_REG(irq) = 0; | |
153 | +} | |
154 | + | |
155 | +static int irqflags[PNX833X_PIC_NUM_IRQ]; /* initialized by zeroes */ | |
156 | +#define IRQFLAG_STARTED 1 | |
157 | +#define IRQFLAG_DISABLED 2 | |
158 | + | |
159 | +static DEFINE_SPINLOCK(pnx833x_irq_lock); | |
160 | + | |
161 | +static unsigned int pnx833x_startup_pic_irq(unsigned int irq) | |
162 | +{ | |
163 | + unsigned long flags; | |
164 | + unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; | |
165 | + | |
166 | + spin_lock_irqsave(&pnx833x_irq_lock, flags); | |
167 | + | |
168 | + irqflags[pic_irq] = IRQFLAG_STARTED; /* started, not disabled */ | |
169 | + pnx833x_hard_enable_pic_irq(pic_irq); | |
170 | + | |
171 | + spin_unlock_irqrestore(&pnx833x_irq_lock, flags); | |
172 | + return 0; | |
173 | +} | |
174 | + | |
175 | +static void pnx833x_shutdown_pic_irq(unsigned int irq) | |
176 | +{ | |
177 | + unsigned long flags; | |
178 | + unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; | |
179 | + | |
180 | + spin_lock_irqsave(&pnx833x_irq_lock, flags); | |
181 | + | |
182 | + irqflags[pic_irq] = 0; /* not started */ | |
183 | + pnx833x_hard_disable_pic_irq(pic_irq); | |
184 | + | |
185 | + spin_unlock_irqrestore(&pnx833x_irq_lock, flags); | |
186 | +} | |
187 | + | |
188 | +static void pnx833x_enable_pic_irq(unsigned int irq) | |
189 | +{ | |
190 | + unsigned long flags; | |
191 | + unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; | |
192 | + | |
193 | + spin_lock_irqsave(&pnx833x_irq_lock, flags); | |
194 | + | |
195 | + irqflags[pic_irq] &= ~IRQFLAG_DISABLED; | |
196 | + if (irqflags[pic_irq] == IRQFLAG_STARTED) | |
197 | + pnx833x_hard_enable_pic_irq(pic_irq); | |
198 | + | |
199 | + spin_unlock_irqrestore(&pnx833x_irq_lock, flags); | |
200 | +} | |
201 | + | |
202 | +static void pnx833x_disable_pic_irq(unsigned int irq) | |
203 | +{ | |
204 | + unsigned long flags; | |
205 | + unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; | |
206 | + | |
207 | + spin_lock_irqsave(&pnx833x_irq_lock, flags); | |
208 | + | |
209 | + irqflags[pic_irq] |= IRQFLAG_DISABLED; | |
210 | + pnx833x_hard_disable_pic_irq(pic_irq); | |
211 | + | |
212 | + spin_unlock_irqrestore(&pnx833x_irq_lock, flags); | |
213 | +} | |
214 | + | |
215 | +static void pnx833x_ack_pic_irq(unsigned int irq) | |
216 | +{ | |
217 | +} | |
218 | + | |
219 | +static void pnx833x_end_pic_irq(unsigned int irq) | |
220 | +{ | |
221 | +} | |
222 | + | |
223 | +static DEFINE_SPINLOCK(pnx833x_gpio_pnx833x_irq_lock); | |
224 | + | |
225 | +static unsigned int pnx833x_startup_gpio_irq(unsigned int irq) | |
226 | +{ | |
227 | + int pin = irq - PNX833X_GPIO_IRQ_BASE; | |
228 | + unsigned long flags; | |
229 | + spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
230 | + pnx833x_gpio_enable_irq(pin); | |
231 | + spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
232 | + return 0; | |
233 | +} | |
234 | + | |
235 | +static void pnx833x_enable_gpio_irq(unsigned int irq) | |
236 | +{ | |
237 | + int pin = irq - PNX833X_GPIO_IRQ_BASE; | |
238 | + unsigned long flags; | |
239 | + spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
240 | + pnx833x_gpio_enable_irq(pin); | |
241 | + spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
242 | +} | |
243 | + | |
244 | +static void pnx833x_disable_gpio_irq(unsigned int irq) | |
245 | +{ | |
246 | + int pin = irq - PNX833X_GPIO_IRQ_BASE; | |
247 | + unsigned long flags; | |
248 | + spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
249 | + pnx833x_gpio_disable_irq(pin); | |
250 | + spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
251 | +} | |
252 | + | |
253 | +static void pnx833x_ack_gpio_irq(unsigned int irq) | |
254 | +{ | |
255 | +} | |
256 | + | |
257 | +static void pnx833x_end_gpio_irq(unsigned int irq) | |
258 | +{ | |
259 | + int pin = irq - PNX833X_GPIO_IRQ_BASE; | |
260 | + unsigned long flags; | |
261 | + spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
262 | + pnx833x_gpio_clear_irq(pin); | |
263 | + spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); | |
264 | +} | |
265 | + | |
266 | +static int pnx833x_set_type_gpio_irq(unsigned int irq, unsigned int flow_type) | |
267 | +{ | |
268 | + int pin = irq - PNX833X_GPIO_IRQ_BASE; | |
269 | + int gpio_mode; | |
270 | + | |
271 | + switch (flow_type) { | |
272 | + case IRQ_TYPE_EDGE_RISING: | |
273 | + gpio_mode = GPIO_INT_EDGE_RISING; | |
274 | + break; | |
275 | + case IRQ_TYPE_EDGE_FALLING: | |
276 | + gpio_mode = GPIO_INT_EDGE_FALLING; | |
277 | + break; | |
278 | + case IRQ_TYPE_EDGE_BOTH: | |
279 | + gpio_mode = GPIO_INT_EDGE_BOTH; | |
280 | + break; | |
281 | + case IRQ_TYPE_LEVEL_HIGH: | |
282 | + gpio_mode = GPIO_INT_LEVEL_HIGH; | |
283 | + break; | |
284 | + case IRQ_TYPE_LEVEL_LOW: | |
285 | + gpio_mode = GPIO_INT_LEVEL_LOW; | |
286 | + break; | |
287 | + default: | |
288 | + gpio_mode = GPIO_INT_NONE; | |
289 | + break; | |
290 | + } | |
291 | + | |
292 | + pnx833x_gpio_setup_irq(gpio_mode, pin); | |
293 | + | |
294 | + return 0; | |
295 | +} | |
296 | + | |
297 | +static struct irq_chip pnx833x_pic_irq_type = { | |
298 | + .typename = "PNX-PIC", | |
299 | + .startup = pnx833x_startup_pic_irq, | |
300 | + .shutdown = pnx833x_shutdown_pic_irq, | |
301 | + .enable = pnx833x_enable_pic_irq, | |
302 | + .disable = pnx833x_disable_pic_irq, | |
303 | + .ack = pnx833x_ack_pic_irq, | |
304 | + .end = pnx833x_end_pic_irq | |
305 | +}; | |
306 | + | |
307 | +static struct irq_chip pnx833x_gpio_irq_type = { | |
308 | + .typename = "PNX-GPIO", | |
309 | + .startup = pnx833x_startup_gpio_irq, | |
310 | + .shutdown = pnx833x_disable_gpio_irq, | |
311 | + .enable = pnx833x_enable_gpio_irq, | |
312 | + .disable = pnx833x_disable_gpio_irq, | |
313 | + .ack = pnx833x_ack_gpio_irq, | |
314 | + .end = pnx833x_end_gpio_irq, | |
315 | + .set_type = pnx833x_set_type_gpio_irq | |
316 | +}; | |
317 | + | |
318 | +void __init arch_init_irq(void) | |
319 | +{ | |
320 | + unsigned int irq; | |
321 | + | |
322 | + /* setup standard internal cpu irqs */ | |
323 | + mips_cpu_irq_init(); | |
324 | + | |
325 | + /* Set IRQ information in irq_desc */ | |
326 | + for (irq = PNX833X_PIC_IRQ_BASE; irq < (PNX833X_PIC_IRQ_BASE + PNX833X_PIC_NUM_IRQ); irq++) { | |
327 | + pnx833x_hard_disable_pic_irq(irq); | |
328 | + set_irq_chip_and_handler(irq, &pnx833x_pic_irq_type, handle_simple_irq); | |
329 | + } | |
330 | + | |
331 | + for (irq = PNX833X_GPIO_IRQ_BASE; irq < (PNX833X_GPIO_IRQ_BASE + PNX833X_GPIO_NUM_IRQ); irq++) | |
332 | + set_irq_chip_and_handler(irq, &pnx833x_gpio_irq_type, handle_simple_irq); | |
333 | + | |
334 | + /* Set PIC priority limiter register to 0 */ | |
335 | + PNX833X_PIC_INT_PRIORITY = 0; | |
336 | + | |
337 | + /* Setup GPIO IRQ dispatching */ | |
338 | + pnx833x_startup_pic_irq(PNX833X_PIC_GPIO_INT); | |
339 | + | |
340 | + /* Enable PIC IRQs (HWIRQ2) */ | |
341 | + if (cpu_has_vint) | |
342 | + set_vi_handler(4, pic_dispatch); | |
343 | + | |
344 | + write_c0_status(read_c0_status() | IE_IRQ2); | |
345 | +} | |
346 | + | |
347 | +unsigned int __cpuinit get_c0_compare_int(void) | |
348 | +{ | |
349 | + if (cpu_has_vint) | |
350 | + set_vi_handler(cp0_compare_irq, pnx833x_timer_dispatch); | |
351 | + | |
352 | + mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq; | |
353 | + return mips_cpu_timer_irq; | |
354 | +} | |
355 | + | |
356 | +void __init plat_time_init(void) | |
357 | +{ | |
358 | + /* calculate mips_hpt_frequency based on PNX833X_CLOCK_CPUCP_CTL reg */ | |
359 | + | |
360 | + extern unsigned long mips_hpt_frequency; | |
361 | + unsigned long reg = PNX833X_CLOCK_CPUCP_CTL; | |
362 | + | |
363 | + if (!(PNX833X_BIT(reg, CLOCK_CPUCP_CTL, EXIT_RESET))) { | |
364 | + /* Functional clock is disabled so use crystal frequency */ | |
365 | + mips_hpt_frequency = 25; | |
366 | + } else { | |
367 | +#if defined(CONFIG_SOC_PNX8335) | |
368 | + /* Functional clock is enabled, so get clock multiplier */ | |
369 | + mips_hpt_frequency = 90 + (10 * PNX8335_REGFIELD(CLOCK_PLL_CPU_CTL, FREQ)); | |
370 | +#else | |
371 | + static const unsigned long int freq[4] = {240, 160, 120, 80}; | |
372 | + mips_hpt_frequency = freq[PNX833X_FIELD(reg, CLOCK_CPUCP_CTL, DIV_CLOCK)]; | |
373 | +#endif | |
374 | + } | |
375 | + | |
376 | + printk(KERN_INFO "CPU clock is %ld MHz\n", mips_hpt_frequency); | |
377 | + | |
378 | + mips_hpt_frequency *= 500000; | |
379 | +} |
arch/mips/nxp/pnx833x/common/platform.c
1 | +/* | |
2 | + * platform.c: platform support for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * Based on software written by: | |
9 | + * Nikita Youshchenko <yoush@debian.org>, based on PNX8550 code. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or modify | |
12 | + * it under the terms of the GNU General Public License as published by | |
13 | + * the Free Software Foundation; either version 2 of the License, or | |
14 | + * (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 | + */ | |
25 | +#include <linux/device.h> | |
26 | +#include <linux/dma-mapping.h> | |
27 | +#include <linux/platform_device.h> | |
28 | +#include <linux/kernel.h> | |
29 | +#include <linux/init.h> | |
30 | +#include <linux/resource.h> | |
31 | +#include <linux/serial.h> | |
32 | +#include <linux/serial_pnx8xxx.h> | |
33 | +#include <linux/mtd/nand.h> | |
34 | +#include <linux/mtd/partitions.h> | |
35 | + | |
36 | +#ifdef CONFIG_I2C_PNX0105 | |
37 | +/* Until i2c driver available in kernel.*/ | |
38 | +#include <linux/i2c-pnx0105.h> | |
39 | +#endif | |
40 | + | |
41 | +#include <irq.h> | |
42 | +#include <irq-mapping.h> | |
43 | +#include <pnx833x.h> | |
44 | + | |
45 | +static u64 uart_dmamask = DMA_32BIT_MASK; | |
46 | + | |
47 | +static struct resource pnx833x_uart_resources[] = { | |
48 | + [0] = { | |
49 | + .start = PNX833X_UART0_PORTS_START, | |
50 | + .end = PNX833X_UART0_PORTS_END, | |
51 | + .flags = IORESOURCE_MEM, | |
52 | + }, | |
53 | + [1] = { | |
54 | + .start = PNX833X_PIC_UART0_INT, | |
55 | + .end = PNX833X_PIC_UART0_INT, | |
56 | + .flags = IORESOURCE_IRQ, | |
57 | + }, | |
58 | + [2] = { | |
59 | + .start = PNX833X_UART1_PORTS_START, | |
60 | + .end = PNX833X_UART1_PORTS_END, | |
61 | + .flags = IORESOURCE_MEM, | |
62 | + }, | |
63 | + [3] = { | |
64 | + .start = PNX833X_PIC_UART1_INT, | |
65 | + .end = PNX833X_PIC_UART1_INT, | |
66 | + .flags = IORESOURCE_IRQ, | |
67 | + }, | |
68 | +}; | |
69 | + | |
70 | +struct pnx8xxx_port pnx8xxx_ports[] = { | |
71 | + [0] = { | |
72 | + .port = { | |
73 | + .type = PORT_PNX8XXX, | |
74 | + .iotype = UPIO_MEM, | |
75 | + .membase = (void __iomem *)PNX833X_UART0_PORTS_START, | |
76 | + .mapbase = PNX833X_UART0_PORTS_START, | |
77 | + .irq = PNX833X_PIC_UART0_INT, | |
78 | + .uartclk = 3692300, | |
79 | + .fifosize = 16, | |
80 | + .flags = UPF_BOOT_AUTOCONF, | |
81 | + .line = 0, | |
82 | + }, | |
83 | + }, | |
84 | + [1] = { | |
85 | + .port = { | |
86 | + .type = PORT_PNX8XXX, | |
87 | + .iotype = UPIO_MEM, | |
88 | + .membase = (void __iomem *)PNX833X_UART1_PORTS_START, | |
89 | + .mapbase = PNX833X_UART1_PORTS_START, | |
90 | + .irq = PNX833X_PIC_UART1_INT, | |
91 | + .uartclk = 3692300, | |
92 | + .fifosize = 16, | |
93 | + .flags = UPF_BOOT_AUTOCONF, | |
94 | + .line = 1, | |
95 | + }, | |
96 | + }, | |
97 | +}; | |
98 | + | |
99 | +static struct platform_device pnx833x_uart_device = { | |
100 | + .name = "pnx8xxx-uart", | |
101 | + .id = -1, | |
102 | + .dev = { | |
103 | + .dma_mask = &uart_dmamask, | |
104 | + .coherent_dma_mask = DMA_32BIT_MASK, | |
105 | + .platform_data = pnx8xxx_ports, | |
106 | + }, | |
107 | + .num_resources = ARRAY_SIZE(pnx833x_uart_resources), | |
108 | + .resource = pnx833x_uart_resources, | |
109 | +}; | |
110 | + | |
111 | +static u64 ehci_dmamask = DMA_32BIT_MASK; | |
112 | + | |
113 | +static struct resource pnx833x_usb_ehci_resources[] = { | |
114 | + [0] = { | |
115 | + .start = PNX833X_USB_PORTS_START, | |
116 | + .end = PNX833X_USB_PORTS_END, | |
117 | + .flags = IORESOURCE_MEM, | |
118 | + }, | |
119 | + [1] = { | |
120 | + .start = PNX833X_PIC_USB_INT, | |
121 | + .end = PNX833X_PIC_USB_INT, | |
122 | + .flags = IORESOURCE_IRQ, | |
123 | + }, | |
124 | +}; | |
125 | + | |
126 | +static struct platform_device pnx833x_usb_ehci_device = { | |
127 | + .name = "pnx833x-ehci", | |
128 | + .id = -1, | |
129 | + .dev = { | |
130 | + .dma_mask = &ehci_dmamask, | |
131 | + .coherent_dma_mask = DMA_32BIT_MASK, | |
132 | + }, | |
133 | + .num_resources = ARRAY_SIZE(pnx833x_usb_ehci_resources), | |
134 | + .resource = pnx833x_usb_ehci_resources, | |
135 | +}; | |
136 | + | |
137 | +#ifdef CONFIG_I2C_PNX0105 | |
138 | +static struct resource pnx833x_i2c0_resources[] = { | |
139 | + { | |
140 | + .start = PNX833X_I2C0_PORTS_START, | |
141 | + .end = PNX833X_I2C0_PORTS_END, | |
142 | + .flags = IORESOURCE_MEM, | |
143 | + }, | |
144 | + { | |
145 | + .start = PNX833X_PIC_I2C0_INT, | |
146 | + .end = PNX833X_PIC_I2C0_INT, | |
147 | + .flags = IORESOURCE_IRQ, | |
148 | + }, | |
149 | +}; | |
150 | + | |
151 | +static struct resource pnx833x_i2c1_resources[] = { | |
152 | + { | |
153 | + .start = PNX833X_I2C1_PORTS_START, | |
154 | + .end = PNX833X_I2C1_PORTS_END, | |
155 | + .flags = IORESOURCE_MEM, | |
156 | + }, | |
157 | + { | |
158 | + .start = PNX833X_PIC_I2C1_INT, | |
159 | + .end = PNX833X_PIC_I2C1_INT, | |
160 | + .flags = IORESOURCE_IRQ, | |
161 | + }, | |
162 | +}; | |
163 | + | |
164 | +static struct i2c_pnx0105_dev pnx833x_i2c_dev[] = { | |
165 | + { | |
166 | + .base = PNX833X_I2C0_PORTS_START, | |
167 | + .irq = -1, /* should be PNX833X_PIC_I2C0_INT but polling is faster */ | |
168 | + .clock = 6, /* 0 == 400 kHz, 4 == 100 kHz(Maximum HDMI), 6 = 50kHz(Prefered HDCP) */ | |
169 | + .bus_addr = 0, /* no slave support */ | |
170 | + }, | |
171 | + { | |
172 | + .base = PNX833X_I2C1_PORTS_START, | |
173 | + .irq = -1, /* on high freq, polling is faster */ | |
174 | + /*.irq = PNX833X_PIC_I2C1_INT,*/ | |
175 | + .clock = 4, /* 0 == 400 kHz, 4 == 100 kHz. 100 kHz seems a safe default for now */ | |
176 | + .bus_addr = 0, /* no slave support */ | |
177 | + }, | |
178 | +}; | |
179 | + | |
180 | +static struct platform_device pnx833x_i2c0_device = { | |
181 | + .name = "i2c-pnx0105", | |
182 | + .id = 0, | |
183 | + .dev = { | |
184 | + .platform_data = &pnx833x_i2c_dev[0], | |
185 | + }, | |
186 | + .num_resources = ARRAY_SIZE(pnx833x_i2c0_resources), | |
187 | + .resource = pnx833x_i2c0_resources, | |
188 | +}; | |
189 | + | |
190 | +static struct platform_device pnx833x_i2c1_device = { | |
191 | + .name = "i2c-pnx0105", | |
192 | + .id = 1, | |
193 | + .dev = { | |
194 | + .platform_data = &pnx833x_i2c_dev[1], | |
195 | + }, | |
196 | + .num_resources = ARRAY_SIZE(pnx833x_i2c1_resources), | |
197 | + .resource = pnx833x_i2c1_resources, | |
198 | +}; | |
199 | +#endif | |
200 | + | |
201 | +static u64 ethernet_dmamask = DMA_32BIT_MASK; | |
202 | + | |
203 | +static struct resource pnx833x_ethernet_resources[] = { | |
204 | + [0] = { | |
205 | + .start = PNX8335_IP3902_PORTS_START, | |
206 | + .end = PNX8335_IP3902_PORTS_END, | |
207 | + .flags = IORESOURCE_MEM, | |
208 | + }, | |
209 | + [1] = { | |
210 | + .start = PNX8335_PIC_ETHERNET_INT, | |
211 | + .end = PNX8335_PIC_ETHERNET_INT, | |
212 | + .flags = IORESOURCE_IRQ, | |
213 | + }, | |
214 | +}; | |
215 | + | |
216 | +static struct platform_device pnx833x_ethernet_device = { | |
217 | + .name = "ip3902-eth", | |
218 | + .id = -1, | |
219 | + .dev = { | |
220 | + .dma_mask = ðernet_dmamask, | |
221 | + .coherent_dma_mask = DMA_32BIT_MASK, | |
222 | + }, | |
223 | + .num_resources = ARRAY_SIZE(pnx833x_ethernet_resources), | |
224 | + .resource = pnx833x_ethernet_resources, | |
225 | +}; | |
226 | + | |
227 | +static struct resource pnx833x_sata_resources[] = { | |
228 | + [0] = { | |
229 | + .start = PNX8335_SATA_PORTS_START, | |
230 | + .end = PNX8335_SATA_PORTS_END, | |
231 | + .flags = IORESOURCE_MEM, | |
232 | + }, | |
233 | + [1] = { | |
234 | + .start = PNX8335_PIC_SATA_INT, | |
235 | + .end = PNX8335_PIC_SATA_INT, | |
236 | + .flags = IORESOURCE_IRQ, | |
237 | + }, | |
238 | +}; | |
239 | + | |
240 | +static struct platform_device pnx833x_sata_device = { | |
241 | + .name = "pnx833x-sata", | |
242 | + .id = -1, | |
243 | + .num_resources = ARRAY_SIZE(pnx833x_sata_resources), | |
244 | + .resource = pnx833x_sata_resources, | |
245 | +}; | |
246 | + | |
247 | +static const char *part_probes[] = { | |
248 | + "cmdlinepart", | |
249 | + NULL | |
250 | +}; | |
251 | + | |
252 | +static void | |
253 | +pnx833x_flash_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) | |
254 | +{ | |
255 | + struct nand_chip *this = mtd->priv; | |
256 | + unsigned long nandaddr = (unsigned long)this->IO_ADDR_W; | |
257 | + | |
258 | + if (cmd == NAND_CMD_NONE) | |
259 | + return; | |
260 | + | |
261 | + if (ctrl & NAND_CLE) | |
262 | + writeb(cmd, (void __iomem *)(nandaddr + PNX8335_NAND_CLE_MASK)); | |
263 | + else | |
264 | + writeb(cmd, (void __iomem *)(nandaddr + PNX8335_NAND_ALE_MASK)); | |
265 | +} | |
266 | + | |
267 | +static struct platform_nand_data pnx833x_flash_nand_data = { | |
268 | + .chip = { | |
269 | + .chip_delay = 25, | |
270 | + .part_probe_types = part_probes, | |
271 | + }, | |
272 | + .ctrl = { | |
273 | + .cmd_ctrl = pnx833x_flash_nand_cmd_ctrl | |
274 | + } | |
275 | +}; | |
276 | + | |
277 | +/* | |
278 | + * Set start to be the correct address (PNX8335_NAND_BASE with no 0xb!!), | |
279 | + * 12 bytes more seems to be the standard that allows for NAND access. | |
280 | + */ | |
281 | +static struct resource pnx833x_flash_nand_resource = { | |
282 | + .start = PNX8335_NAND_BASE, | |
283 | + .end = PNX8335_NAND_BASE + 12, | |
284 | + .flags = IORESOURCE_MEM, | |
285 | +}; | |
286 | + | |
287 | +static struct platform_device pnx833x_flash_nand = { | |
288 | + .name = "gen_nand", | |
289 | + .id = -1, | |
290 | + .num_resources = 1, | |
291 | + .resource = &pnx833x_flash_nand_resource, | |
292 | + .dev = { | |
293 | + .platform_data = &pnx833x_flash_nand_data, | |
294 | + }, | |
295 | +}; | |
296 | + | |
297 | +static struct platform_device *pnx833x_platform_devices[] __initdata = { | |
298 | + &pnx833x_uart_device, | |
299 | + &pnx833x_usb_ehci_device, | |
300 | +#ifdef CONFIG_I2C_PNX0105 | |
301 | + &pnx833x_i2c0_device, | |
302 | + &pnx833x_i2c1_device, | |
303 | +#endif | |
304 | + &pnx833x_ethernet_device, | |
305 | + &pnx833x_sata_device, | |
306 | + &pnx833x_flash_nand, | |
307 | +}; | |
308 | + | |
309 | +static int __init pnx833x_platform_init(void) | |
310 | +{ | |
311 | + int res; | |
312 | + | |
313 | + res = platform_add_devices(pnx833x_platform_devices, | |
314 | + ARRAY_SIZE(pnx833x_platform_devices)); | |
315 | + | |
316 | + return res; | |
317 | +} | |
318 | + | |
319 | +arch_initcall(pnx833x_platform_init); |
arch/mips/nxp/pnx833x/common/prom.c
1 | +/* | |
2 | + * prom.c: | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * Based on software written by: | |
9 | + * Nikita Youshchenko <yoush@debian.org>, based on PNX8550 code. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or modify | |
12 | + * it under the terms of the GNU General Public License as published by | |
13 | + * the Free Software Foundation; either version 2 of the License, or | |
14 | + * (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 | + */ | |
25 | +#include <linux/init.h> | |
26 | +#include <asm/bootinfo.h> | |
27 | +#include <linux/string.h> | |
28 | + | |
29 | +void __init prom_init_cmdline(void) | |
30 | +{ | |
31 | + int argc = fw_arg0; | |
32 | + char **argv = (char **)fw_arg1; | |
33 | + char *c = &(arcs_cmdline[0]); | |
34 | + int i; | |
35 | + | |
36 | + for (i = 1; i < argc; i++) { | |
37 | + strcpy(c, argv[i]); | |
38 | + c += strlen(argv[i]); | |
39 | + if (i < argc-1) | |
40 | + *c++ = ' '; | |
41 | + } | |
42 | + *c = 0; | |
43 | +} | |
44 | + | |
45 | +char __init *prom_getenv(char *envname) | |
46 | +{ | |
47 | + extern char **prom_envp; | |
48 | + char **env = prom_envp; | |
49 | + int i; | |
50 | + | |
51 | + i = strlen(envname); | |
52 | + | |
53 | + while (*env) { | |
54 | + if (strncmp(envname, *env, i) == 0 && *(*env+i) == '=') | |
55 | + return *env + i + 1; | |
56 | + env++; | |
57 | + } | |
58 | + | |
59 | + return 0; | |
60 | +} | |
61 | + | |
62 | +void __init prom_free_prom_memory(void) | |
63 | +{ | |
64 | +} | |
65 | + | |
66 | +char * __init prom_getcmdline(void) | |
67 | +{ | |
68 | + return arcs_cmdline; | |
69 | +} |
arch/mips/nxp/pnx833x/common/reset.c
1 | +/* | |
2 | + * reset.c: reset support for PNX833X. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * Based on software written by: | |
9 | + * Nikita Youshchenko <yoush@debian.org>, based on PNX8550 code. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or modify | |
12 | + * it under the terms of the GNU General Public License as published by | |
13 | + * the Free Software Foundation; either version 2 of the License, or | |
14 | + * (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 | + */ | |
25 | +#include <linux/slab.h> | |
26 | +#include <linux/reboot.h> | |
27 | +#include <pnx833x.h> | |
28 | + | |
29 | +void pnx833x_machine_restart(char *command) | |
30 | +{ | |
31 | + PNX833X_RESET_CONTROL_2 = 0; | |
32 | + PNX833X_RESET_CONTROL = 0; | |
33 | +} | |
34 | + | |
35 | +void pnx833x_machine_halt(void) | |
36 | +{ | |
37 | + while (1) | |
38 | + __asm__ __volatile__ ("wait"); | |
39 | + | |
40 | +} | |
41 | + | |
42 | +void pnx833x_machine_power_off(void) | |
43 | +{ | |
44 | + pnx833x_machine_halt(); | |
45 | +} |
arch/mips/nxp/pnx833x/common/setup.c
1 | +/* | |
2 | + * setup.c: Setup PNX833X Soc. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * Based on software written by: | |
9 | + * Nikita Youshchenko <yoush@debian.org>, based on PNX8550 code. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or modify | |
12 | + * it under the terms of the GNU General Public License as published by | |
13 | + * the Free Software Foundation; either version 2 of the License, or | |
14 | + * (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 | + */ | |
25 | +#include <linux/init.h> | |
26 | +#include <linux/interrupt.h> | |
27 | +#include <linux/ioport.h> | |
28 | +#include <linux/io.h> | |
29 | +#include <linux/pci.h> | |
30 | +#include <asm/reboot.h> | |
31 | +#include <pnx833x.h> | |
32 | +#include <gpio.h> | |
33 | + | |
34 | +extern void pnx833x_board_setup(void); | |
35 | +extern void pnx833x_machine_restart(char *); | |
36 | +extern void pnx833x_machine_halt(void); | |
37 | +extern void pnx833x_machine_power_off(void); | |
38 | + | |
39 | +int __init plat_mem_setup(void) | |
40 | +{ | |
41 | + /* fake pci bus to avoid bounce buffers */ | |
42 | + PCI_DMA_BUS_IS_PHYS = 1; | |
43 | + | |
44 | + /* set mips clock to 320MHz */ | |
45 | +#if defined(CONFIG_SOC_PNX8335) | |
46 | + PNX8335_WRITEFIELD(0x17, CLOCK_PLL_CPU_CTL, FREQ); | |
47 | +#endif | |
48 | + pnx833x_gpio_init(); /* so it will be ready in board_setup() */ | |
49 | + | |
50 | + pnx833x_board_setup(); | |
51 | + | |
52 | + _machine_restart = pnx833x_machine_restart; | |
53 | + _machine_halt = pnx833x_machine_halt; | |
54 | + pm_power_off = pnx833x_machine_power_off; | |
55 | + | |
56 | + /* IO/MEM resources. */ | |
57 | + set_io_port_base(KSEG1); | |
58 | + ioport_resource.start = 0; | |
59 | + ioport_resource.end = ~0; | |
60 | + iomem_resource.start = 0; | |
61 | + iomem_resource.end = ~0; | |
62 | + | |
63 | + return 0; | |
64 | +} |
arch/mips/nxp/pnx833x/stb22x/Makefile
arch/mips/nxp/pnx833x/stb22x/board.c
1 | +/* | |
2 | + * board.c: STB225 board support. | |
3 | + * | |
4 | + * Copyright 2008 NXP Semiconductors | |
5 | + * Chris Steel <chris.steel@nxp.com> | |
6 | + * Daniel Laird <daniel.j.laird@nxp.com> | |
7 | + * | |
8 | + * Based on software written by: | |
9 | + * Nikita Youshchenko <yoush@debian.org>, based on PNX8550 code. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or modify | |
12 | + * it under the terms of the GNU General Public License as published by | |
13 | + * the Free Software Foundation; either version 2 of the License, or | |
14 | + * (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 | + */ | |
25 | +#include <linux/init.h> | |
26 | +#include <asm/bootinfo.h> | |
27 | +#include <linux/mm.h> | |
28 | +#include <pnx833x.h> | |
29 | +#include <gpio.h> | |
30 | + | |
31 | +/* endianess twiddlers */ | |
32 | +#define PNX8335_DEBUG0 0x4400 | |
33 | +#define PNX8335_DEBUG1 0x4404 | |
34 | +#define PNX8335_DEBUG2 0x4408 | |
35 | +#define PNX8335_DEBUG3 0x440c | |
36 | +#define PNX8335_DEBUG4 0x4410 | |
37 | +#define PNX8335_DEBUG5 0x4414 | |
38 | +#define PNX8335_DEBUG6 0x4418 | |
39 | +#define PNX8335_DEBUG7 0x441c | |
40 | + | |
41 | +int prom_argc; | |
42 | +char **prom_argv = 0, **prom_envp = 0; | |
43 | + | |
44 | +extern void prom_init_cmdline(void); | |
45 | +extern char *prom_getenv(char *envname); | |
46 | + | |
47 | +const char *get_system_type(void) | |
48 | +{ | |
49 | + return "NXP STB22x"; | |
50 | +} | |
51 | + | |
52 | +static inline unsigned long env_or_default(char *env, unsigned long dfl) | |
53 | +{ | |
54 | + char *str = prom_getenv(env); | |
55 | + return str ? simple_strtol(str, 0, 0) : dfl; | |
56 | +} | |
57 | + | |
58 | +void __init prom_init(void) | |
59 | +{ | |
60 | + unsigned long memsize; | |
61 | + | |
62 | + prom_argc = fw_arg0; | |
63 | + prom_argv = (char **)fw_arg1; | |
64 | + prom_envp = (char **)fw_arg2; | |
65 | + | |
66 | + prom_init_cmdline(); | |
67 | + | |
68 | + memsize = env_or_default("memsize", 0x02000000); | |
69 | + add_memory_region(0, memsize, BOOT_MEM_RAM); | |
70 | +} | |
71 | + | |
72 | +void __init pnx833x_board_setup(void) | |
73 | +{ | |
74 | + pnx833x_gpio_select_function_alt(4); | |
75 | + pnx833x_gpio_select_output(4); | |
76 | + pnx833x_gpio_select_function_alt(5); | |
77 | + pnx833x_gpio_select_input(5); | |
78 | + pnx833x_gpio_select_function_alt(6); | |
79 | + pnx833x_gpio_select_input(6); | |
80 | + pnx833x_gpio_select_function_alt(7); | |
81 | + pnx833x_gpio_select_output(7); | |
82 | + | |
83 | + pnx833x_gpio_select_function_alt(25); | |
84 | + pnx833x_gpio_select_function_alt(26); | |
85 | + | |
86 | + pnx833x_gpio_select_function_alt(27); | |
87 | + pnx833x_gpio_select_function_alt(28); | |
88 | + pnx833x_gpio_select_function_alt(29); | |
89 | + pnx833x_gpio_select_function_alt(30); | |
90 | + pnx833x_gpio_select_function_alt(31); | |
91 | + pnx833x_gpio_select_function_alt(32); | |
92 | + pnx833x_gpio_select_function_alt(33); | |
93 | + | |
94 | +#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE) | |
95 | + /* Setup MIU for NAND access on CS0... | |
96 | + * | |
97 | + * (it seems that we must also configure CS1 for reliable operation, | |
98 | + * otherwise the first read ID command will fail if it's read as 4 bytes | |
99 | + * but pass if it's read as 1 word.) | |
100 | + */ | |
101 | + | |
102 | + /* Setup MIU CS0 & CS1 timing */ | |
103 | + PNX833X_MIU_SEL0 = 0; | |
104 | + PNX833X_MIU_SEL1 = 0; | |
105 | + PNX833X_MIU_SEL0_TIMING = 0x50003081; | |
106 | + PNX833X_MIU_SEL1_TIMING = 0x50003081; | |
107 | + | |
108 | + /* Setup GPIO 00 for use as MIU CS1 (CS0 is not multiplexed, so does not need this) */ | |
109 | + pnx833x_gpio_select_function_alt(0); | |
110 | + | |
111 | + /* Setup GPIO 04 to input NAND read/busy signal */ | |
112 | + pnx833x_gpio_select_function_io(4); | |
113 | + pnx833x_gpio_select_input(4); | |
114 | + | |
115 | + /* Setup GPIO 05 to disable NAND write protect */ | |
116 | + pnx833x_gpio_select_function_io(5); | |
117 | + pnx833x_gpio_select_output(5); | |
118 | + pnx833x_gpio_write(1, 5); | |
119 | + | |
120 | +#elif defined(CONFIG_MTD_CFI) || defined(CONFIG_MTD_CFI_MODULE) | |
121 | + | |
122 | + /* Set up MIU for 16-bit NOR access on CS0 and CS1... */ | |
123 | + | |
124 | + /* Setup MIU CS0 & CS1 timing */ | |
125 | + PNX833X_MIU_SEL0 = 1; | |
126 | + PNX833X_MIU_SEL1 = 1; | |
127 | + PNX833X_MIU_SEL0_TIMING = 0x6A08D082; | |
128 | + PNX833X_MIU_SEL1_TIMING = 0x6A08D082; | |
129 | + | |
130 | + /* Setup GPIO 00 for use as MIU CS1 (CS0 is not multiplexed, so does not need this) */ | |
131 | + pnx833x_gpio_select_function_alt(0); | |
132 | +#endif | |
133 | +} |