GIT 6749c5507388f3fc3719f57a54b540ee83f6661a git+ssh://master.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git commit 56ec6462af9cba56a04439154e5768672d6f390f Author: Michael Ellerman Date: Tue Feb 28 14:54:26 2006 +1100 [PATCH] powerpc/iseries: Fix double phys_to_abs bug in htab_bolt_mapping Before the merge I updated create_pte_mapping() to work for iSeries, by calling iSeries_hpte_bolt_or_insert. (4c55130b2aa93370f1bf52d2304394e91cf8ee39) Later we changed iSeries_hpte_insert to cope with the bolting case, and called that instead from create_pte_mapping() (which was renamed to htab_bolt_mapping) (3c726f8dee6f55e96475574e9f645327e461884c). Unfortunately that change introduced a subtle bug, where we pass an absolute address to iSeries_hpte_insert() where it expects a physical address. This leads to us calling phys_to_abs() twice on the physical address, which is seriously bogus. This only causes a problem if the absolute address from the first translation can be looked up again in the chunk_map, which depends on the size and layout of memory. I've seen it fail on one box, but not others. The minimal fix is to pass the physical address to iSeries_hpte_insert(). For 2.6.17 we should make phys_to_abs() BUG if we try to double-translate an address. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 273d2803817c9e050e8d6c3c271db7d61f2fb259 Author: Olaf Hering Date: Mon Feb 27 15:52:59 2006 +0100 [PATCH] powerpc: fix NULL pointer in handle_eeh_events This patch fixes a crash in handle_eeh_events, but ethtool -t still doesnt work right. ... pepino:~ # cpu 0x3: Vector: 300 (Data Access) at [c00000005192bbe0] pc: c00000000004a380: .handle_eeh_events+0xe0/0x23c lr: c00000000004a374: .handle_eeh_events+0xd4/0x23c sp: c00000005192be60 msr: 9000000000009032 dar: 268 dsisr: 40000000 current = 0xc0000001fe7bf1a0 paca = 0xc00000000048b280 pid = 16322, comm = eehd enter ? for help [c00000005192bf00] c00000000004a808 .eeh_event_handler+0xcc/0x130 [c00000005192bf90] c000000000025e00 .kernel_thread+0x4c/0x68 ... (none):/# /usr/sbin/ethtool -i eth0 driver: e100 version: 3.5.10-k2-NAPI firmware-version: N/A bus-info: 0000:21:01.0 (none):/# /usr/sbin/ethtool -t eth0 Call Trace: [C00000000F8DEFF0] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable) [C00000000F8DF0A0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8 [C00000000F8DF150] [C000000000049E58] .eeh_check_failure+0x10c/0x138 [C00000000F8DF1E0] [C0000000002DFDB0] .e100_hw_reset+0x70/0xf4 [C00000000F8DF270] [C0000000002E1BBC] .e100_hw_init+0x2c/0x260 [C00000000F8DF310] [C0000000002E2464] .e100_loopback_test+0x8c/0x220 [C00000000F8DF3C0] [C0000000002E28DC] .e100_diag_test+0xdc/0x16c [C00000000F8DF490] [C000000000420BE0] .dev_ethtool+0xf24/0x14f8 [C00000000F8DF8F0] [C00000000041F4A8] .dev_ioctl+0x5cc/0x740 [C00000000F8DFA20] [C00000000040FEFC] .sock_ioctl+0x3d0/0x404 [C00000000F8DFAC0] [C0000000000D513C] .do_ioctl+0x68/0x108 [C00000000F8DFB50] [C0000000000D56B0] .vfs_ioctl+0x4d4/0x510 [C00000000F8DFC10] [C0000000000D5740] .sys_ioctl+0x54/0x94 [C00000000F8DFCC0] [C0000000000FB6EC] .ethtool_ioctl+0x11c/0x150 [C00000000F8DFD60] [C0000000000F7E40] .compat_sys_ioctl+0x338/0x3bc [C00000000F8DFE30] [C00000000000871C] syscall_exit+0x0/0x40 EEH: Detected PCI bus error on device 0000:21:01.0 EEH: This PCI device has failed 1 times since last reboot: - modprobe: FATAL: Could not load /lib/modules/2.6.16-rc4-git7/modules.dep: No such file or directory Cannot get strings: No such device (none):/# (none):/# EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2 (none):/# Call Trace: [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable) [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8 [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154 [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8 [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110 [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250 [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140 [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68 EEH: Detected PCI bus error on device EEH: This PCI device has failed 1 times since last reboot: - EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2 Call Trace: [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable) [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8 [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154 [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8 [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110 [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250 [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140 [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68 EEH: Detected PCI bus error on device EEH: This PCI device has failed 1 times since last reboot: - EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2 Call Trace: [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable) [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8 [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154 [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8 [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110 [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250 [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140 [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68 EEH: Detected PCI bus error on device and so on Signed-off-by: Olaf Hering Acked-by: Linas Vepstas Signed-off-by: Paul Mackerras commit 634473db86502b6444c3cebd279a06e0b8737527 Author: Benjamin Herrenschmidt Date: Sun Feb 26 08:09:00 2006 +1100 [PATCH] powerpc: vdso 64bits gettimeofday bug A bug in the assembly code of the vdso can cause gettimeofday() to hang or to return incorrect results. The wrong register was used to test for pending updates of the calibration variables and to create a dependency for subsequent loads. This fixes it. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 827c1a6c1a5dcb2902fecfb648f9af6a532934eb Author: John Rose Date: Fri Feb 24 11:34:23 2006 -0600 [PATCH] powerpc: fix dynamic PCI probe regression Some hotplug driver functions were migrated to the kernel for use by EEH in commit 2bf6a8fa21570f37fd1789610da30f70a05ac5e3. Previously, the PCI Hotplug module had been changed to use the new OFDT-based PCI probe when appropriate: 5fa80fcdca9d20d30c9ecec30d4dbff4ed93a5c6 When rpaphp_pci_config_slot() was moved from the rpaphp driver to the new kernel function pcibios_add_pci_devices(), the OFDT-based probe stuff was dropped. This patch restores it. Signed-off-by: John Rose Signed-off-by: Paul Mackerras commit 2cf82c0256b198ae28c465f2c4d7c12c836ea5ea Author: Paul Mackerras Date: Mon Feb 27 15:41:47 2006 +1100 powerpc: Export variables used in conversions to/from cputime_t The inline cputime_to_foo and foo_to_cputime conversion functions in include/asm-powerpc/cputime.h refer to 5 variables, which need to be exported if those functions are to be usable from modules. Signed-off-by: Paul Mackerras commit f055affb89f587a03f3411c3fd49ef31295c3d48 Author: Nick Piggin Date: Mon Feb 20 10:41:40 2006 +0100 [PATCH] powerpc: native atomic_add_unless Do atomic_add_unless natively instead of using cmpxchg. Improved register allocation idea from Joel Schopp. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 4f629d7db32decbadaab2abfa4d021fee94990ef Author: Nick Piggin Date: Mon Feb 20 10:40:28 2006 +0100 [PATCH] powerpc: newline for ISYNC_ON_SMP Add a newline at the end of the ISYNC_ON_SMP string. Needed for a subsequent patch. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 20f4eb3e502d68b12224577ebcd2cd50cc6e14e4 Author: David Gibson Date: Mon Feb 20 14:05:56 2006 +1100 [PATCH] powerpc: Fixup for STRICT_MM_TYPECHECKS Currently ARCH=powerpc will not compile when STRICT_MM_TYPECHECKS is turned on and CONFIG_64K_PAGES is turned off. This corrects the problem. Signed-off-by: David Gibson Signed-off-by: Paul Mackerras commit c6622f63db86fcbd41bf6fe05ddf2e00c1e51ced Author: Paul Mackerras Date: Fri Feb 24 10:06:59 2006 +1100 powerpc: Implement accurate task and CPU time accounting This implements accurate task and cpu time accounting for 64-bit powerpc kernels. Instead of accounting a whole jiffy of time to a task on a timer interrupt because that task happened to be running at the time, we now account time in units of timebase ticks according to the actual time spent by the task in user mode and kernel mode. We also count the time spent processing hardware and software interrupts accurately. This is conditional on CONFIG_VIRT_CPU_ACCOUNTING. If that is not set, we do tick-based approximate accounting as before. To get this accurate information, we read either the PURR (processor utilization of resources register) on POWER5 machines, or the timebase on other machines on * each entry to the kernel from usermode * each exit to usermode * transitions between process context, hard irq context and soft irq context in kernel mode * context switches. On POWER5 systems with shared-processor logical partitioning we also read both the PURR and the timebase at each timer interrupt and context switch in order to determine how much time has been taken by the hypervisor to run other partitions ("steal" time). Unfortunately, since we need values of the PURR on both threads at the same time to accurately calculate the steal time, and since we can only calculate steal time on a per-core basis, the apportioning of the steal time between idle time (time which we ceded to the hypervisor in the idle loop) and actual stolen time is somewhat approximate at the moment. This is all based quite heavily on what s390 does, and it uses the generic interfaces that were added by the s390 developers, i.e. account_system_time(), account_user_time(), etc. This patch doesn't add any new interfaces between the kernel and userspace, and doesn't change the units in which time is reported to userspace by things such as /proc/stat, /proc//stat, getrusage(), times(), etc. Internally the various task and cpu times are stored in timebase units, but they are converted to USER_HZ units (1/100th of a second) when reported to userspace. Some precision is therefore lost but there should not be any accumulating error, since the internal accumulation is at full precision. Signed-off-by: Paul Mackerras commit 774fee58c465ea1c7e9775e347ec307bcf2deeb3 Author: Geoff Levand Date: Thu Feb 2 15:41:48 2006 -0800 [PATCH] powerpc: Add missing vmlinux.bin target With this patch 'make vmlinux.bin' works. This is needed by some embedded platforms. Kumar already added the routines to actually build the image in arch/powerpc/boot/Makefile. Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 2ef9481e666b4654159ac9f847e6963809e3c470 Author: Jon Mason Date: Mon Jan 23 10:58:20 2006 -0600 [PATCH] powerpc: trivial: modify comments to refer to new location of files This patch removes all self references and fixes references to files in the now defunct arch/ppc64 tree. I think this accomplises everything wanted, though there might be a few references I missed. Signed-off-by: Jon Mason Signed-off-by: Paul Mackerras commit 75288c78c69020a574d93770c3a941b785f3d93d Author: Vitaly Bordug Date: Fri Jan 20 22:22:34 2006 +0300 [PATCH] ppc32: Make platform devices being able to assign functions Implemented by modification of the .name field of the platform device, when PDs with the same names are to be used within different drivers, as -> : Corresponding drivers should change the .name in struct device_driver to reflect upper of course. Added ppc_sys_device_disable/enable function set, making it easier to disable all the inexistent/not utilized platform device way pdevs. By the check of the "disabled" bit in the config field of ppc_sys_specs, disabled platform devices will be either added/removed from the bus, or simply not registered on it, depending on the time when disable/enable call asserted. The default behaviour when nothing is disabled/enabled will be "all devices are enabled", which is the same as before. Also helper platform_notify_map function added, making assignment of board-specific platform_info more consistent and generic. Signed-off-by: Vitaly Bordug Signed-off-by: Marcelo Tosatti Signed-off-by: Paul Mackerras commit 1965746bce49ddf001af52c7985e16343c768021 Author: Michael Ellerman Date: Fri Feb 10 15:47:36 2006 +1100 [PATCH] powerpc: Move pSeries firmware feature setup into platforms/pseries Currently we have some stuff in firmware.h and kernel/firmware.c that is #ifdef CONFIG_PPC_PSERIES. Move it all into platforms/pseries. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 0941d57aa7034ef7010bd523752c2e3bee569ef1 Author: Michael Ellerman Date: Fri Feb 10 15:47:32 2006 +1100 [PATCH] powerpc: Clean up pSeries firmware feature initialisation Clean up fw_feature_init in platforms/pseries/setup.c. Clean up white space and replace the while loop with a for loop - which seems clearer to me. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit a7cb03375d794d3494561bbad90aeab13ff7e4d0 Author: Becky Bruce Date: Wed Feb 8 16:41:26 2006 -0600 [PATCH] powerpc/ppc: Add missing isyncs in head_fsl_booke.S The e500 core reference manual indicates that isync is required after mtmsr(DE bit) and mtspr DBCR0. Add isyncs to make the code conform to the spec. Signed-off-by: Becky Bruce Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit fbc94e7c3d78d53c7fa671e02e5bb6fbb3254f85 Author: Becky Bruce Date: Tue Feb 7 21:29:42 2006 -0600 [PATCH] powerpc: lindent 85xx platform code Ran arch/powerpc/platforms/85xx through Lindent Signed-off-by: Becky Bruce Signed-off-by: Paul Mackerras commit e19217d42e3d12d74d9eca40827721a3ef1b251c Author: Becky Bruce Date: Tue Feb 7 21:27:34 2006 -0600 [PATCH] powerpc: rename mpc85xx.c to misc.c Rename mpc85xx.c to misc.c to match the pattern established by the 8349 port - consistency is a good thing. Also run Lindent on the file to clean it up. Signed-off-by: Becky Bruce Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 46ed55f647371008c33e06e61459192f96cc24ca Author: Becky Bruce Date: Tue Feb 7 21:22:52 2006 -0600 [PATCH] powerpc: mpc85xx_ads.c include file cleanup Cut-and-paste from the old platform code in arch/ppc resulted in arch/powerpc/platforms/85xx/mpc85xx_ads.c having way too many header files included. Clean this up. Signed-off-by: Becky Bruce Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 66f2d025e234d44e35ae5bcec328078c35b8a8fb Author: Becky Bruce Date: Tue Jan 31 17:52:59 2006 -0600 [PATCH] powerpc: Fix Kernel FP unavail exception for BookE Updated FP unavailable exception to refer to the correct function in traps.c. head_booke.h was using the old name, KernelFP, instead of kernel_fp_unavailable_exception. Signed-off-by: Becky Bruce Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit e060e084e7d9e1c62d02cb6b8d3fe07db5317eaa Author: Kumar Gala Date: Thu Feb 2 13:51:10 2006 -0600 [PATCH] powerpc: Lindent platforms/83xx Ran arch/powerpc/platforms/83xx through Lindent Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 30f5933657d17fbbc743ce9522543ba50ce2e834 Author: Kumar Gala Date: Thu Feb 2 13:50:44 2006 -0600 [PATCH] powerpc: Cleanup MPC83xx platform support Moved some code around so its usable by more systems than just the MPC834x SYS. Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 4b10cfd40e3fa1c1663b9c9fa22260d41e669c6f Author: Kumar Gala Date: Thu Feb 2 12:31:00 2006 -0600 [PATCH] powerpc: Add platform support for MPC834x USB controllers Setup the platform devices needed by the Freescale EHCI USB host controllers based on a flat device tree Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 158daa4cc827bda9f7206279a1dc55de2cb9c902 Author: Olaf Hering Date: Mon Jan 30 14:28:03 2006 +0100 [PATCH] powerpc: remove check for ELF offset in powerpc bootimage Do not check for offset, it is always set. Signed-off-by: Olaf Hering Signed-off-by: Paul Mackerras commit 155da5ff5798c46d941a836e0775f83ed888e73e Author: Domen Puncer Date: Thu Jan 26 13:50:01 2006 +0300 [PATCH] powerpc: Remove arch/ppc/syslib/ppc4xx_pm.c Remove nowhere referenced file ("grep ppc4xx_pm -r ." didn't find anything). Signed-off-by: Domen Puncer Signed-off-by: Alexey Dobriyan Signed-off-by: Paul Mackerras commit 56b5c9737cdd8814a10f3022fc0cef8af9ea9ba5 Author: Michael Ellerman Date: Wed Jan 25 21:31:36 2006 +1300 [PATCH] powerpc: Put parameter names in lmb.h prototypes Prototypes aren't so useful without parameter names, add them to lmb.h based on the names in lmb.c Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 3b9331dac16555e8788ae21723f2146c3f994ebb Author: Michael Ellerman Date: Wed Jan 25 21:31:30 2006 +1300 [PATCH] powerpc: Move LMB_ALLOC_ANYWHERE out of lmb.h LMB_ALLOC_ANYWHERE doesn't need to be part of the API, it's only used in lmb.c - so move it out of the header file. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit d7a5b2ffa1352f0310630934a56aecbdfb617b72 Author: Michael Ellerman Date: Wed Jan 25 21:31:28 2006 +1300 [PATCH] powerpc: Always panic if lmb_alloc() fails Currently most callers of lmb_alloc() don't check if it worked or not, if it ever does weird bad things will probably happen. The few callers who do check just panic or BUG_ON. So make lmb_alloc() panic internally, to catch bugs at the source. The few callers who did check the result no longer need to. The only caller that did anything interesting with the return result was careful_allocation(). For it we create __lmb_alloc_base() which _doesn't_ panic automatically, a little messy, but passable. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 2fb07d776b3c4473275eb225b6bf2a83755c9bfe Author: Kumar Gala Date: Mon Jan 23 16:58:04 2006 -0600 [PATCH] powerpc: cleaned up fsl_soc.c Cleaned up fsl_soc.c based on comments from Olof Johansson. Ran through Lindent, and split gfar_mdio init into its own function. Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit d2515c806ea2b602e99b9aa19448577c7f0318fb Author: Olaf Hering Date: Sun Jan 22 22:19:02 2006 +0100 [PATCH] powerpc: cleanup pmac_newworld variable usage remove extern declarations of pmac_newworld move pmac_newworld to bss if there is any "interrupt-controller" device, then it is newworld. Signed-off-by: Olaf Hering Signed-off-by: Paul Mackerras commit 42dc75c4b97922d3d7707ac0b097fbeeca20b108 Author: Vitaly Bordug Date: Fri Jan 20 22:22:36 2006 +0300 [PATCH] ppc32: MPC885ADS, MPC866ADS and MPC8272ADS-specific platform stuff for fs_enet Added proper ppc_sys identification and fs_platform_info's for MPC 885ADS, 866ADS and 8272ADS, utilizing function assignment to remove/do not use platform devices which conflict with PD-incompatible drivers. Signed-off-by: Vitaly Bordug Signed-off-by: Paul Mackerras commit b92891751600a1677c2b7f611f8b1e58d53388dc Author: Grant C. Likely Date: Thu Jan 19 01:13:45 2006 -0700 [PATCH] powerpc: Add ML403 defconfig Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 909aeca664dd1fe55111dc4ec25c1bebe91674a2 Author: Grant C. Likely Date: Thu Jan 19 01:13:37 2006 -0700 [PATCH] powerpc: Add support for Xilinx ML403 reference design Includes fix for Xilinx silicon errata 213 Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit b58b5aa51c78079fa4f652cd42e7b496a1d5411a Author: Grant C. Likely Date: Thu Jan 19 01:13:28 2006 -0700 [PATCH] powerpc: Add xparameters file for Xilinx ML403 reference design Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 72646c7f69acad3595cc69f82a6e664a23b05542 Author: Grant C. Likely Date: Thu Jan 19 01:13:20 2006 -0700 [PATCH] powerpc: Add Virtex-4 FX to cpu table Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 5eb446cb72f67fdb87b2a1dd16262b75edbe30bc Author: Grant C. Likely Date: Thu Jan 19 01:13:12 2006 -0700 [PATCH] powerpc: Add ML300 defconfig Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit e27db622b850e6426b69ef42e5678ba068c7f8e0 Author: Grant C. Likely Date: Thu Jan 19 01:13:03 2006 -0700 [PATCH] powerpc: Migrate ML300 reference design to the platform bus Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 1a42e53d175074f340a3f85042ed64cfc51be216 Author: Grant C. Likely Date: Thu Jan 19 01:12:48 2006 -0700 [PATCH] powerpc: Migrate Xilinx Vertex support from the OCP bus to the platfom bus. This patch only deals with the serial port definitions as there is no support for any other xilinx IP cores in the kernel tree at the moment. Board specific configuration moved out of virtex.[ch] and into the xparameters.h wrapper. This also prepares for the transition to the flattened device tree model. When the bootloader provides a device tree generated from an xparameters.h files, the kernel will no longer need xparameters/*. The platform bus will get populated with data from the device tree, and the device drivers will be automatically connected to the devices. Only the bootloader (or ppcboot) will need xparameters directly. Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 562e7370a4d59d7ee8988fb0e13707d1f01a046a Author: Grant C. Likely Date: Thu Jan 19 01:12:40 2006 -0700 [PATCH] powerpc: Make Virtex-II Pro support generic for all Virtex devices The PPC405 hard core is used in both the Virtex-II Pro and Virtex 4 FX FPGAs. This patch cleans up the Virtex naming convention to reflect more than just the Virtex-II Pro. Rename files virtex-ii_pro.[ch] to virtex.[ch] Rename config value VIRTEX_II_PRO to XILINX_VIRTEX Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit b4367e7451f19a3ae8b453e8b7ac0a1fdd9bca04 Author: Grant C. Likely Date: Thu Jan 19 01:12:32 2006 -0700 [PATCH] powerpc: Move xparameters.h into xilinx virtex device specific path xparameters should not be needed by anything but virtex platform code. Move it from include/asm-ppc/ to platforms/4xx/xparameters/ This is preparing for work to remove xparameters from the dependancy tree for most c files. xparam changes should not cause a recompile of the world. Instead, drivers should get device info from the platform bus (populated by the boot code) Signed-off-by: Grant C. Likely Signed-off-by: Paul Mackerras commit 076d022c566fddde41fd4a858dd24bacad8304d7 Author: Vitaly Bordug Date: Tue Jan 17 22:22:27 2006 +0300 [PATCH] PPC32 8xx: support for the physmapped flash on m8xx Implemented more correct way to support physmapped flash on m8xx than map in mtd. The areas intended to contain bootloader are protected readonly. Note that CFI and JEDEC stuff should be configured properly in order this to work, e.g. for 885/86x CFI should support 4-chip flash interleave. Also fixed compilation warning. Signed-off-by: Vitaly Bordug Signed-off-by: Paul Mackerras commit 0ec57e53c945fe962b190953f61e1ffd127e68d3 Author: Marcelo Tosatti Date: Tue Jan 17 00:24:42 2006 -0200 [PATCH] powerpc: generalize PPC44x_PIN_SIZE The following patch generalizes PPC44x_PIN_SIZE by changing it to PPC_PIN_SIZE, which can be defined by any sub-arch to automatically adjust VMALLOC_START. Define PPC_PIN_SIZE on 8xx, avoiding potential conflicts with the pinned space. Signed-off-by: Marcelo Tosatti Signed-off-by: Paul Mackerras commit f4fc4a5b74cff2a487222f05704a2bd01953d250 Author: Kumar Gala Date: Mon Jan 16 10:53:22 2006 -0600 [PATCH] powerpc: Add CONFIG_DEFAULT_UIMAGE to build a uImage by default for a board Embedded boards that u-boot require a kernel image in the uImage format. This allows a given board to specify it wants a uImage built by default. Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 0ce928e1b2ad4309fae6c4324b9e9e433fbf62a2 Author: Vitaly Bordug Date: Sun Jan 15 17:30:29 2006 +0300 [PATCH] ppc32 8xx: Added setbitsXX/clrbitsXX macro for read-modify-write operations This adds setbitsXX/clrbitsXX macro for read-modify-write operations and converts the 8xx core and drivers to use them. Signed-off-by: Vitaly Bordug Signed-off-by: Marcelo Tosatti Signed-off-by: Paul Mackerras commit 63dafe5728e7354bc3f15bd49f13f1f9a433e8fb Author: Becky Bruce Date: Sat Jan 14 16:57:39 2006 -0600 [PATCH] powerpc: Updated Initial MPC8540 ADS port with OF Flat Dev Updated patch for support for mpc8540_ads in arch/powerpc with a flat OF device tree. This patch does not yet support PCI or I2C. Signed-off-by: Becky Bruce Signed-off-by: Jon Loeliger Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras --- Signed-off-by: Andrew Morton --- dev/null | 224 --- powerpc/kernel/vdso64/gettimeofday.S | 0 Documentation/powerpc/eeh-pci-error-recovery.txt | 15 arch/powerpc/Kconfig | 38 arch/powerpc/Makefile | 2 arch/powerpc/boot/install.sh | 2 arch/powerpc/boot/main.c | 4 arch/powerpc/configs/mpc8540_ads_defconfig | 721 +++++++++ arch/powerpc/kernel/asm-offsets.c | 3 arch/powerpc/kernel/cputable.c | 12 arch/powerpc/kernel/entry_64.S | 11 arch/powerpc/kernel/firmware.c | 25 arch/powerpc/kernel/head_44x.S | 2 arch/powerpc/kernel/head_64.S | 11 arch/powerpc/kernel/head_8xx.S | 2 arch/powerpc/kernel/head_booke.h | 363 ++++ arch/powerpc/kernel/head_fsl_booke.S | 6 arch/powerpc/kernel/iomap.c | 2 arch/powerpc/kernel/iommu.c | 1 arch/powerpc/kernel/irq.c | 32 arch/powerpc/kernel/kprobes.c | 1 arch/powerpc/kernel/pci_iommu.c | 1 arch/powerpc/kernel/ppc_ksyms.c | 1 arch/powerpc/kernel/process.c | 9 arch/powerpc/kernel/prom.c | 4 arch/powerpc/kernel/ptrace-common.h | 2 arch/powerpc/kernel/rtas-proc.c | 1 arch/powerpc/kernel/rtas_pci.c | 2 arch/powerpc/kernel/signal_64.c | 2 arch/powerpc/kernel/smp.c | 4 arch/powerpc/kernel/time.c | 241 +++ arch/powerpc/kernel/vdso.c | 2 arch/powerpc/lib/copypage_64.S | 2 arch/powerpc/lib/copyuser_64.S | 2 arch/powerpc/lib/e2a.c | 4 arch/powerpc/lib/memcpy_64.S | 2 arch/powerpc/lib/rheap.c | 2 arch/powerpc/mm/fault.c | 2 arch/powerpc/mm/hash_low_32.S | 2 arch/powerpc/mm/hash_utils_64.c | 3 arch/powerpc/mm/lmb.c | 16 arch/powerpc/mm/mem.c | 1 arch/powerpc/mm/mmap.c | 2 arch/powerpc/mm/numa.c | 4 arch/powerpc/mm/slb_low.S | 2 arch/powerpc/mm/stab.c | 4 arch/powerpc/mm/tlb_64.c | 2 arch/powerpc/platforms/83xx/Makefile | 4 arch/powerpc/platforms/83xx/misc.c | 55 arch/powerpc/platforms/83xx/mpc834x_sys.c | 89 - arch/powerpc/platforms/83xx/mpc834x_sys.h | 2 arch/powerpc/platforms/83xx/mpc83xx.h | 5 arch/powerpc/platforms/83xx/pci.c | 21 arch/powerpc/platforms/85xx/Kconfig | 74 - arch/powerpc/platforms/85xx/Makefile | 5 arch/powerpc/platforms/85xx/misc.c | 31 arch/powerpc/platforms/85xx/mpc8540_ads.h | 60 arch/powerpc/platforms/85xx/mpc85xx.h | 17 arch/powerpc/platforms/85xx/mpc85xx_ads.c | 177 ++ arch/powerpc/platforms/Makefile | 2 arch/powerpc/platforms/chrp/pegasos_eth.c | 2 arch/powerpc/platforms/chrp/setup.c | 2 arch/powerpc/platforms/chrp/time.c | 2 arch/powerpc/platforms/maple/time.c | 2 arch/powerpc/platforms/powermac/cpufreq_32.c | 2 arch/powerpc/platforms/powermac/feature.c | 2 arch/powerpc/platforms/powermac/nvram.c | 2 arch/powerpc/platforms/powermac/setup.c | 8 arch/powerpc/platforms/pseries/Makefile | 3 arch/powerpc/platforms/pseries/eeh.c | 14 arch/powerpc/platforms/pseries/eeh_driver.c | 2 arch/powerpc/platforms/pseries/firmware.c | 103 + arch/powerpc/platforms/pseries/firmware.h | 17 arch/powerpc/platforms/pseries/hvCall.S | 2 arch/powerpc/platforms/pseries/iommu.c | 2 arch/powerpc/platforms/pseries/pci.c | 2 arch/powerpc/platforms/pseries/pci_dlpar.c | 36 arch/powerpc/platforms/pseries/setup.c | 49 arch/powerpc/sysdev/dart_iommu.c | 2 arch/powerpc/sysdev/dcr.S | 2 arch/powerpc/sysdev/fsl_soc.c | 292 +++ arch/powerpc/sysdev/ipic.h | 2 arch/ppc/4xx_io/serial_sicc.c | 2 arch/ppc/8xx_io/commproc.c | 6 arch/ppc/Kconfig | 47 arch/ppc/Kconfig.debug | 2 arch/ppc/amiga/amiints.c | 2 arch/ppc/amiga/bootinfo.c | 2 arch/ppc/amiga/cia.c | 2 arch/ppc/amiga/config.c | 2 arch/ppc/amiga/ints.c | 2 arch/ppc/boot/Makefile | 3 arch/ppc/boot/common/Makefile | 3 arch/ppc/boot/common/bootinfo.c | 2 arch/ppc/boot/common/misc-common.c | 2 arch/ppc/boot/common/ns16550.c | 3 arch/ppc/boot/common/serial_stub.c | 2 arch/ppc/boot/common/util.S | 2 arch/ppc/boot/include/mpc10x.h | 2 arch/ppc/boot/simple/Makefile | 1 arch/ppc/boot/simple/cpc700_memory.c | 2 arch/ppc/boot/simple/embed_config.c | 7 arch/ppc/boot/simple/head.S | 9 arch/ppc/boot/simple/misc-chestnut.c | 2 arch/ppc/boot/simple/misc-cpci690.c | 2 arch/ppc/boot/simple/misc-ev64260.c | 2 arch/ppc/boot/simple/misc-ev64360.c | 1 arch/ppc/boot/simple/misc-katana.c | 2 arch/ppc/boot/simple/misc-mv64x60.c | 2 arch/ppc/boot/simple/misc-prep.c | 2 arch/ppc/boot/simple/misc-radstone_ppc7d.c | 2 arch/ppc/boot/simple/misc-spruce.c | 2 arch/ppc/boot/simple/misc.c | 2 arch/ppc/boot/simple/mpc10x_memory.c | 2 arch/ppc/boot/simple/mpc52xx_tty.c | 2 arch/ppc/boot/simple/mv64x60_tty.c | 2 arch/ppc/boot/simple/openbios.c | 2 arch/ppc/boot/simple/relocate.S | 2 arch/ppc/boot/utils/mkbugboot.c | 2 arch/ppc/configs/ml300_defconfig | 739 +++++++++ arch/ppc/configs/ml403_defconfig | 740 ++++++++++ arch/ppc/kernel/head_44x.S | 2 arch/ppc/kernel/head_8xx.S | 2 arch/ppc/kernel/head_fsl_booke.S | 6 arch/ppc/kernel/traps.c | 2 arch/ppc/lib/rheap.c | 2 arch/ppc/math-emu/math.c | 2 arch/ppc/mm/44x_mmu.c | 4 arch/ppc/mm/fault.c | 2 arch/ppc/mm/hashtable.S | 2 arch/ppc/platforms/4xx/Kconfig | 23 arch/ppc/platforms/4xx/Makefile | 4 arch/ppc/platforms/4xx/bamboo.c | 2 arch/ppc/platforms/4xx/bamboo.h | 2 arch/ppc/platforms/4xx/bubinga.h | 2 arch/ppc/platforms/4xx/cpci405.c | 2 arch/ppc/platforms/4xx/ebony.c | 2 arch/ppc/platforms/4xx/ebony.h | 2 arch/ppc/platforms/4xx/ep405.c | 2 arch/ppc/platforms/4xx/ep405.h | 2 arch/ppc/platforms/4xx/ibm405ep.c | 2 arch/ppc/platforms/4xx/ibm405ep.h | 2 arch/ppc/platforms/4xx/ibm405gp.h | 2 arch/ppc/platforms/4xx/ibm405gpr.c | 2 arch/ppc/platforms/4xx/ibm405gpr.h | 2 arch/ppc/platforms/4xx/ibm440ep.c | 2 arch/ppc/platforms/4xx/ibm440ep.h | 2 arch/ppc/platforms/4xx/ibm440gp.c | 2 arch/ppc/platforms/4xx/ibm440gp.h | 2 arch/ppc/platforms/4xx/ibm440gx.c | 2 arch/ppc/platforms/4xx/ibm440gx.h | 2 arch/ppc/platforms/4xx/ibm440sp.c | 2 arch/ppc/platforms/4xx/ibm440sp.h | 2 arch/ppc/platforms/4xx/ibmnp405h.c | 2 arch/ppc/platforms/4xx/ibmnp405h.h | 2 arch/ppc/platforms/4xx/ibmstb4.c | 2 arch/ppc/platforms/4xx/ibmstb4.h | 2 arch/ppc/platforms/4xx/ibmstbx25.c | 2 arch/ppc/platforms/4xx/ibmstbx25.h | 2 arch/ppc/platforms/4xx/luan.c | 2 arch/ppc/platforms/4xx/luan.h | 2 arch/ppc/platforms/4xx/ocotea.c | 2 arch/ppc/platforms/4xx/ocotea.h | 2 arch/ppc/platforms/4xx/ppc440spe.c | 2 arch/ppc/platforms/4xx/ppc440spe.h | 2 arch/ppc/platforms/4xx/redwood5.c | 2 arch/ppc/platforms/4xx/redwood5.h | 2 arch/ppc/platforms/4xx/redwood6.c | 2 arch/ppc/platforms/4xx/redwood6.h | 2 arch/ppc/platforms/4xx/sycamore.c | 2 arch/ppc/platforms/4xx/sycamore.h | 2 arch/ppc/platforms/4xx/virtex.c | 56 arch/ppc/platforms/4xx/virtex.h | 35 arch/ppc/platforms/4xx/walnut.c | 2 arch/ppc/platforms/4xx/walnut.h | 2 arch/ppc/platforms/4xx/xilinx_ml300.c | 76 - arch/ppc/platforms/4xx/xilinx_ml300.h | 6 arch/ppc/platforms/4xx/xilinx_ml403.c | 177 ++ arch/ppc/platforms/4xx/xilinx_ml403.h | 49 arch/ppc/platforms/4xx/xparameters/xparameters.h | 37 arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h | 243 +++ arch/ppc/platforms/4xx/yucca.c | 2 arch/ppc/platforms/4xx/yucca.h | 2 arch/ppc/platforms/83xx/mpc834x_sys.c | 2 arch/ppc/platforms/83xx/mpc834x_sys.h | 2 arch/ppc/platforms/85xx/mpc8540_ads.c | 2 arch/ppc/platforms/85xx/mpc8540_ads.h | 2 arch/ppc/platforms/85xx/mpc8555_cds.h | 2 arch/ppc/platforms/85xx/mpc8560_ads.c | 2 arch/ppc/platforms/85xx/mpc8560_ads.h | 2 arch/ppc/platforms/85xx/mpc85xx_ads_common.c | 2 arch/ppc/platforms/85xx/mpc85xx_ads_common.h | 2 arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 2 arch/ppc/platforms/85xx/mpc85xx_cds_common.h | 2 arch/ppc/platforms/85xx/sbc8560.c | 2 arch/ppc/platforms/85xx/sbc8560.h | 2 arch/ppc/platforms/85xx/sbc85xx.c | 2 arch/ppc/platforms/85xx/sbc85xx.h | 2 arch/ppc/platforms/85xx/stx_gp3.c | 2 arch/ppc/platforms/85xx/stx_gp3.h | 2 arch/ppc/platforms/85xx/tqm85xx.c | 2 arch/ppc/platforms/85xx/tqm85xx.h | 2 arch/ppc/platforms/Makefile | 3 arch/ppc/platforms/apus_setup.c | 2 arch/ppc/platforms/chestnut.c | 2 arch/ppc/platforms/chestnut.h | 2 arch/ppc/platforms/chrp_pegasos_eth.c | 2 arch/ppc/platforms/chrp_setup.c | 2 arch/ppc/platforms/chrp_time.c | 2 arch/ppc/platforms/cpci690.c | 2 arch/ppc/platforms/cpci690.h | 2 arch/ppc/platforms/ev64260.c | 2 arch/ppc/platforms/ev64260.h | 2 arch/ppc/platforms/ev64360.c | 2 arch/ppc/platforms/ev64360.h | 2 arch/ppc/platforms/fads.h | 2 arch/ppc/platforms/gemini.h | 3 arch/ppc/platforms/gemini_prom.S | 2 arch/ppc/platforms/gemini_setup.c | 2 arch/ppc/platforms/hdpu.c | 3 arch/ppc/platforms/hdpu.h | 2 arch/ppc/platforms/katana.c | 2 arch/ppc/platforms/katana.h | 2 arch/ppc/platforms/lite5200.c | 2 arch/ppc/platforms/lite5200.h | 2 arch/ppc/platforms/lopec.c | 2 arch/ppc/platforms/mpc8272ads_setup.c | 236 +++ arch/ppc/platforms/mpc866ads_setup.c | 273 +++ arch/ppc/platforms/mpc885ads_setup.c | 389 +++++ arch/ppc/platforms/mvme5100.c | 2 arch/ppc/platforms/pal4.h | 2 arch/ppc/platforms/pal4_pci.c | 2 arch/ppc/platforms/pal4_serial.h | 2 arch/ppc/platforms/pal4_setup.c | 2 arch/ppc/platforms/powerpmc250.c | 2 arch/ppc/platforms/pplus.c | 2 arch/ppc/platforms/pplus.h | 2 arch/ppc/platforms/pq2ads.c | 2 arch/ppc/platforms/pq2ads.h | 4 arch/ppc/platforms/pq2ads_pd.h | 114 + arch/ppc/platforms/prep_setup.c | 2 arch/ppc/platforms/prpmc750.c | 2 arch/ppc/platforms/prpmc800.c | 2 arch/ppc/platforms/radstone_ppc7d.c | 2 arch/ppc/platforms/radstone_ppc7d.h | 2 arch/ppc/platforms/sandpoint.c | 2 arch/ppc/platforms/sandpoint.h | 2 arch/ppc/platforms/sbc82xx.c | 2 arch/ppc/platforms/spruce.c | 2 arch/ppc/platforms/tqm8260_setup.c | 2 arch/ppc/syslib/Makefile | 4 arch/ppc/syslib/cpc700.h | 2 arch/ppc/syslib/cpc700_pic.c | 2 arch/ppc/syslib/cpc710.h | 2 arch/ppc/syslib/gen550.h | 2 arch/ppc/syslib/gen550_dbg.c | 2 arch/ppc/syslib/gen550_kgdb.c | 2 arch/ppc/syslib/gt64260_pic.c | 2 arch/ppc/syslib/harrier.c | 2 arch/ppc/syslib/hawk_common.c | 2 arch/ppc/syslib/ibm440gp_common.c | 2 arch/ppc/syslib/ibm440gp_common.h | 2 arch/ppc/syslib/ibm440gx_common.c | 2 arch/ppc/syslib/ibm440gx_common.h | 2 arch/ppc/syslib/ibm440sp_common.c | 2 arch/ppc/syslib/ibm440sp_common.h | 2 arch/ppc/syslib/ibm44x_common.c | 2 arch/ppc/syslib/ibm44x_common.h | 2 arch/ppc/syslib/m8260_pci_erratum9.c | 2 arch/ppc/syslib/m8260_setup.c | 2 arch/ppc/syslib/m8xx_setup.c | 65 arch/ppc/syslib/m8xx_wdt.c | 3 arch/ppc/syslib/mpc10x_common.c | 2 arch/ppc/syslib/mpc52xx_devices.c | 2 arch/ppc/syslib/mpc52xx_pci.c | 2 arch/ppc/syslib/mpc52xx_pci.h | 2 arch/ppc/syslib/mpc52xx_pic.c | 2 arch/ppc/syslib/mpc52xx_setup.c | 2 arch/ppc/syslib/mpc52xx_sys.c | 2 arch/ppc/syslib/mpc83xx_devices.c | 2 arch/ppc/syslib/mpc83xx_sys.c | 2 arch/ppc/syslib/mpc85xx_devices.c | 2 arch/ppc/syslib/mpc85xx_sys.c | 2 arch/ppc/syslib/mpc8xx_devices.c | 2 arch/ppc/syslib/mpc8xx_sys.c | 2 arch/ppc/syslib/mv64360_pic.c | 2 arch/ppc/syslib/mv64x60.c | 2 arch/ppc/syslib/mv64x60_dbg.c | 2 arch/ppc/syslib/mv64x60_win.c | 2 arch/ppc/syslib/open_pic.c | 2 arch/ppc/syslib/open_pic2.c | 2 arch/ppc/syslib/open_pic_defs.h | 2 arch/ppc/syslib/pci_auto.c | 2 arch/ppc/syslib/ppc4xx_dma.c | 2 arch/ppc/syslib/ppc4xx_pic.c | 2 arch/ppc/syslib/ppc4xx_sgdma.c | 2 arch/ppc/syslib/ppc83xx_setup.c | 2 arch/ppc/syslib/ppc83xx_setup.h | 2 arch/ppc/syslib/ppc85xx_common.c | 2 arch/ppc/syslib/ppc85xx_common.h | 2 arch/ppc/syslib/ppc85xx_setup.c | 2 arch/ppc/syslib/ppc85xx_setup.h | 2 arch/ppc/syslib/ppc_sys.c | 179 ++ arch/ppc/syslib/pq2_devices.c | 2 arch/ppc/syslib/pq2_sys.c | 2 arch/ppc/syslib/prep_nvram.c | 2 arch/ppc/syslib/todc_time.c | 2 arch/ppc/syslib/xilinx_pic.c | 4 drivers/char/hvcs.c | 9 include/asm-powerpc/atomic.h | 38 include/asm-powerpc/cputable.h | 4 include/asm-powerpc/cputime.h | 202 ++ include/asm-powerpc/eeh.h | 7 include/asm-powerpc/firmware.h | 9 include/asm-powerpc/irq.h | 6 include/asm-powerpc/lmb.h | 17 include/asm-powerpc/paca.h | 7 include/asm-powerpc/pgtable-4k.h | 11 include/asm-powerpc/ppc_asm.h | 42 include/asm-powerpc/rwsem.h | 2 include/asm-powerpc/synch.h | 2 include/asm-powerpc/system.h | 4 include/asm-powerpc/time.h | 15 include/asm-ppc/harrier.h | 2 include/asm-ppc/ibm44x.h | 2 include/asm-ppc/ibm4xx.h | 4 include/asm-ppc/io.h | 7 include/asm-ppc/mpc10x.h | 3 include/asm-ppc/mpc52xx.h | 1 include/asm-ppc/mpc8260.h | 1 include/asm-ppc/mpc83xx.h | 1 include/asm-ppc/mpc85xx.h | 1 include/asm-ppc/mpc8xx.h | 3 include/asm-ppc/pgtable.h | 6 include/asm-ppc/ppc_sys.h | 34 include/asm-ppc/time.h | 5 include/asm-ppc/todc.h | 2 kernel/auditsc.c | 2 lib/extable.c | 1 339 files changed, 6105 insertions(+), 1168 deletions(-) diff -puN arch/powerpc/boot/install.sh~git-powerpc arch/powerpc/boot/install.sh --- devel/arch/powerpc/boot/install.sh~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/boot/install.sh 2006-02-27 22:37:56.000000000 -0800 @@ -1,7 +1,5 @@ #!/bin/sh # -# arch/ppc64/boot/install.sh -# # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive # for more details. diff -puN arch/powerpc/boot/main.c~git-powerpc arch/powerpc/boot/main.c --- devel/arch/powerpc/boot/main.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/boot/main.c 2006-02-27 22:37:56.000000000 -0800 @@ -152,7 +152,7 @@ static int is_elf64(void *hdr) elf64ph = (Elf64_Phdr *)((unsigned long)elf64 + (unsigned long)elf64->e_phoff); for (i = 0; i < (unsigned int)elf64->e_phnum; i++, elf64ph++) - if (elf64ph->p_type == PT_LOAD && elf64ph->p_offset != 0) + if (elf64ph->p_type == PT_LOAD) break; if (i >= (unsigned int)elf64->e_phnum) return 0; @@ -193,7 +193,7 @@ static int is_elf32(void *hdr) elf32 = (Elf32_Ehdr *)elfheader; elf32ph = (Elf32_Phdr *) ((unsigned long)elf32 + elf32->e_phoff); for (i = 0; i < elf32->e_phnum; i++, elf32ph++) - if (elf32ph->p_type == PT_LOAD && elf32ph->p_offset != 0) + if (elf32ph->p_type == PT_LOAD) break; if (i >= elf32->e_phnum) return 0; diff -puN /dev/null arch/powerpc/configs/mpc8540_ads_defconfig --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/configs/mpc8540_ads_defconfig 2006-02-27 22:37:56.000000000 -0800 @@ -0,0 +1,721 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: +# Sat Jan 14 15:57:54 2006 +# +# CONFIG_PPC64 is not set +CONFIG_PPC32=y +CONFIG_PPC_MERGE=y +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_PPC=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_NVRAM=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_PPC_OF=y +CONFIG_PPC_UDBG_16550=y +# CONFIG_GENERIC_TBSYNC is not set + +# +# Processor support +# +# CONFIG_CLASSIC32 is not set +# CONFIG_PPC_52xx is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +CONFIG_PPC_85xx=y +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_8xx is not set +# CONFIG_E200 is not set +CONFIG_85xx=y +CONFIG_E500=y +CONFIG_BOOKE=y +CONFIG_FSL_BOOKE=y +# CONFIG_PHYS_64BIT is not set +CONFIG_SPE=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_EMBEDDED=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set + +# +# Loadable module support +# +# CONFIG_MODULES is not set + +# +# Block layer +# +# CONFIG_LBD is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_MPIC=y +# CONFIG_WANT_EARLY_SERIAL is not set + +# +# Platform support +# +CONFIG_MPC8540_ADS=y +CONFIG_MPC8540=y +CONFIG_PPC_INDIRECT_PCI_BE=y + +# +# Kernel options +# +# CONFIG_HIGHMEM is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=y +CONFIG_MATH_EMULATION=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_PROC_DEVICETREE=y +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_PM is not set +# CONFIG_SOFTWARE_SUSPEND is not set +# CONFIG_SECCOMP is not set +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +# CONFIG_PPC_I8259 is not set +CONFIG_PPC_INDIRECT_PCI=y +CONFIG_FSL_SOC=y +# CONFIG_PCI is not set +# CONFIG_PCI_DOMAINS is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# PCI Hotplug Support +# + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +CONFIG_BOOT_LOAD=0x00800000 + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set +# CONFIG_DEBUG_DRIVER is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32768 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# I2O device support +# + +# +# Macintosh device drivers +# +# CONFIG_WINDFARM is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# PHY device support +# +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=y + +# +# Ethernet (1000 Mbit) +# +CONFIG_GIANFAR=y +CONFIG_GFAR_NAPI=y + +# +# Ethernet (10000 Mbit) +# + +# +# Token Ring devices +# + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +# CONFIG_VT is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +CONFIG_GEN_RTC=y +# CONFIG_GEN_RTC_X is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_AGP is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Hardware Monitoring support +# +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB_ARCH_HAS_HCD is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# + +# +# SN Devices +# + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_NFSD is not set +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MSDOS_PARTITION is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_EFI_PARTITION is not set + +# +# Native Language Support +# +# CONFIG_NLS is not set + +# +# Library routines +# +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_LIBCRC32C is not set + +# +# Instrumentation Support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_DEBUGGER is not set +# CONFIG_BDI_SWITCH is not set +# CONFIG_BOOTX_TEXT is not set +# CONFIG_PPC_EARLY_DEBUG_LPAR is not set +# CONFIG_PPC_EARLY_DEBUG_G5 is not set +# CONFIG_PPC_EARLY_DEBUG_RTAS is not set +# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set +# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Hardware crypto devices +# diff -puN arch/powerpc/Kconfig~git-powerpc arch/powerpc/Kconfig --- devel/arch/powerpc/Kconfig~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/Kconfig 2006-02-27 22:37:56.000000000 -0800 @@ -127,6 +127,12 @@ config PPC_83xx select 83xx select PPC_FPU +config PPC_85xx + bool "Freescale 85xx" + select E500 + select FSL_SOC + select 85xx + config 40x bool "AMCC 40x" @@ -139,8 +145,6 @@ config 8xx config E200 bool "Freescale e200" -config E500 - bool "Freescale e500" endchoice config POWER4_ONLY @@ -168,6 +172,13 @@ config 6xx config 83xx bool +# this is temp to handle compat with arch=ppc +config 85xx + bool + +config E500 + bool + config PPC_FPU bool default y if PPC64 @@ -217,6 +228,7 @@ config ALTIVEC config SPE bool "SPE Support" depends on E200 || E500 + default y ---help--- This option enables kernel support for the Signal Processing Extensions (SPE) to the PowerPC processor. The kernel currently @@ -238,6 +250,21 @@ config PPC_STD_MMU_32 def_bool y depends on PPC_STD_MMU && PPC32 +config VIRT_CPU_ACCOUNTING + bool "Deterministic task and CPU time accounting" + depends on PPC64 + default y + help + Select this option to enable more accurate task and CPU time + accounting. This is done by reading a CPU counter on each + kernel entry and exit and on transitions within the kernel + between system, softirq and hardirq state, so there is a + small performance impact. This also enables accounting of + stolen time on logically-partitioned systems running on + IBM POWER5-based machines. + + If in doubt, say Y here. + config SMP depends on PPC_STD_MMU bool "Symmetric multi-processing support" @@ -734,13 +761,12 @@ config GENERIC_ISA_DMA config PPC_I8259 bool - default y if 85xx default n config PPC_INDIRECT_PCI bool depends on PCI - default y if 40x || 44x || 85xx + default y if 40x || 44x default n config EISA @@ -757,8 +783,8 @@ config MCA bool config PCI - bool "PCI support" if 40x || CPM2 || PPC_83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES) - default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx && !85xx + bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES) + default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx && !PPC_85xx default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS default PCI_QSPAN if !4xx && !CPM2 && 8xx help diff -puN arch/powerpc/kernel/asm-offsets.c~git-powerpc arch/powerpc/kernel/asm-offsets.c --- devel/arch/powerpc/kernel/asm-offsets.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/asm-offsets.c 2006-02-27 22:37:56.000000000 -0800 @@ -137,6 +137,9 @@ int main(void) DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp)); DEFINE(PACALPPACAPTR, offsetof(struct paca_struct, lppaca_ptr)); DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id)); + DEFINE(PACA_STARTPURR, offsetof(struct paca_struct, startpurr)); + DEFINE(PACA_USER_TIME, offsetof(struct paca_struct, user_time)); + DEFINE(PACA_SYSTEM_TIME, offsetof(struct paca_struct, system_time)); DEFINE(LPPACASRR0, offsetof(struct lppaca, saved_srr0)); DEFINE(LPPACASRR1, offsetof(struct lppaca, saved_srr1)); diff -puN arch/powerpc/kernel/cputable.c~git-powerpc arch/powerpc/kernel/cputable.c --- devel/arch/powerpc/kernel/cputable.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/cputable.c 2006-02-27 22:37:56.000000000 -0800 @@ -891,7 +891,7 @@ struct cpu_spec cpu_specs[] = { .platform = "ppc405", }, { /* Xilinx Virtex-II Pro */ - .pvr_mask = 0xffff0000, + .pvr_mask = 0xfffff000, .pvr_value = 0x20010000, .cpu_name = "Virtex-II Pro", .cpu_features = CPU_FTRS_40X, @@ -901,6 +901,16 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 32, .platform = "ppc405", }, + { /* Xilinx Virtex-4 FX */ + .pvr_mask = 0xfffff000, + .pvr_value = 0x20011000, + .cpu_name = "Virtex-4 FX", + .cpu_features = CPU_FTRS_40X, + .cpu_user_features = PPC_FEATURE_32 | + PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, + .icache_bsize = 32, + .dcache_bsize = 32, + }, { /* 405EP */ .pvr_mask = 0xffff0000, .pvr_value = 0x51210000, diff -puN arch/powerpc/kernel/entry_64.S~git-powerpc arch/powerpc/kernel/entry_64.S --- devel/arch/powerpc/kernel/entry_64.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/entry_64.S 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/entry.S - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP @@ -63,6 +61,7 @@ system_call_common: std r12,_MSR(r1) std r0,GPR0(r1) std r10,GPR1(r1) + ACCOUNT_CPU_USER_ENTRY(r10, r11) std r2,GPR2(r1) std r3,GPR3(r1) std r4,GPR4(r1) @@ -170,8 +169,9 @@ syscall_error_cont: stdcx. r0,0,r1 /* to clear the reservation */ andi. r6,r8,MSR_PR ld r4,_LINK(r1) - beq- 1f /* only restore r13 if */ - ld r13,GPR13(r1) /* returning to usermode */ + beq- 1f + ACCOUNT_CPU_USER_EXIT(r11, r12) + ld r13,GPR13(r1) /* only restore r13 if returning to usermode */ 1: ld r2,GPR2(r1) li r12,MSR_RI andc r11,r10,r12 @@ -374,7 +374,7 @@ _GLOBAL(ret_from_fork) * the fork code also. * * The code which creates the new task context is in 'copy_thread' - * in arch/ppc64/kernel/process.c + * in arch/powerpc/kernel/process.c */ .align 7 _GLOBAL(_switch) @@ -538,6 +538,7 @@ restore: * userspace */ beq 1f + ACCOUNT_CPU_USER_EXIT(r3, r4) REST_GPR(13, r1) 1: ld r3,_CTR(r1) diff -puN arch/powerpc/kernel/firmware.c~git-powerpc arch/powerpc/kernel/firmware.c --- devel/arch/powerpc/kernel/firmware.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/firmware.c 2006-02-27 22:37:56.000000000 -0800 @@ -18,28 +18,3 @@ #include unsigned long ppc64_firmware_features; - -#ifdef CONFIG_PPC_PSERIES -firmware_feature_t firmware_features_table[FIRMWARE_MAX_FEATURES] = { - {FW_FEATURE_PFT, "hcall-pft"}, - {FW_FEATURE_TCE, "hcall-tce"}, - {FW_FEATURE_SPRG0, "hcall-sprg0"}, - {FW_FEATURE_DABR, "hcall-dabr"}, - {FW_FEATURE_COPY, "hcall-copy"}, - {FW_FEATURE_ASR, "hcall-asr"}, - {FW_FEATURE_DEBUG, "hcall-debug"}, - {FW_FEATURE_PERF, "hcall-perf"}, - {FW_FEATURE_DUMP, "hcall-dump"}, - {FW_FEATURE_INTERRUPT, "hcall-interrupt"}, - {FW_FEATURE_MIGRATE, "hcall-migrate"}, - {FW_FEATURE_PERFMON, "hcall-perfmon"}, - {FW_FEATURE_CRQ, "hcall-crq"}, - {FW_FEATURE_VIO, "hcall-vio"}, - {FW_FEATURE_RDMA, "hcall-rdma"}, - {FW_FEATURE_LLAN, "hcall-lLAN"}, - {FW_FEATURE_BULK, "hcall-bulk"}, - {FW_FEATURE_XDABR, "hcall-xdabr"}, - {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, - {FW_FEATURE_SPLPAR, "hcall-splpar"}, -}; -#endif diff -puN arch/powerpc/kernel/head_44x.S~git-powerpc arch/powerpc/kernel/head_44x.S --- devel/arch/powerpc/kernel/head_44x.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/head_44x.S 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/head_44x.S - * * Kernel execution entry point code. * * Copyright (c) 1995-1996 Gary Thomas diff -puN arch/powerpc/kernel/head_64.S~git-powerpc arch/powerpc/kernel/head_64.S --- devel/arch/powerpc/kernel/head_64.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/head_64.S 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/head.S - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * @@ -279,6 +277,7 @@ exception_marker: std r10,0(r1); /* make stack chain pointer */ \ std r0,GPR0(r1); /* save r0 in stackframe */ \ std r10,GPR1(r1); /* save r1 in stackframe */ \ + ACCOUNT_CPU_USER_ENTRY(r9, r10); \ std r2,GPR2(r1); /* save r2 in stackframe */ \ SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \ SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \ @@ -846,6 +845,14 @@ fast_exception_return: ld r11,_NIP(r1) andi. r3,r12,MSR_RI /* check if RI is set */ beq- unrecov_fer + +#ifdef CONFIG_VIRT_CPU_ACCOUNTING + andi. r3,r12,MSR_PR + beq 2f + ACCOUNT_CPU_USER_EXIT(r3, r4) +2: +#endif + ld r3,_CCR(r1) ld r4,_LINK(r1) ld r5,_CTR(r1) diff -puN arch/powerpc/kernel/head_8xx.S~git-powerpc arch/powerpc/kernel/head_8xx.S --- devel/arch/powerpc/kernel/head_8xx.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/head_8xx.S 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/except_8xx.S - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP diff -puN /dev/null arch/powerpc/kernel/head_booke.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/kernel/head_booke.h 2006-02-27 22:37:56.000000000 -0800 @@ -0,0 +1,363 @@ +#ifndef __HEAD_BOOKE_H__ +#define __HEAD_BOOKE_H__ + +/* + * Macros used for common Book-e exception handling + */ + +#define SET_IVOR(vector_number, vector_label) \ + li r26,vector_label@l; \ + mtspr SPRN_IVOR##vector_number,r26; \ + sync + +#define NORMAL_EXCEPTION_PROLOG \ + mtspr SPRN_SPRG0,r10; /* save two registers to work with */\ + mtspr SPRN_SPRG1,r11; \ + mtspr SPRN_SPRG4W,r1; \ + mfcr r10; /* save CR in r10 for now */\ + mfspr r11,SPRN_SRR1; /* check whether user or kernel */\ + andi. r11,r11,MSR_PR; \ + beq 1f; \ + mfspr r1,SPRN_SPRG3; /* if from user, start at top of */\ + lwz r1,THREAD_INFO-THREAD(r1); /* this thread's kernel stack */\ + addi r1,r1,THREAD_SIZE; \ +1: subi r1,r1,INT_FRAME_SIZE; /* Allocate an exception frame */\ + mr r11,r1; \ + stw r10,_CCR(r11); /* save various registers */\ + stw r12,GPR12(r11); \ + stw r9,GPR9(r11); \ + mfspr r10,SPRN_SPRG0; \ + stw r10,GPR10(r11); \ + mfspr r12,SPRN_SPRG1; \ + stw r12,GPR11(r11); \ + mflr r10; \ + stw r10,_LINK(r11); \ + mfspr r10,SPRN_SPRG4R; \ + mfspr r12,SPRN_SRR0; \ + stw r10,GPR1(r11); \ + mfspr r9,SPRN_SRR1; \ + stw r10,0(r11); \ + rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\ + stw r0,GPR0(r11); \ + SAVE_4GPRS(3, r11); \ + SAVE_2GPRS(7, r11) + +/* To handle the additional exception priority levels on 40x and Book-E + * processors we allocate a 4k stack per additional priority level. The various + * head_xxx.S files allocate space (exception_stack_top) for each priority's + * stack times the number of CPUs + * + * On 40x critical is the only additional level + * On 44x/e500 we have critical and machine check + * On e200 we have critical and debug (machine check occurs via critical) + * + * Additionally we reserve a SPRG for each priority level so we can free up a + * GPR to use as the base for indirect access to the exception stacks. This + * is necessary since the MMU is always on, for Book-E parts, and the stacks + * are offset from KERNELBASE. + * + */ +#define BOOKE_EXCEPTION_STACK_SIZE (8192) + +/* CRIT_SPRG only used in critical exception handling */ +#define CRIT_SPRG SPRN_SPRG2 +/* MCHECK_SPRG only used in machine check exception handling */ +#define MCHECK_SPRG SPRN_SPRG6W + +#define MCHECK_STACK_TOP (exception_stack_top - 4096) +#define CRIT_STACK_TOP (exception_stack_top) + +/* only on e200 for now */ +#define DEBUG_STACK_TOP (exception_stack_top - 4096) +#define DEBUG_SPRG SPRN_SPRG6W + +#ifdef CONFIG_SMP +#define BOOKE_LOAD_EXC_LEVEL_STACK(level) \ + mfspr r8,SPRN_PIR; \ + mulli r8,r8,BOOKE_EXCEPTION_STACK_SIZE; \ + neg r8,r8; \ + addis r8,r8,level##_STACK_TOP@ha; \ + addi r8,r8,level##_STACK_TOP@l +#else +#define BOOKE_LOAD_EXC_LEVEL_STACK(level) \ + lis r8,level##_STACK_TOP@h; \ + ori r8,r8,level##_STACK_TOP@l +#endif + +/* + * Exception prolog for critical/machine check exceptions. This is a + * little different from the normal exception prolog above since a + * critical/machine check exception can potentially occur at any point + * during normal exception processing. Thus we cannot use the same SPRG + * registers as the normal prolog above. Instead we use a portion of the + * critical/machine check exception stack at low physical addresses. + */ +#define EXC_LEVEL_EXCEPTION_PROLOG(exc_level, exc_level_srr0, exc_level_srr1) \ + mtspr exc_level##_SPRG,r8; \ + BOOKE_LOAD_EXC_LEVEL_STACK(exc_level);/* r8 points to the exc_level stack*/ \ + stw r10,GPR10-INT_FRAME_SIZE(r8); \ + stw r11,GPR11-INT_FRAME_SIZE(r8); \ + mfcr r10; /* save CR in r10 for now */\ + mfspr r11,exc_level_srr1; /* check whether user or kernel */\ + andi. r11,r11,MSR_PR; \ + mr r11,r8; \ + mfspr r8,exc_level##_SPRG; \ + beq 1f; \ + /* COMING FROM USER MODE */ \ + mfspr r11,SPRN_SPRG3; /* if from user, start at top of */\ + lwz r11,THREAD_INFO-THREAD(r11); /* this thread's kernel stack */\ + addi r11,r11,THREAD_SIZE; \ +1: subi r11,r11,INT_FRAME_SIZE; /* Allocate an exception frame */\ + stw r10,_CCR(r11); /* save various registers */\ + stw r12,GPR12(r11); \ + stw r9,GPR9(r11); \ + mflr r10; \ + stw r10,_LINK(r11); \ + mfspr r12,SPRN_DEAR; /* save DEAR and ESR in the frame */\ + stw r12,_DEAR(r11); /* since they may have had stuff */\ + mfspr r9,SPRN_ESR; /* in them at the point where the */\ + stw r9,_ESR(r11); /* exception was taken */\ + mfspr r12,exc_level_srr0; \ + stw r1,GPR1(r11); \ + mfspr r9,exc_level_srr1; \ + stw r1,0(r11); \ + mr r1,r11; \ + rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\ + stw r0,GPR0(r11); \ + SAVE_4GPRS(3, r11); \ + SAVE_2GPRS(7, r11) + +#define CRITICAL_EXCEPTION_PROLOG \ + EXC_LEVEL_EXCEPTION_PROLOG(CRIT, SPRN_CSRR0, SPRN_CSRR1) +#define DEBUG_EXCEPTION_PROLOG \ + EXC_LEVEL_EXCEPTION_PROLOG(DEBUG, SPRN_DSRR0, SPRN_DSRR1) +#define MCHECK_EXCEPTION_PROLOG \ + EXC_LEVEL_EXCEPTION_PROLOG(MCHECK, SPRN_MCSRR0, SPRN_MCSRR1) + +/* + * Exception vectors. + */ +#define START_EXCEPTION(label) \ + .align 5; \ +label: + +#define FINISH_EXCEPTION(func) \ + bl transfer_to_handler_full; \ + .long func; \ + .long ret_from_except_full + +#define EXCEPTION(n, label, hdlr, xfer) \ + START_EXCEPTION(label); \ + NORMAL_EXCEPTION_PROLOG; \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + xfer(n, hdlr) + +#define CRITICAL_EXCEPTION(n, label, hdlr) \ + START_EXCEPTION(label); \ + CRITICAL_EXCEPTION_PROLOG; \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_TEMPLATE(hdlr, n+2, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \ + NOCOPY, crit_transfer_to_handler, \ + ret_from_crit_exc) + +#define MCHECK_EXCEPTION(n, label, hdlr) \ + START_EXCEPTION(label); \ + MCHECK_EXCEPTION_PROLOG; \ + mfspr r5,SPRN_ESR; \ + stw r5,_ESR(r11); \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_TEMPLATE(hdlr, n+2, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \ + NOCOPY, mcheck_transfer_to_handler, \ + ret_from_mcheck_exc) + +#define EXC_XFER_TEMPLATE(hdlr, trap, msr, copyee, tfer, ret) \ + li r10,trap; \ + stw r10,_TRAP(r11); \ + lis r10,msr@h; \ + ori r10,r10,msr@l; \ + copyee(r10, r9); \ + bl tfer; \ + .long hdlr; \ + .long ret + +#define COPY_EE(d, s) rlwimi d,s,0,16,16 +#define NOCOPY(d, s) + +#define EXC_XFER_STD(n, hdlr) \ + EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, NOCOPY, transfer_to_handler_full, \ + ret_from_except_full) + +#define EXC_XFER_LITE(n, hdlr) \ + EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \ + ret_from_except) + +#define EXC_XFER_EE(n, hdlr) \ + EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, COPY_EE, transfer_to_handler_full, \ + ret_from_except_full) + +#define EXC_XFER_EE_LITE(n, hdlr) \ + EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, COPY_EE, transfer_to_handler, \ + ret_from_except) + +/* Check for a single step debug exception while in an exception + * handler before state has been saved. This is to catch the case + * where an instruction that we are trying to single step causes + * an exception (eg ITLB/DTLB miss) and thus the first instruction of + * the exception handler generates a single step debug exception. + * + * If we get a debug trap on the first instruction of an exception handler, + * we reset the MSR_DE in the _exception handler's_ MSR (the debug trap is + * a critical exception, so we are using SPRN_CSRR1 to manipulate the MSR). + * The exception handler was handling a non-critical interrupt, so it will + * save (and later restore) the MSR via SPRN_CSRR1, which will still have + * the MSR_DE bit set. + */ +#ifdef CONFIG_E200 +#define DEBUG_EXCEPTION \ + START_EXCEPTION(Debug); \ + DEBUG_EXCEPTION_PROLOG; \ + \ + /* \ + * If there is a single step or branch-taken exception in an \ + * exception entry sequence, it was probably meant to apply to \ + * the code where the exception occurred (since exception entry \ + * doesn't turn off DE automatically). We simulate the effect \ + * of turning off DE on entry to an exception handler by turning \ + * off DE in the CSRR1 value and clearing the debug status. \ + */ \ + mfspr r10,SPRN_DBSR; /* check single-step/branch taken */ \ + andis. r10,r10,DBSR_IC@h; \ + beq+ 2f; \ + \ + lis r10,KERNELBASE@h; /* check if exception in vectors */ \ + ori r10,r10,KERNELBASE@l; \ + cmplw r12,r10; \ + blt+ 2f; /* addr below exception vectors */ \ + \ + lis r10,Debug@h; \ + ori r10,r10,Debug@l; \ + cmplw r12,r10; \ + bgt+ 2f; /* addr above exception vectors */ \ + \ + /* here it looks like we got an inappropriate debug exception. */ \ +1: rlwinm r9,r9,0,~MSR_DE; /* clear DE in the CDRR1 value */ \ + lis r10,DBSR_IC@h; /* clear the IC event */ \ + mtspr SPRN_DBSR,r10; \ + /* restore state and get out */ \ + lwz r10,_CCR(r11); \ + lwz r0,GPR0(r11); \ + lwz r1,GPR1(r11); \ + mtcrf 0x80,r10; \ + mtspr SPRN_DSRR0,r12; \ + mtspr SPRN_DSRR1,r9; \ + lwz r9,GPR9(r11); \ + lwz r12,GPR12(r11); \ + mtspr DEBUG_SPRG,r8; \ + BOOKE_LOAD_EXC_LEVEL_STACK(DEBUG); /* r8 points to the debug stack */ \ + lwz r10,GPR10-INT_FRAME_SIZE(r8); \ + lwz r11,GPR11-INT_FRAME_SIZE(r8); \ + mfspr r8,DEBUG_SPRG; \ + \ + RFDI; \ + b .; \ + \ + /* continue normal handling for a critical exception... */ \ +2: mfspr r4,SPRN_DBSR; \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc) +#else +#define DEBUG_EXCEPTION \ + START_EXCEPTION(Debug); \ + CRITICAL_EXCEPTION_PROLOG; \ + \ + /* \ + * If there is a single step or branch-taken exception in an \ + * exception entry sequence, it was probably meant to apply to \ + * the code where the exception occurred (since exception entry \ + * doesn't turn off DE automatically). We simulate the effect \ + * of turning off DE on entry to an exception handler by turning \ + * off DE in the CSRR1 value and clearing the debug status. \ + */ \ + mfspr r10,SPRN_DBSR; /* check single-step/branch taken */ \ + andis. r10,r10,DBSR_IC@h; \ + beq+ 2f; \ + \ + lis r10,KERNELBASE@h; /* check if exception in vectors */ \ + ori r10,r10,KERNELBASE@l; \ + cmplw r12,r10; \ + blt+ 2f; /* addr below exception vectors */ \ + \ + lis r10,Debug@h; \ + ori r10,r10,Debug@l; \ + cmplw r12,r10; \ + bgt+ 2f; /* addr above exception vectors */ \ + \ + /* here it looks like we got an inappropriate debug exception. */ \ +1: rlwinm r9,r9,0,~MSR_DE; /* clear DE in the CSRR1 value */ \ + lis r10,DBSR_IC@h; /* clear the IC event */ \ + mtspr SPRN_DBSR,r10; \ + /* restore state and get out */ \ + lwz r10,_CCR(r11); \ + lwz r0,GPR0(r11); \ + lwz r1,GPR1(r11); \ + mtcrf 0x80,r10; \ + mtspr SPRN_CSRR0,r12; \ + mtspr SPRN_CSRR1,r9; \ + lwz r9,GPR9(r11); \ + lwz r12,GPR12(r11); \ + mtspr CRIT_SPRG,r8; \ + BOOKE_LOAD_EXC_LEVEL_STACK(CRIT); /* r8 points to the debug stack */ \ + lwz r10,GPR10-INT_FRAME_SIZE(r8); \ + lwz r11,GPR11-INT_FRAME_SIZE(r8); \ + mfspr r8,CRIT_SPRG; \ + \ + rfci; \ + b .; \ + \ + /* continue normal handling for a critical exception... */ \ +2: mfspr r4,SPRN_DBSR; \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) +#endif + +#define INSTRUCTION_STORAGE_EXCEPTION \ + START_EXCEPTION(InstructionStorage) \ + NORMAL_EXCEPTION_PROLOG; \ + mfspr r5,SPRN_ESR; /* Grab the ESR and save it */ \ + stw r5,_ESR(r11); \ + mr r4,r12; /* Pass SRR0 as arg2 */ \ + li r5,0; /* Pass zero as arg3 */ \ + EXC_XFER_EE_LITE(0x0400, handle_page_fault) + +#define ALIGNMENT_EXCEPTION \ + START_EXCEPTION(Alignment) \ + NORMAL_EXCEPTION_PROLOG; \ + mfspr r4,SPRN_DEAR; /* Grab the DEAR and save it */ \ + stw r4,_DEAR(r11); \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_EE(0x0600, alignment_exception) + +#define PROGRAM_EXCEPTION \ + START_EXCEPTION(Program) \ + NORMAL_EXCEPTION_PROLOG; \ + mfspr r4,SPRN_ESR; /* Grab the ESR and save it */ \ + stw r4,_ESR(r11); \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_STD(0x0700, program_check_exception) + +#define DECREMENTER_EXCEPTION \ + START_EXCEPTION(Decrementer) \ + NORMAL_EXCEPTION_PROLOG; \ + lis r0,TSR_DIS@h; /* Setup the DEC interrupt mask */ \ + mtspr SPRN_TSR,r0; /* Clear the DEC interrupt */ \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_LITE(0x0900, timer_interrupt) + +#define FP_UNAVAILABLE_EXCEPTION \ + START_EXCEPTION(FloatingPointUnavailable) \ + NORMAL_EXCEPTION_PROLOG; \ + bne load_up_fpu; /* if from user, just load it up */ \ + addi r3,r1,STACK_FRAME_OVERHEAD; \ + EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception) + +#endif /* __HEAD_BOOKE_H__ */ diff -puN arch/powerpc/kernel/head_fsl_booke.S~git-powerpc arch/powerpc/kernel/head_fsl_booke.S --- devel/arch/powerpc/kernel/head_fsl_booke.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/head_fsl_booke.S 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/head_fsl_booke.S - * * Kernel execution entry point code. * * Copyright (c) 1995-1996 Gary Thomas @@ -316,6 +314,7 @@ skpinv: addi r6,r6,1 /* Increment */ */ lis r2,DBCR0_IDM@h mtspr SPRN_DBCR0,r2 + isync /* clear any residual debug events */ li r2,-1 mtspr SPRN_DBSR,r2 @@ -1002,12 +1001,15 @@ _GLOBAL(giveup_fpu) _GLOBAL(abort) li r13,0 mtspr SPRN_DBCR0,r13 /* disable all debug events */ + isync mfmsr r13 ori r13,r13,MSR_DE@l /* Enable Debug Events */ mtmsr r13 + isync mfspr r13,SPRN_DBCR0 lis r13,(DBCR0_IDM|DBCR0_RST_CHIP)@h mtspr SPRN_DBCR0,r13 + isync _GLOBAL(set_context) diff -puN arch/powerpc/kernel/iomap.c~git-powerpc arch/powerpc/kernel/iomap.c --- devel/arch/powerpc/kernel/iomap.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/iomap.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/iomap.c - * * ppc64 "iomap" interface implementation. * * (C) Copyright 2004 Linus Torvalds diff -puN arch/powerpc/kernel/iommu.c~git-powerpc arch/powerpc/kernel/iommu.c --- devel/arch/powerpc/kernel/iommu.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/iommu.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,5 +1,4 @@ /* - * arch/ppc64/kernel/iommu.c * Copyright (C) 2001 Mike Corrigan & Dave Engebretsen, IBM Corporation * * Rewrite, cleanup, new allocation schemes, virtual merging: diff -puN arch/powerpc/kernel/irq.c~git-powerpc arch/powerpc/kernel/irq.c --- devel/arch/powerpc/kernel/irq.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/irq.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/irq.c - * * Derived from arch/i386/kernel/irq.c * Copyright (C) 1992 Linus Torvalds * Adapted from arch/i386 by Gary Thomas @@ -371,6 +369,7 @@ unsigned int real_irq_to_virt_slowpath(u return NO_IRQ; } +#endif /* CONFIG_PPC64 */ #ifdef CONFIG_IRQSTACKS struct thread_info *softirq_ctx[NR_CPUS]; @@ -394,10 +393,24 @@ void irq_ctx_init(void) } } +static inline void do_softirq_onstack(void) +{ + struct thread_info *curtp, *irqtp; + + curtp = current_thread_info(); + irqtp = softirq_ctx[smp_processor_id()]; + irqtp->task = curtp->task; + call_do_softirq(irqtp); + irqtp->task = NULL; +} + +#else +#define do_softirq_onstack() __do_softirq() +#endif /* CONFIG_IRQSTACKS */ + void do_softirq(void) { unsigned long flags; - struct thread_info *curtp, *irqtp; if (in_interrupt()) return; @@ -405,19 +418,18 @@ void do_softirq(void) local_irq_save(flags); if (local_softirq_pending()) { - curtp = current_thread_info(); - irqtp = softirq_ctx[smp_processor_id()]; - irqtp->task = curtp->task; - call_do_softirq(irqtp); - irqtp->task = NULL; + account_system_vtime(current); + local_bh_disable(); + do_softirq_onstack(); + account_system_vtime(current); + __local_bh_enable(); } local_irq_restore(flags); } EXPORT_SYMBOL(do_softirq); -#endif /* CONFIG_IRQSTACKS */ - +#ifdef CONFIG_PPC64 static int __init setup_noirqdistrib(char *str) { distribute_irqs = 0; diff -puN arch/powerpc/kernel/kprobes.c~git-powerpc arch/powerpc/kernel/kprobes.c --- devel/arch/powerpc/kernel/kprobes.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/kprobes.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,5 @@ /* * Kernel Probes (KProbes) - * arch/ppc64/kernel/kprobes.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -puN arch/powerpc/kernel/pci_iommu.c~git-powerpc arch/powerpc/kernel/pci_iommu.c --- devel/arch/powerpc/kernel/pci_iommu.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/pci_iommu.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,5 +1,4 @@ /* - * arch/ppc64/kernel/pci_iommu.c * Copyright (C) 2001 Mike Corrigan & Dave Engebretsen, IBM Corporation * * Rewrite, cleanup, new allocation schemes: diff -puN arch/powerpc/kernel/ppc_ksyms.c~git-powerpc arch/powerpc/kernel/ppc_ksyms.c --- devel/arch/powerpc/kernel/ppc_ksyms.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/ppc_ksyms.c 2006-02-27 22:37:56.000000000 -0800 @@ -57,7 +57,6 @@ extern void machine_check_exception(stru extern void alignment_exception(struct pt_regs *regs); extern void program_check_exception(struct pt_regs *regs); extern void single_step_exception(struct pt_regs *regs); -extern int pmac_newworld; extern int sys_sigreturn(struct pt_regs *regs); EXPORT_SYMBOL(clear_pages); diff -puN arch/powerpc/kernel/process.c~git-powerpc arch/powerpc/kernel/process.c --- devel/arch/powerpc/kernel/process.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/process.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/process.c - * * Derived from "arch/i386/kernel/process.c" * Copyright (C) 1995 Linus Torvalds * @@ -47,9 +45,9 @@ #include #include #include +#include #ifdef CONFIG_PPC64 #include -#include #endif extern unsigned long _get_SP(void); @@ -330,6 +328,11 @@ struct task_struct *__switch_to(struct t #endif local_irq_save(flags); + + account_system_vtime(current); + account_process_vtime(current); + calculate_steal_time(); + last = _switch(old_thread, new_thread); local_irq_restore(flags); diff -puN arch/powerpc/kernel/prom.c~git-powerpc arch/powerpc/kernel/prom.c --- devel/arch/powerpc/kernel/prom.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/prom.c 2006-02-27 22:37:56.000000000 -0800 @@ -829,10 +829,6 @@ void __init unflatten_device_tree(void) /* Allocate memory for the expanded device tree */ mem = lmb_alloc(size + 4, __alignof__(struct device_node)); - if (!mem) { - DBG("Couldn't allocate memory with lmb_alloc()!\n"); - panic("Couldn't allocate memory with lmb_alloc()!\n"); - } mem = (unsigned long) __va(mem); ((u32 *)mem)[size / 4] = 0xdeadbeef; diff -puN arch/powerpc/kernel/ptrace-common.h~git-powerpc arch/powerpc/kernel/ptrace-common.h --- devel/arch/powerpc/kernel/ptrace-common.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/ptrace-common.h 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * linux/arch/ppc64/kernel/ptrace-common.h - * * Copyright (c) 2002 Stephen Rothwell, IBM Coproration * Extracted from ptrace.c and ptrace32.c * diff -puN arch/powerpc/kernel/rtas_pci.c~git-powerpc arch/powerpc/kernel/rtas_pci.c --- devel/arch/powerpc/kernel/rtas_pci.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/rtas_pci.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/rtas_pci.c - * * Copyright (C) 2001 Dave Engebretsen, IBM Corporation * Copyright (C) 2003 Anton Blanchard , IBM * diff -puN arch/powerpc/kernel/rtas-proc.c~git-powerpc arch/powerpc/kernel/rtas-proc.c --- devel/arch/powerpc/kernel/rtas-proc.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/rtas-proc.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,5 +1,4 @@ /* - * arch/ppc64/kernel/rtas-proc.c * Copyright (C) 2000 Tilmann Bitterberg * (tilmann@bitterberg.de) * diff -puN arch/powerpc/kernel/signal_64.c~git-powerpc arch/powerpc/kernel/signal_64.c --- devel/arch/powerpc/kernel/signal_64.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/signal_64.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * linux/arch/ppc64/kernel/signal.c - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * diff -puN arch/powerpc/kernel/smp.c~git-powerpc arch/powerpc/kernel/smp.c --- devel/arch/powerpc/kernel/smp.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/smp.c 2006-02-27 22:37:56.000000000 -0800 @@ -541,7 +541,7 @@ int __devinit start_secondary(void *unus smp_ops->take_timebase(); if (system_state > SYSTEM_BOOTING) - per_cpu(last_jiffy, cpu) = get_tb(); + snapshot_timebase(); spin_lock(&call_lock); cpu_set(cpu, cpu_online_map); @@ -573,6 +573,8 @@ void __init smp_cpus_done(unsigned int m set_cpus_allowed(current, old_mask); + snapshot_timebases(); + dump_numa_cpu_topology(); } diff -puN arch/powerpc/kernel/time.c~git-powerpc arch/powerpc/kernel/time.c --- devel/arch/powerpc/kernel/time.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/time.c 2006-02-27 22:37:56.000000000 -0800 @@ -51,6 +51,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,7 @@ unsigned long tb_ticks_per_jiffy; unsigned long tb_ticks_per_usec = 100; /* sane default */ EXPORT_SYMBOL(tb_ticks_per_usec); unsigned long tb_ticks_per_sec; +EXPORT_SYMBOL(tb_ticks_per_sec); /* for cputime_t conversions */ u64 tb_to_xs; unsigned tb_to_us; @@ -135,6 +137,224 @@ unsigned long tb_last_stamp; */ DEFINE_PER_CPU(unsigned long, last_jiffy); +#ifdef CONFIG_VIRT_CPU_ACCOUNTING +/* + * Factors for converting from cputime_t (timebase ticks) to + * jiffies, milliseconds, seconds, and clock_t (1/USER_HZ seconds). + * These are all stored as 0.64 fixed-point binary fractions. + */ +u64 __cputime_jiffies_factor; +EXPORT_SYMBOL(__cputime_jiffies_factor); +u64 __cputime_msec_factor; +EXPORT_SYMBOL(__cputime_msec_factor); +u64 __cputime_sec_factor; +EXPORT_SYMBOL(__cputime_sec_factor); +u64 __cputime_clockt_factor; +EXPORT_SYMBOL(__cputime_clockt_factor); + +static void calc_cputime_factors(void) +{ + struct div_result res; + + div128_by_32(HZ, 0, tb_ticks_per_sec, &res); + __cputime_jiffies_factor = res.result_low; + div128_by_32(1000, 0, tb_ticks_per_sec, &res); + __cputime_msec_factor = res.result_low; + div128_by_32(1, 0, tb_ticks_per_sec, &res); + __cputime_sec_factor = res.result_low; + div128_by_32(USER_HZ, 0, tb_ticks_per_sec, &res); + __cputime_clockt_factor = res.result_low; +} + +/* + * Read the PURR on systems that have it, otherwise the timebase. + */ +static u64 read_purr(void) +{ + if (cpu_has_feature(CPU_FTR_PURR)) + return mfspr(SPRN_PURR); + return mftb(); +} + +/* + * Account time for a transition between system, hard irq + * or soft irq state. + */ +void account_system_vtime(struct task_struct *tsk) +{ + u64 now, delta; + unsigned long flags; + + local_irq_save(flags); + now = read_purr(); + delta = now - get_paca()->startpurr; + get_paca()->startpurr = now; + if (!in_interrupt()) { + delta += get_paca()->system_time; + get_paca()->system_time = 0; + } + account_system_time(tsk, 0, delta); + local_irq_restore(flags); +} + +/* + * Transfer the user and system times accumulated in the paca + * by the exception entry and exit code to the generic process + * user and system time records. + * Must be called with interrupts disabled. + */ +void account_process_vtime(struct task_struct *tsk) +{ + cputime_t utime; + + utime = get_paca()->user_time; + get_paca()->user_time = 0; + account_user_time(tsk, utime); +} + +static void account_process_time(struct pt_regs *regs) +{ + int cpu = smp_processor_id(); + + account_process_vtime(current); + run_local_timers(); + if (rcu_pending(cpu)) + rcu_check_callbacks(cpu, user_mode(regs)); + scheduler_tick(); + run_posix_cpu_timers(current); +} + +#ifdef CONFIG_PPC_SPLPAR +/* + * Stuff for accounting stolen time. + */ +struct cpu_purr_data { + int initialized; /* thread is running */ + u64 tb0; /* timebase at origin time */ + u64 purr0; /* PURR at origin time */ + u64 tb; /* last TB value read */ + u64 purr; /* last PURR value read */ + u64 stolen; /* stolen time so far */ + spinlock_t lock; +}; + +static DEFINE_PER_CPU(struct cpu_purr_data, cpu_purr_data); + +static void snapshot_tb_and_purr(void *data) +{ + struct cpu_purr_data *p = &__get_cpu_var(cpu_purr_data); + + p->tb0 = mftb(); + p->purr0 = mfspr(SPRN_PURR); + p->tb = p->tb0; + p->purr = 0; + wmb(); + p->initialized = 1; +} + +/* + * Called during boot when all cpus have come up. + */ +void snapshot_timebases(void) +{ + int cpu; + + if (!cpu_has_feature(CPU_FTR_PURR)) + return; + for_each_cpu(cpu) + spin_lock_init(&per_cpu(cpu_purr_data, cpu).lock); + on_each_cpu(snapshot_tb_and_purr, NULL, 0, 1); +} + +void calculate_steal_time(void) +{ + u64 tb, purr, t0; + s64 stolen; + struct cpu_purr_data *p0, *pme, *phim; + int cpu; + + if (!cpu_has_feature(CPU_FTR_PURR)) + return; + cpu = smp_processor_id(); + pme = &per_cpu(cpu_purr_data, cpu); + if (!pme->initialized) + return; /* this can happen in early boot */ + p0 = &per_cpu(cpu_purr_data, cpu & ~1); + phim = &per_cpu(cpu_purr_data, cpu ^ 1); + spin_lock(&p0->lock); + tb = mftb(); + purr = mfspr(SPRN_PURR) - pme->purr0; + if (!phim->initialized || !cpu_online(cpu ^ 1)) { + stolen = (tb - pme->tb) - (purr - pme->purr); + } else { + t0 = pme->tb0; + if (phim->tb0 < t0) + t0 = phim->tb0; + stolen = phim->tb - t0 - phim->purr - purr - p0->stolen; + } + if (stolen > 0) { + account_steal_time(current, stolen); + p0->stolen += stolen; + } + pme->tb = tb; + pme->purr = purr; + spin_unlock(&p0->lock); +} + +/* + * Must be called before the cpu is added to the online map when + * a cpu is being brought up at runtime. + */ +static void snapshot_purr(void) +{ + int cpu; + u64 purr; + struct cpu_purr_data *p0, *pme, *phim; + unsigned long flags; + + if (!cpu_has_feature(CPU_FTR_PURR)) + return; + cpu = smp_processor_id(); + pme = &per_cpu(cpu_purr_data, cpu); + p0 = &per_cpu(cpu_purr_data, cpu & ~1); + phim = &per_cpu(cpu_purr_data, cpu ^ 1); + spin_lock_irqsave(&p0->lock, flags); + pme->tb = pme->tb0 = mftb(); + purr = mfspr(SPRN_PURR); + if (!phim->initialized) { + pme->purr = 0; + pme->purr0 = purr; + } else { + /* set p->purr and p->purr0 for no change in p0->stolen */ + pme->purr = phim->tb - phim->tb0 - phim->purr - p0->stolen; + pme->purr0 = purr - pme->purr; + } + pme->initialized = 1; + spin_unlock_irqrestore(&p0->lock, flags); +} + +#endif /* CONFIG_PPC_SPLPAR */ + +#else /* ! CONFIG_VIRT_CPU_ACCOUNTING */ +#define calc_cputime_factors() +#define account_process_time(regs) update_process_times(user_mode(regs)) +#define calculate_steal_time() do { } while (0) +#endif + +#if !(defined(CONFIG_VIRT_CPU_ACCOUNTING) && defined(CONFIG_PPC_SPLPAR)) +#define snapshot_purr() do { } while (0) +#endif + +/* + * Called when a cpu comes up after the system has finished booting, + * i.e. as a result of a hotplug cpu action. + */ +void snapshot_timebase(void) +{ + __get_cpu_var(last_jiffy) = get_tb(); + snapshot_purr(); +} + void __delay(unsigned long loops) { unsigned long start; @@ -382,6 +602,7 @@ static void iSeries_tb_recal(void) new_tb_ticks_per_jiffy, sign, tick_diff ); tb_ticks_per_jiffy = new_tb_ticks_per_jiffy; tb_ticks_per_sec = new_tb_ticks_per_sec; + calc_cputime_factors(); div128_by_32( XSEC_PER_SEC, 0, tb_ticks_per_sec, &divres ); do_gtod.tb_ticks_per_sec = tb_ticks_per_sec; tb_to_xs = divres.result_low; @@ -430,6 +651,7 @@ void timer_interrupt(struct pt_regs * re irq_enter(); profile_tick(CPU_PROFILING, regs); + calculate_steal_time(); #ifdef CONFIG_PPC_ISERIES get_lppaca()->int_dword.fields.decr_int = 0; @@ -451,7 +673,7 @@ void timer_interrupt(struct pt_regs * re * is the case. */ if (!cpu_is_offline(cpu)) - update_process_times(user_mode(regs)); + account_process_time(regs); /* * No need to check whether cpu is offline here; boot_cpuid @@ -508,13 +730,27 @@ void wakeup_decrementer(void) void __init smp_space_timers(unsigned int max_cpus) { int i; + unsigned long half = tb_ticks_per_jiffy / 2; unsigned long offset = tb_ticks_per_jiffy / max_cpus; unsigned long previous_tb = per_cpu(last_jiffy, boot_cpuid); /* make sure tb > per_cpu(last_jiffy, cpu) for all cpus always */ previous_tb -= tb_ticks_per_jiffy; + /* + * The stolen time calculation for POWER5 shared-processor LPAR + * systems works better if the two threads' timebase interrupts + * are staggered by half a jiffy with respect to each other. + */ for_each_cpu(i) { - if (i != boot_cpuid) { + if (i == boot_cpuid) + continue; + if (i == (boot_cpuid ^ 1)) + per_cpu(last_jiffy, i) = + per_cpu(last_jiffy, boot_cpuid) - half; + else if (i & 1) + per_cpu(last_jiffy, i) = + per_cpu(last_jiffy, i ^ 1) + half; + else { previous_tb += offset; per_cpu(last_jiffy, i) = previous_tb; } @@ -706,6 +942,7 @@ void __init time_init(void) tb_ticks_per_sec = ppc_tb_freq; tb_ticks_per_usec = ppc_tb_freq / 1000000; tb_to_us = mulhwu_scale_factor(ppc_tb_freq, 1000000); + calc_cputime_factors(); /* * Calculate the length of each tick in ns. It will not be diff -puN arch/powerpc/kernel/vdso64/gettimeofday.S~git-powerpc arch/powerpc/kernel/vdso64/gettimeofday.S diff -puN arch/powerpc/kernel/vdso.c~git-powerpc arch/powerpc/kernel/vdso.c --- devel/arch/powerpc/kernel/vdso.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/kernel/vdso.c 2006-02-27 22:37:56.000000000 -0800 @@ -1,6 +1,4 @@ /* - * linux/arch/ppc64/kernel/vdso.c - * * Copyright (C) 2004 Benjamin Herrenschmidt, IBM Corp. * * diff -puN arch/powerpc/lib/copypage_64.S~git-powerpc arch/powerpc/lib/copypage_64.S --- devel/arch/powerpc/lib/copypage_64.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/lib/copypage_64.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/lib/copypage.S - * * Copyright (C) 2002 Paul Mackerras, IBM Corp. * * This program is free software; you can redistribute it and/or diff -puN arch/powerpc/lib/copyuser_64.S~git-powerpc arch/powerpc/lib/copyuser_64.S --- devel/arch/powerpc/lib/copyuser_64.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/lib/copyuser_64.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/lib/copyuser.S - * * Copyright (C) 2002 Paul Mackerras, IBM Corp. * * This program is free software; you can redistribute it and/or diff -puN arch/powerpc/lib/e2a.c~git-powerpc arch/powerpc/lib/e2a.c --- devel/arch/powerpc/lib/e2a.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/lib/e2a.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,9 +1,7 @@ /* - * arch/ppc64/lib/e2a.c - * * EBCDIC to ASCII conversion * - * This function moved here from arch/ppc64/kernel/viopath.c + * This function moved here from arch/powerpc/platforms/iseries/viopath.c * * (C) Copyright 2000-2004 IBM Corporation * diff -puN arch/powerpc/lib/memcpy_64.S~git-powerpc arch/powerpc/lib/memcpy_64.S --- devel/arch/powerpc/lib/memcpy_64.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/lib/memcpy_64.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/lib/memcpy.S - * * Copyright (C) 2002 Paul Mackerras, IBM Corp. * * This program is free software; you can redistribute it and/or diff -puN arch/powerpc/lib/rheap.c~git-powerpc arch/powerpc/lib/rheap.c --- devel/arch/powerpc/lib/rheap.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/lib/rheap.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/rheap.c - * * A Remote Heap. Remote means that we don't touch the memory that the * heap points to. Normal heap implementations use the memory they manage * to place their list. We cannot do that because the memory we manage may diff -puN arch/powerpc/Makefile~git-powerpc arch/powerpc/Makefile --- devel/arch/powerpc/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/Makefile 2006-02-27 22:37:56.000000000 -0800 @@ -148,7 +148,7 @@ all: $(KBUILD_IMAGE) CPPFLAGS_vmlinux.lds := -Upowerpc -BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm uImage +BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm uImage vmlinux.bin .PHONY: $(BOOT_TARGETS) diff -puN arch/powerpc/mm/fault.c~git-powerpc arch/powerpc/mm/fault.c --- devel/arch/powerpc/mm/fault.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/fault.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/mm/fault.c - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * diff -puN arch/powerpc/mm/hash_low_32.S~git-powerpc arch/powerpc/mm/hash_low_32.S --- devel/arch/powerpc/mm/hash_low_32.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/hash_low_32.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/hashtable.S - * * $Id: hashtable.S,v 1.6 1999/10/08 01:56:15 paulus Exp $ * * PowerPC version diff -puN arch/powerpc/mm/hash_utils_64.c~git-powerpc arch/powerpc/mm/hash_utils_64.c --- devel/arch/powerpc/mm/hash_utils_64.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/hash_utils_64.c 2006-02-27 22:38:10.000000000 -0800 @@ -169,7 +169,7 @@ int htab_bolt_mapping(unsigned long vsta #ifdef CONFIG_PPC_ISERIES if (_machine == PLATFORM_ISERIES_LPAR) ret = iSeries_hpte_insert(hpteg, va, - virt_to_abs(paddr), + __pa(vaddr), tmp_mode, HPTE_V_BOLTED, psize); @@ -431,7 +431,6 @@ void __init htab_initialize(void) * the absolute address space. */ table = lmb_alloc(htab_size_bytes, htab_size_bytes); - BUG_ON(table == 0); DBG("Hash table allocated at %lx, size: %lx\n", table, htab_size_bytes); diff -puN arch/powerpc/mm/lmb.c~git-powerpc arch/powerpc/mm/lmb.c --- devel/arch/powerpc/mm/lmb.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/lmb.c 2006-02-27 22:38:10.000000000 -0800 @@ -31,6 +31,8 @@ #define DBG(fmt...) #endif +#define LMB_ALLOC_ANYWHERE 0 + struct lmb lmb; void lmb_dump_all(void) @@ -226,6 +228,20 @@ unsigned long __init lmb_alloc(unsigned unsigned long __init lmb_alloc_base(unsigned long size, unsigned long align, unsigned long max_addr) { + unsigned long alloc; + + alloc = __lmb_alloc_base(size, align, max_addr); + + if (alloc < 0) + panic("ERROR: Failed to allocate 0x%lx bytes below 0x%lx.\n", + size, max_addr); + + return alloc; +} + +unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align, + unsigned long max_addr) +{ long i, j; unsigned long base = 0; diff -puN arch/powerpc/mm/mem.c~git-powerpc arch/powerpc/mm/mem.c --- devel/arch/powerpc/mm/mem.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/mem.c 2006-02-27 22:38:10.000000000 -0800 @@ -249,7 +249,6 @@ void __init do_init_bootmem(void) bootmap_pages = bootmem_bootmap_pages(total_pages); start = lmb_alloc(bootmap_pages << PAGE_SHIFT, PAGE_SIZE); - BUG_ON(!start); boot_mapsize = init_bootmem(start >> PAGE_SHIFT, total_pages); diff -puN arch/powerpc/mm/mmap.c~git-powerpc arch/powerpc/mm/mmap.c --- devel/arch/powerpc/mm/mmap.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/mmap.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * linux/arch/ppc64/mm/mmap.c - * * flexible mmap layout support * * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina. diff -puN arch/powerpc/mm/numa.c~git-powerpc arch/powerpc/mm/numa.c --- devel/arch/powerpc/mm/numa.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/numa.c 2006-02-27 22:38:10.000000000 -0800 @@ -570,11 +570,11 @@ static void __init *careful_allocation(i unsigned long end_pfn) { int new_nid; - unsigned long ret = lmb_alloc_base(size, align, end_pfn << PAGE_SHIFT); + unsigned long ret = __lmb_alloc_base(size, align, end_pfn << PAGE_SHIFT); /* retry over all memory */ if (!ret) - ret = lmb_alloc_base(size, align, lmb_end_of_DRAM()); + ret = __lmb_alloc_base(size, align, lmb_end_of_DRAM()); if (!ret) panic("numa.c: cannot allocate %lu bytes on node %d", diff -puN arch/powerpc/mm/slb_low.S~git-powerpc arch/powerpc/mm/slb_low.S --- devel/arch/powerpc/mm/slb_low.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/slb_low.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/mm/slb_low.S - * * Low-level SLB routines * * Copyright (C) 2004 David Gibson , IBM diff -puN arch/powerpc/mm/stab.c~git-powerpc arch/powerpc/mm/stab.c --- devel/arch/powerpc/mm/stab.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/mm/stab.c 2006-02-27 22:38:10.000000000 -0800 @@ -247,10 +247,6 @@ void stabs_alloc(void) newstab = lmb_alloc_base(HW_PAGE_SIZE, HW_PAGE_SIZE, 1< + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include + +#include +#include +#include + +#include "mpc83xx.h" + +void mpc83xx_restart(char *cmd) +{ +#define RST_OFFSET 0x00000900 +#define RST_PROT_REG 0x00000018 +#define RST_CTRL_REG 0x0000001c + __be32 __iomem *reg; + + /* map reset register space */ + reg = ioremap(get_immrbase() + 0x900, 0xff); + + local_irq_disable(); + + /* enable software reset "RSTE" */ + out_be32(reg + (RST_PROT_REG >> 2), 0x52535445); + + /* set software hard reset */ + out_be32(reg + (RST_CTRL_REG >> 2), 0x52535445); + for (;;) ; +} + +long __init mpc83xx_time_init(void) +{ +#define SPCR_OFFSET 0x00000110 +#define SPCR_TBEN 0x00400000 + __be32 __iomem *spcr = ioremap(get_immrbase() + SPCR_OFFSET, 4); + __be32 tmp; + + tmp = in_be32(spcr); + out_be32(spcr, tmp | SPCR_TBEN); + + iounmap(spcr); + + return 0; +} diff -puN arch/powerpc/platforms/83xx/mpc834x_sys.c~git-powerpc arch/powerpc/platforms/83xx/mpc834x_sys.c --- devel/arch/powerpc/platforms/83xx/mpc834x_sys.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/83xx/mpc834x_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -24,22 +24,15 @@ #include #include #include -#include -#include #include -#include -#include #include #include #include #include #include #include -#include -#include #include -#include #include #include #include @@ -52,8 +45,6 @@ unsigned long isa_mem_base = 0; #endif #ifdef CONFIG_PCI -extern int mpc83xx_pci2_busno; - static int mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) { @@ -78,26 +69,14 @@ mpc83xx_map_irq(struct pci_dev *dev, uns const long min_idsel = 0x11, max_idsel = 0x20, irqs_per_slot = 4; return PCI_IRQ_TABLE_LOOKUP; } - -static int -mpc83xx_exclude_device(u_char bus, u_char devfn) -{ - if (bus == 0 && PCI_SLOT(devfn) == 0) - return PCIBIOS_DEVICE_NOT_FOUND; - if (mpc83xx_pci2_busno) - if (bus == (mpc83xx_pci2_busno) && PCI_SLOT(devfn) == 0) - return PCIBIOS_DEVICE_NOT_FOUND; - return PCIBIOS_SUCCESSFUL; -} -#endif /* CONFIG_PCI */ +#endif /* CONFIG_PCI */ /* ************************************************************************ * * Setup the architecture * */ -static void __init -mpc834x_sys_setup_arch(void) +static void __init mpc834x_sys_setup_arch(void) { struct device_node *np; @@ -106,14 +85,14 @@ mpc834x_sys_setup_arch(void) np = of_find_node_by_type(NULL, "cpu"); if (np != 0) { - unsigned int *fp = (int *) get_property(np, "clock-frequency", NULL); + unsigned int *fp = + (int *)get_property(np, "clock-frequency", NULL); if (fp != 0) loops_per_jiffy = *fp / HZ; else loops_per_jiffy = 50000000 / HZ; of_node_put(np); } - #ifdef CONFIG_PCI for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) add_bridge(np); @@ -124,14 +103,13 @@ mpc834x_sys_setup_arch(void) #endif #ifdef CONFIG_ROOT_NFS - ROOT_DEV = Root_NFS; + ROOT_DEV = Root_NFS; #else - ROOT_DEV = Root_HDA1; + ROOT_DEV = Root_HDA1; #endif } -void __init -mpc834x_sys_init_IRQ(void) +void __init mpc834x_sys_init_IRQ(void) { u8 senses[8] = { 0, /* EXT 0 */ @@ -160,64 +138,27 @@ mpc834x_sys_init_IRQ(void) } #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) -extern ulong ds1374_get_rtc_time(void); -extern int ds1374_set_rtc_time(ulong); +extern ulong ds1374_get_rtc_time(void); +extern int ds1374_set_rtc_time(ulong); -static int __init -mpc834x_rtc_hookup(void) +static int __init mpc834x_rtc_hookup(void) { - struct timespec tv; + struct timespec tv; ppc_md.get_rtc_time = ds1374_get_rtc_time; ppc_md.set_rtc_time = ds1374_set_rtc_time; tv.tv_nsec = 0; - tv.tv_sec = (ppc_md.get_rtc_time)(); + tv.tv_sec = (ppc_md.get_rtc_time) (); do_settimeofday(&tv); return 0; } + late_initcall(mpc834x_rtc_hookup); #endif -static void -mpc83xx_restart(char *cmd) -{ -#define RST_OFFSET 0x00000900 -#define RST_PROT_REG 0x00000018 -#define RST_CTRL_REG 0x0000001c - __be32 __iomem *reg; - - // map reset register space - reg = ioremap(get_immrbase() + 0x900, 0xff); - - local_irq_disable(); - - /* enable software reset "RSTE" */ - out_be32(reg + (RST_PROT_REG >> 2), 0x52535445); - - /* set software hard reset */ - out_be32(reg + (RST_CTRL_REG >> 2), 0x52535445); - for(;;); -} - -static long __init -mpc83xx_time_init(void) -{ -#define SPCR_OFFSET 0x00000110 -#define SPCR_TBEN 0x00400000 - __be32 __iomem *spcr = ioremap(get_immrbase() + SPCR_OFFSET, 4); - __be32 tmp; - - tmp = in_be32(spcr); - out_be32(spcr, tmp|SPCR_TBEN); - - iounmap(spcr); - - return 0; -} -void __init -platform_init(void) +void __init platform_init(void) { /* setup the PowerPC module struct */ ppc_md.setup_arch = mpc834x_sys_setup_arch; @@ -239,5 +180,3 @@ platform_init(void) return; } - - diff -puN arch/powerpc/platforms/83xx/mpc834x_sys.h~git-powerpc arch/powerpc/platforms/83xx/mpc834x_sys.h --- devel/arch/powerpc/platforms/83xx/mpc834x_sys.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/83xx/mpc834x_sys.h 2006-02-27 22:38:10.000000000 -0800 @@ -20,4 +20,4 @@ #define PIRQC MPC83xx_IRQ_EXT6 #define PIRQD MPC83xx_IRQ_EXT7 -#endif /* __MACH_MPC83XX_SYS_H__ */ +#endif /* __MACH_MPC83XX_SYS_H__ */ diff -puN arch/powerpc/platforms/83xx/mpc83xx.h~git-powerpc arch/powerpc/platforms/83xx/mpc83xx.h --- devel/arch/powerpc/platforms/83xx/mpc83xx.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/83xx/mpc83xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -10,5 +10,8 @@ */ extern int add_bridge(struct device_node *dev); +extern int mpc83xx_exclude_device(u_char bus, u_char devfn); +extern void mpc83xx_restart(char *cmd); +extern long mpc83xx_time_init(void); -#endif /* __MPC83XX_H__ */ +#endif /* __MPC83XX_H__ */ diff -puN arch/powerpc/platforms/83xx/pci.c~git-powerpc arch/powerpc/platforms/83xx/pci.c --- devel/arch/powerpc/platforms/83xx/pci.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/83xx/pci.c 2006-02-27 22:38:10.000000000 -0800 @@ -36,7 +36,16 @@ int mpc83xx_pci2_busno; -#ifdef CONFIG_PCI +int mpc83xx_exclude_device(u_char bus, u_char devfn) +{ + if (bus == 0 && PCI_SLOT(devfn) == 0) + return PCIBIOS_DEVICE_NOT_FOUND; + if (mpc83xx_pci2_busno) + if (bus == (mpc83xx_pci2_busno) && PCI_SLOT(devfn) == 0) + return PCIBIOS_DEVICE_NOT_FOUND; + return PCIBIOS_SUCCESSFUL; +} + int __init add_bridge(struct device_node *dev) { int len; @@ -52,7 +61,7 @@ int __init add_bridge(struct device_node has_address = (of_address_to_resource(dev, 0, &rsrc) == 0); /* Get bus range if any */ - bus_range = (int *) get_property(dev, "bus-range", &len); + bus_range = (int *)get_property(dev, "bus-range", &len); if (bus_range == NULL || len < 2 * sizeof(int)) { printk(KERN_WARNING "Can't get bus-range for %s, assume" " bus 0\n", dev->full_name); @@ -74,7 +83,7 @@ int __init add_bridge(struct device_node if ((rsrc.start & 0xfffff) == 0x8500) { setup_indirect_pci(hose, immr + 0x8300, immr + 0x8304); } - /* PCI 2*/ + /* PCI 2 */ if ((rsrc.start & 0xfffff) == 0x8600) { setup_indirect_pci(hose, immr + 0x8380, immr + 0x8384); primary = 0; @@ -84,10 +93,10 @@ int __init add_bridge(struct device_node printk(KERN_INFO "Found MPC83xx PCI host bridge at 0x%08lx. " "Firmware bus number: %d->%d\n", - rsrc.start, hose->first_busno, hose->last_busno); + rsrc.start, hose->first_busno, hose->last_busno); DBG(" ->Hose at 0x%p, cfg_addr=0x%p,cfg_data=0x%p\n", - hose, hose->cfg_addr, hose->cfg_data); + hose, hose->cfg_addr, hose->cfg_data); /* Interpret the "ranges" property */ /* This also maps the I/O region and sets isa_io/mem_base */ @@ -95,5 +104,3 @@ int __init add_bridge(struct device_node return 0; } - -#endif diff -puN arch/powerpc/platforms/85xx/Kconfig~git-powerpc arch/powerpc/platforms/85xx/Kconfig --- devel/arch/powerpc/platforms/85xx/Kconfig~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/85xx/Kconfig 2006-02-27 22:38:10.000000000 -0800 @@ -1,86 +1,30 @@ -config 85xx - bool - depends on E500 - default y - -config PPC_INDIRECT_PCI_BE - bool - depends on 85xx - default y - -menu "Freescale 85xx options" - depends on E500 +menu "Platform support" + depends on PPC_85xx choice prompt "Machine Type" - depends on 85xx default MPC8540_ADS config MPC8540_ADS bool "Freescale MPC8540 ADS" help - This option enables support for the MPC 8540 ADS evaluation board. - -config MPC8548_CDS - bool "Freescale MPC8548 CDS" - help - This option enablese support for the MPC8548 CDS evaluation board. - -config MPC8555_CDS - bool "Freescale MPC8555 CDS" - help - This option enablese support for the MPC8555 CDS evaluation board. - -config MPC8560_ADS - bool "Freescale MPC8560 ADS" - help - This option enables support for the MPC 8560 ADS evaluation board. - -config SBC8560 - bool "WindRiver PowerQUICC III SBC8560" - help - This option enables support for the WindRiver PowerQUICC III - SBC8560 board. - -config STX_GP3 - bool "Silicon Turnkey Express GP3" - help - This option enables support for the Silicon Turnkey Express GP3 - board. + This option enables support for the MPC 8540 ADS board endchoice -# It's often necessary to know the specific 85xx processor type. -# Fortunately, it is implied (so far) from the board type, so we -# don't need to ask more redundant questions. config MPC8540 bool - depends on MPC8540_ADS - default y - -config MPC8548 - bool - depends on MPC8548_CDS - default y + select PPC_UDBG_16550 + select PPC_INDIRECT_PCI + default y if MPC8540_ADS -config MPC8555 - bool - depends on MPC8555_CDS - default y - -config MPC8560 +config PPC_INDIRECT_PCI_BE bool - depends on SBC8560 || MPC8560_ADS || STX_GP3 - default y - -config 85xx_PCI2 - bool "Supprt for 2nd PCI host controller" - depends on MPC8555_CDS + depends on PPC_85xx default y -config PPC_GEN550 +config MPIC bool - depends on MPC8540 || SBC8560 || MPC8555 default y endmenu diff -puN arch/powerpc/platforms/85xx/Makefile~git-powerpc arch/powerpc/platforms/85xx/Makefile --- devel/arch/powerpc/platforms/85xx/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/85xx/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -1 +1,4 @@ -# empty makefile so make clean works +# +# Makefile for the PowerPC 85xx linux kernel. +# +obj-$(CONFIG_PPC_85xx) += misc.o mpc85xx_ads.o diff -puN /dev/null arch/powerpc/platforms/85xx/misc.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/85xx/misc.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,31 @@ +/* + * MPC85xx generic code. + * + * Maintained by Kumar Gala (see MAINTAINERS for contact information) + * + * Copyright 2005 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ +#include +#include +#include + +extern void abort(void); + +void mpc85xx_restart(char *cmd) +{ + local_irq_disable(); + abort(); +} + +/* For now this is a pass through */ +phys_addr_t fixup_bigphys_addr(phys_addr_t addr, phys_addr_t size) +{ + return addr; +}; + +EXPORT_SYMBOL(fixup_bigphys_addr); diff -puN /dev/null arch/powerpc/platforms/85xx/mpc8540_ads.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/85xx/mpc8540_ads.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,60 @@ +/* + * arch/ppc/platforms/85xx/mpc8540_ads.h + * + * MPC8540ADS board definitions + * + * Maintainer: Kumar Gala + * + * Copyright 2004 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#ifndef __MACH_MPC8540ADS_H__ +#define __MACH_MPC8540ADS_H__ + +#include +#include + +#define BOARD_CCSRBAR ((uint)0xe0000000) +#define BCSR_ADDR ((uint)0xf8000000) +#define BCSR_SIZE ((uint)(32 * 1024)) + +/* PCI interrupt controller */ +#define PIRQA MPC85xx_IRQ_EXT1 +#define PIRQB MPC85xx_IRQ_EXT2 +#define PIRQC MPC85xx_IRQ_EXT3 +#define PIRQD MPC85xx_IRQ_EXT4 + +#define MPC85XX_PCI1_LOWER_IO 0x00000000 +#define MPC85XX_PCI1_UPPER_IO 0x00ffffff + +#define MPC85XX_PCI1_LOWER_MEM 0x80000000 +#define MPC85XX_PCI1_UPPER_MEM 0x9fffffff + +#define MPC85XX_PCI1_IO_BASE 0xe2000000 +#define MPC85XX_PCI1_MEM_OFFSET 0x00000000 + +#define MPC85XX_PCI1_IO_SIZE 0x01000000 + +/* PCI config */ +#define PCI1_CFG_ADDR_OFFSET (0x8000) +#define PCI1_CFG_DATA_OFFSET (0x8004) + +#define PCI2_CFG_ADDR_OFFSET (0x9000) +#define PCI2_CFG_DATA_OFFSET (0x9004) + +/* Additional register for PCI-X configuration */ +#define PCIX_NEXT_CAP 0x60 +#define PCIX_CAP_ID 0x61 +#define PCIX_COMMAND 0x62 +#define PCIX_STATUS 0x64 + +/* Offset of CPM register space */ +#define CPM_MAP_ADDR (CCSRBAR + MPC85xx_CPM_OFFSET) + +#endif /* __MACH_MPC8540ADS_H__ */ diff -puN /dev/null arch/powerpc/platforms/85xx/mpc85xx_ads.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/85xx/mpc85xx_ads.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,177 @@ +/* + * MPC85xx setup and early boot code plus other random bits. + * + * Maintained by Kumar Gala (see MAINTAINERS for contact information) + * + * Copyright 2005 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "mpc85xx.h" + +#ifndef CONFIG_PCI +unsigned long isa_io_base = 0; +unsigned long isa_mem_base = 0; +#endif + +/* + * Internal interrupts are all Level Sensitive, and Positive Polarity + * + * Note: Likely, this table and the following function should be + * obtained and derived from the OF Device Tree. + */ +static u_char mpc85xx_ads_openpic_initsenses[] __initdata = { + MPC85XX_INTERNAL_IRQ_SENSES, + 0x0, /* External 0: */ +#if defined(CONFIG_PCI) + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 1: PCI slot 0 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 2: PCI slot 1 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 3: PCI slot 2 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 4: PCI slot 3 */ +#else + 0x0, /* External 1: */ + 0x0, /* External 2: */ + 0x0, /* External 3: */ + 0x0, /* External 4: */ +#endif + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 5: PHY */ + 0x0, /* External 6: */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 7: PHY */ + 0x0, /* External 8: */ + 0x0, /* External 9: */ + 0x0, /* External 10: */ + 0x0, /* External 11: */ +}; + +void __init mpc85xx_ads_pic_init(void) +{ + struct mpic *mpic1; + phys_addr_t OpenPIC_PAddr; + + /* Determine the Physical Address of the OpenPIC regs */ + OpenPIC_PAddr = get_immrbase() + MPC85xx_OPENPIC_OFFSET; + + mpic1 = mpic_alloc(OpenPIC_PAddr, + MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, + 4, MPC85xx_OPENPIC_IRQ_OFFSET, 0, 250, + mpc85xx_ads_openpic_initsenses, + sizeof(mpc85xx_ads_openpic_initsenses), + " OpenPIC "); + BUG_ON(mpic1 == NULL); + mpic_assign_isu(mpic1, 0, OpenPIC_PAddr + 0x10200); + mpic_assign_isu(mpic1, 1, OpenPIC_PAddr + 0x10280); + mpic_assign_isu(mpic1, 2, OpenPIC_PAddr + 0x10300); + mpic_assign_isu(mpic1, 3, OpenPIC_PAddr + 0x10380); + mpic_assign_isu(mpic1, 4, OpenPIC_PAddr + 0x10400); + mpic_assign_isu(mpic1, 5, OpenPIC_PAddr + 0x10480); + mpic_assign_isu(mpic1, 6, OpenPIC_PAddr + 0x10500); + mpic_assign_isu(mpic1, 7, OpenPIC_PAddr + 0x10580); + + /* dummy mappings to get to 48 */ + mpic_assign_isu(mpic1, 8, OpenPIC_PAddr + 0x10600); + mpic_assign_isu(mpic1, 9, OpenPIC_PAddr + 0x10680); + mpic_assign_isu(mpic1, 10, OpenPIC_PAddr + 0x10700); + mpic_assign_isu(mpic1, 11, OpenPIC_PAddr + 0x10780); + + /* External ints */ + mpic_assign_isu(mpic1, 12, OpenPIC_PAddr + 0x10000); + mpic_assign_isu(mpic1, 13, OpenPIC_PAddr + 0x10080); + mpic_assign_isu(mpic1, 14, OpenPIC_PAddr + 0x10100); + mpic_init(mpic1); +} + +/* + * Setup the architecture + */ +static void __init mpc85xx_ads_setup_arch(void) +{ + struct device_node *cpu; + + if (ppc_md.progress) + ppc_md.progress("mpc85xx_ads_setup_arch()", 0); + + cpu = of_find_node_by_type(NULL, "cpu"); + if (cpu != 0) { + unsigned int *fp; + + fp = (int *)get_property(cpu, "clock-frequency", NULL); + if (fp != 0) + loops_per_jiffy = *fp / HZ; + else + loops_per_jiffy = 50000000 / HZ; + of_node_put(cpu); + } +#ifdef CONFIG_ROOT_NFS + ROOT_DEV = Root_NFS; +#else + ROOT_DEV = Root_HDA1; +#endif +} + +void mpc85xx_ads_show_cpuinfo(struct seq_file *m) +{ + uint pvid, svid, phid1; + uint memsize = total_memory; + + pvid = mfspr(SPRN_PVR); + svid = mfspr(SPRN_SVR); + + seq_printf(m, "Vendor\t\t: Freescale Semiconductor\n"); + seq_printf(m, "Machine\t\t: mpc85xx\n"); + seq_printf(m, "PVR\t\t: 0x%x\n", pvid); + seq_printf(m, "SVR\t\t: 0x%x\n", svid); + + /* Display cpu Pll setting */ + phid1 = mfspr(SPRN_HID1); + seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); + + /* Display the amount of memory */ + seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024)); +} + +void __init platform_init(void) +{ + ppc_md.setup_arch = mpc85xx_ads_setup_arch; + ppc_md.show_cpuinfo = mpc85xx_ads_show_cpuinfo; + + ppc_md.init_IRQ = mpc85xx_ads_pic_init; + ppc_md.get_irq = mpic_get_irq; + + ppc_md.restart = mpc85xx_restart; + ppc_md.power_off = NULL; + ppc_md.halt = NULL; + + ppc_md.time_init = NULL; + ppc_md.set_rtc_time = NULL; + ppc_md.get_rtc_time = NULL; + ppc_md.calibrate_decr = generic_calibrate_decr; + + ppc_md.progress = udbg_progress; + + if (ppc_md.progress) + ppc_md.progress("mpc85xx_ads platform_init(): exit", 0); +} diff -puN /dev/null arch/powerpc/platforms/85xx/mpc85xx.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/85xx/mpc85xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,17 @@ +/* + * arch/ppc/platforms/85xx/mpc85xx.h + * + * MPC85xx soc definitions/function decls + * + * Maintainer: Kumar Gala + * + * Copyright 2005 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +extern void mpc85xx_restart(char *); diff -puN arch/powerpc/platforms/chrp/pegasos_eth.c~git-powerpc arch/powerpc/platforms/chrp/pegasos_eth.c --- devel/arch/powerpc/platforms/chrp/pegasos_eth.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/chrp/pegasos_eth.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chrp_pegasos_eth.c - * * Copyright (C) 2005 Sven Luther * Thanks to : * Dale Farnsworth diff -puN arch/powerpc/platforms/chrp/setup.c~git-powerpc arch/powerpc/platforms/chrp/setup.c --- devel/arch/powerpc/platforms/chrp/setup.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/chrp/setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) diff -puN arch/powerpc/platforms/chrp/time.c~git-powerpc arch/powerpc/platforms/chrp/time.c --- devel/arch/powerpc/platforms/chrp/time.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/chrp/time.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chrp_time.c - * * Copyright (C) 1991, 1992, 1995 Linus Torvalds * * Adapted for PowerPC (PReP) by Gary Thomas diff -puN arch/powerpc/platforms/Makefile~git-powerpc arch/powerpc/platforms/Makefile --- devel/arch/powerpc/platforms/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -8,7 +8,7 @@ endif obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_4xx) += 4xx/ obj-$(CONFIG_PPC_83xx) += 83xx/ -obj-$(CONFIG_85xx) += 85xx/ +obj-$(CONFIG_PPC_85xx) += 85xx/ obj-$(CONFIG_PPC_PSERIES) += pseries/ obj-$(CONFIG_PPC_ISERIES) += iseries/ obj-$(CONFIG_PPC_MAPLE) += maple/ diff -puN arch/powerpc/platforms/maple/time.c~git-powerpc arch/powerpc/platforms/maple/time.c --- devel/arch/powerpc/platforms/maple/time.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/maple/time.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/maple_time.c - * * (c) Copyright 2004 Benjamin Herrenschmidt (benh@kernel.crashing.org), * IBM Corp. * diff -puN arch/powerpc/platforms/powermac/cpufreq_32.c~git-powerpc arch/powerpc/platforms/powermac/cpufreq_32.c --- devel/arch/powerpc/platforms/powermac/cpufreq_32.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/powermac/cpufreq_32.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pmac_cpufreq.c - * * Copyright (C) 2002 - 2005 Benjamin Herrenschmidt * Copyright (C) 2004 John Steele Scott * diff -puN arch/powerpc/platforms/powermac/feature.c~git-powerpc arch/powerpc/platforms/powermac/feature.c --- devel/arch/powerpc/platforms/powermac/feature.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/powermac/feature.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pmac_feature.c - * * Copyright (C) 1996-2001 Paul Mackerras (paulus@cs.anu.edu.au) * Ben. Herrenschmidt (benh@kernel.crashing.org) * diff -puN arch/powerpc/platforms/powermac/nvram.c~git-powerpc arch/powerpc/platforms/powermac/nvram.c --- devel/arch/powerpc/platforms/powermac/nvram.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/powermac/nvram.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pmac_nvram.c - * * Copyright (C) 2002 Benjamin Herrenschmidt (benh@kernel.crashing.org) * * This program is free software; you can redistribute it and/or diff -puN arch/powerpc/platforms/powermac/setup.c~git-powerpc arch/powerpc/platforms/powermac/setup.c --- devel/arch/powerpc/platforms/powermac/setup.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/powermac/setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -86,11 +86,10 @@ int ppc_override_l2cr = 0; int ppc_override_l2cr_value; int has_l2cache = 0; -int pmac_newworld = 1; +int pmac_newworld; static int current_root_goodness = -1; -extern int pmac_newworld; extern struct machdep_calls pmac_md; #define DEFAULT_ROOT_DEVICE Root_SDA1 /* sda1 - slightly silly choice */ @@ -308,9 +307,10 @@ static void __init pmac_setup_arch(void) for (ic = NULL; (ic = of_find_all_nodes(ic)) != NULL; ) if (get_property(ic, "interrupt-controller", NULL)) break; - pmac_newworld = (ic != NULL); - if (ic) + if (ic) { + pmac_newworld = 1; of_node_put(ic); + } /* Lookup PCI hosts */ pmac_pci_init(); diff -puN arch/powerpc/platforms/pseries/eeh.c~git-powerpc arch/powerpc/platforms/pseries/eeh.c --- devel/arch/powerpc/platforms/pseries/eeh.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/eeh.c 2006-02-27 22:38:10.000000000 -0800 @@ -893,6 +893,20 @@ void eeh_add_device_tree_early(struct de } EXPORT_SYMBOL_GPL(eeh_add_device_tree_early); +void eeh_add_device_tree_late(struct pci_bus *bus) +{ + struct pci_dev *dev; + + list_for_each_entry(dev, &bus->devices, bus_list) { + eeh_add_device_late(dev); + if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) { + struct pci_bus *subbus = dev->subordinate; + if (subbus) + eeh_add_device_tree_late(subbus); + } + } +} + /** * eeh_add_device_late - perform EEH initialization for the indicated pci device * @dev: pci device for which to set up EEH diff -puN arch/powerpc/platforms/pseries/eeh_driver.c~git-powerpc arch/powerpc/platforms/pseries/eeh_driver.c --- devel/arch/powerpc/platforms/pseries/eeh_driver.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/eeh_driver.c 2006-02-27 22:38:10.000000000 -0800 @@ -37,7 +37,7 @@ static inline const char * pcid_name (struct pci_dev *pdev) { - if (pdev->dev.driver) + if (pdev && pdev->dev.driver) return pdev->dev.driver->name; return ""; } diff -puN /dev/null arch/powerpc/platforms/pseries/firmware.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/pseries/firmware.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,103 @@ +/* + * pSeries firmware setup code. + * + * Portions from arch/powerpc/platforms/pseries/setup.c: + * Copyright (C) 1995 Linus Torvalds + * Adapted from 'alpha' version by Gary Thomas + * Modified by Cort Dougan (cort@cs.nmt.edu) + * Modified by PPC64 Team, IBM Corp + * + * Portions from arch/powerpc/kernel/firmware.c + * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org) + * Modifications for ppc64: + * Copyright (C) 2003 Dave Engebretsen + * Copyright (C) 2005 Stephen Rothwell, IBM Corporation + * + * Copyright 2006 IBM Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + */ + +#undef DEBUG + +#include +#include + +#ifdef DEBUG +#define DBG(fmt...) udbg_printf(fmt) +#else +#define DBG(fmt...) +#endif + +typedef struct { + unsigned long val; + char * name; +} firmware_feature_t; + +static __initdata firmware_feature_t +firmware_features_table[FIRMWARE_MAX_FEATURES] = { + {FW_FEATURE_PFT, "hcall-pft"}, + {FW_FEATURE_TCE, "hcall-tce"}, + {FW_FEATURE_SPRG0, "hcall-sprg0"}, + {FW_FEATURE_DABR, "hcall-dabr"}, + {FW_FEATURE_COPY, "hcall-copy"}, + {FW_FEATURE_ASR, "hcall-asr"}, + {FW_FEATURE_DEBUG, "hcall-debug"}, + {FW_FEATURE_PERF, "hcall-perf"}, + {FW_FEATURE_DUMP, "hcall-dump"}, + {FW_FEATURE_INTERRUPT, "hcall-interrupt"}, + {FW_FEATURE_MIGRATE, "hcall-migrate"}, + {FW_FEATURE_PERFMON, "hcall-perfmon"}, + {FW_FEATURE_CRQ, "hcall-crq"}, + {FW_FEATURE_VIO, "hcall-vio"}, + {FW_FEATURE_RDMA, "hcall-rdma"}, + {FW_FEATURE_LLAN, "hcall-lLAN"}, + {FW_FEATURE_BULK, "hcall-bulk"}, + {FW_FEATURE_XDABR, "hcall-xdabr"}, + {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, + {FW_FEATURE_SPLPAR, "hcall-splpar"}, +}; + +/* Build up the firmware features bitmask using the contents of + * device-tree/ibm,hypertas-functions. Ultimately this functionality may + * be moved into prom.c prom_init(). + */ +void __init fw_feature_init(void) +{ + struct device_node *dn; + char *hypertas, *s; + int len, i; + + DBG(" -> fw_feature_init()\n"); + + dn = of_find_node_by_path("/rtas"); + if (dn == NULL) { + printk(KERN_ERR "WARNING! Cannot find RTAS in device-tree!\n"); + goto out; + } + + hypertas = get_property(dn, "ibm,hypertas-functions", &len); + if (hypertas == NULL) + goto out; + + for (s = hypertas; s < hypertas + len; s += strlen(s) + 1) { + for (i = 0; i < FIRMWARE_MAX_FEATURES; i++) { + /* check value against table of strings */ + if (!firmware_features_table[i].name || + strcmp(firmware_features_table[i].name, s)) + continue; + + /* we have a match */ + ppc64_firmware_features |= + firmware_features_table[i].val; + break; + } + } + +out: + of_node_put(dn); + DBG(" <- fw_feature_init()\n"); +} diff -puN /dev/null arch/powerpc/platforms/pseries/firmware.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/powerpc/platforms/pseries/firmware.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,17 @@ +/* + * Copyright 2006 IBM Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + */ + +#ifndef _PSERIES_FIRMWARE_H +#define _PSERIES_FIRMWARE_H + +#include + +extern void __init fw_feature_init(void); + +#endif /* _PSERIES_FIRMWARE_H */ diff -puN arch/powerpc/platforms/pseries/hvCall.S~git-powerpc arch/powerpc/platforms/pseries/hvCall.S --- devel/arch/powerpc/platforms/pseries/hvCall.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/hvCall.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/pSeries_hvCall.S - * * This file contains the generic code to perform a call to the * pSeries LPAR hypervisor. * NOTE: this file will go away when we move to inline this work. diff -puN arch/powerpc/platforms/pseries/iommu.c~git-powerpc arch/powerpc/platforms/pseries/iommu.c --- devel/arch/powerpc/platforms/pseries/iommu.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/iommu.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/pSeries_iommu.c - * * Copyright (C) 2001 Mike Corrigan & Dave Engebretsen, IBM Corporation * * Rewrite, cleanup: diff -puN arch/powerpc/platforms/pseries/Makefile~git-powerpc arch/powerpc/platforms/pseries/Makefile --- devel/arch/powerpc/platforms/pseries/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -1,5 +1,6 @@ obj-y := pci.o lpar.o hvCall.o nvram.o reconfig.o \ - setup.o iommu.o ras.o rtasd.o pci_dlpar.o + setup.o iommu.o ras.o rtasd.o pci_dlpar.o \ + firmware.o obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_IBMVIO) += vio.o obj-$(CONFIG_XICS) += xics.o diff -puN arch/powerpc/platforms/pseries/pci.c~git-powerpc arch/powerpc/platforms/pseries/pci.c --- devel/arch/powerpc/platforms/pseries/pci.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/pci.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc64/kernel/pSeries_pci.c - * * Copyright (C) 2001 Dave Engebretsen, IBM Corporation * Copyright (C) 2003 Anton Blanchard , IBM * diff -puN arch/powerpc/platforms/pseries/pci_dlpar.c~git-powerpc arch/powerpc/platforms/pseries/pci_dlpar.c --- devel/arch/powerpc/platforms/pseries/pci_dlpar.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/pci_dlpar.c 2006-02-27 22:38:10.000000000 -0800 @@ -106,6 +106,8 @@ pcibios_fixup_new_pci_devices(struct pci } } } + + eeh_add_device_tree_late(bus); } EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices); @@ -114,7 +116,6 @@ pcibios_pci_config_bridge(struct pci_dev { u8 sec_busno; struct pci_bus *child_bus; - struct pci_dev *child_dev; /* Get busno of downstream bus */ pci_read_config_byte(dev, PCI_SECONDARY_BUS, &sec_busno); @@ -129,10 +130,6 @@ pcibios_pci_config_bridge(struct pci_dev pci_scan_child_bus(child_bus); - list_for_each_entry(child_dev, &child_bus->devices, bus_list) { - eeh_add_device_late(child_dev); - } - /* Fixup new pci devices without touching bus struct */ pcibios_fixup_new_pci_devices(child_bus, 0); @@ -160,18 +157,25 @@ pcibios_add_pci_devices(struct pci_bus * eeh_add_device_tree_early(dn); - /* pci_scan_slot should find all children */ - slotno = PCI_SLOT(PCI_DN(dn->child)->devfn); - num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0)); - if (num) { - pcibios_fixup_new_pci_devices(bus, 1); - pci_bus_add_devices(bus); - } + if (_machine == PLATFORM_PSERIES_LPAR) { + /* use ofdt-based probe */ + of_scan_bus(dn, bus); + if (!list_empty(&bus->devices)) { + pcibios_fixup_new_pci_devices(bus, 0); + pci_bus_add_devices(bus); + } + } else { + /* use legacy probe */ + slotno = PCI_SLOT(PCI_DN(dn->child)->devfn); + num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0)); + if (num) { + pcibios_fixup_new_pci_devices(bus, 1); + pci_bus_add_devices(bus); + } - list_for_each_entry(dev, &bus->devices, bus_list) { - eeh_add_device_late (dev); - if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) - pcibios_pci_config_bridge(dev); + list_for_each_entry(dev, &bus->devices, bus_list) + if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) + pcibios_pci_config_bridge(dev); } } EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); diff -puN arch/powerpc/platforms/pseries/setup.c~git-powerpc arch/powerpc/platforms/pseries/setup.c --- devel/arch/powerpc/platforms/pseries/setup.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/platforms/pseries/setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -60,7 +60,6 @@ #include #include #include "xics.h" -#include #include #include #include @@ -70,6 +69,7 @@ #include "plpar_wrappers.h" #include "ras.h" +#include "firmware.h" #ifdef DEBUG #define DBG(fmt...) udbg_printf(fmt) @@ -262,53 +262,6 @@ static int __init pSeries_init_panel(voi } arch_initcall(pSeries_init_panel); - -/* Build up the ppc64_firmware_features bitmask field - * using contents of device-tree/ibm,hypertas-functions. - * Ultimately this functionality may be moved into prom.c prom_init(). - */ -static void __init fw_feature_init(void) -{ - struct device_node * dn; - char * hypertas; - unsigned int len; - - DBG(" -> fw_feature_init()\n"); - - ppc64_firmware_features = 0; - dn = of_find_node_by_path("/rtas"); - if (dn == NULL) { - printk(KERN_ERR "WARNING ! Cannot find RTAS in device-tree !\n"); - goto no_rtas; - } - - hypertas = get_property(dn, "ibm,hypertas-functions", &len); - if (hypertas) { - while (len > 0){ - int i, hypertas_len; - /* check value against table of strings */ - for(i=0; i < FIRMWARE_MAX_FEATURES ;i++) { - if ((firmware_features_table[i].name) && - (strcmp(firmware_features_table[i].name,hypertas))==0) { - /* we have a match */ - ppc64_firmware_features |= - (firmware_features_table[i].val); - break; - } - } - hypertas_len = strlen(hypertas); - len -= hypertas_len +1; - hypertas+= hypertas_len +1; - } - } - - of_node_put(dn); -no_rtas: - - DBG(" <- fw_feature_init()\n"); -} - - static void __init pSeries_discover_pic(void) { struct device_node *np; diff -puN arch/powerpc/sysdev/dart_iommu.c~git-powerpc arch/powerpc/sysdev/dart_iommu.c --- devel/arch/powerpc/sysdev/dart_iommu.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/sysdev/dart_iommu.c 2006-02-27 22:38:10.000000000 -0800 @@ -194,8 +194,6 @@ static int dart_init(struct device_node * prefetching into invalid pages and corrupting data */ tmp = lmb_alloc(DART_PAGE_SIZE, DART_PAGE_SIZE); - if (!tmp) - panic("DART: Cannot allocate spare page!"); dart_emptyval = DARTMAP_VALID | ((tmp >> DART_PAGE_SHIFT) & DARTMAP_RPNMASK); diff -puN arch/powerpc/sysdev/dcr.S~git-powerpc arch/powerpc/sysdev/dcr.S --- devel/arch/powerpc/sysdev/dcr.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/sysdev/dcr.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/dcr.S - * * "Indirect" DCR access * * Copyright (c) 2004 Eugene Surovegin diff -puN arch/powerpc/sysdev/fsl_soc.c~git-powerpc arch/powerpc/sysdev/fsl_soc.c --- devel/arch/powerpc/sysdev/fsl_soc.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/sysdev/fsl_soc.c 2006-02-27 22:38:10.000000000 -0800 @@ -40,7 +40,7 @@ phys_addr_t get_immrbase(void) return immrbase; soc = of_find_node_by_type(NULL, "soc"); - if (soc != 0) { + if (soc) { unsigned int size; void *prop = get_property(soc, "reg", &size); immrbase = of_translate_address(soc, prop); @@ -49,21 +49,20 @@ phys_addr_t get_immrbase(void) return immrbase; } -EXPORT_SYMBOL(get_immrbase); -static const char * gfar_tx_intr = "tx"; -static const char * gfar_rx_intr = "rx"; -static const char * gfar_err_intr = "error"; +EXPORT_SYMBOL(get_immrbase); -static int __init gfar_of_init(void) +static int __init gfar_mdio_of_init(void) { struct device_node *np; unsigned int i; - struct platform_device *mdio_dev, *gfar_dev; + struct platform_device *mdio_dev; struct resource res; int ret; - for (np = NULL, i = 0; (np = of_find_compatible_node(np, "mdio", "gianfar")) != NULL; i++) { + for (np = NULL, i = 0; + (np = of_find_compatible_node(np, "mdio", "gianfar")) != NULL; + i++) { int k; struct device_node *child = NULL; struct gianfar_mdio_data mdio_data; @@ -73,12 +72,14 @@ static int __init gfar_of_init(void) ret = of_address_to_resource(np, 0, &res); if (ret) - goto mdio_err; + goto err; - mdio_dev = platform_device_register_simple("fsl-gianfar_mdio", res.start, &res, 1); + mdio_dev = + platform_device_register_simple("fsl-gianfar_mdio", + res.start, &res, 1); if (IS_ERR(mdio_dev)) { ret = PTR_ERR(mdio_dev); - goto mdio_err; + goto err; } for (k = 0; k < 32; k++) @@ -86,17 +87,44 @@ static int __init gfar_of_init(void) while ((child = of_get_next_child(np, child)) != NULL) { if (child->n_intrs) { - u32 *id = (u32 *) get_property(child, "reg", NULL); + u32 *id = + (u32 *) get_property(child, "reg", NULL); mdio_data.irq[*id] = child->intrs[0].line; } } - ret = platform_device_add_data(mdio_dev, &mdio_data, sizeof(struct gianfar_mdio_data)); + ret = + platform_device_add_data(mdio_dev, &mdio_data, + sizeof(struct gianfar_mdio_data)); if (ret) - goto mdio_unreg; + goto unreg; } - for (np = NULL, i = 0; (np = of_find_compatible_node(np, "network", "gianfar")) != NULL; i++) { + return 0; + +unreg: + platform_device_unregister(mdio_dev); +err: + return ret; +} + +arch_initcall(gfar_mdio_of_init); + +static const char *gfar_tx_intr = "tx"; +static const char *gfar_rx_intr = "rx"; +static const char *gfar_err_intr = "error"; + +static int __init gfar_of_init(void) +{ + struct device_node *np; + unsigned int i; + struct platform_device *gfar_dev; + struct resource res; + int ret; + + for (np = NULL, i = 0; + (np = of_find_compatible_node(np, "network", "gianfar")) != NULL; + i++) { struct resource r[4]; struct device_node *phy, *mdio; struct gianfar_platform_data gfar_data; @@ -110,7 +138,7 @@ static int __init gfar_of_init(void) ret = of_address_to_resource(np, 0, &r[0]); if (ret) - goto gfar_err; + goto err; r[1].start = np->intrs[0].line; r[1].end = np->intrs[0].line; @@ -133,11 +161,13 @@ static int __init gfar_of_init(void) r[3].flags = IORESOURCE_IRQ; } - gfar_dev = platform_device_register_simple("fsl-gianfar", i, &r[0], np->n_intrs + 1); + gfar_dev = + platform_device_register_simple("fsl-gianfar", i, &r[0], + np->n_intrs + 1); if (IS_ERR(gfar_dev)) { ret = PTR_ERR(gfar_dev); - goto gfar_err; + goto err; } mac_addr = get_property(np, "address", NULL); @@ -145,26 +175,26 @@ static int __init gfar_of_init(void) if (model && !strcasecmp(model, "TSEC")) gfar_data.device_flags = - FSL_GIANFAR_DEV_HAS_GIGABIT | - FSL_GIANFAR_DEV_HAS_COALESCE | - FSL_GIANFAR_DEV_HAS_RMON | - FSL_GIANFAR_DEV_HAS_MULTI_INTR; + FSL_GIANFAR_DEV_HAS_GIGABIT | + FSL_GIANFAR_DEV_HAS_COALESCE | + FSL_GIANFAR_DEV_HAS_RMON | + FSL_GIANFAR_DEV_HAS_MULTI_INTR; if (model && !strcasecmp(model, "eTSEC")) gfar_data.device_flags = - FSL_GIANFAR_DEV_HAS_GIGABIT | - FSL_GIANFAR_DEV_HAS_COALESCE | - FSL_GIANFAR_DEV_HAS_RMON | - FSL_GIANFAR_DEV_HAS_MULTI_INTR | - FSL_GIANFAR_DEV_HAS_CSUM | - FSL_GIANFAR_DEV_HAS_VLAN | - FSL_GIANFAR_DEV_HAS_EXTENDED_HASH; + FSL_GIANFAR_DEV_HAS_GIGABIT | + FSL_GIANFAR_DEV_HAS_COALESCE | + FSL_GIANFAR_DEV_HAS_RMON | + FSL_GIANFAR_DEV_HAS_MULTI_INTR | + FSL_GIANFAR_DEV_HAS_CSUM | + FSL_GIANFAR_DEV_HAS_VLAN | + FSL_GIANFAR_DEV_HAS_EXTENDED_HASH; ph = (phandle *) get_property(np, "phy-handle", NULL); phy = of_find_node_by_phandle(*ph); if (phy == NULL) { ret = -ENODEV; - goto gfar_unreg; + goto unreg; } mdio = of_get_parent(phy); @@ -174,7 +204,7 @@ static int __init gfar_of_init(void) if (ret) { of_node_put(phy); of_node_put(mdio); - goto gfar_unreg; + goto unreg; } gfar_data.phy_id = *id; @@ -183,23 +213,22 @@ static int __init gfar_of_init(void) of_node_put(phy); of_node_put(mdio); - ret = platform_device_add_data(gfar_dev, &gfar_data, sizeof(struct gianfar_platform_data)); + ret = + platform_device_add_data(gfar_dev, &gfar_data, + sizeof(struct + gianfar_platform_data)); if (ret) - goto gfar_unreg; + goto unreg; } return 0; -mdio_unreg: - platform_device_unregister(mdio_dev); -mdio_err: - return ret; - -gfar_unreg: +unreg: platform_device_unregister(gfar_dev); -gfar_err: +err: return ret; } + arch_initcall(gfar_of_init); static int __init fsl_i2c_of_init(void) @@ -209,17 +238,19 @@ static int __init fsl_i2c_of_init(void) struct platform_device *i2c_dev; int ret; - for (np = NULL, i = 0; (np = of_find_compatible_node(np, "i2c", "fsl-i2c")) != NULL; i++) { + for (np = NULL, i = 0; + (np = of_find_compatible_node(np, "i2c", "fsl-i2c")) != NULL; + i++) { struct resource r[2]; struct fsl_i2c_platform_data i2c_data; - unsigned char * flags = NULL; + unsigned char *flags = NULL; memset(&r, 0, sizeof(r)); memset(&i2c_data, 0, sizeof(i2c_data)); ret = of_address_to_resource(np, 0, &r[0]); if (ret) - goto i2c_err; + goto err; r[1].start = np->intrs[0].line; r[1].end = np->intrs[0].line; @@ -228,7 +259,7 @@ static int __init fsl_i2c_of_init(void) i2c_dev = platform_device_register_simple("fsl-i2c", i, r, 2); if (IS_ERR(i2c_dev)) { ret = PTR_ERR(i2c_dev); - goto i2c_err; + goto err; } i2c_data.device_flags = 0; @@ -240,18 +271,22 @@ static int __init fsl_i2c_of_init(void) if (flags) i2c_data.device_flags |= FSL_I2C_DEV_CLOCK_5200; - ret = platform_device_add_data(i2c_dev, &i2c_data, sizeof(struct fsl_i2c_platform_data)); + ret = + platform_device_add_data(i2c_dev, &i2c_data, + sizeof(struct + fsl_i2c_platform_data)); if (ret) - goto i2c_unreg; + goto unreg; } return 0; -i2c_unreg: +unreg: platform_device_unregister(i2c_dev); -i2c_err: +err: return ret; } + arch_initcall(fsl_i2c_of_init); #ifdef CONFIG_PPC_83xx @@ -267,51 +302,192 @@ static int __init mpc83xx_wdt_init(void) if (!np) { ret = -ENODEV; - goto mpc83xx_wdt_nodev; + goto nodev; } soc = of_find_node_by_type(NULL, "soc"); if (!soc) { ret = -ENODEV; - goto mpc83xx_wdt_nosoc; + goto nosoc; } freq = (unsigned int *)get_property(soc, "bus-frequency", NULL); if (!freq) { ret = -ENODEV; - goto mpc83xx_wdt_err; + goto err; } memset(&r, 0, sizeof(r)); ret = of_address_to_resource(np, 0, &r); if (ret) - goto mpc83xx_wdt_err; + goto err; dev = platform_device_register_simple("mpc83xx_wdt", 0, &r, 1); if (IS_ERR(dev)) { ret = PTR_ERR(dev); - goto mpc83xx_wdt_err; + goto err; } ret = platform_device_add_data(dev, freq, sizeof(int)); if (ret) - goto mpc83xx_wdt_unreg; + goto unreg; of_node_put(soc); of_node_put(np); return 0; -mpc83xx_wdt_unreg: +unreg: platform_device_unregister(dev); -mpc83xx_wdt_err: +err: of_node_put(soc); -mpc83xx_wdt_nosoc: +nosoc: of_node_put(np); -mpc83xx_wdt_nodev: +nodev: return ret; } + arch_initcall(mpc83xx_wdt_init); #endif + +static enum fsl_usb2_phy_modes determine_usb_phy(char * phy_type) +{ + if (!phy_type) + return FSL_USB2_PHY_NONE; + if (!strcasecmp(phy_type, "ulpi")) + return FSL_USB2_PHY_ULPI; + if (!strcasecmp(phy_type, "utmi")) + return FSL_USB2_PHY_UTMI; + if (!strcasecmp(phy_type, "utmi_wide")) + return FSL_USB2_PHY_UTMI_WIDE; + if (!strcasecmp(phy_type, "serial")) + return FSL_USB2_PHY_SERIAL; + + return FSL_USB2_PHY_NONE; +} + +static int __init fsl_usb_of_init(void) +{ + struct device_node *np; + unsigned int i; + struct platform_device *usb_dev; + int ret; + + for (np = NULL, i = 0; + (np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL; + i++) { + struct resource r[2]; + struct fsl_usb2_platform_data usb_data; + unsigned char *prop = NULL; + + memset(&r, 0, sizeof(r)); + memset(&usb_data, 0, sizeof(usb_data)); + + ret = of_address_to_resource(np, 0, &r[0]); + if (ret) + goto err; + + r[1].start = np->intrs[0].line; + r[1].end = np->intrs[0].line; + r[1].flags = IORESOURCE_IRQ; + + usb_dev = + platform_device_register_simple("fsl-usb2-mph", i, r, 2); + if (IS_ERR(usb_dev)) { + ret = PTR_ERR(usb_dev); + goto err; + } + + usb_dev->dev.coherent_dma_mask = 0xffffffffUL; + usb_dev->dev.dma_mask = &usb_dev->dev.coherent_dma_mask; + + usb_data.operating_mode = FSL_USB2_MPH_HOST; + + prop = get_property(np, "port0", NULL); + if (prop) + usb_data.port_enables |= FSL_USB2_PORT0_ENABLED; + + prop = get_property(np, "port1", NULL); + if (prop) + usb_data.port_enables |= FSL_USB2_PORT1_ENABLED; + + prop = get_property(np, "phy_type", NULL); + usb_data.phy_mode = determine_usb_phy(prop); + + ret = + platform_device_add_data(usb_dev, &usb_data, + sizeof(struct + fsl_usb2_platform_data)); + if (ret) + goto unreg; + } + + return 0; + +unreg: + platform_device_unregister(usb_dev); +err: + return ret; +} + +arch_initcall(fsl_usb_of_init); + +static int __init fsl_usb_dr_of_init(void) +{ + struct device_node *np; + unsigned int i; + struct platform_device *usb_dev; + int ret; + + for (np = NULL, i = 0; + (np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL; + i++) { + struct resource r[2]; + struct fsl_usb2_platform_data usb_data; + unsigned char *prop = NULL; + + memset(&r, 0, sizeof(r)); + memset(&usb_data, 0, sizeof(usb_data)); + + ret = of_address_to_resource(np, 0, &r[0]); + if (ret) + goto err; + + r[1].start = np->intrs[0].line; + r[1].end = np->intrs[0].line; + r[1].flags = IORESOURCE_IRQ; + + usb_dev = + platform_device_register_simple("fsl-usb2-dr", i, r, 2); + if (IS_ERR(usb_dev)) { + ret = PTR_ERR(usb_dev); + goto err; + } + + usb_dev->dev.coherent_dma_mask = 0xffffffffUL; + usb_dev->dev.dma_mask = &usb_dev->dev.coherent_dma_mask; + + usb_data.operating_mode = FSL_USB2_DR_HOST; + + prop = get_property(np, "phy_type", NULL); + usb_data.phy_mode = determine_usb_phy(prop); + + ret = + platform_device_add_data(usb_dev, &usb_data, + sizeof(struct + fsl_usb2_platform_data)); + if (ret) + goto unreg; + } + + return 0; + +unreg: + platform_device_unregister(usb_dev); +err: + return ret; +} + +arch_initcall(fsl_usb_dr_of_init); diff -puN arch/powerpc/sysdev/ipic.h~git-powerpc arch/powerpc/sysdev/ipic.h --- devel/arch/powerpc/sysdev/ipic.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/powerpc/sysdev/ipic.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ipic.h - * * IPIC private definitions and structure. * * Maintainer: Kumar Gala diff -puN arch/ppc/4xx_io/serial_sicc.c~git-powerpc arch/ppc/4xx_io/serial_sicc.c --- devel/arch/ppc/4xx_io/serial_sicc.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/4xx_io/serial_sicc.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/4xx_io/serial_sicc.c - * * Driver for IBM STB3xxx SICC serial port * * Based on drivers/char/serial_amba.c, by ARM Ltd. diff -puN arch/ppc/8xx_io/commproc.c~git-powerpc arch/ppc/8xx_io/commproc.c --- devel/arch/ppc/8xx_io/commproc.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/8xx_io/commproc.c 2006-02-27 22:38:10.000000000 -0800 @@ -73,7 +73,7 @@ cpm_mask_irq(unsigned int irq) { int cpm_vec = irq - CPM_IRQ_OFFSET; - out_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr, in_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr) & ~(1 << cpm_vec)); + clrbits32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr, (1 << cpm_vec)); } static void @@ -81,7 +81,7 @@ cpm_unmask_irq(unsigned int irq) { int cpm_vec = irq - CPM_IRQ_OFFSET; - out_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr, in_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr) | (1 << cpm_vec)); + setbits32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cimr, (1 << cpm_vec)); } static void @@ -198,7 +198,7 @@ cpm_interrupt_init(void) if (setup_irq(CPM_IRQ_OFFSET + CPMVEC_ERROR, &cpm_error_irqaction)) panic("Could not allocate CPM error IRQ!"); - out_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr, in_be32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr) | CICR_IEN); + setbits32(&((immap_t *)IMAP_ADDR)->im_cpic.cpic_cicr, CICR_IEN); } /* diff -puN arch/ppc/amiga/amiints.c~git-powerpc arch/ppc/amiga/amiints.c --- devel/arch/ppc/amiga/amiints.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/amiga/amiints.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,5 +1,5 @@ /* - * arch/ppc/amiga/amiints.c -- Amiga Linux interrupt handling code + * Amiga Linux interrupt handling code * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive diff -puN arch/ppc/amiga/bootinfo.c~git-powerpc arch/ppc/amiga/bootinfo.c --- devel/arch/ppc/amiga/bootinfo.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/amiga/bootinfo.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/amiga/bootinfo.c - * * Extracted from arch/m68k/kernel/setup.c. * Should be properly generalized and put somewhere else. * Jesper diff -puN arch/ppc/amiga/cia.c~git-powerpc arch/ppc/amiga/cia.c --- devel/arch/ppc/amiga/cia.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/amiga/cia.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/amiga/cia.c - CIA support - * * Copyright (C) 1996 Roman Zippel * * The concept of some functions bases on the original Amiga OS function diff -puN arch/ppc/amiga/config.c~git-powerpc arch/ppc/amiga/config.c --- devel/arch/ppc/amiga/config.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/amiga/config.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,8 +1,6 @@ #define m68k_debug_device debug_device /* - * arch/ppc/amiga/config.c - * * Copyright (C) 1993 Hamish Macdonald * * This file is subject to the terms and conditions of the GNU General Public diff -puN arch/ppc/amiga/ints.c~git-powerpc arch/ppc/amiga/ints.c --- devel/arch/ppc/amiga/ints.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/amiga/ints.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/amiga/ints.c - * * Linux/m68k general interrupt handling code from arch/m68k/kernel/ints.c * Needed to drive the m68k emulating IRQ hardware on the PowerUp boards. */ diff -puN arch/ppc/boot/common/bootinfo.c~git-powerpc arch/ppc/boot/common/bootinfo.c --- devel/arch/ppc/boot/common/bootinfo.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/bootinfo.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/common/bootinfo.c - * * General bootinfo record utilities * Author: Randy Vinson * diff -puN arch/ppc/boot/common/Makefile~git-powerpc arch/ppc/boot/common/Makefile --- devel/arch/ppc/boot/common/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,3 @@ -# -# arch/ppc/boot/common/Makefile -# # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive # for more details. diff -puN arch/ppc/boot/common/misc-common.c~git-powerpc arch/ppc/boot/common/misc-common.c --- devel/arch/ppc/boot/common/misc-common.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/misc-common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/common/misc-common.c - * * Misc. bootloader code (almost) all platforms can use * * Author: Johnnie Peters diff -puN arch/ppc/boot/common/ns16550.c~git-powerpc arch/ppc/boot/common/ns16550.c --- devel/arch/ppc/boot/common/ns16550.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/ns16550.c 2006-02-27 22:38:10.000000000 -0800 @@ -8,6 +8,9 @@ #include #include +#if defined(CONFIG_XILINX_VIRTEX) +#include +#endif #include "nonstdio.h" #include "serial.h" diff -puN arch/ppc/boot/common/serial_stub.c~git-powerpc arch/ppc/boot/common/serial_stub.c --- devel/arch/ppc/boot/common/serial_stub.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/serial_stub.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/common/serial_stub.c - * * This is a few stub routines to make the boot code cleaner looking when * there is no serial port support doesn't need to be closed, for example. * diff -puN arch/ppc/boot/common/util.S~git-powerpc arch/ppc/boot/common/util.S --- devel/arch/ppc/boot/common/util.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/common/util.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/common/util.S - * * Useful bootup functions, which are more easily done in asm than C. * * NOTE: Be very very careful about the registers you use here. diff -puN arch/ppc/boot/include/mpc10x.h~git-powerpc arch/ppc/boot/include/mpc10x.h --- devel/arch/ppc/boot/include/mpc10x.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/include/mpc10x.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/include/mpc10.h - * * Common defines for the Motorola SPS MPC106/8240/107 Host bridge/Mem * ctrl/EPIC/etc. * diff -puN arch/ppc/boot/Makefile~git-powerpc arch/ppc/boot/Makefile --- devel/arch/ppc/boot/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,3 @@ -# -# arch/ppc/boot/Makefile -# # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive # for more details. diff -puN arch/ppc/boot/simple/cpc700_memory.c~git-powerpc arch/ppc/boot/simple/cpc700_memory.c --- devel/arch/ppc/boot/simple/cpc700_memory.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/cpc700_memory.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/common/cpc700_memory.c - * * Find memory based upon settings in the CPC700 bridge * * Author: Dan Cox diff -puN arch/ppc/boot/simple/embed_config.c~git-powerpc arch/ppc/boot/simple/embed_config.c --- devel/arch/ppc/boot/simple/embed_config.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/embed_config.c 2006-02-27 22:38:10.000000000 -0800 @@ -21,6 +21,9 @@ #ifdef CONFIG_40x #include #endif +#ifdef CONFIG_XILINX_VIRTEX +#include +#endif extern unsigned long timebase_period_ns; /* For those boards that don't provide one. @@ -742,7 +745,7 @@ embed_config(bd_t **bdp) } #endif /* WILLOW */ -#ifdef CONFIG_XILINX_ML300 +#if defined(CONFIG_XILINX_ML300) || defined(CONFIG_XILINX_ML403) void embed_config(bd_t ** bdp) { @@ -779,7 +782,7 @@ embed_config(bd_t ** bdp) timebase_period_ns = 1000000000 / bd->bi_tbfreq; /* see bi_tbfreq definition in arch/ppc/platforms/4xx/xilinx_ml300.h */ } -#endif /* CONFIG_XILINX_ML300 */ +#endif /* CONFIG_XILINX_ML300 || CONFIG_XILINX_ML403 */ #ifdef CONFIG_IBM_OPENBIOS /* This could possibly work for all treeboot roms. diff -puN arch/ppc/boot/simple/head.S~git-powerpc arch/ppc/boot/simple/head.S --- devel/arch/ppc/boot/simple/head.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/head.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/head.S - * * Initial board bringup code for many different boards. * * Author: Tom Rini @@ -65,6 +63,13 @@ start_: */ #endif +#if defined(CONFIG_XILINX_VIRTEX_4_FX) + /* PPC errata 213: only for Virtex-4 FX */ + mfccr0 0 + oris 0,0,0x50000000@h + mtccr0 0 +#endif + mflr r3 /* Save our actual starting address. */ /* The following functions we call must not modify r3 or r4..... diff -puN arch/ppc/boot/simple/Makefile~git-powerpc arch/ppc/boot/simple/Makefile --- devel/arch/ppc/boot/simple/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -192,6 +192,7 @@ boot-$(CONFIG_8xx) += embed_config.o boot-$(CONFIG_8260) += embed_config.o boot-$(CONFIG_EP405) += embed_config.o boot-$(CONFIG_XILINX_ML300) += embed_config.o +boot-$(CONFIG_XILINX_ML403) += embed_config.o boot-$(CONFIG_BSEIP) += iic.o boot-$(CONFIG_MBX) += iic.o pci.o qspan_pci.o boot-$(CONFIG_MV64X60) += misc-mv64x60.o diff -puN arch/ppc/boot/simple/misc.c~git-powerpc arch/ppc/boot/simple/misc.c --- devel/arch/ppc/boot/simple/misc.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/simple/misc.c - * * Misc. bootloader code for many machines. This assumes you have are using * a 6xx/7xx/74xx CPU in your machine. This assumes the chunk of memory * below 8MB is free. Finally, it assumes you have a NS16550-style uart for diff -puN arch/ppc/boot/simple/misc-chestnut.c~git-powerpc arch/ppc/boot/simple/misc-chestnut.c --- devel/arch/ppc/boot/simple/misc-chestnut.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-chestnut.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-chestnut.c - * * Setup for the IBM Chestnut (ibm-750fxgx_eval) * * Author: Mark A. Greer diff -puN arch/ppc/boot/simple/misc-cpci690.c~git-powerpc arch/ppc/boot/simple/misc-cpci690.c --- devel/arch/ppc/boot/simple/misc-cpci690.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-cpci690.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-cpci690.c - * * Add birec data for Force CPCI690 board. * * Author: Mark A. Greer diff -puN arch/ppc/boot/simple/misc-ev64260.c~git-powerpc arch/ppc/boot/simple/misc-ev64260.c --- devel/arch/ppc/boot/simple/misc-ev64260.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-ev64260.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-ev64260.c - * * Host bridge init code for the Marvell/Galileo EV-64260-BP evaluation board * with a GT64260 onboard. * diff -puN arch/ppc/boot/simple/misc-ev64360.c~git-powerpc arch/ppc/boot/simple/misc-ev64360.c --- devel/arch/ppc/boot/simple/misc-ev64360.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-ev64360.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,5 +1,4 @@ /* - * arch/ppc/boot/simple/misc-ev64360.c * Copyright (C) 2005 Lee Nicks * * Based on arch/ppc/boot/simple/misc-katana.c from: diff -puN arch/ppc/boot/simple/misc-katana.c~git-powerpc arch/ppc/boot/simple/misc-katana.c --- devel/arch/ppc/boot/simple/misc-katana.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-katana.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-katana.c - * * Set up MPSC values to bootwrapper can prompt user. * * Author: Mark A. Greer diff -puN arch/ppc/boot/simple/misc-mv64x60.c~git-powerpc arch/ppc/boot/simple/misc-mv64x60.c --- devel/arch/ppc/boot/simple/misc-mv64x60.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-mv64x60.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-mv64x60.c - * * Relocate bridge's register base and call board specific routine. * * Author: Mark A. Greer diff -puN arch/ppc/boot/simple/misc-prep.c~git-powerpc arch/ppc/boot/simple/misc-prep.c --- devel/arch/ppc/boot/simple/misc-prep.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-prep.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-prep.c - * * Maintainer: Tom Rini * * In the past: Gary Thomas, Cort Dougan diff -puN arch/ppc/boot/simple/misc-radstone_ppc7d.c~git-powerpc arch/ppc/boot/simple/misc-radstone_ppc7d.c --- devel/arch/ppc/boot/simple/misc-radstone_ppc7d.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-radstone_ppc7d.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/misc-radstone_ppc7d.c - * * Misc data for Radstone PPC7D board. * * Author: James Chapman diff -puN arch/ppc/boot/simple/misc-spruce.c~git-powerpc arch/ppc/boot/simple/misc-spruce.c --- devel/arch/ppc/boot/simple/misc-spruce.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/misc-spruce.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/spruce/misc.c - * * Misc. bootloader code for IBM Spruce reference platform * * Authors: Johnnie Peters diff -puN arch/ppc/boot/simple/mpc10x_memory.c~git-powerpc arch/ppc/boot/simple/mpc10x_memory.c --- devel/arch/ppc/boot/simple/mpc10x_memory.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/mpc10x_memory.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/common/mpc10x_common.c - * * A routine to find out how much memory the machine has. * * Based on: diff -puN arch/ppc/boot/simple/mpc52xx_tty.c~git-powerpc arch/ppc/boot/simple/mpc52xx_tty.c --- devel/arch/ppc/boot/simple/mpc52xx_tty.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/mpc52xx_tty.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/mpc52xx_tty.c - * * Minimal serial functions needed to send messages out a MPC52xx * Programmable Serial Controller (PSC). * diff -puN arch/ppc/boot/simple/mv64x60_tty.c~git-powerpc arch/ppc/boot/simple/mv64x60_tty.c --- devel/arch/ppc/boot/simple/mv64x60_tty.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/mv64x60_tty.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/mv64x60_tty.c - * * Bootloader version of the embedded MPSC/UART driver for the Marvell 64x60. * Note: Due to a GT64260A erratum, DMA will be used for UART input (via SDMA). * diff -puN arch/ppc/boot/simple/openbios.c~git-powerpc arch/ppc/boot/simple/openbios.c --- devel/arch/ppc/boot/simple/openbios.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/openbios.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/openbios.c - * * Copyright (c) 2005 DENX Software Engineering * Stefan Roese * diff -puN arch/ppc/boot/simple/relocate.S~git-powerpc arch/ppc/boot/simple/relocate.S --- devel/arch/ppc/boot/simple/relocate.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/simple/relocate.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/simple/relocate.S - * * This is the common part of the loader relocation and initialization * process. All of the board/processor specific initialization is * done before we get here. diff -puN arch/ppc/boot/utils/mkbugboot.c~git-powerpc arch/ppc/boot/utils/mkbugboot.c --- devel/arch/ppc/boot/utils/mkbugboot.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/boot/utils/mkbugboot.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/boot/utils/mkbugboot.c - * * Makes a Motorola PPCBUG ROM bootable image which can be flashed * into one of the FLASH banks on a Motorola PowerPlus board. * diff -puN /dev/null arch/ppc/configs/ml300_defconfig --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/configs/ml300_defconfig 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,739 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.16-rc1 +# Wed Jan 18 00:49:20 2006 +# +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_PPC=y +CONFIG_PPC32=y +CONFIG_GENERIC_NVRAM=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_SYSCTL=y +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_KMOD=y + +# +# Block layer +# +CONFIG_LBD=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# Processor +# +# CONFIG_6xx is not set +CONFIG_40x=y +# CONFIG_44x is not set +# CONFIG_POWER3 is not set +# CONFIG_8xx is not set +# CONFIG_E200 is not set +# CONFIG_E500 is not set +# CONFIG_MATH_EMULATION is not set +# CONFIG_KEXEC is not set +# CONFIG_CPU_FREQ is not set +CONFIG_4xx=y +# CONFIG_WANT_EARLY_SERIAL is not set + +# +# IBM 4xx options +# +# CONFIG_BUBINGA is not set +# CONFIG_CPCI405 is not set +# CONFIG_EP405 is not set +# CONFIG_REDWOOD_5 is not set +# CONFIG_REDWOOD_6 is not set +# CONFIG_SYCAMORE is not set +# CONFIG_WALNUT is not set +CONFIG_XILINX_ML300=y +CONFIG_IBM405_ERR77=y +CONFIG_IBM405_ERR51=y +CONFIG_XILINX_VIRTEX=y +CONFIG_EMBEDDEDBOOT=y +# CONFIG_PPC4xx_DMA is not set +CONFIG_PPC_GEN550=y +CONFIG_UART0_TTYS0=y +# CONFIG_UART0_TTYS1 is not set +CONFIG_NOT_COHERENT_CACHE=y + +# +# Platform options +# +# CONFIG_PC_KEYBOARD is not set +# CONFIG_HIGHMEM is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,9600" +# CONFIG_PM is not set +# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_SECCOMP=y +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +# CONFIG_PPC_I8259 is not set +# CONFIG_PCI is not set +# CONFIG_PCI_DOMAINS is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +CONFIG_CONSISTENT_START=0xff100000 +CONFIG_CONSISTENT_SIZE=0x00200000 +CONFIG_BOOT_LOAD=0x00400000 + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set +# CONFIG_DEBUG_DRIVER is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# I2O device support +# + +# +# Macintosh device drivers +# +# CONFIG_WINDFARM is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y + +# +# PHY device support +# + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set +# CONFIG_IBM_EMAC is not set + +# +# Ethernet (1000 Mbit) +# + +# +# Ethernet (10000 Mbit) +# + +# +# Token Ring devices +# + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_AGP is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Hardware Monitoring support +# +# CONFIG_HWMON is not set +# CONFIG_HWMON_VID is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB_ARCH_HAS_HCD is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# + +# +# SN Devices +# + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# IBM 40x options +# + +# +# Library routines +# +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_LIBCRC32C is not set +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_PRINTK_TIME=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set +CONFIG_FORCED_INLINING=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_KGDB is not set +CONFIG_XMON=y +# CONFIG_BDI_SWITCH is not set +# CONFIG_SERIAL_TEXT_DEBUG is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Hardware crypto devices +# diff -puN /dev/null arch/ppc/configs/ml403_defconfig --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/configs/ml403_defconfig 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,740 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.16-rc1 +# Wed Jan 18 01:11:41 2006 +# +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_PPC=y +CONFIG_PPC32=y +CONFIG_GENERIC_NVRAM=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_SYSCTL=y +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_KMOD=y + +# +# Block layer +# +CONFIG_LBD=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# Processor +# +# CONFIG_6xx is not set +CONFIG_40x=y +# CONFIG_44x is not set +# CONFIG_POWER3 is not set +# CONFIG_8xx is not set +# CONFIG_E200 is not set +# CONFIG_E500 is not set +# CONFIG_MATH_EMULATION is not set +# CONFIG_KEXEC is not set +# CONFIG_CPU_FREQ is not set +CONFIG_4xx=y +# CONFIG_WANT_EARLY_SERIAL is not set + +# +# IBM 4xx options +# +# CONFIG_BUBINGA is not set +# CONFIG_CPCI405 is not set +# CONFIG_EP405 is not set +# CONFIG_REDWOOD_5 is not set +# CONFIG_REDWOOD_6 is not set +# CONFIG_SYCAMORE is not set +# CONFIG_WALNUT is not set +# CONFIG_XILINX_ML300 is not set +CONFIG_XILINX_ML403=y +CONFIG_IBM405_ERR77=y +CONFIG_IBM405_ERR51=y +CONFIG_XILINX_VIRTEX=y +CONFIG_EMBEDDEDBOOT=y +# CONFIG_PPC4xx_DMA is not set +CONFIG_PPC_GEN550=y +CONFIG_UART0_TTYS0=y +# CONFIG_UART0_TTYS1 is not set +CONFIG_NOT_COHERENT_CACHE=y + +# +# Platform options +# +# CONFIG_PC_KEYBOARD is not set +# CONFIG_HIGHMEM is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,9600" +# CONFIG_PM is not set +# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_SECCOMP=y +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +# CONFIG_PPC_I8259 is not set +# CONFIG_PCI is not set +# CONFIG_PCI_DOMAINS is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +CONFIG_CONSISTENT_START=0xff100000 +CONFIG_CONSISTENT_SIZE=0x00200000 +CONFIG_BOOT_LOAD=0x00400000 + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set +# CONFIG_DEBUG_DRIVER is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# I2O device support +# + +# +# Macintosh device drivers +# +# CONFIG_WINDFARM is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y + +# +# PHY device support +# + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set +# CONFIG_IBM_EMAC is not set + +# +# Ethernet (1000 Mbit) +# + +# +# Ethernet (10000 Mbit) +# + +# +# Token Ring devices +# + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_AGP is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Hardware Monitoring support +# +# CONFIG_HWMON is not set +# CONFIG_HWMON_VID is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +# CONFIG_USB_ARCH_HAS_HCD is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# + +# +# SN Devices +# + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# IBM 40x options +# + +# +# Library routines +# +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_LIBCRC32C is not set +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_PRINTK_TIME=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set +CONFIG_FORCED_INLINING=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_KGDB is not set +CONFIG_XMON=y +# CONFIG_BDI_SWITCH is not set +# CONFIG_SERIAL_TEXT_DEBUG is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Hardware crypto devices +# diff -puN arch/ppc/Kconfig~git-powerpc arch/ppc/Kconfig --- devel/arch/ppc/Kconfig~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/Kconfig 2006-02-27 22:38:10.000000000 -0800 @@ -481,6 +481,53 @@ config WINCEPT endchoice +menu "Freescale Ethernet driver platform-specific options" + depends on FS_ENET + + config MPC8xx_SECOND_ETH + bool "Second Ethernet channel" + depends on (MPC885ADS || MPC86XADS) + default y + help + This enables support for second Ethernet on MPC885ADS and MPC86xADS boards. + The latter will use SCC1, for 885ADS you can select it below. + + choice + prompt "Second Ethernet channel" + depends on MPC8xx_SECOND_ETH + default MPC8xx_SECOND_ETH_FEC2 + + config MPC8xx_SECOND_ETH_FEC2 + bool "FEC2" + depends on MPC885ADS + help + Enable FEC2 to serve as 2-nd Ethernet channel. Note that SMC2 + (often 2-nd UART) will not work if this is enabled. + + config MPC8xx_SECOND_ETH_SCC1 + bool "SCC1" + depends on MPC86XADS + select MPC8xx_SCC_ENET_FIXED + help + Enable SCC1 to serve as 2-nd Ethernet channel. Note that SMC1 + (often 1-nd UART) will not work if this is enabled. + + config MPC8xx_SECOND_ETH_SCC3 + bool "SCC3" + depends on MPC885ADS + help + Enable SCC3 to serve as 2-nd Ethernet channel. Note that SMC1 + (often 1-nd UART) will not work if this is enabled. + + endchoice + + config MPC8xx_SCC_ENET_FIXED + depends on MPC8xx_SECOND_ETH_SCC + default n + bool "Use fixed MII-less mode for SCC Ethernet" + +endmenu + choice prompt "Machine Type" depends on 6xx || POWER3 diff -puN arch/ppc/Kconfig.debug~git-powerpc arch/ppc/Kconfig.debug --- devel/arch/ppc/Kconfig.debug~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/Kconfig.debug 2006-02-27 22:38:10.000000000 -0800 @@ -67,7 +67,7 @@ config SERIAL_TEXT_DEBUG config PPC_OCP bool - depends on IBM_OCP || XILINX_OCP + depends on IBM_OCP default y endmenu diff -puN arch/ppc/kernel/head_44x.S~git-powerpc arch/ppc/kernel/head_44x.S --- devel/arch/ppc/kernel/head_44x.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/kernel/head_44x.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/head_44x.S - * * Kernel execution entry point code. * * Copyright (c) 1995-1996 Gary Thomas diff -puN arch/ppc/kernel/head_8xx.S~git-powerpc arch/ppc/kernel/head_8xx.S --- devel/arch/ppc/kernel/head_8xx.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/kernel/head_8xx.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/except_8xx.S - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP diff -puN arch/ppc/kernel/head_fsl_booke.S~git-powerpc arch/ppc/kernel/head_fsl_booke.S --- devel/arch/ppc/kernel/head_fsl_booke.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/kernel/head_fsl_booke.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/head_fsl_booke.S - * * Kernel execution entry point code. * * Copyright (c) 1995-1996 Gary Thomas @@ -316,6 +314,7 @@ skpinv: addi r6,r6,1 /* Increment */ */ lis r2,DBCR0_IDM@h mtspr SPRN_DBCR0,r2 + isync /* clear any residual debug events */ li r2,-1 mtspr SPRN_DBSR,r2 @@ -1002,12 +1001,15 @@ _GLOBAL(giveup_fpu) _GLOBAL(abort) li r13,0 mtspr SPRN_DBCR0,r13 /* disable all debug events */ + isync mfmsr r13 ori r13,r13,MSR_DE@l /* Enable Debug Events */ mtmsr r13 + isync mfspr r13,SPRN_DBCR0 lis r13,(DBCR0_IDM|DBCR0_RST_CHIP)@h mtspr SPRN_DBCR0,r13 + isync _GLOBAL(set_context) diff -puN arch/ppc/kernel/traps.c~git-powerpc arch/ppc/kernel/traps.c --- devel/arch/ppc/kernel/traps.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/kernel/traps.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/traps.c - * * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * * This program is free software; you can redistribute it and/or diff -puN arch/ppc/lib/rheap.c~git-powerpc arch/ppc/lib/rheap.c --- devel/arch/ppc/lib/rheap.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/lib/rheap.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/rheap.c - * * A Remote Heap. Remote means that we don't touch the memory that the * heap points to. Normal heap implementations use the memory they manage * to place their list. We cannot do that because the memory we manage may diff -puN arch/ppc/math-emu/math.c~git-powerpc arch/ppc/math-emu/math.c --- devel/arch/ppc/math-emu/math.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/math-emu/math.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/math-emu/math.c - * * Copyright (C) 1999 Eddie C. Dost (ecd@atecom.com) */ diff -puN arch/ppc/mm/44x_mmu.c~git-powerpc arch/ppc/mm/44x_mmu.c --- devel/arch/ppc/mm/44x_mmu.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/mm/44x_mmu.c 2006-02-27 22:38:10.000000000 -0800 @@ -104,7 +104,7 @@ unsigned long __init mmu_mapin_ram(void) /* Determine number of entries necessary to cover lowmem */ pinned_tlbs = (unsigned int) - (_ALIGN(total_lowmem, PPC44x_PIN_SIZE) >> PPC44x_PIN_SHIFT); + (_ALIGN(total_lowmem, PPC_PIN_SIZE) >> PPC44x_PIN_SHIFT); /* Write upper watermark to save location */ tlb_44x_hwater = PPC44x_LOW_SLOT - pinned_tlbs; @@ -112,7 +112,7 @@ unsigned long __init mmu_mapin_ram(void) /* If necessary, set additional pinned TLBs */ if (pinned_tlbs > 1) for (i = (PPC44x_LOW_SLOT-(pinned_tlbs-1)); i < PPC44x_LOW_SLOT; i++) { - unsigned int phys_addr = (PPC44x_LOW_SLOT-i) * PPC44x_PIN_SIZE; + unsigned int phys_addr = (PPC44x_LOW_SLOT-i) * PPC_PIN_SIZE; ppc44x_pin_tlb(i, phys_addr+PAGE_OFFSET, phys_addr); } diff -puN arch/ppc/mm/fault.c~git-powerpc arch/ppc/mm/fault.c --- devel/arch/ppc/mm/fault.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/mm/fault.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/mm/fault.c - * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * diff -puN arch/ppc/mm/hashtable.S~git-powerpc arch/ppc/mm/hashtable.S --- devel/arch/ppc/mm/hashtable.S~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/mm/hashtable.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/hashtable.S - * * $Id: hashtable.S,v 1.6 1999/10/08 01:56:15 paulus Exp $ * * PowerPC version diff -puN arch/ppc/platforms/4xx/bamboo.c~git-powerpc arch/ppc/platforms/4xx/bamboo.c --- devel/arch/ppc/platforms/4xx/bamboo.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/bamboo.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/bamboo.c - * * Bamboo board specific routines * * Wade Farnsworth diff -puN arch/ppc/platforms/4xx/bamboo.h~git-powerpc arch/ppc/platforms/4xx/bamboo.h --- devel/arch/ppc/platforms/4xx/bamboo.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/bamboo.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/bamboo.h - * * Bamboo board definitions * * Wade Farnsworth diff -puN arch/ppc/platforms/4xx/bubinga.h~git-powerpc arch/ppc/platforms/4xx/bubinga.h --- devel/arch/ppc/platforms/4xx/bubinga.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/bubinga.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/bubinga.h - * * Bubinga board definitions * * Copyright (c) 2005 DENX Software Engineering diff -puN arch/ppc/platforms/4xx/cpci405.c~git-powerpc arch/ppc/platforms/4xx/cpci405.c --- devel/arch/ppc/platforms/4xx/cpci405.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/cpci405.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/cpci405.c - * * Board setup routines for the esd CPCI-405 cPCI Board. * * Author: Stefan Roese diff -puN arch/ppc/platforms/4xx/ebony.c~git-powerpc arch/ppc/platforms/4xx/ebony.c --- devel/arch/ppc/platforms/4xx/ebony.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ebony.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ebony.c - * * Ebony board specific routines * * Matt Porter diff -puN arch/ppc/platforms/4xx/ebony.h~git-powerpc arch/ppc/platforms/4xx/ebony.h --- devel/arch/ppc/platforms/4xx/ebony.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ebony.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ebony.h - * * Ebony board definitions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ep405.c~git-powerpc arch/ppc/platforms/4xx/ep405.c --- devel/arch/ppc/platforms/4xx/ep405.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ep405.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ep405.c - * * Embedded Planet 405GP board * http://www.embeddedplanet.com * diff -puN arch/ppc/platforms/4xx/ep405.h~git-powerpc arch/ppc/platforms/4xx/ep405.h --- devel/arch/ppc/platforms/4xx/ep405.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ep405.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ep405.h - * * Embedded Planet 405GP board * http://www.embeddedplanet.com * diff -puN arch/ppc/platforms/4xx/ibm405ep.c~git-powerpc arch/ppc/platforms/4xx/ibm405ep.c --- devel/arch/ppc/platforms/4xx/ibm405ep.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm405ep.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ibm405ep.c - * * Support for IBM PPC 405EP processors. * * Author: SAW (IBM), derived from ibmnp405l.c. diff -puN arch/ppc/platforms/4xx/ibm405ep.h~git-powerpc arch/ppc/platforms/4xx/ibm405ep.h --- devel/arch/ppc/platforms/4xx/ibm405ep.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm405ep.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm405ep.h - * * IBM PPC 405EP processor defines. * * Author: SAW (IBM), derived from ibm405gp.h. diff -puN arch/ppc/platforms/4xx/ibm405gp.h~git-powerpc arch/ppc/platforms/4xx/ibm405gp.h --- devel/arch/ppc/platforms/4xx/ibm405gp.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm405gp.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm405gp.h - * * Author: Armin Kuster akuster@mvista.com * * 2001 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibm405gpr.c~git-powerpc arch/ppc/platforms/4xx/ibm405gpr.c --- devel/arch/ppc/platforms/4xx/ibm405gpr.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm405gpr.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm405gpr.c - * * Author: Armin Kuster * * 2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibm405gpr.h~git-powerpc arch/ppc/platforms/4xx/ibm405gpr.h --- devel/arch/ppc/platforms/4xx/ibm405gpr.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm405gpr.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm405gpr.h - * * Author: Armin Kuster * * 2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibm440ep.c~git-powerpc arch/ppc/platforms/4xx/ibm440ep.c --- devel/arch/ppc/platforms/4xx/ibm440ep.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440ep.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440ep.c - * * PPC440EP I/O descriptions * * Wade Farnsworth diff -puN arch/ppc/platforms/4xx/ibm440ep.h~git-powerpc arch/ppc/platforms/4xx/ibm440ep.h --- devel/arch/ppc/platforms/4xx/ibm440ep.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440ep.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440ep.h - * * PPC440EP definitions * * Wade Farnsworth diff -puN arch/ppc/platforms/4xx/ibm440gp.c~git-powerpc arch/ppc/platforms/4xx/ibm440gp.c --- devel/arch/ppc/platforms/4xx/ibm440gp.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440gp.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440gp.c - * * PPC440GP I/O descriptions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ibm440gp.h~git-powerpc arch/ppc/platforms/4xx/ibm440gp.h --- devel/arch/ppc/platforms/4xx/ibm440gp.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440gp.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440gp.h - * * PPC440GP definitions * * Roland Dreier diff -puN arch/ppc/platforms/4xx/ibm440gx.c~git-powerpc arch/ppc/platforms/4xx/ibm440gx.c --- devel/arch/ppc/platforms/4xx/ibm440gx.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440gx.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440gx.c - * * PPC440GX I/O descriptions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ibm440gx.h~git-powerpc arch/ppc/platforms/4xx/ibm440gx.h --- devel/arch/ppc/platforms/4xx/ibm440gx.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440gx.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ibm440gx.h - * * PPC440GX definitions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ibm440sp.c~git-powerpc arch/ppc/platforms/4xx/ibm440sp.c --- devel/arch/ppc/platforms/4xx/ibm440sp.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440sp.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440sp.c - * * PPC440SP I/O descriptions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ibm440sp.h~git-powerpc arch/ppc/platforms/4xx/ibm440sp.h --- devel/arch/ppc/platforms/4xx/ibm440sp.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibm440sp.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440sp.h - * * PPC440SP definitions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ibmnp405h.c~git-powerpc arch/ppc/platforms/4xx/ibmnp405h.c --- devel/arch/ppc/platforms/4xx/ibmnp405h.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmnp405h.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmnp405h.c - * * Author: Armin Kuster * * 2000-2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibmnp405h.h~git-powerpc arch/ppc/platforms/4xx/ibmnp405h.h --- devel/arch/ppc/platforms/4xx/ibmnp405h.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmnp405h.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmnp405h.h - * * Author: Armin Kuster * * 2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibmstb4.c~git-powerpc arch/ppc/platforms/4xx/ibmstb4.c --- devel/arch/ppc/platforms/4xx/ibmstb4.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmstb4.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmstb4.c - * * Author: Armin Kuster * * 2000-2001 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibmstb4.h~git-powerpc arch/ppc/platforms/4xx/ibmstb4.h --- devel/arch/ppc/platforms/4xx/ibmstb4.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmstb4.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmstb4.h - * * Author: Armin Kuster * * 2001 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibmstbx25.c~git-powerpc arch/ppc/platforms/4xx/ibmstbx25.c --- devel/arch/ppc/platforms/4xx/ibmstbx25.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmstbx25.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmstbx25.c - * * Author: Armin Kuster * * 2000-2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/ibmstbx25.h~git-powerpc arch/ppc/platforms/4xx/ibmstbx25.h --- devel/arch/ppc/platforms/4xx/ibmstbx25.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ibmstbx25.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibmstbx25.h - * * Author: Armin Kuster * * 2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/Kconfig~git-powerpc arch/ppc/platforms/4xx/Kconfig --- devel/arch/ppc/platforms/4xx/Kconfig~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/Kconfig 2006-02-27 22:38:10.000000000 -0800 @@ -57,6 +57,10 @@ config XILINX_ML300 help This option enables support for the Xilinx ML300 evaluation board. +config XILINX_ML403 + bool "Xilinx-ML403" + help + This option enables support for the Xilinx ML403 evaluation board. endchoice choice @@ -172,11 +176,6 @@ config IBM_OCP depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT default y -config XILINX_OCP - bool - depends on XILINX_ML300 - default y - config IBM_EMAC4 bool depends on 440GX || 440SP || 440SPE @@ -208,11 +207,21 @@ config 405GPR depends on SYCAMORE default y -config VIRTEX_II_PRO +config XILINX_VIRTEX_II_PRO bool depends on XILINX_ML300 default y +config XILINX_VIRTEX_4_FX + bool + depends on XILINX_ML403 + default y + +config XILINX_VIRTEX + bool + depends on XILINX_VIRTEX_II_PRO || XILINX_VIRTEX_4_FX + default y + config STB03xxx bool depends on REDWOOD_5 || REDWOOD_6 @@ -220,7 +229,7 @@ config STB03xxx config EMBEDDEDBOOT bool - depends on EP405 || XILINX_ML300 + depends on EP405 || XILINX_ML300 || XILINX_ML403 default y config IBM_OPENBIOS diff -puN arch/ppc/platforms/4xx/luan.c~git-powerpc arch/ppc/platforms/4xx/luan.c --- devel/arch/ppc/platforms/4xx/luan.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/luan.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/luan.c - * * Luan board specific routines * * Matt Porter diff -puN arch/ppc/platforms/4xx/luan.h~git-powerpc arch/ppc/platforms/4xx/luan.h --- devel/arch/ppc/platforms/4xx/luan.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/luan.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/luan.h - * * Luan board definitions * * Matt Porter diff -puN arch/ppc/platforms/4xx/Makefile~git-powerpc arch/ppc/platforms/4xx/Makefile --- devel/arch/ppc/platforms/4xx/Makefile~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -14,6 +14,7 @@ obj-$(CONFIG_REDWOOD_6) += redwood6.o obj-$(CONFIG_SYCAMORE) += sycamore.o obj-$(CONFIG_WALNUT) += walnut.o obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o +obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o obj-$(CONFIG_405GP) += ibm405gp.o obj-$(CONFIG_REDWOOD_5) += ibmstb4.o @@ -26,4 +27,5 @@ obj-$(CONFIG_440SP) += ibm440sp.o obj-$(CONFIG_440SPE) += ppc440spe.o obj-$(CONFIG_405EP) += ibm405ep.o obj-$(CONFIG_405GPR) += ibm405gpr.o -obj-$(CONFIG_VIRTEX_II_PRO) += virtex-ii_pro.o +obj-$(CONFIG_XILINX_VIRTEX) += virtex.o + diff -puN arch/ppc/platforms/4xx/ocotea.c~git-powerpc arch/ppc/platforms/4xx/ocotea.c --- devel/arch/ppc/platforms/4xx/ocotea.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ocotea.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ocotea.c - * * Ocotea board specific routines * * Matt Porter diff -puN arch/ppc/platforms/4xx/ocotea.h~git-powerpc arch/ppc/platforms/4xx/ocotea.h --- devel/arch/ppc/platforms/4xx/ocotea.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ocotea.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ocotea.h - * * Ocotea board definitions * * Matt Porter diff -puN arch/ppc/platforms/4xx/ppc440spe.c~git-powerpc arch/ppc/platforms/4xx/ppc440spe.c --- devel/arch/ppc/platforms/4xx/ppc440spe.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ppc440spe.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ppc440spe.c - * * PPC440SPe I/O descriptions * * Roland Dreier diff -puN arch/ppc/platforms/4xx/ppc440spe.h~git-powerpc arch/ppc/platforms/4xx/ppc440spe.h --- devel/arch/ppc/platforms/4xx/ppc440spe.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/ppc440spe.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/ibm440spe.h - * * PPC440SPe definitions * * Roland Dreier diff -puN arch/ppc/platforms/4xx/redwood5.c~git-powerpc arch/ppc/platforms/4xx/redwood5.c --- devel/arch/ppc/platforms/4xx/redwood5.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/redwood5.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/redwood5.c - * * Support for the IBM redwood5 eval board file * * Author: Armin Kuster diff -puN arch/ppc/platforms/4xx/redwood5.h~git-powerpc arch/ppc/platforms/4xx/redwood5.h --- devel/arch/ppc/platforms/4xx/redwood5.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/redwood5.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/redwood5.h - * * Macros, definitions, and data structures specific to the IBM PowerPC * STB03xxx "Redwood" evaluation board. * diff -puN arch/ppc/platforms/4xx/redwood6.c~git-powerpc arch/ppc/platforms/4xx/redwood6.c --- devel/arch/ppc/platforms/4xx/redwood6.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/redwood6.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/redwood6.c - * * Author: Armin Kuster * * 2002 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/4xx/redwood6.h~git-powerpc arch/ppc/platforms/4xx/redwood6.h --- devel/arch/ppc/platforms/4xx/redwood6.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/redwood6.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/redwood6.h - * * Macros, definitions, and data structures specific to the IBM PowerPC * STBx25xx "Redwood6" evaluation board. * diff -puN arch/ppc/platforms/4xx/sycamore.c~git-powerpc arch/ppc/platforms/4xx/sycamore.c --- devel/arch/ppc/platforms/4xx/sycamore.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/sycamore.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/sycamore.c - * * Architecture- / platform-specific boot-time initialization code for * IBM PowerPC 4xx based boards. * diff -puN arch/ppc/platforms/4xx/sycamore.h~git-powerpc arch/ppc/platforms/4xx/sycamore.h --- devel/arch/ppc/platforms/4xx/sycamore.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/sycamore.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/sycamore.h - * * Sycamore board definitions * * Copyright (c) 2005 DENX Software Engineering diff -puN /dev/null arch/ppc/platforms/4xx/virtex.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/virtex.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,56 @@ +/* + * Virtex-II Pro & Virtex-4 FX common infrastructure + * + * Maintainer: Grant Likely + * + * Copyright 2005 Secret Lab Technologies Ltd. + * Copyright 2005 General Dynamics Canada Ltd. + * Copyright 2005 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include + +#define XPAR_UART(num) { \ + .mapbase = XPAR_UARTNS550_##num##_BASEADDR + 3, \ + .irq = XPAR_INTC_0_UARTNS550_##num##_VEC_ID, \ + .iotype = UPIO_MEM, \ + .uartclk = XPAR_UARTNS550_##num##_CLOCK_FREQ_HZ, \ + .flags = UPF_BOOT_AUTOCONF, \ + .regshift = 2, \ + } + +struct plat_serial8250_port serial_platform_data[] = { +#ifdef XPAR_UARTNS550_0_BASEADDR + XPAR_UART(0), +#endif +#ifdef XPAR_UARTNS550_1_BASEADDR + XPAR_UART(1), +#endif +#ifdef XPAR_UARTNS550_2_BASEADDR + XPAR_UART(2), +#endif +#ifdef XPAR_UARTNS550_3_BASEADDR + XPAR_UART(3), +#endif + { }, /* terminated by empty record */ +}; + +struct platform_device ppc_sys_platform_devices[] = { + [VIRTEX_UART] = { + .name = "serial8250", + .id = 0, + .dev.platform_data = serial_platform_data, + }, +}; + diff -puN /dev/null arch/ppc/platforms/4xx/virtex.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/virtex.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,35 @@ +/* + * arch/ppc/platforms/4xx/virtex.h + * + * Include file that defines the Xilinx Virtex-II Pro processor + * + * Author: MontaVista Software, Inc. + * source@mvista.com + * + * 2002-2004 (c) MontaVista Software, Inc. This file is licensed under the + * terms of the GNU General Public License version 2. This program is licensed + * "as is" without any warranty of any kind, whether express or implied. + */ + +#ifdef __KERNEL__ +#ifndef __ASM_VIRTEX_H__ +#define __ASM_VIRTEX_H__ + +/* serial defines */ + +#include + +/* Ugly, ugly, ugly! BASE_BAUD defined here to keep 8250.c happy. */ +#if !defined(BASE_BAUD) + #define BASE_BAUD (0) /* dummy value; not used */ +#endif + +/* Device type enumeration for platform bus definitions */ +#ifndef __ASSEMBLY__ +enum ppc_sys_devices { + VIRTEX_UART, +}; +#endif + +#endif /* __ASM_VIRTEX_H__ */ +#endif /* __KERNEL__ */ diff -L arch/ppc/platforms/4xx/virtex-ii_pro.c -puN arch/ppc/platforms/4xx/virtex-ii_pro.c~git-powerpc /dev/null --- devel/arch/ppc/platforms/4xx/virtex-ii_pro.c +++ /dev/null 2003-09-15 06:40:47.000000000 -0700 @@ -1,60 +0,0 @@ -/* - * arch/ppc/platforms/4xx/virtex-ii_pro.c - * - * Author: MontaVista Software, Inc. - * source@mvista.com - * - * 2002-2004 (c) MontaVista Software, Inc. This file is licensed under the - * terms of the GNU General Public License version 2. This program is licensed - * "as is" without any warranty of any kind, whether express or implied. - */ - -#include -#include -#include -#include "virtex-ii_pro.h" - -/* Have OCP take care of the serial ports. */ -struct ocp_def core_ocp[] = { -#ifdef XPAR_UARTNS550_0_BASEADDR - { .vendor = OCP_VENDOR_XILINX, - .function = OCP_FUNC_16550, - .index = 0, - .paddr = XPAR_UARTNS550_0_BASEADDR, - .irq = XPAR_INTC_0_UARTNS550_0_VEC_ID, - .pm = OCP_CPM_NA - }, -#ifdef XPAR_UARTNS550_1_BASEADDR - { .vendor = OCP_VENDOR_XILINX, - .function = OCP_FUNC_16550, - .index = 1, - .paddr = XPAR_UARTNS550_1_BASEADDR, - .irq = XPAR_INTC_0_UARTNS550_1_VEC_ID, - .pm = OCP_CPM_NA - }, -#ifdef XPAR_UARTNS550_2_BASEADDR - { .vendor = OCP_VENDOR_XILINX, - .function = OCP_FUNC_16550, - .index = 2, - .paddr = XPAR_UARTNS550_2_BASEADDR, - .irq = XPAR_INTC_0_UARTNS550_2_VEC_ID, - .pm = OCP_CPM_NA - }, -#ifdef XPAR_UARTNS550_3_BASEADDR - { .vendor = OCP_VENDOR_XILINX, - .function = OCP_FUNC_16550, - .index = 3, - .paddr = XPAR_UARTNS550_3_BASEADDR, - .irq = XPAR_INTC_0_UARTNS550_3_VEC_ID, - .pm = OCP_CPM_NA - }, -#ifdef XPAR_UARTNS550_4_BASEADDR -#error Edit this file to add more devices. -#endif /* 4 */ -#endif /* 3 */ -#endif /* 2 */ -#endif /* 1 */ -#endif /* 0 */ - { .vendor = OCP_VENDOR_INVALID - } -}; diff -L arch/ppc/platforms/4xx/virtex-ii_pro.h -puN arch/ppc/platforms/4xx/virtex-ii_pro.h~git-powerpc /dev/null --- devel/arch/ppc/platforms/4xx/virtex-ii_pro.h +++ /dev/null 2003-09-15 06:40:47.000000000 -0700 @@ -1,99 +0,0 @@ -/* - * arch/ppc/platforms/4xx/virtex-ii_pro.h - * - * Include file that defines the Xilinx Virtex-II Pro processor - * - * Author: MontaVista Software, Inc. - * source@mvista.com - * - * 2002-2004 (c) MontaVista Software, Inc. This file is licensed under the - * terms of the GNU General Public License version 2. This program is licensed - * "as is" without any warranty of any kind, whether express or implied. - */ - -#ifdef __KERNEL__ -#ifndef __ASM_VIRTEXIIPRO_H__ -#define __ASM_VIRTEXIIPRO_H__ - -#include -#include - -/* serial defines */ - -#define RS_TABLE_SIZE 4 /* change this and add more devices below - if you have more then 4 16x50 UARTs */ - -#define BASE_BAUD (XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16) - -/* The serial ports in the Virtex-II Pro have each I/O byte in the - * LSByte of a word. This means that iomem_reg_shift needs to be 2 to - * change the byte offsets into word offsets. In addition the base - * addresses need to have 3 added to them to get to the LSByte. - */ -#define STD_UART_OP(num) \ - { 0, BASE_BAUD, 0, XPAR_INTC_0_UARTNS550_##num##_VEC_ID, \ - ASYNC_BOOT_AUTOCONF, \ - .iomem_base = (u8 *)XPAR_UARTNS550_##num##_BASEADDR + 3, \ - .iomem_reg_shift = 2, \ - .io_type = SERIAL_IO_MEM}, - -#if defined(XPAR_INTC_0_UARTNS550_0_VEC_ID) -#define ML300_UART0 STD_UART_OP(0) -#else -#define ML300_UART0 -#endif - -#if defined(XPAR_INTC_0_UARTNS550_1_VEC_ID) -#define ML300_UART1 STD_UART_OP(1) -#else -#define ML300_UART1 -#endif - -#if defined(XPAR_INTC_0_UARTNS550_2_VEC_ID) -#define ML300_UART2 STD_UART_OP(2) -#else -#define ML300_UART2 -#endif - -#if defined(XPAR_INTC_0_UARTNS550_3_VEC_ID) -#define ML300_UART3 STD_UART_OP(3) -#else -#define ML300_UART3 -#endif - -#if defined(XPAR_INTC_0_UARTNS550_4_VEC_ID) -#error Edit this file to add more devices. -#elif defined(XPAR_INTC_0_UARTNS550_3_VEC_ID) -#define NR_SER_PORTS 4 -#elif defined(XPAR_INTC_0_UARTNS550_2_VEC_ID) -#define NR_SER_PORTS 3 -#elif defined(XPAR_INTC_0_UARTNS550_1_VEC_ID) -#define NR_SER_PORTS 2 -#elif defined(XPAR_INTC_0_UARTNS550_0_VEC_ID) -#define NR_SER_PORTS 1 -#else -#define NR_SER_PORTS 0 -#endif - -#if defined(CONFIG_UART0_TTYS0) -#define SERIAL_PORT_DFNS \ - ML300_UART0 \ - ML300_UART1 \ - ML300_UART2 \ - ML300_UART3 -#endif - -#if defined(CONFIG_UART0_TTYS1) -#define SERIAL_PORT_DFNS \ - ML300_UART1 \ - ML300_UART0 \ - ML300_UART2 \ - ML300_UART3 -#endif - -#define DCRN_CPMFR_BASE 0 - -#include - -#endif /* __ASM_VIRTEXIIPRO_H__ */ -#endif /* __KERNEL__ */ diff -puN arch/ppc/platforms/4xx/walnut.c~git-powerpc arch/ppc/platforms/4xx/walnut.c --- devel/arch/ppc/platforms/4xx/walnut.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/walnut.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/walnut.c - * * Architecture- / platform-specific boot-time initialization code for * IBM PowerPC 4xx based boards. Adapted from original * code by Gary Thomas, Cort Dougan , and Dan Malek diff -puN arch/ppc/platforms/4xx/walnut.h~git-powerpc arch/ppc/platforms/4xx/walnut.h --- devel/arch/ppc/platforms/4xx/walnut.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/walnut.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/walnut.h - * * Walnut board definitions * * Copyright (c) 2005 DENX Software Engineering diff -puN arch/ppc/platforms/4xx/xilinx_ml300.c~git-powerpc arch/ppc/platforms/4xx/xilinx_ml300.c --- devel/arch/ppc/platforms/4xx/xilinx_ml300.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/xilinx_ml300.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/xilinx_ml300.c - * * Xilinx ML300 evaluation board initialization * * Author: MontaVista Software, Inc. @@ -17,12 +15,14 @@ #include #include #include +#include #include #include #include -#include +#include -#include /* for NR_SER_PORTS */ +#include +#include /* * As an overview of how the following functions (platform_init, @@ -54,6 +54,22 @@ * ppc4xx_pic_init arch/ppc/syslib/xilinx_pic.c */ +/* Board specifications structures */ +struct ppc_sys_spec *cur_ppc_sys_spec; +struct ppc_sys_spec ppc_sys_specs[] = { + { + /* Only one entry, always assume the same design */ + .ppc_sys_name = "Xilinx ML300 Reference Design", + .mask = 0x00000000, + .value = 0x00000000, + .num_devices = 1, + .device_list = (enum ppc_sys_devices[]) + { + VIRTEX_UART, + }, + }, +}; + #if defined(XPAR_POWER_0_POWERDOWN_BASEADDR) static volatile unsigned *powerdown_base = @@ -80,28 +96,39 @@ ml300_map_io(void) #endif } +/* Early serial support functions */ static void __init +ml300_early_serial_init(int num, struct plat_serial8250_port *pdata) +{ +#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) + struct uart_port serial_req; + + memset(&serial_req, 0, sizeof(serial_req)); + serial_req.mapbase = pdata->mapbase; + serial_req.membase = pdata->membase; + serial_req.irq = pdata->irq; + serial_req.uartclk = pdata->uartclk; + serial_req.regshift = pdata->regshift; + serial_req.iotype = pdata->iotype; + serial_req.flags = pdata->flags; + gen550_init(num, &serial_req); +#endif +} + +void __init ml300_early_serial_map(void) { #ifdef CONFIG_SERIAL_8250 - struct serial_state old_ports[] = { SERIAL_PORT_DFNS }; - struct uart_port port; - int i; - - /* Setup ioremapped serial port access */ - for (i = 0; i < ARRAY_SIZE(old_ports); i++ ) { - memset(&port, 0, sizeof(port)); - port.membase = ioremap((phys_addr_t)(old_ports[i].iomem_base), 16); - port.irq = old_ports[i].irq; - port.uartclk = old_ports[i].baud_base * 16; - port.regshift = old_ports[i].iomem_reg_shift; - port.iotype = UPIO_MEM; - port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; - port.line = i; - - if (early_serial_setup(&port) != 0) { - printk("Early serial init of port %d failed\n", i); - } + struct plat_serial8250_port *pdata; + int i = 0; + + pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(VIRTEX_UART); + while(pdata && pdata->flags) + { + pdata->membase = ioremap(pdata->mapbase, 0x100); + ml300_early_serial_init(i, pdata); + pdata++; + i++; } #endif /* CONFIG_SERIAL_8250 */ } @@ -109,9 +136,8 @@ ml300_early_serial_map(void) void __init ml300_setup_arch(void) { - ppc4xx_setup_arch(); /* calls ppc4xx_find_bridges() */ - ml300_early_serial_map(); + ppc4xx_setup_arch(); /* calls ppc4xx_find_bridges() */ /* Identify the system */ printk(KERN_INFO "Xilinx Virtex-II Pro port\n"); @@ -131,6 +157,8 @@ platform_init(unsigned long r3, unsigned { ppc4xx_init(r3, r4, r5, r6, r7); + identify_ppc_sys_by_id(mfspr(SPRN_PVR)); + ppc_md.setup_arch = ml300_setup_arch; ppc_md.setup_io_mappings = ml300_map_io; ppc_md.init_IRQ = ml300_init_irq; diff -puN arch/ppc/platforms/4xx/xilinx_ml300.h~git-powerpc arch/ppc/platforms/4xx/xilinx_ml300.h --- devel/arch/ppc/platforms/4xx/xilinx_ml300.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/xilinx_ml300.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/xilinx_ml300.h - * * Include file that defines the Xilinx ML300 evaluation board * * Author: MontaVista Software, Inc. @@ -16,7 +14,7 @@ #define __ASM_XILINX_ML300_H__ /* ML300 has a Xilinx Virtex-II Pro processor */ -#include +#include #ifndef __ASSEMBLY__ @@ -41,7 +39,7 @@ typedef struct board_info { #define PPC4xx_ONB_IO_VADDR 0u #define PPC4xx_ONB_IO_SIZE 0u -#define PPC4xx_MACHINE_NAME "Xilinx ML300" +#define PPC4xx_MACHINE_NAME "Xilinx ML300 Reference System" #endif /* __ASM_XILINX_ML300_H__ */ #endif /* __KERNEL__ */ diff -puN /dev/null arch/ppc/platforms/4xx/xilinx_ml403.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/xilinx_ml403.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,177 @@ +/* + * arch/ppc/platforms/4xx/xilinx_ml403.c + * + * Xilinx ML403 evaluation board initialization + * + * Author: Grant Likely + * + * 2005 (c) Secret Lab Technologies Ltd. + * 2002-2004 (c) MontaVista Software, Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +/* + * As an overview of how the following functions (platform_init, + * ml403_map_io, ml403_setup_arch and ml403_init_IRQ) fit into the + * kernel startup procedure, here's a call tree: + * + * start_here arch/ppc/kernel/head_4xx.S + * early_init arch/ppc/kernel/setup.c + * machine_init arch/ppc/kernel/setup.c + * platform_init this file + * ppc4xx_init arch/ppc/syslib/ppc4xx_setup.c + * parse_bootinfo + * find_bootinfo + * "setup some default ppc_md pointers" + * MMU_init arch/ppc/mm/init.c + * *ppc_md.setup_io_mappings == ml403_map_io this file + * ppc4xx_map_io arch/ppc/syslib/ppc4xx_setup.c + * start_kernel init/main.c + * setup_arch arch/ppc/kernel/setup.c + * #if defined(CONFIG_KGDB) + * *ppc_md.kgdb_map_scc() == gen550_kgdb_map_scc + * #endif + * *ppc_md.setup_arch == ml403_setup_arch this file + * ppc4xx_setup_arch arch/ppc/syslib/ppc4xx_setup.c + * ppc4xx_find_bridges arch/ppc/syslib/ppc405_pci.c + * init_IRQ arch/ppc/kernel/irq.c + * *ppc_md.init_IRQ == ml403_init_IRQ this file + * ppc4xx_init_IRQ arch/ppc/syslib/ppc4xx_setup.c + * ppc4xx_pic_init arch/ppc/syslib/xilinx_pic.c + */ + +/* Board specifications structures */ +struct ppc_sys_spec *cur_ppc_sys_spec; +struct ppc_sys_spec ppc_sys_specs[] = { + { + /* Only one entry, always assume the same design */ + .ppc_sys_name = "Xilinx ML403 Reference Design", + .mask = 0x00000000, + .value = 0x00000000, + .num_devices = 1, + .device_list = (enum ppc_sys_devices[]) + { + VIRTEX_UART, + }, + }, +}; + +#if defined(XPAR_POWER_0_POWERDOWN_BASEADDR) + +static volatile unsigned *powerdown_base = + (volatile unsigned *) XPAR_POWER_0_POWERDOWN_BASEADDR; + +static void +xilinx_power_off(void) +{ + local_irq_disable(); + out_be32(powerdown_base, XPAR_POWER_0_POWERDOWN_VALUE); + while (1) ; +} +#endif + +void __init +ml403_map_io(void) +{ + ppc4xx_map_io(); + +#if defined(XPAR_POWER_0_POWERDOWN_BASEADDR) + powerdown_base = ioremap((unsigned long) powerdown_base, + XPAR_POWER_0_POWERDOWN_HIGHADDR - + XPAR_POWER_0_POWERDOWN_BASEADDR + 1); +#endif +} + +/* Early serial support functions */ +static void __init +ml403_early_serial_init(int num, struct plat_serial8250_port *pdata) +{ +#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) + struct uart_port serial_req; + + memset(&serial_req, 0, sizeof(serial_req)); + serial_req.mapbase = pdata->mapbase; + serial_req.membase = pdata->membase; + serial_req.irq = pdata->irq; + serial_req.uartclk = pdata->uartclk; + serial_req.regshift = pdata->regshift; + serial_req.iotype = pdata->iotype; + serial_req.flags = pdata->flags; + gen550_init(num, &serial_req); +#endif +} + +void __init +ml403_early_serial_map(void) +{ +#ifdef CONFIG_SERIAL_8250 + struct plat_serial8250_port *pdata; + int i = 0; + + pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(VIRTEX_UART); + while(pdata && pdata->flags) + { + pdata->membase = ioremap(pdata->mapbase, 0x100); + ml403_early_serial_init(i, pdata); + pdata++; + i++; + } +#endif /* CONFIG_SERIAL_8250 */ +} + +void __init +ml403_setup_arch(void) +{ + ml403_early_serial_map(); + ppc4xx_setup_arch(); /* calls ppc4xx_find_bridges() */ + + /* Identify the system */ + printk(KERN_INFO "Xilinx ML403 Reference System (Virtex-4 FX)\n"); +} + +/* Called after board_setup_irq from ppc4xx_init_IRQ(). */ +void __init +ml403_init_irq(void) +{ + ppc4xx_init_IRQ(); +} + +void __init +platform_init(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7) +{ + ppc4xx_init(r3, r4, r5, r6, r7); + + identify_ppc_sys_by_id(mfspr(SPRN_PVR)); + + ppc_md.setup_arch = ml403_setup_arch; + ppc_md.setup_io_mappings = ml403_map_io; + ppc_md.init_IRQ = ml403_init_irq; + +#if defined(XPAR_POWER_0_POWERDOWN_BASEADDR) + ppc_md.power_off = xilinx_power_off; +#endif + +#ifdef CONFIG_KGDB + ppc_md.early_serial_map = ml403_early_serial_map; +#endif +} + diff -puN /dev/null arch/ppc/platforms/4xx/xilinx_ml403.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/xilinx_ml403.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,49 @@ +/* + * arch/ppc/platforms/4xx/xilinx_ml403.h + * + * Include file that defines the Xilinx ML403 reference design + * + * Author: Grant Likely + * + * 2005 (c) Secret Lab Technologies Ltd. + * 2002-2004 (c) MontaVista Software, Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#ifdef __KERNEL__ +#ifndef __ASM_XILINX_ML403_H__ +#define __ASM_XILINX_ML403_H__ + +/* ML403 has a Xilinx Virtex-4 FPGA with a PPC405 hard core */ +#include + +#ifndef __ASSEMBLY__ + +#include + +typedef struct board_info { + unsigned int bi_memsize; /* DRAM installed, in bytes */ + unsigned char bi_enetaddr[6]; /* Local Ethernet MAC address */ + unsigned int bi_intfreq; /* Processor speed, in Hz */ + unsigned int bi_busfreq; /* PLB Bus speed, in Hz */ + unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */ +} bd_t; + +/* Some 4xx parts use a different timebase frequency from the internal clock. +*/ +#define bi_tbfreq bi_intfreq + +#endif /* !__ASSEMBLY__ */ + +/* We don't need anything mapped. Size of zero will accomplish that. */ +#define PPC4xx_ONB_IO_PADDR 0u +#define PPC4xx_ONB_IO_VADDR 0u +#define PPC4xx_ONB_IO_SIZE 0u + +#define PPC4xx_MACHINE_NAME "Xilinx ML403 Reference Design" + +#endif /* __ASM_XILINX_ML403_H__ */ +#endif /* __KERNEL__ */ diff -puN /dev/null arch/ppc/platforms/4xx/xparameters/xparameters.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/xparameters/xparameters.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,37 @@ +/* + * include/asm-ppc/xparameters.h + * + * This file includes the correct xparameters.h for the CONFIG'ed board plus + * fixups to translate board specific XPAR values to a common set of names + * + * Author: MontaVista Software, Inc. + * source@mvista.com + * + * 2004 (c) MontaVista Software, Inc. This file is licensed under the terms + * of the GNU General Public License version 2. This program is licensed + * "as is" without any warranty of any kind, whether express or implied. + */ + +#include + +#if defined(CONFIG_XILINX_ML300) + #include "xparameters_ml300.h" +#elif defined(CONFIG_XILINX_ML403) + #include "xparameters_ml403.h" +#else + /* Add other board xparameter includes here before the #else */ + #error No xparameters_*.h file included +#endif + +#ifndef SERIAL_PORT_DFNS + /* zImage serial port definitions */ + #define RS_TABLE_SIZE 1 + #define SERIAL_PORT_DFNS { \ + .baud_base = XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16, \ + .irq = XPAR_INTC_0_UARTNS550_0_VEC_ID, \ + .flags = ASYNC_BOOT_AUTOCONF, \ + .iomem_base = (u8 *)XPAR_UARTNS550_0_BASEADDR + 3, \ + .iomem_reg_shift = 2, \ + .io_type = SERIAL_IO_MEM, \ + }, +#endif diff -puN /dev/null arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,243 @@ + +/******************************************************************* +* +* CAUTION: This file is automatically generated by libgen. +* Version: Xilinx EDK 7.1.2 EDK_H.12.5.1 +* DO NOT EDIT. +* +* Copyright (c) 2005 Xilinx, Inc. All rights reserved. +* +* Description: Driver parameters +* +*******************************************************************/ + +#define XPAR_PLB_BRAM_IF_CNTLR_0_BASEADDR 0xFFFF0000 +#define XPAR_PLB_BRAM_IF_CNTLR_0_HIGHADDR 0xFFFFFFFF + +/******************************************************************/ + +#define XPAR_OPB_EMC_0_MEM0_BASEADDR 0x20000000 +#define XPAR_OPB_EMC_0_MEM0_HIGHADDR 0x200FFFFF +#define XPAR_OPB_EMC_0_MEM1_BASEADDR 0x28000000 +#define XPAR_OPB_EMC_0_MEM1_HIGHADDR 0x287FFFFF +#define XPAR_OPB_AC97_CONTROLLER_REF_0_BASEADDR 0xA6000000 +#define XPAR_OPB_AC97_CONTROLLER_REF_0_HIGHADDR 0xA60000FF +#define XPAR_OPB_EMC_USB_0_MEM0_BASEADDR 0xA5000000 +#define XPAR_OPB_EMC_USB_0_MEM0_HIGHADDR 0xA50000FF +#define XPAR_PLB_DDR_0_MEM0_BASEADDR 0x00000000 +#define XPAR_PLB_DDR_0_MEM0_HIGHADDR 0x0FFFFFFF + +/******************************************************************/ + +#define XPAR_XEMAC_NUM_INSTANCES 1 +#define XPAR_OPB_ETHERNET_0_BASEADDR 0x60000000 +#define XPAR_OPB_ETHERNET_0_HIGHADDR 0x60003FFF +#define XPAR_OPB_ETHERNET_0_DEVICE_ID 0 +#define XPAR_OPB_ETHERNET_0_ERR_COUNT_EXIST 1 +#define XPAR_OPB_ETHERNET_0_DMA_PRESENT 1 +#define XPAR_OPB_ETHERNET_0_MII_EXIST 1 + +/******************************************************************/ + +#define XPAR_XUARTNS550_NUM_INSTANCES 1 +#define XPAR_XUARTNS550_CLOCK_HZ 100000000 +#define XPAR_OPB_UART16550_0_BASEADDR 0xA0000000 +#define XPAR_OPB_UART16550_0_HIGHADDR 0xA0001FFF +#define XPAR_OPB_UART16550_0_DEVICE_ID 0 + +/******************************************************************/ + +#define XPAR_XGPIO_NUM_INSTANCES 3 +#define XPAR_OPB_GPIO_0_BASEADDR 0x90000000 +#define XPAR_OPB_GPIO_0_HIGHADDR 0x900001FF +#define XPAR_OPB_GPIO_0_DEVICE_ID 0 +#define XPAR_OPB_GPIO_0_INTERRUPT_PRESENT 0 +#define XPAR_OPB_GPIO_0_IS_DUAL 1 +#define XPAR_OPB_GPIO_EXP_HDR_0_BASEADDR 0x90001000 +#define XPAR_OPB_GPIO_EXP_HDR_0_HIGHADDR 0x900011FF +#define XPAR_OPB_GPIO_EXP_HDR_0_DEVICE_ID 1 +#define XPAR_OPB_GPIO_EXP_HDR_0_INTERRUPT_PRESENT 0 +#define XPAR_OPB_GPIO_EXP_HDR_0_IS_DUAL 1 +#define XPAR_OPB_GPIO_CHAR_LCD_0_BASEADDR 0x90002000 +#define XPAR_OPB_GPIO_CHAR_LCD_0_HIGHADDR 0x900021FF +#define XPAR_OPB_GPIO_CHAR_LCD_0_DEVICE_ID 2 +#define XPAR_OPB_GPIO_CHAR_LCD_0_INTERRUPT_PRESENT 0 +#define XPAR_OPB_GPIO_CHAR_LCD_0_IS_DUAL 0 + +/******************************************************************/ + +#define XPAR_XPS2_NUM_INSTANCES 2 +#define XPAR_OPB_PS2_DUAL_REF_0_DEVICE_ID_0 0 +#define XPAR_OPB_PS2_DUAL_REF_0_BASEADDR_0 0xA9000000 +#define XPAR_OPB_PS2_DUAL_REF_0_HIGHADDR_0 (0xA9000000+0x3F) +#define XPAR_OPB_PS2_DUAL_REF_0_DEVICE_ID_1 1 +#define XPAR_OPB_PS2_DUAL_REF_0_BASEADDR_1 (0xA9000000+0x1000) +#define XPAR_OPB_PS2_DUAL_REF_0_HIGHADDR_1 (0xA9000000+0x103F) + +/******************************************************************/ + +#define XPAR_XIIC_NUM_INSTANCES 1 +#define XPAR_OPB_IIC_0_BASEADDR 0xA8000000 +#define XPAR_OPB_IIC_0_HIGHADDR 0xA80001FF +#define XPAR_OPB_IIC_0_DEVICE_ID 0 +#define XPAR_OPB_IIC_0_TEN_BIT_ADR 0 +#define XPAR_OPB_IIC_0_GPO_WIDTH 1 + +/******************************************************************/ + +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 10 +#define XPAR_XINTC_HAS_IPR 1 +#define XPAR_XINTC_USE_DCR 0 +#define XPAR_XINTC_NUM_INSTANCES 1 +#define XPAR_OPB_INTC_0_BASEADDR 0xD1000FC0 +#define XPAR_OPB_INTC_0_HIGHADDR 0xD1000FDF +#define XPAR_OPB_INTC_0_DEVICE_ID 0 +#define XPAR_OPB_INTC_0_KIND_OF_INTR 0x00000000 + +/******************************************************************/ + +#define XPAR_INTC_SINGLE_BASEADDR 0xD1000FC0 +#define XPAR_INTC_SINGLE_HIGHADDR 0xD1000FDF +#define XPAR_INTC_SINGLE_DEVICE_ID XPAR_OPB_INTC_0_DEVICE_ID +#define XPAR_OPB_ETHERNET_0_IP2INTC_IRPT_MASK 0X000001 +#define XPAR_OPB_INTC_0_OPB_ETHERNET_0_IP2INTC_IRPT_INTR 0 +#define XPAR_SYSTEM_USB_HPI_INT_MASK 0X000002 +#define XPAR_OPB_INTC_0_SYSTEM_USB_HPI_INT_INTR 1 +#define XPAR_MISC_LOGIC_0_PHY_MII_INT_MASK 0X000004 +#define XPAR_OPB_INTC_0_MISC_LOGIC_0_PHY_MII_INT_INTR 2 +#define XPAR_OPB_SYSACE_0_SYSACE_IRQ_MASK 0X000008 +#define XPAR_OPB_INTC_0_OPB_SYSACE_0_SYSACE_IRQ_INTR 3 +#define XPAR_OPB_AC97_CONTROLLER_REF_0_RECORD_INTERRUPT_MASK 0X000010 +#define XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_0_RECORD_INTERRUPT_INTR 4 +#define XPAR_OPB_AC97_CONTROLLER_REF_0_PLAYBACK_INTERRUPT_MASK 0X000020 +#define XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_0_PLAYBACK_INTERRUPT_INTR 5 +#define XPAR_OPB_IIC_0_IP2INTC_IRPT_MASK 0X000040 +#define XPAR_OPB_INTC_0_OPB_IIC_0_IP2INTC_IRPT_INTR 6 +#define XPAR_OPB_PS2_DUAL_REF_0_SYS_INTR2_MASK 0X000080 +#define XPAR_OPB_INTC_0_OPB_PS2_DUAL_REF_0_SYS_INTR2_INTR 7 +#define XPAR_OPB_PS2_DUAL_REF_0_SYS_INTR1_MASK 0X000100 +#define XPAR_OPB_INTC_0_OPB_PS2_DUAL_REF_0_SYS_INTR1_INTR 8 +#define XPAR_OPB_UART16550_0_IP2INTC_IRPT_MASK 0X000200 +#define XPAR_OPB_INTC_0_OPB_UART16550_0_IP2INTC_IRPT_INTR 9 + +/******************************************************************/ + +#define XPAR_XTFT_NUM_INSTANCES 1 +#define XPAR_PLB_TFT_CNTLR_REF_0_DCR_BASEADDR 0xD0000200 +#define XPAR_PLB_TFT_CNTLR_REF_0_DCR_HIGHADDR 0xD0000207 +#define XPAR_PLB_TFT_CNTLR_REF_0_DEVICE_ID 0 + +/******************************************************************/ + +#define XPAR_XSYSACE_MEM_WIDTH 16 +#define XPAR_XSYSACE_NUM_INSTANCES 1 +#define XPAR_OPB_SYSACE_0_BASEADDR 0xCF000000 +#define XPAR_OPB_SYSACE_0_HIGHADDR 0xCF0001FF +#define XPAR_OPB_SYSACE_0_DEVICE_ID 0 +#define XPAR_OPB_SYSACE_0_MEM_WIDTH 16 + +/******************************************************************/ + +#define XPAR_CPU_PPC405_CORE_CLOCK_FREQ_HZ 300000000 + +/******************************************************************/ + + +/******************************************************************/ + +/* Linux Redefines */ + +/******************************************************************/ + +#define XPAR_UARTNS550_0_BASEADDR (XPAR_OPB_UART16550_0_BASEADDR+0x1000) +#define XPAR_UARTNS550_0_HIGHADDR XPAR_OPB_UART16550_0_HIGHADDR +#define XPAR_UARTNS550_0_CLOCK_FREQ_HZ XPAR_XUARTNS550_CLOCK_HZ +#define XPAR_UARTNS550_0_DEVICE_ID XPAR_OPB_UART16550_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_INTC_0_BASEADDR XPAR_OPB_INTC_0_BASEADDR +#define XPAR_INTC_0_HIGHADDR XPAR_OPB_INTC_0_HIGHADDR +#define XPAR_INTC_0_KIND_OF_INTR XPAR_OPB_INTC_0_KIND_OF_INTR +#define XPAR_INTC_0_DEVICE_ID XPAR_OPB_INTC_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_INTC_0_EMAC_0_VEC_ID XPAR_OPB_INTC_0_OPB_ETHERNET_0_IP2INTC_IRPT_INTR +#define XPAR_INTC_0_SYSACE_0_VEC_ID XPAR_OPB_INTC_0_OPB_SYSACE_0_SYSACE_IRQ_INTR +#define XPAR_INTC_0_IIC_0_VEC_ID XPAR_OPB_INTC_0_OPB_IIC_0_IP2INTC_IRPT_INTR +#define XPAR_INTC_0_PS2_1_VEC_ID XPAR_OPB_INTC_0_OPB_PS2_DUAL_REF_0_SYS_INTR2_INTR +#define XPAR_INTC_0_PS2_0_VEC_ID XPAR_OPB_INTC_0_OPB_PS2_DUAL_REF_0_SYS_INTR1_INTR +#define XPAR_INTC_0_UARTNS550_0_VEC_ID XPAR_OPB_INTC_0_OPB_UART16550_0_IP2INTC_IRPT_INTR + +/******************************************************************/ + +#define XPAR_TFT_0_BASEADDR XPAR_PLB_TFT_CNTLR_REF_0_DCR_BASEADDR + +/******************************************************************/ + +#define XPAR_EMAC_0_BASEADDR XPAR_OPB_ETHERNET_0_BASEADDR +#define XPAR_EMAC_0_HIGHADDR XPAR_OPB_ETHERNET_0_HIGHADDR +#define XPAR_EMAC_0_DMA_PRESENT XPAR_OPB_ETHERNET_0_DMA_PRESENT +#define XPAR_EMAC_0_MII_EXIST XPAR_OPB_ETHERNET_0_MII_EXIST +#define XPAR_EMAC_0_ERR_COUNT_EXIST XPAR_OPB_ETHERNET_0_ERR_COUNT_EXIST +#define XPAR_EMAC_0_DEVICE_ID XPAR_OPB_ETHERNET_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_GPIO_0_BASEADDR XPAR_OPB_GPIO_0_BASEADDR_0 +#define XPAR_GPIO_0_HIGHADDR XPAR_OPB_GPIO_0_HIGHADDR_0 +#define XPAR_GPIO_0_DEVICE_ID XPAR_OPB_GPIO_0_DEVICE_ID_0 +#define XPAR_GPIO_1_BASEADDR XPAR_OPB_GPIO_0_BASEADDR_1 +#define XPAR_GPIO_1_HIGHADDR XPAR_OPB_GPIO_0_HIGHADDR_1 +#define XPAR_GPIO_1_DEVICE_ID XPAR_OPB_GPIO_0_DEVICE_ID_1 +#define XPAR_GPIO_2_BASEADDR XPAR_OPB_GPIO_EXP_HDR_0_BASEADDR_0 +#define XPAR_GPIO_2_HIGHADDR XPAR_OPB_GPIO_EXP_HDR_0_HIGHADDR_0 +#define XPAR_GPIO_2_DEVICE_ID XPAR_OPB_GPIO_EXP_HDR_0_DEVICE_ID_0 +#define XPAR_GPIO_3_BASEADDR XPAR_OPB_GPIO_EXP_HDR_0_BASEADDR_1 +#define XPAR_GPIO_3_HIGHADDR XPAR_OPB_GPIO_EXP_HDR_0_HIGHADDR_1 +#define XPAR_GPIO_3_DEVICE_ID XPAR_OPB_GPIO_EXP_HDR_0_DEVICE_ID_1 +#define XPAR_GPIO_4_BASEADDR XPAR_OPB_GPIO_CHAR_LCD_0_BASEADDR +#define XPAR_GPIO_4_HIGHADDR XPAR_OPB_GPIO_CHAR_LCD_0_HIGHADDR +#define XPAR_GPIO_4_DEVICE_ID XPAR_OPB_GPIO_CHAR_LCD_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_PS2_0_BASEADDR XPAR_OPB_PS2_DUAL_REF_0_BASEADDR_0 +#define XPAR_PS2_0_HIGHADDR XPAR_OPB_PS2_DUAL_REF_0_HIGHADDR_0 +#define XPAR_PS2_0_DEVICE_ID XPAR_OPB_PS2_DUAL_REF_0_DEVICE_ID_0 +#define XPAR_PS2_1_BASEADDR XPAR_OPB_PS2_DUAL_REF_0_BASEADDR_1 +#define XPAR_PS2_1_HIGHADDR XPAR_OPB_PS2_DUAL_REF_0_HIGHADDR_1 +#define XPAR_PS2_1_DEVICE_ID XPAR_OPB_PS2_DUAL_REF_0_DEVICE_ID_1 + +/******************************************************************/ + +#define XPAR_SYSACE_0_BASEADDR XPAR_OPB_SYSACE_0_BASEADDR +#define XPAR_SYSACE_0_HIGHADDR XPAR_OPB_SYSACE_0_HIGHADDR +#define XPAR_SYSACE_0_DEVICE_ID XPAR_OPB_SYSACE_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_IIC_0_BASEADDR XPAR_OPB_IIC_0_BASEADDR +#define XPAR_IIC_0_HIGHADDR XPAR_OPB_IIC_0_HIGHADDR +#define XPAR_IIC_0_TEN_BIT_ADR XPAR_OPB_IIC_0_TEN_BIT_ADR +#define XPAR_IIC_0_DEVICE_ID XPAR_OPB_IIC_0_DEVICE_ID + +/******************************************************************/ + +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000 +#define XPAR_CORE_CLOCK_FREQ_HZ XPAR_CPU_PPC405_CORE_CLOCK_FREQ_HZ +#define XPAR_DDR_0_SIZE 0x4000000 + +/******************************************************************/ + +#define XPAR_PERSISTENT_0_IIC_0_BASEADDR 0x00000400 +#define XPAR_PERSISTENT_0_IIC_0_HIGHADDR 0x000007FF +#define XPAR_PERSISTENT_0_IIC_0_EEPROMADDR 0xA0 + +/******************************************************************/ + +#define XPAR_PCI_0_CLOCK_FREQ_HZ 0 + +/******************************************************************/ + diff -puN arch/ppc/platforms/4xx/yucca.c~git-powerpc arch/ppc/platforms/4xx/yucca.c --- devel/arch/ppc/platforms/4xx/yucca.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/yucca.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/yucca.c - * * Yucca board specific routines * * Roland Dreier (based on luan.c by Matt Porter) diff -puN arch/ppc/platforms/4xx/yucca.h~git-powerpc arch/ppc/platforms/4xx/yucca.h --- devel/arch/ppc/platforms/4xx/yucca.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/4xx/yucca.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/4xx/yucca.h - * * Yucca board definitions * * Roland Dreier (based on luan.h by Matt Porter) diff -puN arch/ppc/platforms/83xx/mpc834x_sys.c~git-powerpc arch/ppc/platforms/83xx/mpc834x_sys.c --- devel/arch/ppc/platforms/83xx/mpc834x_sys.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/83xx/mpc834x_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/83xx/mpc834x_sys.c - * * MPC834x SYS board specific routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/83xx/mpc834x_sys.h~git-powerpc arch/ppc/platforms/83xx/mpc834x_sys.h --- devel/arch/ppc/platforms/83xx/mpc834x_sys.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/83xx/mpc834x_sys.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/83xx/mpc834x_sys.h - * * MPC834X SYS common board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc8540_ads.c~git-powerpc arch/ppc/platforms/85xx/mpc8540_ads.c --- devel/arch/ppc/platforms/85xx/mpc8540_ads.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc8540_ads.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc8540_ads.c - * * MPC8540ADS board specific routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc8540_ads.h~git-powerpc arch/ppc/platforms/85xx/mpc8540_ads.h --- devel/arch/ppc/platforms/85xx/mpc8540_ads.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc8540_ads.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc8540_ads.h - * * MPC8540ADS board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc8555_cds.h~git-powerpc arch/ppc/platforms/85xx/mpc8555_cds.h --- devel/arch/ppc/platforms/85xx/mpc8555_cds.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc8555_cds.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/mpc8555_cds.h - * * MPC8555CDS board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc8560_ads.c~git-powerpc arch/ppc/platforms/85xx/mpc8560_ads.c --- devel/arch/ppc/platforms/85xx/mpc8560_ads.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc8560_ads.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc8560_ads.c - * * MPC8560ADS board specific routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc8560_ads.h~git-powerpc arch/ppc/platforms/85xx/mpc8560_ads.h --- devel/arch/ppc/platforms/85xx/mpc8560_ads.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc8560_ads.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/mpc8560_ads.h - * * MPC8540ADS board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc85xx_ads_common.c~git-powerpc arch/ppc/platforms/85xx/mpc85xx_ads_common.c --- devel/arch/ppc/platforms/85xx/mpc85xx_ads_common.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc85xx_ads_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc85xx_ads_common.c - * * MPC85xx ADS board common routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc85xx_ads_common.h~git-powerpc arch/ppc/platforms/85xx/mpc85xx_ads_common.h --- devel/arch/ppc/platforms/85xx/mpc85xx_ads_common.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc85xx_ads_common.h - * * MPC85XX ADS common board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc85xx_cds_common.c~git-powerpc arch/ppc/platforms/85xx/mpc85xx_cds_common.c --- devel/arch/ppc/platforms/85xx/mpc85xx_cds_common.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc85xx_cds_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platform/85xx/mpc85xx_cds_common.c - * * MPC85xx CDS board specific routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/mpc85xx_cds_common.h~git-powerpc arch/ppc/platforms/85xx/mpc85xx_cds_common.h --- devel/arch/ppc/platforms/85xx/mpc85xx_cds_common.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/mpc85xx_cds_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc85xx_cds_common.h - * * MPC85xx CDS board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/sbc8560.c~git-powerpc arch/ppc/platforms/85xx/sbc8560.c --- devel/arch/ppc/platforms/85xx/sbc8560.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/sbc8560.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/sbc8560.c - * * Wind River SBC8560 board specific routines * * Maintainer: Kumar Gala diff -puN arch/ppc/platforms/85xx/sbc8560.h~git-powerpc arch/ppc/platforms/85xx/sbc8560.h --- devel/arch/ppc/platforms/85xx/sbc8560.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/sbc8560.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/sbc8560.h - * * Wind River SBC8560 board definitions * * Copyright 2003 Motorola Inc. diff -puN arch/ppc/platforms/85xx/sbc85xx.c~git-powerpc arch/ppc/platforms/85xx/sbc85xx.c --- devel/arch/ppc/platforms/85xx/sbc85xx.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/sbc85xx.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platform/85xx/sbc85xx.c - * * WindRiver PowerQUICC III SBC85xx board common routines * * Copyright 2002, 2003 Motorola Inc. diff -puN arch/ppc/platforms/85xx/sbc85xx.h~git-powerpc arch/ppc/platforms/85xx/sbc85xx.h --- devel/arch/ppc/platforms/85xx/sbc85xx.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/sbc85xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/sbc85xx.h - * * WindRiver PowerQUICC III SBC85xx common board definitions * * Copyright 2003 Motorola Inc. diff -puN arch/ppc/platforms/85xx/stx_gp3.c~git-powerpc arch/ppc/platforms/85xx/stx_gp3.c --- devel/arch/ppc/platforms/85xx/stx_gp3.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/stx_gp3.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/stx_gp3.c - * * STx GP3 board specific routines * * Dan Malek diff -puN arch/ppc/platforms/85xx/stx_gp3.h~git-powerpc arch/ppc/platforms/85xx/stx_gp3.h --- devel/arch/ppc/platforms/85xx/stx_gp3.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/stx_gp3.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/stx8560_gp3.h - * * STx GP3 board definitions * * Dan Malek (dan@embeddededge.com) diff -puN arch/ppc/platforms/85xx/tqm85xx.c~git-powerpc arch/ppc/platforms/85xx/tqm85xx.c --- devel/arch/ppc/platforms/85xx/tqm85xx.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/tqm85xx.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/tqm85xx.c - * * TQM85xx (40/41/55/60) board specific routines * * Copyright (c) 2005 DENX Software Engineering diff -puN arch/ppc/platforms/85xx/tqm85xx.h~git-powerpc arch/ppc/platforms/85xx/tqm85xx.h --- devel/arch/ppc/platforms/85xx/tqm85xx.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/85xx/tqm85xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/tqm85xx.h - * * TQM85xx (40/41/55/60) board definitions * * Copyright (c) 2005 DENX Software Engineering diff -puN arch/ppc/platforms/apus_setup.c~git-powerpc arch/ppc/platforms/apus_setup.c --- devel/arch/ppc/platforms/apus_setup.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/apus_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/apus_setup.c - * * Copyright (C) 1998, 1999 Jesper Skov * * Basically what is needed to replace functionality found in diff -puN arch/ppc/platforms/chestnut.c~git-powerpc arch/ppc/platforms/chestnut.c --- devel/arch/ppc/platforms/chestnut.c~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/chestnut.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chestnut.c - * * Board setup routines for IBM Chestnut * * Author: diff -puN arch/ppc/platforms/chestnut.h~git-powerpc arch/ppc/platforms/chestnut.h --- devel/arch/ppc/platforms/chestnut.h~git-powerpc 2006-02-27 22:37:55.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/chestnut.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chestnut.h - * * Definitions for IBM 750FXGX Eval (Chestnut) * * Author: diff -puN arch/ppc/platforms/chrp_pegasos_eth.c~git-powerpc arch/ppc/platforms/chrp_pegasos_eth.c --- devel/arch/ppc/platforms/chrp_pegasos_eth.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/chrp_pegasos_eth.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chrp_pegasos_eth.c - * * Copyright (C) 2005 Sven Luther * Thanks to : * Dale Farnsworth diff -puN arch/ppc/platforms/chrp_setup.c~git-powerpc arch/ppc/platforms/chrp_setup.c --- devel/arch/ppc/platforms/chrp_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/chrp_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) diff -puN arch/ppc/platforms/chrp_time.c~git-powerpc arch/ppc/platforms/chrp_time.c --- devel/arch/ppc/platforms/chrp_time.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/chrp_time.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/chrp_time.c - * * Copyright (C) 1991, 1992, 1995 Linus Torvalds * * Adapted for PowerPC (PReP) by Gary Thomas diff -puN arch/ppc/platforms/cpci690.c~git-powerpc arch/ppc/platforms/cpci690.c --- devel/arch/ppc/platforms/cpci690.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/cpci690.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/cpci690.c - * * Board setup routines for the Force CPCI690 board. * * Author: Mark A. Greer diff -puN arch/ppc/platforms/cpci690.h~git-powerpc arch/ppc/platforms/cpci690.h --- devel/arch/ppc/platforms/cpci690.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/cpci690.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/cpci690.h - * * Definitions for Force CPCI690 * * Author: Mark A. Greer diff -puN arch/ppc/platforms/ev64260.c~git-powerpc arch/ppc/platforms/ev64260.c --- devel/arch/ppc/platforms/ev64260.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/ev64260.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ev64260.c - * * Board setup routines for the Marvell/Galileo EV-64260-BP Evaluation Board. * * Author: Mark A. Greer diff -puN arch/ppc/platforms/ev64260.h~git-powerpc arch/ppc/platforms/ev64260.h --- devel/arch/ppc/platforms/ev64260.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/ev64260.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ev64260.h - * * Definitions for Marvell/Galileo EV-64260-BP Evaluation Board. * * Author: Mark A. Greer diff -puN arch/ppc/platforms/ev64360.c~git-powerpc arch/ppc/platforms/ev64360.c --- devel/arch/ppc/platforms/ev64360.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/ev64360.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ev64360.c - * * Board setup routines for the Marvell EV-64360-BP Evaluation Board. * * Author: Lee Nicks diff -puN arch/ppc/platforms/ev64360.h~git-powerpc arch/ppc/platforms/ev64360.h --- devel/arch/ppc/platforms/ev64360.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/ev64360.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/ev64360.h - * * Definitions for Marvell EV-64360-BP Evaluation Board. * * Author: Lee Nicks diff -puN arch/ppc/platforms/fads.h~git-powerpc arch/ppc/platforms/fads.h --- devel/arch/ppc/platforms/fads.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/fads.h 2006-02-27 22:38:10.000000000 -0800 @@ -112,7 +112,7 @@ /* CPM Ethernet through SCC1 or SCC2 */ -#ifdef CONFIG_SCC1_ENET /* Probably 860 variant */ +#if defined(CONFIG_SCC1_ENET) || defined(CONFIG_MPC8xx_SECOND_ETH_SCC1) /* Probably 860 variant */ /* Bits in parallel I/O port registers that have to be set/cleared * to configure the pins for SCC1 use. * TCLK - CLK1, RCLK - CLK2. diff -puN arch/ppc/platforms/gemini.h~git-powerpc arch/ppc/platforms/gemini.h --- devel/arch/ppc/platforms/gemini.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/gemini.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,7 +1,4 @@ /* - * arch/ppc/platforms/gemini.h - * - * * Onboard registers and descriptions for Synergy Microsystems' * "Gemini" boards. * diff -puN arch/ppc/platforms/gemini_prom.S~git-powerpc arch/ppc/platforms/gemini_prom.S --- devel/arch/ppc/platforms/gemini_prom.S~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/gemini_prom.S 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/gemini_prom.S - * * Not really prom support code (yet), but sort of anti-prom code. The current * bootloader does a number of things it shouldn't and doesn't do things that it * should. The stuff in here is mainly a hodge-podge collection of setup code diff -puN arch/ppc/platforms/gemini_setup.c~git-powerpc arch/ppc/platforms/gemini_setup.c --- devel/arch/ppc/platforms/gemini_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/gemini_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/gemini_setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) diff -puN arch/ppc/platforms/hdpu.c~git-powerpc arch/ppc/platforms/hdpu.c --- devel/arch/ppc/platforms/hdpu.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/hdpu.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,7 +1,4 @@ - /* - * arch/ppc/platforms/hdpu_setup.c - * * Board setup routines for the Sky Computers HDPU Compute Blade. * * Written by Brian Waite diff -puN arch/ppc/platforms/hdpu.h~git-powerpc arch/ppc/platforms/hdpu.h --- devel/arch/ppc/platforms/hdpu.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/hdpu.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/hdpu.h - * * Definitions for Sky Computers HDPU board. * * Brian Waite diff -puN arch/ppc/platforms/katana.c~git-powerpc arch/ppc/platforms/katana.c --- devel/arch/ppc/platforms/katana.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/katana.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/katana.c - * * Board setup routines for the Artesyn Katana cPCI boards. * * Author: Tim Montgomery diff -puN arch/ppc/platforms/katana.h~git-powerpc arch/ppc/platforms/katana.h --- devel/arch/ppc/platforms/katana.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/katana.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/katana.h - * * Definitions for Artesyn Katana750i/3750 board. * * Author: Tim Montgomery diff -puN arch/ppc/platforms/lite5200.c~git-powerpc arch/ppc/platforms/lite5200.c --- devel/arch/ppc/platforms/lite5200.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/lite5200.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/lite5200.c - * * Platform support file for the Freescale LITE5200 based on MPC52xx. * A maximum of this file should be moved to syslib/mpc52xx_????? * so that new platform based on MPC52xx need a minimal platform file diff -puN arch/ppc/platforms/lite5200.h~git-powerpc arch/ppc/platforms/lite5200.h --- devel/arch/ppc/platforms/lite5200.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/lite5200.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/lite5200.h - * * Definitions for Freescale LITE5200 : MPC52xx Standard Development * Platform board support * diff -puN arch/ppc/platforms/lopec.c~git-powerpc arch/ppc/platforms/lopec.c --- devel/arch/ppc/platforms/lopec.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/lopec.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/lopec.c - * * Setup routines for the Motorola LoPEC. * * Author: Dan Cox diff -puN arch/ppc/platforms/Makefile~git-powerpc arch/ppc/platforms/Makefile --- devel/arch/ppc/platforms/Makefile~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -37,6 +37,9 @@ obj-$(CONFIG_SBC82xx) += sbc82xx.o obj-$(CONFIG_SPRUCE) += spruce.o obj-$(CONFIG_LITE5200) += lite5200.o obj-$(CONFIG_EV64360) += ev64360.o +obj-$(CONFIG_MPC86XADS) += mpc866ads_setup.o +obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o +obj-$(CONFIG_ADS8272) += mpc8272ads_setup.o ifeq ($(CONFIG_SMP),y) obj-$(CONFIG_PPC_CHRP) += chrp_smp.o diff -puN /dev/null arch/ppc/platforms/mpc8272ads_setup.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/mpc8272ads_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,236 @@ +/* + * arch/ppc/platforms/82xx/pq2ads_pd.c + * + * MPC82xx Board-specific PlatformDevice descriptions + * + * 2005 (c) MontaVista Software, Inc. + * Vitaly Bordug + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "pq2ads_pd.h" + +static void init_fcc1_ioports(void); +static void init_fcc2_ioports(void); + +static struct fs_mii_bus_info mii_bus_info = { + .method = fsmii_bitbang, + .id = 0, + .i.bitbang = { + .mdio_port = fsiop_portc, + .mdio_bit = 18, + .mdc_port = fsiop_portc, + .mdc_bit = 19, + .delay = 1, + }, +}; + +static struct fs_platform_info mpc82xx_fcc1_pdata = { + .fs_no = fsid_fcc1, + .cp_page = CPM_CR_FCC1_PAGE, + .cp_block = CPM_CR_FCC1_SBLOCK, + .clk_trx = (PC_F1RXCLK | PC_F1TXCLK), + .clk_route = CMX1_CLK_ROUTE, + .clk_mask = CMX1_CLK_MASK, + .init_ioports = init_fcc1_ioports, + + .phy_addr = 0, +#ifdef PHY_INTERRUPT + .phy_irq = PHY_INTERRUPT, +#else + .phy_irq = -1; +#endif + .mem_offset = FCC1_MEM_OFFSET, + .bus_info = &mii_bus_info, + .rx_ring = 32, + .tx_ring = 32, + .rx_copybreak = 240, + .use_napi = 0, + .napi_weight = 17, +}; + +static struct fs_platform_info mpc82xx_fcc2_pdata = { + .fs_no = fsid_fcc2, + .cp_page = CPM_CR_FCC2_PAGE, + .cp_block = CPM_CR_FCC2_SBLOCK, + .clk_trx = (PC_F2RXCLK | PC_F2TXCLK), + .clk_route = CMX2_CLK_ROUTE, + .clk_mask = CMX2_CLK_MASK, + .init_ioports = init_fcc2_ioports, + + .phy_addr = 3, +#ifdef PHY_INTERRUPT + .phy_irq = PHY_INTERRUPT, +#else + .phy_irq = -1; +#endif + .mem_offset = FCC2_MEM_OFFSET, + .bus_info = &mii_bus_info, + .rx_ring = 32, + .tx_ring = 32, + .rx_copybreak = 240, + .use_napi = 0, + .napi_weight = 17, +}; + +static void init_fcc1_ioports(void) +{ + struct io_port *io; + u32 tempval; + cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t)); + u32 *bcsr = ioremap(BCSR_ADDR+4, sizeof(u32)); + + io = &immap->im_ioport; + + /* Enable the PHY */ + clrbits32(bcsr, BCSR1_FETHIEN); + setbits32(bcsr, BCSR1_FETH_RST); + + /* FCC1 pins are on port A/C. */ + /* Configure port A and C pins for FCC1 Ethernet. */ + + tempval = in_be32(&io->iop_pdira); + tempval &= ~PA1_DIRA0; + tempval |= PA1_DIRA1; + out_be32(&io->iop_pdira, tempval); + + tempval = in_be32(&io->iop_psora); + tempval &= ~PA1_PSORA0; + tempval |= PA1_PSORA1; + out_be32(&io->iop_psora, tempval); + + setbits32(&io->iop_ppara,PA1_DIRA0 | PA1_DIRA1); + + /* Alter clocks */ + tempval = PC_F1TXCLK|PC_F1RXCLK; + + clrbits32(&io->iop_psorc, tempval); + clrbits32(&io->iop_pdirc, tempval); + setbits32(&io->iop_pparc, tempval); + + clrbits32(&immap->im_cpmux.cmx_fcr, CMX1_CLK_MASK); + setbits32(&immap->im_cpmux.cmx_fcr, CMX1_CLK_ROUTE); + iounmap(bcsr); + iounmap(immap); +} + +static void init_fcc2_ioports(void) +{ + cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t)); + u32 *bcsr = ioremap(BCSR_ADDR+12, sizeof(u32)); + + struct io_port *io; + u32 tempval; + + immap = cpm2_immr; + + io = &immap->im_ioport; + + /* Enable the PHY */ + clrbits32(bcsr, BCSR3_FETHIEN2); + setbits32(bcsr, BCSR3_FETH2_RST); + + /* FCC2 are port B/C. */ + /* Configure port A and C pins for FCC2 Ethernet. */ + + tempval = in_be32(&io->iop_pdirb); + tempval &= ~PB2_DIRB0; + tempval |= PB2_DIRB1; + out_be32(&io->iop_pdirb, tempval); + + tempval = in_be32(&io->iop_psorb); + tempval &= ~PB2_PSORB0; + tempval |= PB2_PSORB1; + out_be32(&io->iop_psorb, tempval); + + setbits32(&io->iop_pparb,PB2_DIRB0 | PB2_DIRB1); + + tempval = PC_F2RXCLK|PC_F2TXCLK; + + /* Alter clocks */ + clrbits32(&io->iop_psorc,tempval); + clrbits32(&io->iop_pdirc,tempval); + setbits32(&io->iop_pparc,tempval); + + clrbits32(&immap->im_cpmux.cmx_fcr, CMX2_CLK_MASK); + setbits32(&immap->im_cpmux.cmx_fcr, CMX2_CLK_ROUTE); + + iounmap(bcsr); + iounmap(immap); +} + + +static void __init mpc8272ads_fixup_enet_pdata(struct platform_device *pdev, + int idx) +{ + bd_t* bi = (void*)__res; + int fs_no = fsid_fcc1+pdev->id-1; + + mpc82xx_fcc1_pdata.dpram_offset = mpc82xx_fcc2_pdata.dpram_offset = (u32)cpm2_immr->im_dprambase; + mpc82xx_fcc1_pdata.fcc_regs_c = mpc82xx_fcc2_pdata.fcc_regs_c = (u32)cpm2_immr->im_fcc_c; + + switch(fs_no) { + case fsid_fcc1: + memcpy(&mpc82xx_fcc1_pdata.macaddr,bi->bi_enetaddr,6); + pdev->dev.platform_data = &mpc82xx_fcc1_pdata; + break; + case fsid_fcc2: + memcpy(&mpc82xx_fcc2_pdata.macaddr,bi->bi_enetaddr,6); + mpc82xx_fcc2_pdata.macaddr[5] ^= 1; + pdev->dev.platform_data = &mpc82xx_fcc2_pdata; + break; + } +} + +static int mpc8272ads_platform_notify(struct device *dev) +{ + static const struct platform_notify_dev_map dev_map[] = { + { + .bus_id = "fsl-cpm-fcc", + .rtn = mpc8272ads_fixup_enet_pdata + }, + { + .bus_id = NULL + } + }; + platform_notify_map(dev_map,dev); + + return 0; + +} + +int __init mpc8272ads_init(void) +{ + printk(KERN_NOTICE "mpc8272ads: Init\n"); + + platform_notify = mpc8272ads_platform_notify; + + ppc_sys_device_initfunc(); + + ppc_sys_device_disable_all(); + ppc_sys_device_enable(MPC82xx_CPM_FCC1); + ppc_sys_device_enable(MPC82xx_CPM_FCC2); + + return 0; +} + +arch_initcall(mpc8272ads_init); diff -puN /dev/null arch/ppc/platforms/mpc866ads_setup.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/mpc866ads_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,273 @@ +/*arch/ppc/platforms/mpc885ads-setup.c + * + * Platform setup for the Freescale mpc885ads board + * + * Vitaly Bordug + * + * Copyright 2005 MontaVista Software Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern unsigned char __res[]; + +static struct fs_mii_bus_info fec_mii_bus_info = { + .method = fsmii_fec, + .id = 0, +}; + +static struct fs_mii_bus_info scc_mii_bus_info = { + .method = fsmii_fixed, + .id = 0, + .i.fixed.speed = 10, + .i.fixed.duplex = 0, +}; + +static struct fs_platform_info mpc8xx_fec_pdata[] = { + { + .rx_ring = 128, + .tx_ring = 16, + .rx_copybreak = 240, + + .use_napi = 1, + .napi_weight = 17, + + .phy_addr = 15, + .phy_irq = -1, + + .use_rmii = 0, + + .bus_info = &fec_mii_bus_info, + } +}; + +static struct fs_platform_info mpc8xx_scc_pdata = { + .rx_ring = 64, + .tx_ring = 8, + .rx_copybreak = 240, + + .use_napi = 1, + .napi_weight = 17, + + .phy_addr = -1, + .phy_irq = -1, + + .bus_info = &scc_mii_bus_info, +}; + +void __init board_init(void) +{ + volatile cpm8xx_t *cp = cpmp; + unsigned *bcsr_io; + + bcsr_io = ioremap(BCSR1, sizeof(unsigned long)); + + if (bcsr_io == NULL) { + printk(KERN_CRIT "Could not remap BCSR1\n"); + return; + } +#ifdef CONFIG_SERIAL_CPM_SMC1 + cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */ + clrbits32(bcsr_io,(0x80000000 >> 7)); +#else + setbits32(bcsr_io,(0x80000000 >> 7)); + + cp->cp_pbpar &= ~(0x000000c0); + cp->cp_pbdir |= 0x000000c0; + cp->cp_smc[0].smc_smcmr = 0; + cp->cp_smc[0].smc_smce = 0; +#endif + +#ifdef CONFIG_SERIAL_CPM_SMC2 + cp->cp_simode &= ~(0xe0000000 >> 1); + cp->cp_simode |= (0x20000000 >> 1); /* brg2 */ + clrbits32(bcsr_io,(0x80000000 >> 13)); +#else + clrbits32(bcsr_io,(0x80000000 >> 13)); + cp->cp_pbpar &= ~(0x00000c00); + cp->cp_pbdir |= 0x00000c00; + cp->cp_smc[1].smc_smcmr = 0; + cp->cp_smc[1].smc_smce = 0; +#endif + iounmap(bcsr_io); +} + +static void setup_fec1_ioports(void) +{ + immap_t *immap = (immap_t *) IMAP_ADDR; + + setbits16(&immap->im_ioport.iop_pdpar, 0x1fff); + setbits16(&immap->im_ioport.iop_pddir, 0x1fff); +} + +static void setup_scc1_ioports(void) +{ + immap_t *immap = (immap_t *) IMAP_ADDR; + unsigned *bcsr_io; + + bcsr_io = ioremap(BCSR1, sizeof(unsigned long)); + + if (bcsr_io == NULL) { + printk(KERN_CRIT "Could not remap BCSR1\n"); + return; + } + + /* Enable the PHY. + */ + clrbits32(bcsr_io,BCSR1_ETHEN); + + /* Configure port A pins for Txd and Rxd. + */ + /* Disable receive and transmit in case EPPC-Bug started it. + */ + setbits16(&immap->im_ioport.iop_papar, PA_ENET_RXD | PA_ENET_TXD); + clrbits16(&immap->im_ioport.iop_padir, PA_ENET_RXD | PA_ENET_TXD); + clrbits16(&immap->im_ioport.iop_paodr, PA_ENET_TXD); + + /* Configure port C pins to enable CLSN and RENA. + */ + clrbits16(&immap->im_ioport.iop_pcpar, PC_ENET_CLSN | PC_ENET_RENA); + clrbits16(&immap->im_ioport.iop_pcdir, PC_ENET_CLSN | PC_ENET_RENA); + setbits16(&immap->im_ioport.iop_pcso, PC_ENET_CLSN | PC_ENET_RENA); + /* Configure port A for TCLK and RCLK. + */ + setbits16(&immap->im_ioport.iop_papar, PA_ENET_TCLK | PA_ENET_RCLK); + clrbits16(&immap->im_ioport.iop_padir, PA_ENET_TCLK | PA_ENET_RCLK); + clrbits32(&immap->im_cpm.cp_pbpar, PB_ENET_TENA); + clrbits32(&immap->im_cpm.cp_pbdir, PB_ENET_TENA); + + /* Configure Serial Interface clock routing. + * First, clear all SCC bits to zero, then set the ones we want. + */ + clrbits32(&immap->im_cpm.cp_sicr, SICR_ENET_MASK); + setbits32(&immap->im_cpm.cp_sicr, SICR_ENET_CLKRT); + + /* In the original SCC enet driver the following code is placed at + the end of the initialization */ + setbits32(&immap->im_cpm.cp_pbpar, PB_ENET_TENA); + setbits32(&immap->im_cpm.cp_pbdir, PB_ENET_TENA); + +} + +static void mpc866ads_fixup_enet_pdata(struct platform_device *pdev, int fs_no) +{ + struct fs_platform_info *fpi = pdev->dev.platform_data; + + volatile cpm8xx_t *cp; + bd_t *bd = (bd_t *) __res; + char *e; + int i; + + /* Get pointer to Communication Processor */ + cp = cpmp; + switch (fs_no) { + case fsid_fec1: + fpi = &mpc8xx_fec_pdata[0]; + fpi->init_ioports = &setup_fec1_ioports; + + break; + case fsid_scc1: + fpi = &mpc8xx_scc_pdata; + fpi->init_ioports = &setup_scc1_ioports; + + break; + default: + printk(KERN_WARNING"Device %s is not supported!\n", pdev->name); + return; + } + + pdev->dev.platform_data = fpi; + fpi->fs_no = fs_no; + + e = (unsigned char *)&bd->bi_enetaddr; + for (i = 0; i < 6; i++) + fpi->macaddr[i] = *e++; + + fpi->macaddr[5 - pdev->id]++; + +} + +static void mpc866ads_fixup_fec_enet_pdata(struct platform_device *pdev, + int idx) +{ + /* This is for FEC devices only */ + if (!pdev || !pdev->name || (!strstr(pdev->name, "fsl-cpm-fec"))) + return; + mpc866ads_fixup_enet_pdata(pdev, fsid_fec1 + pdev->id - 1); +} + +static void mpc866ads_fixup_scc_enet_pdata(struct platform_device *pdev, + int idx) +{ + /* This is for SCC devices only */ + if (!pdev || !pdev->name || (!strstr(pdev->name, "fsl-cpm-scc"))) + return; + + mpc866ads_fixup_enet_pdata(pdev, fsid_scc1 + pdev->id - 1); +} + +static int mpc866ads_platform_notify(struct device *dev) +{ + static const struct platform_notify_dev_map dev_map[] = { + { + .bus_id = "fsl-cpm-fec", + .rtn = mpc866ads_fixup_fec_enet_pdata, + }, + { + .bus_id = "fsl-cpm-scc", + .rtn = mpc866ads_fixup_scc_enet_pdata, + }, + { + .bus_id = NULL + } + }; + + platform_notify_map(dev_map,dev); + + return 0; +} + +int __init mpc866ads_init(void) +{ + printk(KERN_NOTICE "mpc866ads: Init\n"); + + platform_notify = mpc866ads_platform_notify; + + ppc_sys_device_initfunc(); + ppc_sys_device_disable_all(); + +#ifdef MPC8xx_SECOND_ETH_SCC1 + ppc_sys_device_enable(MPC8xx_CPM_SCC1); +#endif + ppc_sys_device_enable(MPC8xx_CPM_FEC1); + + return 0; +} + +arch_initcall(mpc866ads_init); diff -puN /dev/null arch/ppc/platforms/mpc885ads_setup.c --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/mpc885ads_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,389 @@ +/*arch/ppc/platforms/mpc885ads-setup.c + * + * Platform setup for the Freescale mpc885ads board + * + * Vitaly Bordug + * + * Copyright 2005 MontaVista Software Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern unsigned char __res[]; + +static void __init mpc885ads_scc_phy_init(char); + +static struct fs_mii_bus_info fec_mii_bus_info = { + .method = fsmii_fec, + .id = 0, +}; + +static struct fs_mii_bus_info scc_mii_bus_info = { +#ifdef CONFIG_SCC_ENET_8xx_FIXED + .method = fsmii_fixed, +#else + .method = fsmii_fec, +#endif + + .id = 0, +}; + +static struct fs_platform_info mpc8xx_fec_pdata[] = { + { + .rx_ring = 128, + .tx_ring = 16, + .rx_copybreak = 240, + + .use_napi = 1, + .napi_weight = 17, + + .phy_addr = 0, + .phy_irq = SIU_IRQ7, + + .bus_info = &fec_mii_bus_info, + }, { + .rx_ring = 128, + .tx_ring = 16, + .rx_copybreak = 240, + + .use_napi = 1, + .napi_weight = 17, + + .phy_addr = 1, + .phy_irq = SIU_IRQ7, + + .bus_info = &fec_mii_bus_info, + } +}; + +static struct fs_platform_info mpc8xx_scc_pdata = { + .rx_ring = 64, + .tx_ring = 8, + .rx_copybreak = 240, + + .use_napi = 1, + .napi_weight = 17, + + .phy_addr = 2, +#ifdef CONFIG_MPC8xx_SCC_ENET_FIXED + .phy_irq = -1, +#else + .phy_irq = SIU_IRQ7, +#endif + + .bus_info = &scc_mii_bus_info, +}; + +void __init board_init(void) +{ + volatile cpm8xx_t *cp = cpmp; + unsigned int *bcsr_io; + +#ifdef CONFIG_FS_ENET + immap_t *immap = (immap_t *) IMAP_ADDR; +#endif + bcsr_io = ioremap(BCSR1, sizeof(unsigned long)); + + if (bcsr_io == NULL) { + printk(KERN_CRIT "Could not remap BCSR\n"); + return; + } +#ifdef CONFIG_SERIAL_CPM_SMC1 + cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */ + clrbits32(bcsr_io, BCSR1_RS232EN_1); +#else + setbits32(bcsr_io,BCSR1_RS232EN_1); + cp->cp_smc[0].smc_smcmr = 0; + cp->cp_smc[0].smc_smce = 0; +#endif + +#ifdef CONFIG_SERIAL_CPM_SMC2 + cp->cp_simode &= ~(0xe0000000 >> 1); + cp->cp_simode |= (0x20000000 >> 1); /* brg2 */ + clrbits32(bcsr_io,BCSR1_RS232EN_2); +#else + setbits32(bcsr_io,BCSR1_RS232EN_2); + cp->cp_smc[1].smc_smcmr = 0; + cp->cp_smc[1].smc_smce = 0; +#endif + iounmap(bcsr_io); + +#ifdef CONFIG_FS_ENET + /* use MDC for MII (common) */ + setbits16(&immap->im_ioport.iop_pdpar, 0x0080); + clrbits16(&immap->im_ioport.iop_pddir, 0x0080); +#endif +} + +static void setup_fec1_ioports(void) +{ + immap_t *immap = (immap_t *) IMAP_ADDR; + + /* configure FEC1 pins */ + setbits16(&immap->im_ioport.iop_papar, 0xf830); + setbits16(&immap->im_ioport.iop_padir, 0x0830); + clrbits16(&immap->im_ioport.iop_padir, 0xf000); + setbits32(&immap->im_cpm.cp_pbpar, 0x00001001); + + clrbits32(&immap->im_cpm.cp_pbdir, 0x00001001); + setbits16(&immap->im_ioport.iop_pcpar, 0x000c); + clrbits16(&immap->im_ioport.iop_pcdir, 0x000c); + setbits32(&immap->im_cpm.cp_pepar, 0x00000003); + + setbits32(&immap->im_cpm.cp_pedir, 0x00000003); + clrbits32(&immap->im_cpm.cp_peso, 0x00000003); + clrbits32(&immap->im_cpm.cp_cptr, 0x00000100); +} + +static void setup_fec2_ioports(void) +{ + immap_t *immap = (immap_t *) IMAP_ADDR; + + /* configure FEC2 pins */ + setbits32(&immap->im_cpm.cp_pepar, 0x0003fffc); + setbits32(&immap->im_cpm.cp_pedir, 0x0003fffc); + setbits32(&immap->im_cpm.cp_peso, 0x00037800); + clrbits32(&immap->im_cpm.cp_peso, 0x000087fc); + clrbits32(&immap->im_cpm.cp_cptr, 0x00000080); +} + +static void setup_scc3_ioports(void) +{ + immap_t *immap = (immap_t *) IMAP_ADDR; + unsigned *bcsr_io; + + bcsr_io = ioremap(BCSR_ADDR, BCSR_SIZE); + + if (bcsr_io == NULL) { + printk(KERN_CRIT "Could not remap BCSR\n"); + return; + } + + /* Enable the PHY. + */ + setbits32(bcsr_io+4, BCSR4_ETH10_RST); + /* Configure port A pins for Txd and Rxd. + */ + setbits16(&immap->im_ioport.iop_papar, PA_ENET_RXD | PA_ENET_TXD); + clrbits16(&immap->im_ioport.iop_padir, PA_ENET_RXD | PA_ENET_TXD); + + /* Configure port C pins to enable CLSN and RENA. + */ + clrbits16(&immap->im_ioport.iop_pcpar, PC_ENET_CLSN | PC_ENET_RENA); + clrbits16(&immap->im_ioport.iop_pcdir, PC_ENET_CLSN | PC_ENET_RENA); + setbits16(&immap->im_ioport.iop_pcso, PC_ENET_CLSN | PC_ENET_RENA); + + /* Configure port E for TCLK and RCLK. + */ + setbits32(&immap->im_cpm.cp_pepar, PE_ENET_TCLK | PE_ENET_RCLK); + clrbits32(&immap->im_cpm.cp_pepar, PE_ENET_TENA); + clrbits32(&immap->im_cpm.cp_pedir, + PE_ENET_TCLK | PE_ENET_RCLK | PE_ENET_TENA); + clrbits32(&immap->im_cpm.cp_peso, PE_ENET_TCLK | PE_ENET_RCLK); + setbits32(&immap->im_cpm.cp_peso, PE_ENET_TENA); + + /* Configure Serial Interface clock routing. + * First, clear all SCC bits to zero, then set the ones we want. + */ + clrbits32(&immap->im_cpm.cp_sicr, SICR_ENET_MASK); + setbits32(&immap->im_cpm.cp_sicr, SICR_ENET_CLKRT); + + /* Disable Rx and Tx. SMC1 sshould be stopped if SCC3 eternet are used. + */ + immap->im_cpm.cp_smc[0].smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); + /* On the MPC885ADS SCC ethernet PHY is initialized in the full duplex mode + * by H/W setting after reset. SCC ethernet controller support only half duplex. + * This discrepancy of modes causes a lot of carrier lost errors. + */ + + /* In the original SCC enet driver the following code is placed at + the end of the initialization */ + setbits32(&immap->im_cpm.cp_pepar, PE_ENET_TENA); + clrbits32(&immap->im_cpm.cp_pedir, PE_ENET_TENA); + setbits32(&immap->im_cpm.cp_peso, PE_ENET_TENA); + + setbits32(bcsr_io+1, BCSR1_ETHEN); + iounmap(bcsr_io); +} + +static void mpc885ads_fixup_enet_pdata(struct platform_device *pdev, int fs_no) +{ + struct fs_platform_info *fpi = pdev->dev.platform_data; + + volatile cpm8xx_t *cp; + bd_t *bd = (bd_t *) __res; + char *e; + int i; + + /* Get pointer to Communication Processor */ + cp = cpmp; + switch (fs_no) { + case fsid_fec1: + fpi = &mpc8xx_fec_pdata[0]; + fpi->init_ioports = &setup_fec1_ioports; + break; + case fsid_fec2: + fpi = &mpc8xx_fec_pdata[1]; + fpi->init_ioports = &setup_fec2_ioports; + break; + case fsid_scc3: + fpi = &mpc8xx_scc_pdata; + fpi->init_ioports = &setup_scc3_ioports; + mpc885ads_scc_phy_init(fpi->phy_addr); + break; + default: + printk(KERN_WARNING"Device %s is not supported!\n", pdev->name); + return; + } + + pdev->dev.platform_data = fpi; + fpi->fs_no = fs_no; + + e = (unsigned char *)&bd->bi_enetaddr; + for (i = 0; i < 6; i++) + fpi->macaddr[i] = *e++; + + fpi->macaddr[5 - pdev->id]++; + +} + +static void mpc885ads_fixup_fec_enet_pdata(struct platform_device *pdev, + int idx) +{ + /* This is for FEC devices only */ + if (!pdev || !pdev->name || (!strstr(pdev->name, "fsl-cpm-fec"))) + return; + mpc885ads_fixup_enet_pdata(pdev, fsid_fec1 + pdev->id - 1); +} + +static void __init mpc885ads_fixup_scc_enet_pdata(struct platform_device *pdev, + int idx) +{ + /* This is for SCC devices only */ + if (!pdev || !pdev->name || (!strstr(pdev->name, "fsl-cpm-scc"))) + return; + + mpc885ads_fixup_enet_pdata(pdev, fsid_scc1 + pdev->id - 1); +} + +/* SCC ethernet controller does not have MII management channel. FEC1 MII + * channel is used to communicate with the 10Mbit PHY. + */ + +#define MII_ECNTRL_PINMUX 0x4 +#define FEC_ECNTRL_PINMUX 0x00000004 +#define FEC_RCNTRL_MII_MODE 0x00000004 + +/* Make MII read/write commands. + */ +#define mk_mii_write(REG, VAL, PHY_ADDR) (0x50020000 | (((REG) & 0x1f) << 18) | \ + ((VAL) & 0xffff) | ((PHY_ADDR) << 23)) + +static void mpc885ads_scc_phy_init(char phy_addr) +{ + volatile immap_t *immap; + volatile fec_t *fecp; + bd_t *bd; + + bd = (bd_t *) __res; + immap = (immap_t *) IMAP_ADDR; /* pointer to internal registers */ + fecp = &(immap->im_cpm.cp_fec); + + /* Enable MII pins of the FEC1 + */ + setbits16(&immap->im_ioport.iop_pdpar, 0x0080); + clrbits16(&immap->im_ioport.iop_pddir, 0x0080); + /* Set MII speed to 2.5 MHz + */ + out_be32(&fecp->fec_mii_speed, + ((((bd->bi_intfreq + 4999999) / 2500000) / 2) & 0x3F) << 1); + + /* Enable FEC pin MUX + */ + setbits32(&fecp->fec_ecntrl, MII_ECNTRL_PINMUX); + setbits32(&fecp->fec_r_cntrl, FEC_RCNTRL_MII_MODE); + + out_be32(&fecp->fec_mii_data, + mk_mii_write(MII_BMCR, BMCR_ISOLATE, phy_addr)); + udelay(100); + out_be32(&fecp->fec_mii_data, + mk_mii_write(MII_ADVERTISE, + ADVERTISE_10HALF | ADVERTISE_CSMA, phy_addr)); + udelay(100); + + /* Disable FEC MII settings + */ + clrbits32(&fecp->fec_ecntrl, MII_ECNTRL_PINMUX); + clrbits32(&fecp->fec_r_cntrl, FEC_RCNTRL_MII_MODE); + out_be32(&fecp->fec_mii_speed, 0); +} + +static int mpc885ads_platform_notify(struct device *dev) +{ + + static const struct platform_notify_dev_map dev_map[] = { + { + .bus_id = "fsl-cpm-fec", + .rtn = mpc885ads_fixup_fec_enet_pdata, + }, + { + .bus_id = "fsl-cpm-scc", + .rtn = mpc885ads_fixup_scc_enet_pdata, + }, + { + .bus_id = NULL + } + }; + + platform_notify_map(dev_map,dev); + +} + +int __init mpc885ads_init(void) +{ + printk(KERN_NOTICE "mpc885ads: Init\n"); + + platform_notify = mpc885ads_platform_notify; + + ppc_sys_device_initfunc(); + ppc_sys_device_disable_all(); + + ppc_sys_device_enable(MPC8xx_CPM_FEC1); + +#ifdef CONFIG_MPC8xx_SECOND_ETH_SCC3 + ppc_sys_device_enable(MPC8xx_CPM_SCC1); + +#endif +#ifdef CONFIG_MPC8xx_SECOND_ETH_FEC2 + ppc_sys_device_enable(MPC8xx_CPM_FEC2); +#endif + + return 0; +} + +arch_initcall(mpc885ads_init); diff -puN arch/ppc/platforms/mvme5100.c~git-powerpc arch/ppc/platforms/mvme5100.c --- devel/arch/ppc/platforms/mvme5100.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/mvme5100.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/mvme5100.c - * * Board setup routines for the Motorola MVME5100. * * Author: Matt Porter diff -puN arch/ppc/platforms/pal4.h~git-powerpc arch/ppc/platforms/pal4.h --- devel/arch/ppc/platforms/pal4.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pal4.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pal4.h - * * Definitions for SBS Palomar IV board * * Author: Dan Cox diff -puN arch/ppc/platforms/pal4_pci.c~git-powerpc arch/ppc/platforms/pal4_pci.c --- devel/arch/ppc/platforms/pal4_pci.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pal4_pci.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pal4_pci.c - * * PCI support for SBS Palomar IV * * Author: Dan Cox diff -puN arch/ppc/platforms/pal4_serial.h~git-powerpc arch/ppc/platforms/pal4_serial.h --- devel/arch/ppc/platforms/pal4_serial.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pal4_serial.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pal4_serial.h - * * Definitions for SBS PalomarIV serial support * * Author: Dan Cox diff -puN arch/ppc/platforms/pal4_setup.c~git-powerpc arch/ppc/platforms/pal4_setup.c --- devel/arch/ppc/platforms/pal4_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pal4_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pal4_setup.c - * * Board setup routines for the SBS PalomarIV. * * Author: Dan Cox diff -puN arch/ppc/platforms/powerpmc250.c~git-powerpc arch/ppc/platforms/powerpmc250.c --- devel/arch/ppc/platforms/powerpmc250.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/powerpmc250.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/powerpmc250.c - * * Board setup routines for Force PowerPMC-250 Processor PMC * * Author: Troy Benjegerdes diff -puN arch/ppc/platforms/pplus.c~git-powerpc arch/ppc/platforms/pplus.c --- devel/arch/ppc/platforms/pplus.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pplus.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pplus.c - * * Board and PCI setup routines for MCG PowerPlus * * Author: Randy Vinson diff -puN arch/ppc/platforms/pplus.h~git-powerpc arch/ppc/platforms/pplus.h --- devel/arch/ppc/platforms/pplus.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pplus.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pplus.h - * * Definitions for Motorola MCG Falcon/Raven & HAWK North Bridge & Memory ctlr. * * Author: Mark A. Greerinclude/asm-ppc/hawk.h diff -puN arch/ppc/platforms/pq2ads.c~git-powerpc arch/ppc/platforms/pq2ads.c --- devel/arch/ppc/platforms/pq2ads.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pq2ads.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/pq2ads.c - * * PQ2ADS platform support * * Author: Kumar Gala diff -puN arch/ppc/platforms/pq2ads.h~git-powerpc arch/ppc/platforms/pq2ads.h --- devel/arch/ppc/platforms/pq2ads.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/pq2ads.h 2006-02-27 22:38:10.000000000 -0800 @@ -13,6 +13,10 @@ #include +#if defined(CONFIG_ADS8272) +#define BOARD_CHIP_NAME "8272" +#endif + /* Memory map is configured by the PROM startup. * We just map a few things we need. The CSR is actually 4 byte-wide * registers that can be accessed as 8-, 16-, or 32-bit values. diff -puN /dev/null arch/ppc/platforms/pq2ads_pd.h --- /dev/null 2003-09-15 06:40:47.000000000 -0700 +++ devel-akpm/arch/ppc/platforms/pq2ads_pd.h 2006-02-27 22:38:10.000000000 -0800 @@ -0,0 +1,114 @@ +#ifndef __PQ2ADS_PD_H +#define __PQ2ADS_PD_H +/* + * arch/ppc/platforms/82xx/pq2ads_pd.h + * + * Some defines for MPC82xx board-specific PlatformDevice descriptions + * + * 2005 (c) MontaVista Software, Inc. + * Vitaly Bordug + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +/* FCC1 Clock Source Configuration. These can be redefined in the board specific file. + Can only choose from CLK9-12 */ + +#define F1_RXCLK 11 +#define F1_TXCLK 10 + +/* FCC2 Clock Source Configuration. These can be redefined in the board specific file. + Can only choose from CLK13-16 */ +#define F2_RXCLK 15 +#define F2_TXCLK 16 + +/* FCC3 Clock Source Configuration. These can be redefined in the board specific file. + Can only choose from CLK13-16 */ +#define F3_RXCLK 13 +#define F3_TXCLK 14 + +/* Automatically generates register configurations */ +#define PC_CLK(x) ((uint)(1<<(x-1))) /* FCC CLK I/O ports */ + +#define CMXFCR_RF1CS(x) ((uint)((x-5)<<27)) /* FCC1 Receive Clock Source */ +#define CMXFCR_TF1CS(x) ((uint)((x-5)<<24)) /* FCC1 Transmit Clock Source */ +#define CMXFCR_RF2CS(x) ((uint)((x-9)<<19)) /* FCC2 Receive Clock Source */ +#define CMXFCR_TF2CS(x) ((uint)((x-9)<<16)) /* FCC2 Transmit Clock Source */ +#define CMXFCR_RF3CS(x) ((uint)((x-9)<<11)) /* FCC3 Receive Clock Source */ +#define CMXFCR_TF3CS(x) ((uint)((x-9)<<8)) /* FCC3 Transmit Clock Source */ + +#define PC_F1RXCLK PC_CLK(F1_RXCLK) +#define PC_F1TXCLK PC_CLK(F1_TXCLK) +#define CMX1_CLK_ROUTE (CMXFCR_RF1CS(F1_RXCLK) | CMXFCR_TF1CS(F1_TXCLK)) +#define CMX1_CLK_MASK ((uint)0xff000000) + +#define PC_F2RXCLK PC_CLK(F2_RXCLK) +#define PC_F2TXCLK PC_CLK(F2_TXCLK) +#define CMX2_CLK_ROUTE (CMXFCR_RF2CS(F2_RXCLK) | CMXFCR_TF2CS(F2_TXCLK)) +#define CMX2_CLK_MASK ((uint)0x00ff0000) + +#define PC_F3RXCLK PC_CLK(F3_RXCLK) +#define PC_F3TXCLK PC_CLK(F3_TXCLK) +#define CMX3_CLK_ROUTE (CMXFCR_RF3CS(F3_RXCLK) | CMXFCR_TF3CS(F3_TXCLK)) +#define CMX3_CLK_MASK ((uint)0x0000ff00) + +/* I/O Pin assignment for FCC1. I don't yet know the best way to do this, + * but there is little variation among the choices. + */ +#define PA1_COL 0x00000001U +#define PA1_CRS 0x00000002U +#define PA1_TXER 0x00000004U +#define PA1_TXEN 0x00000008U +#define PA1_RXDV 0x00000010U +#define PA1_RXER 0x00000020U +#define PA1_TXDAT 0x00003c00U +#define PA1_RXDAT 0x0003c000U +#define PA1_PSORA0 (PA1_RXDAT | PA1_TXDAT) +#define PA1_PSORA1 (PA1_COL | PA1_CRS | PA1_TXER | PA1_TXEN | \ + PA1_RXDV | PA1_RXER) +#define PA1_DIRA0 (PA1_RXDAT | PA1_CRS | PA1_COL | PA1_RXER | PA1_RXDV) +#define PA1_DIRA1 (PA1_TXDAT | PA1_TXEN | PA1_TXER) + + +/* I/O Pin assignment for FCC2. I don't yet know the best way to do this, + * but there is little variation among the choices. + */ +#define PB2_TXER 0x00000001U +#define PB2_RXDV 0x00000002U +#define PB2_TXEN 0x00000004U +#define PB2_RXER 0x00000008U +#define PB2_COL 0x00000010U +#define PB2_CRS 0x00000020U +#define PB2_TXDAT 0x000003c0U +#define PB2_RXDAT 0x00003c00U +#define PB2_PSORB0 (PB2_RXDAT | PB2_TXDAT | PB2_CRS | PB2_COL | \ + PB2_RXER | PB2_RXDV | PB2_TXER) +#define PB2_PSORB1 (PB2_TXEN) +#define PB2_DIRB0 (PB2_RXDAT | PB2_CRS | PB2_COL | PB2_RXER | PB2_RXDV) +#define PB2_DIRB1 (PB2_TXDAT | PB2_TXEN | PB2_TXER) + + +/* I/O Pin assignment for FCC3. I don't yet know the best way to do this, + * but there is little variation among the choices. + */ +#define PB3_RXDV 0x00004000U +#define PB3_RXER 0x00008000U +#define PB3_TXER 0x00010000U +#define PB3_TXEN 0x00020000U +#define PB3_COL 0x00040000U +#define PB3_CRS 0x00080000U +#define PB3_TXDAT 0x0f000000U +#define PB3_RXDAT 0x00f00000U +#define PB3_PSORB0 (PB3_RXDAT | PB3_TXDAT | PB3_CRS | PB3_COL | \ + PB3_RXER | PB3_RXDV | PB3_TXER | PB3_TXEN) +#define PB3_PSORB1 0 +#define PB3_DIRB0 (PB3_RXDAT | PB3_CRS | PB3_COL | PB3_RXER | PB3_RXDV) +#define PB3_DIRB1 (PB3_TXDAT | PB3_TXEN | PB3_TXER) + +#define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128)) +#define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0) +#define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1) + +#endif diff -puN arch/ppc/platforms/prep_setup.c~git-powerpc arch/ppc/platforms/prep_setup.c --- devel/arch/ppc/platforms/prep_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/prep_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) diff -puN arch/ppc/platforms/prpmc750.c~git-powerpc arch/ppc/platforms/prpmc750.c --- devel/arch/ppc/platforms/prpmc750.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/prpmc750.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/prpmc750_setup.c - * * Board setup routines for Motorola PrPMC750 * * Author: Matt Porter diff -puN arch/ppc/platforms/prpmc800.c~git-powerpc arch/ppc/platforms/prpmc800.c --- devel/arch/ppc/platforms/prpmc800.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/prpmc800.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/prpmc800.c - * * Author: Dale Farnsworth * * 2001-2004 (c) MontaVista, Software, Inc. This file is licensed under diff -puN arch/ppc/platforms/radstone_ppc7d.c~git-powerpc arch/ppc/platforms/radstone_ppc7d.c --- devel/arch/ppc/platforms/radstone_ppc7d.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/radstone_ppc7d.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/radstone_ppc7d.c - * * Board setup routines for the Radstone PPC7D boards. * * Author: James Chapman diff -puN arch/ppc/platforms/radstone_ppc7d.h~git-powerpc arch/ppc/platforms/radstone_ppc7d.h --- devel/arch/ppc/platforms/radstone_ppc7d.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/radstone_ppc7d.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/radstone_ppc7d.h - * * Board definitions for the Radstone PPC7D boards. * * Author: James Chapman diff -puN arch/ppc/platforms/sandpoint.c~git-powerpc arch/ppc/platforms/sandpoint.c --- devel/arch/ppc/platforms/sandpoint.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/sandpoint.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/sandpoint_setup.c - * * Board setup routines for the Motorola SPS Sandpoint Test Platform. * * Author: Mark A. Greer diff -puN arch/ppc/platforms/sandpoint.h~git-powerpc arch/ppc/platforms/sandpoint.h --- devel/arch/ppc/platforms/sandpoint.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/sandpoint.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/sandpoint.h - * * Definitions for Motorola SPS Sandpoint Test Platform * * Author: Mark A. Greer diff -puN arch/ppc/platforms/sbc82xx.c~git-powerpc arch/ppc/platforms/sbc82xx.c --- devel/arch/ppc/platforms/sbc82xx.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/sbc82xx.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/sbc82xx.c - * * SBC82XX platform support * * Author: Guy Streeter diff -puN arch/ppc/platforms/spruce.c~git-powerpc arch/ppc/platforms/spruce.c --- devel/arch/ppc/platforms/spruce.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/spruce.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/spruce.c - * * Board and PCI setup routines for IBM Spruce * * Author: MontaVista Software diff -puN arch/ppc/platforms/tqm8260_setup.c~git-powerpc arch/ppc/platforms/tqm8260_setup.c --- devel/arch/ppc/platforms/tqm8260_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/platforms/tqm8260_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/tqm8260_setup.c - * * TQM8260 platform support * * Author: Allen Curtis diff -puN arch/ppc/syslib/cpc700.h~git-powerpc arch/ppc/syslib/cpc700.h --- devel/arch/ppc/syslib/cpc700.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/cpc700.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/cpc700.h - * * Header file for IBM CPC700 Host Bridge, et. al. * * Author: Mark A. Greer diff -puN arch/ppc/syslib/cpc700_pic.c~git-powerpc arch/ppc/syslib/cpc700_pic.c --- devel/arch/ppc/syslib/cpc700_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/cpc700_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/cpc700_pic.c - * * Interrupt controller support for IBM Spruce * * Authors: Mark Greer, Matt Porter, and Johnnie Peters diff -puN arch/ppc/syslib/cpc710.h~git-powerpc arch/ppc/syslib/cpc710.h --- devel/arch/ppc/syslib/cpc710.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/cpc710.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/cpc710.h - * * Definitions for the IBM CPC710 PCI Host Bridge * * Author: Matt Porter diff -puN arch/ppc/syslib/gen550_dbg.c~git-powerpc arch/ppc/syslib/gen550_dbg.c --- devel/arch/ppc/syslib/gen550_dbg.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/gen550_dbg.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/gen550_dbg.c - * * A library of polled 16550 serial routines. These are intended to * be used to support progress messages, xmon, kgdb, etc. on a * variety of platforms. diff -puN arch/ppc/syslib/gen550.h~git-powerpc arch/ppc/syslib/gen550.h --- devel/arch/ppc/syslib/gen550.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/gen550.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/gen550.h - * * gen550 prototypes * * Matt Porter diff -puN arch/ppc/syslib/gen550_kgdb.c~git-powerpc arch/ppc/syslib/gen550_kgdb.c --- devel/arch/ppc/syslib/gen550_kgdb.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/gen550_kgdb.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/gen550_kgdb.c - * * Generic 16550 kgdb support intended to be useful on a variety * of platforms. To enable this support, it is necessary to set * the CONFIG_GEN550 option. Any virtual mapping of the serial diff -puN arch/ppc/syslib/gt64260_pic.c~git-powerpc arch/ppc/syslib/gt64260_pic.c --- devel/arch/ppc/syslib/gt64260_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/gt64260_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/gt64260_pic.c - * * Interrupt controller support for Galileo's GT64260. * * Author: Chris Zankel diff -puN arch/ppc/syslib/harrier.c~git-powerpc arch/ppc/syslib/harrier.c --- devel/arch/ppc/syslib/harrier.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/harrier.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/harrier.c - * * Motorola MCG Harrier northbridge/memory controller support * * Author: Dale Farnsworth diff -puN arch/ppc/syslib/hawk_common.c~git-powerpc arch/ppc/syslib/hawk_common.c --- devel/arch/ppc/syslib/hawk_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/hawk_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/hawk_common.c - * * Common Motorola PowerPlus Platform--really Falcon/Raven or HAWK. * * Author: Mark A. Greer diff -puN arch/ppc/syslib/ibm440gp_common.c~git-powerpc arch/ppc/syslib/ibm440gp_common.c --- devel/arch/ppc/syslib/ibm440gp_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440gp_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ibm440gp_common.c - * * PPC440GP system library * * Matt Porter diff -puN arch/ppc/syslib/ibm440gp_common.h~git-powerpc arch/ppc/syslib/ibm440gp_common.h --- devel/arch/ppc/syslib/ibm440gp_common.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440gp_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ibm440gp_common.h - * * PPC440GP system library * * Eugene Surovegin or diff -puN arch/ppc/syslib/ibm440gx_common.c~git-powerpc arch/ppc/syslib/ibm440gx_common.c --- devel/arch/ppc/syslib/ibm440gx_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440gx_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ibm440gx_common.c - * * PPC440GX system library * * Eugene Surovegin or diff -puN arch/ppc/syslib/ibm440gx_common.h~git-powerpc arch/ppc/syslib/ibm440gx_common.h --- devel/arch/ppc/syslib/ibm440gx_common.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440gx_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ibm440gx_common.h - * * PPC440GX system library * * Eugene Surovegin or diff -puN arch/ppc/syslib/ibm440sp_common.c~git-powerpc arch/ppc/syslib/ibm440sp_common.c --- devel/arch/ppc/syslib/ibm440sp_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440sp_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ibm440sp_common.c - * * PPC440SP/PPC440SPe system library * * Matt Porter diff -puN arch/ppc/syslib/ibm440sp_common.h~git-powerpc arch/ppc/syslib/ibm440sp_common.h --- devel/arch/ppc/syslib/ibm440sp_common.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm440sp_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ibm440sp_common.h - * * PPC440SP system library * * Matt Porter diff -puN arch/ppc/syslib/ibm44x_common.c~git-powerpc arch/ppc/syslib/ibm44x_common.c --- devel/arch/ppc/syslib/ibm44x_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm44x_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ibm44x_common.c - * * PPC44x system library * * Matt Porter diff -puN arch/ppc/syslib/ibm44x_common.h~git-powerpc arch/ppc/syslib/ibm44x_common.h --- devel/arch/ppc/syslib/ibm44x_common.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ibm44x_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ibm44x_common.h - * * PPC44x system library * * Eugene Surovegin or diff -puN arch/ppc/syslib/m8260_pci_erratum9.c~git-powerpc arch/ppc/syslib/m8260_pci_erratum9.c --- devel/arch/ppc/syslib/m8260_pci_erratum9.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/m8260_pci_erratum9.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/mpc8260_pci9.c - * * Workaround for device erratum PCI 9. * See Motorola's "XPC826xA Family Device Errata Reference." * The erratum applies to all 8260 family Hip4 processors. It is scheduled diff -puN arch/ppc/syslib/m8260_setup.c~git-powerpc arch/ppc/syslib/m8260_setup.c --- devel/arch/ppc/syslib/m8260_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/m8260_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/m8260_setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) diff -puN arch/ppc/syslib/m8xx_setup.c~git-powerpc arch/ppc/syslib/m8xx_setup.c --- devel/arch/ppc/syslib/m8xx_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/m8xx_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/setup.c - * * Copyright (C) 1995 Linus Torvalds * Adapted from 'alpha' version by Gary Thomas * Modified by Cort Dougan (cort@cs.nmt.edu) @@ -34,6 +32,13 @@ #include #include +#if defined(CONFIG_MTD) && defined(CONFIG_MTD_PHYSMAP) +#include +#include +#include +#include +#endif + #include #include #include @@ -49,6 +54,34 @@ #include "ppc8xx_pic.h" +#ifdef CONFIG_MTD_PHYSMAP +#define MPC8xxADS_BANK_WIDTH 4 +#endif + +#define MPC8xxADS_U_BOOT_SIZE 0x80000 +#define MPC8xxADS_FREE_AREA_OFFSET MPC8xxADS_U_BOOT_SIZE + +#if defined(CONFIG_MTD_PARTITIONS) + /* + NOTE: bank width and interleave relative to the installed flash + should have been chosen within MTD_CFI_GEOMETRY options. + */ +static struct mtd_partition mpc8xxads_partitions[] = { + { + .name = "bootloader", + .size = MPC8xxADS_U_BOOT_SIZE, + .offset = 0, + .mask_flags = MTD_WRITEABLE, /* force read-only */ + }, { + .name = "User FS", + .offset = MPC8xxADS_FREE_AREA_OFFSET + } +}; + +#define mpc8xxads_part_num (sizeof (mpc8xxads_partitions) / sizeof (mpc8xxads_partitions[0])) + +#endif + static int m8xx_set_rtc_time(unsigned long time); static unsigned long m8xx_get_rtc_time(void); void m8xx_calibrate_decr(void); @@ -71,6 +104,10 @@ board_init(void) void __init m8xx_setup_arch(void) { +#if defined(CONFIG_MTD) && defined(CONFIG_MTD_PHYSMAP) + bd_t *binfo = (bd_t *)__res; +#endif + /* Reset the Communication Processor Module. */ m8xx_cpm_reset(); @@ -106,6 +143,17 @@ m8xx_setup_arch(void) } #endif #endif + +#if defined (CONFIG_MPC86XADS) || defined (CONFIG_MPC885ADS) +#if defined(CONFIG_MTD_PHYSMAP) + physmap_configure(binfo->bi_flashstart, binfo->bi_flashsize, + MPC8xxADS_BANK_WIDTH, NULL); +#ifdef CONFIG_MTD_PARTITIONS + physmap_set_partitions(mpc8xxads_partitions, mpc8xxads_part_num); +#endif /* CONFIG_MTD_PARTITIONS */ +#endif /* CONFIG_MTD_PHYSMAP */ +#endif + board_init(); } @@ -140,9 +188,11 @@ void __init __attribute__ ((weak)) init_internal_rtc(void) { /* Disable the RTC one second and alarm interrupts. */ - out_be16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc, in_be16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc) & ~(RTCSC_SIE | RTCSC_ALE)); + clrbits16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc, (RTCSC_SIE | RTCSC_ALE)); + /* Enable the RTC */ - out_be16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc, in_be16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc) | (RTCSC_RTF | RTCSC_RTE)); + setbits16(&((immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc, (RTCSC_RTF | RTCSC_RTE)); + } /* The decrementer counts at the system (internal) clock frequency divided by @@ -159,8 +209,7 @@ void __init m8xx_calibrate_decr(void) out_be32(&((immap_t *)IMAP_ADDR)->im_clkrstk.cark_sccrk, KAPWR_KEY); /* Force all 8xx processors to use divide by 16 processor clock. */ - out_be32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_sccr, - in_be32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_sccr)|0x02000000); + setbits32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_sccr, 0x02000000); /* Processor frequency is MHz. * The value 'fp' is the number of decrementer ticks per second. */ @@ -239,8 +288,8 @@ m8xx_restart(char *cmd) __volatile__ unsigned char dummy; local_irq_disable(); - out_be32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_plprcr, in_be32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_plprcr) | 0x00000080); + setbits32(&((immap_t *)IMAP_ADDR)->im_clkrst.car_plprcr, 0x00000080); /* Clear the ME bit in MSR to cause checkstop on machine check */ mtmsr(mfmsr() & ~0x1000); @@ -310,8 +359,8 @@ m8xx_init_IRQ(void) i8259_init(0); /* The i8259 cascade interrupt must be level sensitive. */ - out_be32(&((immap_t *)IMAP_ADDR)->im_siu_conf.sc_siel, in_be32(&((immap_t *)IMAP_ADDR)->im_siu_conf.sc_siel & ~(0x80000000 >> ISA_BRIDGE_INT))); + clrbits32(&((immap_t *)IMAP_ADDR)->im_siu_conf.sc_siel, (0x80000000 >> ISA_BRIDGE_INT)); if (setup_irq(ISA_BRIDGE_INT, &mbx_i8259_irqaction)) enable_irq(ISA_BRIDGE_INT); #endif /* CONFIG_PCI */ diff -puN arch/ppc/syslib/m8xx_wdt.c~git-powerpc arch/ppc/syslib/m8xx_wdt.c --- devel/arch/ppc/syslib/m8xx_wdt.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/m8xx_wdt.c 2006-02-27 22:38:10.000000000 -0800 @@ -41,8 +41,7 @@ static irqreturn_t m8xx_wdt_interrupt(in m8xx_wdt_reset(); - out_be16(&imap->im_sit.sit_piscr, in_be16(&imap->im_sit.sit_piscr) | PISCR_PS); /* clear irq */ - + setbits16(&imap->im_sit.sit_piscr, PISCR_PS); return IRQ_HANDLED; } diff -puN arch/ppc/syslib/Makefile~git-powerpc arch/ppc/syslib/Makefile --- devel/arch/ppc/syslib/Makefile~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/Makefile 2006-02-27 22:38:10.000000000 -0800 @@ -17,8 +17,8 @@ obj-$(CONFIG_440GX) += ibm440gx_common. obj-$(CONFIG_440SP) += ibm440gx_common.o ibm440sp_common.o obj-$(CONFIG_440SPE) += ibm440gx_common.o ibm440sp_common.o ppc440spe_pcie.o ifeq ($(CONFIG_4xx),y) -ifeq ($(CONFIG_VIRTEX_II_PRO),y) -obj-$(CONFIG_40x) += xilinx_pic.o +ifeq ($(CONFIG_XILINX_VIRTEX),y) +obj-$(CONFIG_40x) += xilinx_pic.o ppc_sys.o else ifeq ($(CONFIG_403),y) obj-$(CONFIG_40x) += ppc403_pic.o diff -puN arch/ppc/syslib/mpc10x_common.c~git-powerpc arch/ppc/syslib/mpc10x_common.c --- devel/arch/ppc/syslib/mpc10x_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc10x_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc10x_common.c - * * Common routines for the Motorola SPS MPC106, MPC107 and MPC8240 Host bridge, * Mem ctlr, EPIC, etc. * diff -puN arch/ppc/syslib/mpc52xx_devices.c~git-powerpc arch/ppc/syslib/mpc52xx_devices.c --- devel/arch/ppc/syslib/mpc52xx_devices.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_devices.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_devices.c - * * Freescale MPC52xx device descriptions * * diff -puN arch/ppc/syslib/mpc52xx_pci.c~git-powerpc arch/ppc/syslib/mpc52xx_pci.c --- devel/arch/ppc/syslib/mpc52xx_pci.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_pci.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_pci.c - * * PCI code for the Freescale MPC52xx embedded CPU. * * diff -puN arch/ppc/syslib/mpc52xx_pci.h~git-powerpc arch/ppc/syslib/mpc52xx_pci.h --- devel/arch/ppc/syslib/mpc52xx_pci.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_pci.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_pci.h - * * PCI Include file the Freescale MPC52xx embedded cpu chips * * diff -puN arch/ppc/syslib/mpc52xx_pic.c~git-powerpc arch/ppc/syslib/mpc52xx_pic.c --- devel/arch/ppc/syslib/mpc52xx_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_pic.c - * * Programmable Interrupt Controller functions for the Freescale MPC52xx * embedded CPU. * diff -puN arch/ppc/syslib/mpc52xx_setup.c~git-powerpc arch/ppc/syslib/mpc52xx_setup.c --- devel/arch/ppc/syslib/mpc52xx_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_setup.c - * * Common code for the boards based on Freescale MPC52xx embedded CPU. * * diff -puN arch/ppc/syslib/mpc52xx_sys.c~git-powerpc arch/ppc/syslib/mpc52xx_sys.c --- devel/arch/ppc/syslib/mpc52xx_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc52xx_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc52xx_sys.c - * * Freescale MPC52xx system descriptions * * diff -puN arch/ppc/syslib/mpc83xx_devices.c~git-powerpc arch/ppc/syslib/mpc83xx_devices.c --- devel/arch/ppc/syslib/mpc83xx_devices.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc83xx_devices.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/83xx/mpc83xx_devices.c - * * MPC83xx Device descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mpc83xx_sys.c~git-powerpc arch/ppc/syslib/mpc83xx_sys.c --- devel/arch/ppc/syslib/mpc83xx_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc83xx_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/83xx/mpc83xx_sys.c - * * MPC83xx System descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mpc85xx_devices.c~git-powerpc arch/ppc/syslib/mpc85xx_devices.c --- devel/arch/ppc/syslib/mpc85xx_devices.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc85xx_devices.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc85xx_devices.c - * * MPC85xx Device descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mpc85xx_sys.c~git-powerpc arch/ppc/syslib/mpc85xx_sys.c --- devel/arch/ppc/syslib/mpc85xx_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc85xx_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/85xx/mpc85xx_sys.c - * * MPC85xx System descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mpc8xx_devices.c~git-powerpc arch/ppc/syslib/mpc8xx_devices.c --- devel/arch/ppc/syslib/mpc8xx_devices.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc8xx_devices.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mpc8xx_devices.c - * * MPC8xx Device descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mpc8xx_sys.c~git-powerpc arch/ppc/syslib/mpc8xx_sys.c --- devel/arch/ppc/syslib/mpc8xx_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mpc8xx_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/platforms/mpc8xx_sys.c - * * MPC8xx System descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/mv64360_pic.c~git-powerpc arch/ppc/syslib/mv64360_pic.c --- devel/arch/ppc/syslib/mv64360_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mv64360_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/mv64360_pic.c - * * Interrupt controller support for Marvell's MV64360. * * Author: Rabeeh Khoury diff -puN arch/ppc/syslib/mv64x60.c~git-powerpc arch/ppc/syslib/mv64x60.c --- devel/arch/ppc/syslib/mv64x60.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mv64x60.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mv64x60.c - * * Common routines for the Marvell/Galileo Discovery line of host bridges * (gt64260, mv64360, mv64460, ...). * diff -puN arch/ppc/syslib/mv64x60_dbg.c~git-powerpc arch/ppc/syslib/mv64x60_dbg.c --- devel/arch/ppc/syslib/mv64x60_dbg.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mv64x60_dbg.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mv64x60_dbg.c - * * KGDB and progress routines for the Marvell/Galileo MV64x60 (Discovery). * * Author: Mark A. Greer diff -puN arch/ppc/syslib/mv64x60_win.c~git-powerpc arch/ppc/syslib/mv64x60_win.c --- devel/arch/ppc/syslib/mv64x60_win.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/mv64x60_win.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/mv64x60_win.c - * * Tables with info on how to manipulate the 32 & 64 bit windows on the * various types of Marvell bridge chips. * diff -puN arch/ppc/syslib/open_pic2.c~git-powerpc arch/ppc/syslib/open_pic2.c --- devel/arch/ppc/syslib/open_pic2.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/open_pic2.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/open_pic.c -- OpenPIC Interrupt Handling - * * Copyright (C) 1997 Geert Uytterhoeven * * This file is subject to the terms and conditions of the GNU General Public diff -puN arch/ppc/syslib/open_pic.c~git-powerpc arch/ppc/syslib/open_pic.c --- devel/arch/ppc/syslib/open_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/open_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/open_pic.c -- OpenPIC Interrupt Handling - * * Copyright (C) 1997 Geert Uytterhoeven * * This file is subject to the terms and conditions of the GNU General Public diff -puN arch/ppc/syslib/open_pic_defs.h~git-powerpc arch/ppc/syslib/open_pic_defs.h --- devel/arch/ppc/syslib/open_pic_defs.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/open_pic_defs.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/open_pic_defs.h -- OpenPIC definitions - * * Copyright (C) 1997 Geert Uytterhoeven * * This file is based on the following documentation: diff -puN arch/ppc/syslib/pci_auto.c~git-powerpc arch/ppc/syslib/pci_auto.c --- devel/arch/ppc/syslib/pci_auto.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/pci_auto.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/pci_auto.c - * * PCI autoconfiguration library * * Author: Matt Porter diff -puN arch/ppc/syslib/ppc4xx_dma.c~git-powerpc arch/ppc/syslib/ppc4xx_dma.c --- devel/arch/ppc/syslib/ppc4xx_dma.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc4xx_dma.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ppc4xx_dma.c - * * IBM PPC4xx DMA engine core library * * Copyright 2000-2004 MontaVista Software Inc. diff -puN arch/ppc/syslib/ppc4xx_pic.c~git-powerpc arch/ppc/syslib/ppc4xx_pic.c --- devel/arch/ppc/syslib/ppc4xx_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc4xx_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc4xx_pic.c - * * Interrupt controller driver for PowerPC 4xx-based processors. * * Eugene Surovegin or diff -L arch/ppc/syslib/ppc4xx_pm.c -puN arch/ppc/syslib/ppc4xx_pm.c~git-powerpc /dev/null --- devel/arch/ppc/syslib/ppc4xx_pm.c +++ /dev/null 2003-09-15 06:40:47.000000000 -0700 @@ -1,47 +0,0 @@ -/* - * Author: Armin Kuster - * - * 2002 (c) MontaVista, Software, Inc. This file is licensed under - * the terms of the GNU General Public License version 2. This program - * is licensed "as is" without any warranty of any kind, whether express - * or implied. - * - * This an attempt to get Power Management going for the IBM 4xx processor. - * This was derived from the ppc4xx._setup.c file - */ - -#include -#include - -#include - -void __init -ppc4xx_pm_init(void) -{ - - unsigned int value = 0; - - /* turn off unused hardware to save power */ -#ifdef CONFIG_405GP - value |= CPM_DCP; /* CodePack */ -#endif - -#if !defined(CONFIG_IBM_OCP_GPIO) - value |= CPM_GPIO0; -#endif - -#if !defined(CONFIG_PPC405_I2C_ADAP) - value |= CPM_IIC0; -#ifdef CONFIG_STB03xxx - value |= CPM_IIC1; -#endif -#endif - - -#if !defined(CONFIG_405_DMA) - value |= CPM_DMA; -#endif - - mtdcr(DCRN_CPMFR, value); - -} diff -puN arch/ppc/syslib/ppc4xx_sgdma.c~git-powerpc arch/ppc/syslib/ppc4xx_sgdma.c --- devel/arch/ppc/syslib/ppc4xx_sgdma.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc4xx_sgdma.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/ppc4xx_sgdma.c - * * IBM PPC4xx DMA engine scatter/gather library * * Copyright 2002-2003 MontaVista Software Inc. diff -puN arch/ppc/syslib/ppc83xx_setup.c~git-powerpc arch/ppc/syslib/ppc83xx_setup.c --- devel/arch/ppc/syslib/ppc83xx_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc83xx_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc83xx_setup.c - * * MPC83XX common board code * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc83xx_setup.h~git-powerpc arch/ppc/syslib/ppc83xx_setup.h --- devel/arch/ppc/syslib/ppc83xx_setup.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc83xx_setup.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc83xx_setup.h - * * MPC83XX common board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc85xx_common.c~git-powerpc arch/ppc/syslib/ppc85xx_common.c --- devel/arch/ppc/syslib/ppc85xx_common.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc85xx_common.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc85xx_common.c - * * MPC85xx support routines * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc85xx_common.h~git-powerpc arch/ppc/syslib/ppc85xx_common.h --- devel/arch/ppc/syslib/ppc85xx_common.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc85xx_common.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc85xx_common.h - * * MPC85xx support routines * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc85xx_setup.c~git-powerpc arch/ppc/syslib/ppc85xx_setup.c --- devel/arch/ppc/syslib/ppc85xx_setup.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc85xx_setup.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc85xx_setup.c - * * MPC85XX common board code * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc85xx_setup.h~git-powerpc arch/ppc/syslib/ppc85xx_setup.h --- devel/arch/ppc/syslib/ppc85xx_setup.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc85xx_setup.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc85xx_setup.h - * * MPC85XX common board definitions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/ppc_sys.c~git-powerpc arch/ppc/syslib/ppc_sys.c --- devel/arch/ppc/syslib/ppc_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/ppc_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/ppc_sys.c - * * PPC System library functions * * Maintainer: Kumar Gala @@ -15,11 +13,22 @@ */ #include +#include #include int (*ppc_sys_device_fixup) (struct platform_device * pdev); static int ppc_sys_inited; +static int ppc_sys_func_inited; + +static const char *ppc_sys_func_names[] = { + [PPC_SYS_FUNC_DUMMY] = "dummy", + [PPC_SYS_FUNC_ETH] = "eth", + [PPC_SYS_FUNC_UART] = "uart", + [PPC_SYS_FUNC_HLDC] = "hldc", + [PPC_SYS_FUNC_USB] = "usb", + [PPC_SYS_FUNC_IRDA] = "irda", +}; void __init identify_ppc_sys_by_id(u32 id) { @@ -38,13 +47,13 @@ void __init identify_ppc_sys_by_id(u32 i void __init identify_ppc_sys_by_name(char *name) { unsigned int i = 0; - while (ppc_sys_specs[i].ppc_sys_name[0]) - { + while (ppc_sys_specs[i].ppc_sys_name[0]) { if (!strcmp(ppc_sys_specs[i].ppc_sys_name, name)) break; i++; } cur_ppc_sys_spec = &ppc_sys_specs[i]; + return; } @@ -128,6 +137,165 @@ void ppc_sys_device_remove(enum ppc_sys_ } } +/* Platform-notify mapping + * Helper function for BSP code to assign board-specific platfom-divice bits + */ + +void platform_notify_map(const struct platform_notify_dev_map *map, + struct device *dev) +{ + struct platform_device *pdev; + int len, idx; + const char *s; + + /* do nothing if no device or no bus_id */ + if (!dev || !dev->bus_id) + return; + + /* call per device map */ + while (map->bus_id != NULL) { + idx = -1; + s = strrchr(dev->bus_id, '.'); + if (s != NULL) + idx = (int)simple_strtol(s + 1, NULL, 10); + else + s = dev->bus_id; + + len = s - dev->bus_id; + + if (!strncmp(dev->bus_id, map->bus_id, len)) { + pdev = container_of(dev, struct platform_device, dev); + map->rtn(pdev, idx); + } + map++; + } +} + +/* + Function assignment stuff. + Intended to work as follows: + the device name defined in foo_devices.c will be concatenated with :"func", + where func is string map of respective function from platfom_device_func enum + + The PPC_SYS_FUNC_DUMMY function is intended to remove all assignments, making the device to appear + in platform bus with unmodified name. + */ + +/* + Here we'll replace .name pointers with fixed-lenght strings + Hereby, this should be called *before* any func stuff triggeded. + */ +void ppc_sys_device_initfunc(void) +{ + int i; + const char *name; + static char new_names[NUM_PPC_SYS_DEVS][BUS_ID_SIZE]; + enum ppc_sys_devices cur_dev; + + /* If inited yet, do nothing */ + if (ppc_sys_func_inited) + return; + + for (i = 0; i < cur_ppc_sys_spec->num_devices; i++) { + if ((cur_dev = cur_ppc_sys_spec->device_list[i]) < 0) + continue; + + if (ppc_sys_platform_devices[cur_dev].name) { + /*backup name */ + name = ppc_sys_platform_devices[cur_dev].name; + strlcpy(new_names[i], name, BUS_ID_SIZE); + ppc_sys_platform_devices[cur_dev].name = new_names[i]; + } + } + + ppc_sys_func_inited = 1; +} + +/*The "engine" of the func stuff. Here we either concat specified function string description + to the name, or remove it if PPC_SYS_FUNC_DUMMY parameter is passed here*/ +void ppc_sys_device_setfunc(enum ppc_sys_devices dev, + enum platform_device_func func) +{ + char *s; + char *name = (char *)ppc_sys_platform_devices[dev].name; + char tmp[BUS_ID_SIZE]; + + if (!ppc_sys_func_inited) { + printk(KERN_ERR "Unable to alter function - not inited!\n"); + return; + } + + if (ppc_sys_inited) { + platform_device_unregister(&ppc_sys_platform_devices[dev]); + } + + if ((s = (char *)strchr(name, ':')) != NULL) { /* reassign */ + /* Either change the name after ':' or remove func modifications */ + if (func != PPC_SYS_FUNC_DUMMY) + strlcpy(s + 1, ppc_sys_func_names[func], BUS_ID_SIZE); + else + *s = 0; + } else if (func != PPC_SYS_FUNC_DUMMY) { + /* do assignment if it is not just "clear" request */ + sprintf(tmp, "%s:%s", name, ppc_sys_func_names[func]); + strlcpy(name, tmp, BUS_ID_SIZE); + } + + if (ppc_sys_inited) { + platform_device_register(&ppc_sys_platform_devices[dev]); + } +} + +void ppc_sys_device_disable(enum ppc_sys_devices dev) +{ + BUG_ON(cur_ppc_sys_spec == NULL); + + /*Check if it is enabled*/ + if(!(cur_ppc_sys_spec->config[dev] & PPC_SYS_CONFIG_DISABLED)) { + if (ppc_sys_inited) { + platform_device_unregister(&ppc_sys_platform_devices[dev]); + } + cur_ppc_sys_spec->config[dev] |= PPC_SYS_CONFIG_DISABLED; + } +} + +void ppc_sys_device_enable(enum ppc_sys_devices dev) +{ + BUG_ON(cur_ppc_sys_spec == NULL); + + /*Check if it is disabled*/ + if(cur_ppc_sys_spec->config[dev] & PPC_SYS_CONFIG_DISABLED) { + if (ppc_sys_inited) { + platform_device_register(&ppc_sys_platform_devices[dev]); + } + cur_ppc_sys_spec->config[dev] &= ~PPC_SYS_CONFIG_DISABLED; + } + +} + +void ppc_sys_device_enable_all(void) +{ + enum ppc_sys_devices cur_dev; + int i; + + for (i = 0; i < cur_ppc_sys_spec->num_devices; i++) { + cur_dev = cur_ppc_sys_spec->device_list[i]; + ppc_sys_device_enable(cur_dev); + } +} + +void ppc_sys_device_disable_all(void) +{ + enum ppc_sys_devices cur_dev; + int i; + + for (i = 0; i < cur_ppc_sys_spec->num_devices; i++) { + cur_dev = cur_ppc_sys_spec->device_list[i]; + ppc_sys_device_disable(cur_dev); + } +} + + static int __init ppc_sys_init(void) { unsigned int i, dev_id, ret = 0; @@ -136,7 +304,8 @@ static int __init ppc_sys_init(void) for (i = 0; i < cur_ppc_sys_spec->num_devices; i++) { dev_id = cur_ppc_sys_spec->device_list[i]; - if (dev_id != -1) { + if ((dev_id != -1) && + !(cur_ppc_sys_spec->config[dev_id] & PPC_SYS_CONFIG_DISABLED)) { if (ppc_sys_device_fixup != NULL) ppc_sys_device_fixup(&ppc_sys_platform_devices [dev_id]); diff -puN arch/ppc/syslib/pq2_devices.c~git-powerpc arch/ppc/syslib/pq2_devices.c --- devel/arch/ppc/syslib/pq2_devices.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/pq2_devices.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/pq2_devices.c - * * PQ2 Device descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/pq2_sys.c~git-powerpc arch/ppc/syslib/pq2_sys.c --- devel/arch/ppc/syslib/pq2_sys.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/pq2_sys.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/pq2_devices.c - * * PQ2 System descriptions * * Maintainer: Kumar Gala diff -puN arch/ppc/syslib/prep_nvram.c~git-powerpc arch/ppc/syslib/prep_nvram.c --- devel/arch/ppc/syslib/prep_nvram.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/prep_nvram.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/prep_nvram.c - * * Copyright (C) 1998 Corey Minyard * * This reads the NvRAM on PReP compliant machines (generally from IBM or diff -puN arch/ppc/syslib/todc_time.c~git-powerpc arch/ppc/syslib/todc_time.c --- devel/arch/ppc/syslib/todc_time.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/todc_time.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/todc_time.c - * * Time of Day Clock support for the M48T35, M48T37, M48T59, and MC146818 * Real Time Clocks/Timekeepers. * diff -puN arch/ppc/syslib/xilinx_pic.c~git-powerpc arch/ppc/syslib/xilinx_pic.c --- devel/arch/ppc/syslib/xilinx_pic.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/arch/ppc/syslib/xilinx_pic.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/syslib/xilinx_pic.c - * * Interrupt controller driver for Xilinx Virtex-II Pro. * * Author: MontaVista Software, Inc. @@ -15,7 +13,7 @@ #include #include #include -#include +#include #include #include diff -puN Documentation/powerpc/eeh-pci-error-recovery.txt~git-powerpc Documentation/powerpc/eeh-pci-error-recovery.txt --- devel/Documentation/powerpc/eeh-pci-error-recovery.txt~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/Documentation/powerpc/eeh-pci-error-recovery.txt 2006-02-27 22:37:56.000000000 -0800 @@ -121,7 +121,7 @@ accomplished. EEH must be enabled in the PHB's very early during the boot process, and if a PCI slot is hot-plugged. The former is performed by -eeh_init() in arch/ppc64/kernel/eeh.c, and the later by +eeh_init() in arch/powerpc/platforms/pseries/eeh.c, and the later by drivers/pci/hotplug/pSeries_pci.c calling in to the eeh.c code. EEH must be enabled before a PCI scan of the device can proceed. Current Power5 hardware will not work unless EEH is enabled; @@ -133,7 +133,7 @@ error. Given an arbitrary address, the pci_get_device_by_addr() will find the pci device associated with that address (if any). -The default include/asm-ppc64/io.h macros readb(), inb(), insb(), +The default include/asm-powerpc/io.h macros readb(), inb(), insb(), etc. include a check to see if the i/o read returned all-0xff's. If so, these make a call to eeh_dn_check_failure(), which in turn asks the firmware if the all-ff's value is the sign of a true EEH @@ -143,11 +143,12 @@ seen in /proc/ppc64/eeh (subject to chan all of these occur during boot, when the PCI bus is scanned, where a large number of 0xff reads are part of the bus scan procedure. -If a frozen slot is detected, code in arch/ppc64/kernel/eeh.c will -print a stack trace to syslog (/var/log/messages). This stack trace -has proven to be very useful to device-driver authors for finding -out at what point the EEH error was detected, as the error itself -usually occurs slightly beforehand. +If a frozen slot is detected, code in +arch/powerpc/platforms/pseries/eeh.c will print a stack trace to +syslog (/var/log/messages). This stack trace has proven to be very +useful to device-driver authors for finding out at what point the EEH +error was detected, as the error itself usually occurs slightly +beforehand. Next, it uses the Linux kernel notifier chain/work queue mechanism to allow any interested parties to find out about the failure. Device diff -puN drivers/char/hvcs.c~git-powerpc drivers/char/hvcs.c --- devel/drivers/char/hvcs.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/drivers/char/hvcs.c 2006-02-27 22:38:10.000000000 -0800 @@ -118,7 +118,7 @@ * the hvcs_final_close() function in order to get it out of the spinlock. * Rearranged hvcs_close(). Cleaned up some printks and did some housekeeping * on the changelog. Removed local CLC_LENGTH and used HVCS_CLC_LENGTH from - * arch/ppc64/hvcserver.h. + * include/asm-powerpc/hvcserver.h * * 1.3.2 -> 1.3.3 Replaced yield() in hvcs_close() with tty_wait_until_sent() to * prevent possible lockup with realtime scheduling as similarily pointed out by @@ -168,9 +168,10 @@ MODULE_VERSION(HVCS_DRIVER_VERSION); /* * The hcall interface involves putting 8 chars into each of two registers. - * We load up those 2 registers (in arch/ppc64/hvconsole.c) by casting char[16] - * to long[2]. It would work without __ALIGNED__, but a little (tiny) bit - * slower because an unaligned load is slower than aligned load. + * We load up those 2 registers (in arch/powerpc/platforms/pseries/hvconsole.c) + * by casting char[16] to long[2]. It would work without __ALIGNED__, but a + * little (tiny) bit slower because an unaligned load is slower than aligned + * load. */ #define __ALIGNED__ __attribute__((__aligned__(8))) diff -puN include/asm-powerpc/atomic.h~git-powerpc include/asm-powerpc/atomic.h --- devel/include/asm-powerpc/atomic.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/atomic.h 2006-02-27 22:38:10.000000000 -0800 @@ -8,6 +8,7 @@ typedef struct { volatile int counter; } atomic_t; #ifdef __KERNEL__ +#include #include #include @@ -176,20 +177,29 @@ static __inline__ int atomic_dec_return( * Atomically adds @a to @v, so long as it was not @u. * Returns non-zero if @v was not @u, and zero otherwise. */ -#define atomic_add_unless(v, a, u) \ -({ \ - int c, old; \ - c = atomic_read(v); \ - for (;;) { \ - if (unlikely(c == (u))) \ - break; \ - old = atomic_cmpxchg((v), c, c + (a)); \ - if (likely(old == c)) \ - break; \ - c = old; \ - } \ - c != (u); \ -}) +static __inline__ int atomic_add_unless(atomic_t *v, int a, int u) +{ + int t; + + __asm__ __volatile__ ( + LWSYNC_ON_SMP +"1: lwarx %0,0,%1 # atomic_add_unless\n\ + cmpw 0,%0,%3 \n\ + beq- 2f \n\ + add %0,%2,%0 \n" + PPC405_ERR77(0,%2) +" stwcx. %0,0,%1 \n\ + bne- 1b \n" + ISYNC_ON_SMP +" subf %0,%2,%0 \n\ +2:" + : "=&r" (t) + : "r" (&v->counter), "r" (a), "r" (u) + : "cc", "memory"); + + return t != u; +} + #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) #define atomic_sub_and_test(a, v) (atomic_sub_return((a), (v)) == 0) diff -puN include/asm-powerpc/cputable.h~git-powerpc include/asm-powerpc/cputable.h --- devel/include/asm-powerpc/cputable.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/cputable.h 2006-02-27 22:38:10.000000000 -0800 @@ -117,6 +117,7 @@ extern void do_cpu_ftr_fixups(unsigned l #define CPU_FTR_MMCRA_SIHV ASM_CONST(0x0000080000000000) #define CPU_FTR_CI_LARGE_PAGE ASM_CONST(0x0000100000000000) #define CPU_FTR_PAUSE_ZERO ASM_CONST(0x0000200000000000) +#define CPU_FTR_PURR ASM_CONST(0x0000400000000000) #else /* ensure on 32b processors the flags are available for compiling but * don't do anything */ @@ -132,6 +133,7 @@ extern void do_cpu_ftr_fixups(unsigned l #define CPU_FTR_LOCKLESS_TLBIE ASM_CONST(0x0) #define CPU_FTR_MMCRA_SIHV ASM_CONST(0x0) #define CPU_FTR_CI_LARGE_PAGE ASM_CONST(0x0) +#define CPU_FTR_PURR ASM_CONST(0x0) #endif #ifndef __ASSEMBLY__ @@ -316,7 +318,7 @@ enum { CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA | CPU_FTR_SMT | CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | - CPU_FTR_MMCRA_SIHV, + CPU_FTR_MMCRA_SIHV | CPU_FTR_PURR, CPU_FTRS_CELL = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | diff -puN include/asm-powerpc/cputime.h~git-powerpc include/asm-powerpc/cputime.h --- devel/include/asm-powerpc/cputime.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/cputime.h 2006-02-27 22:38:10.000000000 -0800 @@ -1 +1,203 @@ +/* + * Definitions for measuring cputime on powerpc machines. + * + * Copyright (C) 2006 Paul Mackerras, IBM Corp. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * If we have CONFIG_VIRT_CPU_ACCOUNTING, we measure cpu time in + * the same units as the timebase. Otherwise we measure cpu time + * in jiffies using the generic definitions. + */ + +#ifndef __POWERPC_CPUTIME_H +#define __POWERPC_CPUTIME_H + +#ifndef CONFIG_VIRT_CPU_ACCOUNTING #include +#else + +#include +#include +#include +#include +#include + +typedef u64 cputime_t; +typedef u64 cputime64_t; + +#define cputime_zero ((cputime_t)0) +#define cputime_max ((~((cputime_t)0) >> 1) - 1) +#define cputime_add(__a, __b) ((__a) + (__b)) +#define cputime_sub(__a, __b) ((__a) - (__b)) +#define cputime_div(__a, __n) ((__a) / (__n)) +#define cputime_halve(__a) ((__a) >> 1) +#define cputime_eq(__a, __b) ((__a) == (__b)) +#define cputime_gt(__a, __b) ((__a) > (__b)) +#define cputime_ge(__a, __b) ((__a) >= (__b)) +#define cputime_lt(__a, __b) ((__a) < (__b)) +#define cputime_le(__a, __b) ((__a) <= (__b)) + +#define cputime64_zero ((cputime64_t)0) +#define cputime64_add(__a, __b) ((__a) + (__b)) +#define cputime_to_cputime64(__ct) (__ct) + +#ifdef __KERNEL__ + +/* + * Convert cputime <-> jiffies + */ +extern u64 __cputime_jiffies_factor; + +static inline unsigned long cputime_to_jiffies(const cputime_t ct) +{ + return mulhdu(ct, __cputime_jiffies_factor); +} + +static inline cputime_t jiffies_to_cputime(const unsigned long jif) +{ + cputime_t ct; + unsigned long sec; + + /* have to be a little careful about overflow */ + ct = jif % HZ; + sec = jif / HZ; + if (ct) { + ct *= tb_ticks_per_sec; + do_div(ct, HZ); + } + if (sec) + ct += (cputime_t) sec * tb_ticks_per_sec; + return ct; +} + +static inline u64 cputime64_to_jiffies64(const cputime_t ct) +{ + return mulhdu(ct, __cputime_jiffies_factor); +} + +/* + * Convert cputime <-> milliseconds + */ +extern u64 __cputime_msec_factor; + +static inline unsigned long cputime_to_msecs(const cputime_t ct) +{ + return mulhdu(ct, __cputime_msec_factor); +} + +static inline cputime_t msecs_to_cputime(const unsigned long ms) +{ + cputime_t ct; + unsigned long sec; + + /* have to be a little careful about overflow */ + ct = ms % 1000; + sec = ms / 1000; + if (ct) { + ct *= tb_ticks_per_sec; + do_div(ct, 1000); + } + if (sec) + ct += (cputime_t) sec * tb_ticks_per_sec; + return ct; +} + +/* + * Convert cputime <-> seconds + */ +extern u64 __cputime_sec_factor; + +static inline unsigned long cputime_to_secs(const cputime_t ct) +{ + return mulhdu(ct, __cputime_sec_factor); +} + +static inline cputime_t secs_to_cputime(const unsigned long sec) +{ + return (cputime_t) sec * tb_ticks_per_sec; +} + +/* + * Convert cputime <-> timespec + */ +static inline void cputime_to_timespec(const cputime_t ct, struct timespec *p) +{ + u64 x = ct; + unsigned int frac; + + frac = do_div(x, tb_ticks_per_sec); + p->tv_sec = x; + x = (u64) frac * 1000000000; + do_div(x, tb_ticks_per_sec); + p->tv_nsec = x; +} + +static inline cputime_t timespec_to_cputime(const struct timespec *p) +{ + cputime_t ct; + + ct = (u64) p->tv_nsec * tb_ticks_per_sec; + do_div(ct, 1000000000); + return ct + (u64) p->tv_sec * tb_ticks_per_sec; +} + +/* + * Convert cputime <-> timeval + */ +static inline void cputime_to_timeval(const cputime_t ct, struct timeval *p) +{ + u64 x = ct; + unsigned int frac; + + frac = do_div(x, tb_ticks_per_sec); + p->tv_sec = x; + x = (u64) frac * 1000000; + do_div(x, tb_ticks_per_sec); + p->tv_usec = x; +} + +static inline cputime_t timeval_to_cputime(const struct timeval *p) +{ + cputime_t ct; + + ct = (u64) p->tv_usec * tb_ticks_per_sec; + do_div(ct, 1000000); + return ct + (u64) p->tv_sec * tb_ticks_per_sec; +} + +/* + * Convert cputime <-> clock_t (units of 1/USER_HZ seconds) + */ +extern u64 __cputime_clockt_factor; + +static inline unsigned long cputime_to_clock_t(const cputime_t ct) +{ + return mulhdu(ct, __cputime_clockt_factor); +} + +static inline cputime_t clock_t_to_cputime(const unsigned long clk) +{ + cputime_t ct; + unsigned long sec; + + /* have to be a little careful about overflow */ + ct = clk % USER_HZ; + sec = clk / USER_HZ; + if (ct) { + ct *= tb_ticks_per_sec; + do_div(ct, USER_HZ); + } + if (sec) + ct += (cputime_t) sec * tb_ticks_per_sec; + return ct; +} + +#define cputime64_to_clock_t(ct) cputime_to_clock_t((cputime_t)(ct)) + +#endif /* __KERNEL__ */ +#endif /* CONFIG_VIRT_CPU_ACCOUNTING */ +#endif /* __POWERPC_CPUTIME_H */ diff -puN include/asm-powerpc/eeh.h~git-powerpc include/asm-powerpc/eeh.h --- devel/include/asm-powerpc/eeh.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/eeh.h 2006-02-27 22:38:10.000000000 -0800 @@ -27,6 +27,7 @@ #include struct pci_dev; +struct pci_bus; struct device_node; #ifdef CONFIG_EEH @@ -61,7 +62,7 @@ void __init pci_addr_cache_build(void); */ void eeh_add_device_early(struct device_node *); void eeh_add_device_tree_early(struct device_node *); -void eeh_add_device_late(struct pci_dev *); +void eeh_add_device_tree_late(struct pci_bus *); /** * eeh_remove_device - undo EEH setup for the indicated pci device @@ -116,12 +117,12 @@ static inline void pci_addr_cache_build( static inline void eeh_add_device_early(struct device_node *dn) { } -static inline void eeh_add_device_late(struct pci_dev *dev) { } - static inline void eeh_remove_device(struct pci_dev *dev) { } static inline void eeh_add_device_tree_early(struct device_node *dn) { } +static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } + static inline void eeh_remove_bus_device(struct pci_dev *dev) { } #define EEH_POSSIBLE_ERROR(val, type) (0) #define EEH_IO_ERROR_VALUE(size) (-1UL) diff -puN include/asm-powerpc/firmware.h~git-powerpc include/asm-powerpc/firmware.h --- devel/include/asm-powerpc/firmware.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/firmware.h 2006-02-27 22:38:10.000000000 -0800 @@ -89,15 +89,6 @@ static inline unsigned long firmware_has (FW_FEATURE_POSSIBLE & ppc64_firmware_features & feature); } -#ifdef CONFIG_PPC_PSERIES -typedef struct { - unsigned long val; - char * name; -} firmware_feature_t; - -extern firmware_feature_t firmware_features_table[]; -#endif - extern void system_reset_fwnmi(void); extern void machine_check_fwnmi(void); diff -puN include/asm-powerpc/irq.h~git-powerpc include/asm-powerpc/irq.h --- devel/include/asm-powerpc/irq.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/irq.h 2006-02-27 22:38:10.000000000 -0800 @@ -479,6 +479,10 @@ extern int distribute_irqs; struct irqaction; struct pt_regs; +#define __ARCH_HAS_DO_SOFTIRQ + +extern void __do_softirq(void); + #ifdef CONFIG_IRQSTACKS /* * Per-cpu stacks for handling hard and soft interrupts. @@ -491,8 +495,6 @@ extern void call_do_softirq(struct threa extern int call___do_IRQ(int irq, struct pt_regs *regs, struct thread_info *tp); -#define __ARCH_HAS_DO_SOFTIRQ - #else #define irq_ctx_init() diff -puN include/asm-powerpc/lmb.h~git-powerpc include/asm-powerpc/lmb.h --- devel/include/asm-powerpc/lmb.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/lmb.h 2006-02-27 22:38:10.000000000 -0800 @@ -19,8 +19,6 @@ #define MAX_LMB_REGIONS 128 -#define LMB_ALLOC_ANYWHERE 0 - struct lmb_property { unsigned long base; unsigned long size; @@ -43,15 +41,16 @@ extern struct lmb lmb; extern void __init lmb_init(void); extern void __init lmb_analyze(void); -extern long __init lmb_add(unsigned long, unsigned long); -extern long __init lmb_reserve(unsigned long, unsigned long); -extern unsigned long __init lmb_alloc(unsigned long, unsigned long); -extern unsigned long __init lmb_alloc_base(unsigned long, unsigned long, - unsigned long); +extern long __init lmb_add(unsigned long base, unsigned long size); +extern long __init lmb_reserve(unsigned long base, unsigned long size); +extern unsigned long __init lmb_alloc(unsigned long size, unsigned long align); +extern unsigned long __init lmb_alloc_base(unsigned long size, + unsigned long align, unsigned long max_addr); +extern unsigned long __init __lmb_alloc_base(unsigned long size, + unsigned long align, unsigned long max_addr); extern unsigned long __init lmb_phys_mem_size(void); extern unsigned long __init lmb_end_of_DRAM(void); -extern unsigned long __init lmb_abs_to_phys(unsigned long); -extern void __init lmb_enforce_memory_limit(unsigned long); +extern void __init lmb_enforce_memory_limit(unsigned long memory_limit); extern void lmb_dump_all(void); diff -puN include/asm-powerpc/paca.h~git-powerpc include/asm-powerpc/paca.h --- devel/include/asm-powerpc/paca.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/paca.h 2006-02-27 22:38:10.000000000 -0800 @@ -54,7 +54,7 @@ struct paca_struct { #endif /* CONFIG_PPC_ISERIES */ /* - * MAGIC: the spinlock functions in arch/ppc64/lib/locks.c + * MAGIC: the spinlock functions in arch/powerpc/lib/locks.c * load lock_token and paca_index with a single lwz * instruction. They must travel together and be properly * aligned. @@ -96,6 +96,11 @@ struct paca_struct { u64 saved_r1; /* r1 save for RTAS calls */ u64 saved_msr; /* MSR saved here by enter_rtas */ u8 proc_enabled; /* irq soft-enable flag */ + + /* Stuff for accurate time accounting */ + u64 user_time; /* accumulated usermode TB ticks */ + u64 system_time; /* accumulated system TB ticks */ + u64 startpurr; /* PURR/TB value snapshot */ }; extern struct paca_struct paca[]; diff -puN include/asm-powerpc/pgtable-4k.h~git-powerpc include/asm-powerpc/pgtable-4k.h --- devel/include/asm-powerpc/pgtable-4k.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/pgtable-4k.h 2006-02-27 22:38:10.000000000 -0800 @@ -62,9 +62,14 @@ /* shift to put page number into pte */ #define PTE_RPN_SHIFT (17) -#define __real_pte(e,p) ((real_pte_t)(e)) -#define __rpte_to_pte(r) (r) -#define __rpte_to_hidx(r,index) (pte_val((r)) >> 12) +#ifdef STRICT_MM_TYPECHECKS +#define __real_pte(e,p) ((real_pte_t){(e)}) +#define __rpte_to_pte(r) ((r).pte) +#else +#define __real_pte(e,p) (e) +#define __rpte_to_pte(r) (__pte(r)) +#endif +#define __rpte_to_hidx(r,index) (pte_val(__rpte_to_pte(r)) >> 12) #define pte_iterate_hashed_subpages(rpte, psize, va, index, shift) \ do { \ diff -puN include/asm-powerpc/ppc_asm.h~git-powerpc include/asm-powerpc/ppc_asm.h --- devel/include/asm-powerpc/ppc_asm.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/ppc_asm.h 2006-02-27 22:38:10.000000000 -0800 @@ -15,6 +15,48 @@ #define SZL (BITS_PER_LONG/8) /* + * Stuff for accurate CPU time accounting. + * These macros handle transitions between user and system state + * in exception entry and exit and accumulate time to the + * user_time and system_time fields in the paca. + */ + +#ifndef CONFIG_VIRT_CPU_ACCOUNTING +#define ACCOUNT_CPU_USER_ENTRY(ra, rb) +#define ACCOUNT_CPU_USER_EXIT(ra, rb) +#else +#define ACCOUNT_CPU_USER_ENTRY(ra, rb) \ + beq 2f; /* if from kernel mode */ \ +BEGIN_FTR_SECTION; \ + mfspr ra,SPRN_PURR; /* get processor util. reg */ \ +END_FTR_SECTION_IFSET(CPU_FTR_PURR); \ +BEGIN_FTR_SECTION; \ + mftb ra; /* or get TB if no PURR */ \ +END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ + ld rb,PACA_STARTPURR(r13); \ + std ra,PACA_STARTPURR(r13); \ + subf rb,rb,ra; /* subtract start value */ \ + ld ra,PACA_USER_TIME(r13); \ + add ra,ra,rb; /* add on to user time */ \ + std ra,PACA_USER_TIME(r13); \ +2: + +#define ACCOUNT_CPU_USER_EXIT(ra, rb) \ +BEGIN_FTR_SECTION; \ + mfspr ra,SPRN_PURR; /* get processor util. reg */ \ +END_FTR_SECTION_IFSET(CPU_FTR_PURR); \ +BEGIN_FTR_SECTION; \ + mftb ra; /* or get TB if no PURR */ \ +END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ + ld rb,PACA_STARTPURR(r13); \ + std ra,PACA_STARTPURR(r13); \ + subf rb,rb,ra; /* subtract start value */ \ + ld ra,PACA_SYSTEM_TIME(r13); \ + add ra,ra,rb; /* add on to user time */ \ + std ra,PACA_SYSTEM_TIME(r13); +#endif + +/* * Macros for storing registers into and loading registers from * exception frames. */ diff -puN include/asm-powerpc/rwsem.h~git-powerpc include/asm-powerpc/rwsem.h --- devel/include/asm-powerpc/rwsem.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/rwsem.h 2006-02-27 22:38:10.000000000 -0800 @@ -4,7 +4,7 @@ #ifdef __KERNEL__ /* - * include/asm-ppc64/rwsem.h: R/W semaphores for PPC using the stuff + * include/asm-powerpc/rwsem.h: R/W semaphores for PPC using the stuff * in lib/rwsem.c. Adapted largely from include/asm-i386/rwsem.h * by Paul Mackerras . */ diff -puN include/asm-powerpc/synch.h~git-powerpc include/asm-powerpc/synch.h --- devel/include/asm-powerpc/synch.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/synch.h 2006-02-27 22:38:10.000000000 -0800 @@ -15,7 +15,7 @@ #endif #ifdef CONFIG_SMP -#define ISYNC_ON_SMP "\n\tisync" +#define ISYNC_ON_SMP "\n\tisync\n" #define LWSYNC_ON_SMP __stringify(LWSYNC) "\n" #else #define ISYNC_ON_SMP diff -puN include/asm-powerpc/system.h~git-powerpc include/asm-powerpc/system.h --- devel/include/asm-powerpc/system.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/system.h 2006-02-27 22:38:10.000000000 -0800 @@ -424,5 +424,9 @@ static inline void create_function_call( create_branch(addr, func_addr, BRANCH_SET_LINK); } +#ifdef CONFIG_VIRT_CPU_ACCOUNTING +extern void account_system_vtime(struct task_struct *); +#endif + #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_SYSTEM_H */ diff -puN include/asm-powerpc/time.h~git-powerpc include/asm-powerpc/time.h --- devel/include/asm-powerpc/time.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-powerpc/time.h 2006-02-27 22:38:10.000000000 -0800 @@ -41,6 +41,7 @@ extern time_t last_rtc_update; extern void generic_calibrate_decr(void); extern void wakeup_decrementer(void); +extern void snapshot_timebase(void); /* Some sane defaults: 125 MHz timebase, 1GHz processor */ extern unsigned long ppc_proc_freq; @@ -221,5 +222,19 @@ struct cpu_usage { DECLARE_PER_CPU(struct cpu_usage, cpu_usage_array); +#ifdef CONFIG_VIRT_CPU_ACCOUNTING +extern void account_process_vtime(struct task_struct *tsk); +#else +#define account_process_vtime(tsk) do { } while (0) +#endif + +#if defined(CONFIG_VIRT_CPU_ACCOUNTING) && defined(CONFIG_PPC_SPLPAR) +extern void calculate_steal_time(void); +extern void snapshot_timebases(void); +#else +#define calculate_steal_time() do { } while (0) +#define snapshot_timebases() do { } while (0) +#endif + #endif /* __KERNEL__ */ #endif /* __PPC64_TIME_H */ diff -puN include/asm-ppc/harrier.h~git-powerpc include/asm-ppc/harrier.h --- devel/include/asm-ppc/harrier.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/harrier.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/harrier.h - * * Definitions for Motorola MCG Harrier North Bridge & Memory controller * * Author: Dale Farnsworth diff -puN include/asm-ppc/ibm44x.h~git-powerpc include/asm-ppc/ibm44x.h --- devel/include/asm-ppc/ibm44x.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/ibm44x.h 2006-02-27 22:38:10.000000000 -0800 @@ -29,7 +29,7 @@ /* TLB entry offset/size used for pinning kernel lowmem */ #define PPC44x_PIN_SHIFT 28 -#define PPC44x_PIN_SIZE (1 << PPC44x_PIN_SHIFT) +#define PPC_PIN_SIZE (1 << PPC44x_PIN_SHIFT) /* Lowest TLB slot consumed by the default pinned TLBs */ #define PPC44x_LOW_SLOT 63 diff -puN include/asm-ppc/ibm4xx.h~git-powerpc include/asm-ppc/ibm4xx.h --- devel/include/asm-ppc/ibm4xx.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/ibm4xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -51,6 +51,10 @@ #include #endif +#if defined(CONFIG_XILINX_ML403) +#include +#endif + #ifndef __ASSEMBLY__ #ifdef CONFIG_40x diff -puN include/asm-ppc/io.h~git-powerpc include/asm-ppc/io.h --- devel/include/asm-ppc/io.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/io.h 2006-02-27 22:38:10.000000000 -0800 @@ -575,4 +575,11 @@ extern void pci_iounmap(struct pci_dev * */ #define xlate_dev_kmem_ptr(p) p +/* access ports */ +#define setbits32(_addr, _v) out_be32((_addr), in_be32(_addr) | (_v)) +#define clrbits32(_addr, _v) out_be32((_addr), in_be32(_addr) & ~(_v)) + +#define setbits16(_addr, _v) out_be16((_addr), in_be16(_addr) | (_v)) +#define clrbits16(_addr, _v) out_be16((_addr), in_be16(_addr) & ~(_v)) + #endif /* __KERNEL__ */ diff -puN include/asm-ppc/mpc10x.h~git-powerpc include/asm-ppc/mpc10x.h --- devel/include/asm-ppc/mpc10x.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc10x.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * arch/ppc/kernel/mpc10x.h - * * Common routines for the Motorola SPS MPC106/8240/107 Host bridge/Mem * ctlr/EPIC/etc. * @@ -165,6 +163,7 @@ enum ppc_sys_devices { MPC10X_DMA1, MPC10X_UART0, MPC10X_UART1, + NUM_PPC_SYS_DEVS, }; int mpc10x_bridge_init(struct pci_controller *hose, diff -puN include/asm-ppc/mpc52xx.h~git-powerpc include/asm-ppc/mpc52xx.h --- devel/include/asm-ppc/mpc52xx.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc52xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -60,6 +60,7 @@ enum ppc_sys_devices { MPC52xx_ATA, MPC52xx_I2C1, MPC52xx_I2C2, + NUM_PPC_SYS_DEVS, }; diff -puN include/asm-ppc/mpc8260.h~git-powerpc include/asm-ppc/mpc8260.h --- devel/include/asm-ppc/mpc8260.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc8260.h 2006-02-27 22:38:10.000000000 -0800 @@ -83,6 +83,7 @@ enum ppc_sys_devices { MPC82xx_CPM_SMC2, MPC82xx_CPM_USB, MPC82xx_SEC1, + NUM_PPC_SYS_DEVS, }; #ifndef __ASSEMBLY__ diff -puN include/asm-ppc/mpc83xx.h~git-powerpc include/asm-ppc/mpc83xx.h --- devel/include/asm-ppc/mpc83xx.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc83xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -108,6 +108,7 @@ enum ppc_sys_devices { MPC83xx_USB2_DR, MPC83xx_USB2_MPH, MPC83xx_MDIO, + NUM_PPC_SYS_DEVS, }; #endif /* CONFIG_83xx */ diff -puN include/asm-ppc/mpc85xx.h~git-powerpc include/asm-ppc/mpc85xx.h --- devel/include/asm-ppc/mpc85xx.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc85xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -139,6 +139,7 @@ enum ppc_sys_devices { MPC85xx_eTSEC4, MPC85xx_IIC2, MPC85xx_MDIO, + NUM_PPC_SYS_DEVS, }; /* Internal interrupts are all Level Sensitive, and Positive Polarity */ diff -puN include/asm-ppc/mpc8xx.h~git-powerpc include/asm-ppc/mpc8xx.h --- devel/include/asm-ppc/mpc8xx.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/mpc8xx.h 2006-02-27 22:38:10.000000000 -0800 @@ -111,8 +111,11 @@ enum ppc_sys_devices { MPC8xx_CPM_SMC1, MPC8xx_CPM_SMC2, MPC8xx_CPM_USB, + NUM_PPC_SYS_DEVS, }; +#define PPC_PIN_SIZE (24 * 1024 * 1024) /* 24Mbytes of data pinned */ + #ifndef BOARD_CHIP_NAME #define BOARD_CHIP_NAME "" #endif diff -puN include/asm-ppc/pgtable.h~git-powerpc include/asm-ppc/pgtable.h --- devel/include/asm-ppc/pgtable.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/pgtable.h 2006-02-27 22:38:10.000000000 -0800 @@ -12,6 +12,7 @@ #include /* For TASK_SIZE */ #include #include +#include /* For sub-arch specific PPC_PIN_SIZE */ struct mm_struct; extern unsigned long va_to_phys(unsigned long address); @@ -127,9 +128,8 @@ extern unsigned long ioremap_bot, iorema * of RAM. -- Cort */ #define VMALLOC_OFFSET (0x1000000) /* 16M */ -#ifdef CONFIG_44x -#include -#define VMALLOC_START (((_ALIGN((long)high_memory, PPC44x_PIN_SIZE) + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))) +#ifdef PPC_PIN_SIZE +#define VMALLOC_START (((_ALIGN((long)high_memory, PPC_PIN_SIZE) + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))) #else #define VMALLOC_START ((((long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))) #endif diff -puN include/asm-ppc/ppc_sys.h~git-powerpc include/asm-ppc/ppc_sys.h --- devel/include/asm-ppc/ppc_sys.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/ppc_sys.h 2006-02-27 22:38:10.000000000 -0800 @@ -33,6 +33,8 @@ #include #elif defined(CONFIG_MPC10X_BRIDGE) #include +#elif defined(CONFIG_XILINX_VIRTEX) +#include #else #error "need definition of ppc_sys_devices" #endif @@ -44,9 +46,26 @@ struct ppc_sys_spec { u32 value; u32 num_devices; char *ppc_sys_name; + u8 config[NUM_PPC_SYS_DEVS]; enum ppc_sys_devices *device_list; }; +struct platform_notify_dev_map { + const char *bus_id; + void (*rtn)(struct platform_device * pdev, int idx); +}; + +enum platform_device_func { + PPC_SYS_FUNC_DUMMY = 0, + PPC_SYS_FUNC_ETH = 1, + PPC_SYS_FUNC_UART = 2, + PPC_SYS_FUNC_HLDC = 3, + PPC_SYS_FUNC_USB = 4, + PPC_SYS_FUNC_IRDA = 5, +}; + +#define PPC_SYS_CONFIG_DISABLED 1 + /* describes all specific chips and which devices they have on them */ extern struct ppc_sys_spec ppc_sys_specs[]; extern struct ppc_sys_spec *cur_ppc_sys_spec; @@ -72,5 +91,20 @@ extern void *ppc_sys_get_pdata(enum ppc_ /* remove a device from the system */ extern void ppc_sys_device_remove(enum ppc_sys_devices dev); +/* Function assignment stuff */ +void ppc_sys_device_initfunc(void); +void ppc_sys_device_setfunc(enum ppc_sys_devices dev, + enum platform_device_func func); +void ppc_sys_device_set_func_all(enum platform_device_func func); + +void platform_notify_map(const struct platform_notify_dev_map *map, + struct device *dev); + +/* Enable / disable stuff */ +void ppc_sys_device_disable(enum ppc_sys_devices dev); +void ppc_sys_device_enable(enum ppc_sys_devices dev); +void ppc_sys_device_enable_all(void); +void ppc_sys_device_disable_all(void); + #endif /* __ASM_PPC_SYS_H */ #endif /* __KERNEL__ */ diff -puN include/asm-ppc/time.h~git-powerpc include/asm-ppc/time.h --- devel/include/asm-ppc/time.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/time.h 2006-02-27 22:38:10.000000000 -0800 @@ -153,5 +153,10 @@ extern __inline__ unsigned binary_tbl(vo ({unsigned z; asm ("mulhwu %0,%1,%2" : "=r" (z) : "r" (x), "r" (y)); z;}) unsigned mulhwu_scale_factor(unsigned, unsigned); + +#define account_process_vtime(tsk) do { } while (0) +#define calculate_steal_time() do { } while (0) +#define snapshot_timebases() do { } while (0) + #endif /* __ASM_TIME_H__ */ #endif /* __KERNEL__ */ diff -puN include/asm-ppc/todc.h~git-powerpc include/asm-ppc/todc.h --- devel/include/asm-ppc/todc.h~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/include/asm-ppc/todc.h 2006-02-27 22:38:10.000000000 -0800 @@ -1,6 +1,4 @@ /* - * include/asm-ppc/todc.h - * * Definitions for the M48Txx and mc146818 series of Time of day/Real Time * Clock chips. * diff -L include/asm-ppc/xparameters.h -puN include/asm-ppc/xparameters.h~git-powerpc /dev/null --- devel/include/asm-ppc/xparameters.h +++ /dev/null 2003-09-15 06:40:47.000000000 -0700 @@ -1,18 +0,0 @@ -/* - * include/asm-ppc/xparameters.h - * - * This file includes the correct xparameters.h for the CONFIG'ed board - * - * Author: MontaVista Software, Inc. - * source@mvista.com - * - * 2004 (c) MontaVista Software, Inc. This file is licensed under the terms - * of the GNU General Public License version 2. This program is licensed - * "as is" without any warranty of any kind, whether express or implied. - */ - -#include - -#if defined(CONFIG_XILINX_ML300) -#include -#endif diff -puN kernel/auditsc.c~git-powerpc kernel/auditsc.c --- devel/kernel/auditsc.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/kernel/auditsc.c 2006-02-27 22:38:10.000000000 -0800 @@ -962,7 +962,7 @@ void audit_syscall_entry(struct task_str * * i386 no * x86_64 no - * ppc64 yes (see arch/ppc64/kernel/misc.S) + * ppc64 yes (see arch/powerpc/platforms/iseries/misc.S) * * This also happens with vm86 emulation in a non-nested manner * (entries without exits), so this case must be caught. diff -puN lib/extable.c~git-powerpc lib/extable.c --- devel/lib/extable.c~git-powerpc 2006-02-27 22:37:56.000000000 -0800 +++ devel-akpm/lib/extable.c 2006-02-27 22:38:10.000000000 -0800 @@ -1,5 +1,4 @@ /* - * lib/extable.c * Derived from arch/ppc/mm/extable.c and arch/i386/mm/extable.c. * * Copyright (C) 2004 Paul Mackerras, IBM Corp. _