linux/arch/powerpc/boot
Vitaly Bordug 796bcae736 USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3]
A published errata for ppc440epx states, that when running Linux with
both EHCI and OHCI modules loaded, the EHCI module experiences a fatal
error when a high-speed device is connected to the USB2.0, and
functions normally if OHCI module is not loaded.

There used to be recommendation to use only hi-speed or full-speed
devices with specific conditions, when respective module was unloaded.
Later, it was observed that ohci suspend is enough to keep things
going, and it was turned into workaround, as explained below.

Quote from original descriprion:

The 440EPx USB 2.0 Host controller is an EHCI compliant controller.  In
USB 2.0 Host controllers, each EHCI controller has one or more companion
controllers, which may be OHCI or UHCI.  An USB 2.0 Host controller will
contain one or more ports.  For each port, only one of the controllers
is connected at any one time. In the 440EPx, there is only one OHCI
companion controller, and only one USB 2.0 Host port.
All ports on an USB 2.0 controller default to the companion
controller.  If you load only an ohci driver, it will have control of
the ports and any deviceplugged in will operate, although high speed
devices will be forced to operate at full speed.  When an ehci driver
is loaded, it explicitly takes control of the ports.  If there is a
device connected, and / or every time there is a new device connected,
the ehci driver determines if the device is high speed or not.  If it
is high speed, the driver retains control of the port.  If it is not,
the driver explicitly gives the companion controller control of the
port.

The is a software workaround that uses
Initial version of the software workaround was posted to
linux-usb-devel:

http://www.mail-archive.com/linux-usb-devel@lists.sourceforge.net/msg54019.html

and later available from amcc.com:
http://www.amcc.com/Embedded/Downloads/download.html?cat=1&family=15&ins=2

The patch below is generally based on the latter, but reworked to
powerpc/of_device USB drivers, and uses a few devicetree inquiries to
get rid of (some) hardcoded defines.

Signed-off-by: Vitaly Bordug <vitb@kernel.crashing.org>
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-01-07 09:59:52 -08:00
..
dtc-src powerpc: Update in-kernel dtc and libfdt to version 1.2.0 2008-08-20 16:34:58 +10:00
dts USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3] 2009-01-07 09:59:52 -08:00
libfdt powerpc: Fix bug in kernel copy of libfdt's fdt_subnode_offset_namelen() 2008-10-31 20:14:19 +11:00
.gitignore [POWERPC] Update arch/powerpc/boot/.gitignore 2008-05-20 00:35:29 -05:00
4xx.c [POWERPC] 4xx: Workaround for CHIP_11 Errata 2008-05-19 09:36:40 -05:00
4xx.h [POWERPC] 4xx: Add 405GPr and 405EP support in boot wrapper 2008-01-08 07:58:09 -06:00
44x.h [POWERPC] cuimage for Bamboo board 2007-09-19 21:13:16 -05:00
addnote.c Revert "powerpc: Sync RPA note in zImage with kernel's RPA note" 2008-10-31 22:36:21 +11:00
addRamDisk.c
bamboo.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
cpm-serial.c [POWERPC] cpm-serial: Relocate CPM buffer descriptors and SMC parameter ram. 2008-04-17 01:01:37 -05:00
crt0.S [POWERPC] Fix building of COFF zImages 2007-06-07 22:21:31 +10:00
crtsavres.S [POWERPC] Fix bootwrapper builds with newer gcc versions 2008-06-16 15:00:52 +10:00
cuboot-8xx.c [POWERPC] Use embedded libfdt in the bootwrapper 2007-12-11 13:46:14 +11:00
cuboot-52xx.c powerpc/52xx: Make cuImage more robust in locating immr node. 2008-10-15 11:09:59 -06:00
cuboot-83xx.c [POWERPC] bootwrapper: convert cuboot-8{3,5}xx to dt_fixup_mac_address_by_alias 2008-01-23 19:32:47 -06:00
cuboot-85xx-cpm2.c [POWERPC] Add a cuboot wrapper for 85xx with CPM2 2008-01-27 14:10:36 -06:00
cuboot-85xx.c [POWERPC] bootwrapper: convert cuboot-8{3,5}xx to dt_fixup_mac_address_by_alias 2008-01-23 19:32:47 -06:00
cuboot-824x.c [POWERPC] Add initial iomega StorCenter board port. 2008-01-23 19:54:36 -06:00
cuboot-acadia.c powerpc/40x: Add cuboot wrapper for Acadia board 2008-10-17 10:31:19 -04:00
cuboot-bamboo.c [POWERPC] 4xx: Use correct board info structure in cuboot wrappers 2008-02-28 08:16:27 -06:00
cuboot-c2k.c powerpc: Boot code for the C2K 2008-06-09 13:42:25 +10:00
cuboot-ebony.c [POWERPC] 4xx: Use correct board info structure in cuboot wrappers 2008-02-28 08:16:27 -06:00
cuboot-katmai.c [POWERPC] 4xx: Use correct board info structure in cuboot wrappers 2008-02-28 08:16:27 -06:00
cuboot-mpc7448hpc2.c [POWERPC] bootwrapper: Build multiple cuImages 2008-02-07 11:40:19 +11:00
cuboot-pq2.c [POWERPC] cuboot-pq2: PCI fixes 2008-04-17 01:01:40 -05:00
cuboot-rainier.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
cuboot-sam440ep.c powerpc/4xx: Sam440ep support 2008-06-11 08:32:49 -04:00
cuboot-sequoia.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
cuboot-taishan.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
cuboot-warp.c [POWERPC] PIKA Warp: Update platform code to support Rev B boards 2008-05-29 07:06:56 -05:00
cuboot-yosemite.c [POWERPC] 4xx: Add bootwrapper for AMCC Yosemite board 2008-03-26 07:19:17 -05:00
cuboot.c [POWERPC] bootwrapper: Move linker symbols into ops.h 2007-08-22 15:27:28 +10:00
cuboot.h [POWERPC] Consolidate cuboot initialization code 2007-06-14 22:30:16 +10:00
dcr.h [POWERPC] 4xx: Add 405GPr and 405EP support in boot wrapper 2008-01-08 07:58:09 -06:00
devtree.c powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use 2008-12-21 14:21:17 +11:00
div64.S
dummy.c powerpc/32: Generate miboot images with ARCH=powerpc 2006-01-15 13:00:08 +11:00
ebony.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
elf_util.c powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
elf.h [POWERPC] Move bootwrapper ELF parsing routines to a file 2007-04-13 03:55:16 +10:00
ep88xc.c [POWERPC] Use embedded libfdt in the bootwrapper 2007-12-11 13:46:14 +11:00
ep405.c [POWERPC] 4xx: EP405 boards support for arch/powerpc 2007-12-23 13:13:14 -06:00
ep8248e.c [POWERPC] 82xx: Embedded Planet EP8248E support 2008-01-23 19:34:43 -06:00
fixed-head.S [POWERPC] 8xx/wrapper: Embedded Planet EP88xC support 2007-10-04 11:02:40 -05:00
flatdevtree_env.h Fix file references in documentation and Kconfig 2008-01-22 10:43:36 -08:00
fsl-soc.c [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
fsl-soc.h [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
gunzip_util.c [POWERPC] boot: Simplify gunzip_finish 2007-10-03 11:48:43 +10:00
gunzip_util.h [POWERPC] Add documentation for the zImage's gunzip convenience functions 2007-03-16 16:38:19 +11:00
hack-coff.c powerpc: Make COFF zImages for old 32-bit powermacs 2006-01-14 15:04:06 +11:00
holly.c [POWERPC] Use embedded libfdt in the bootwrapper 2007-12-11 13:46:14 +11:00
install.sh [PATCH] powerpc: trivial: modify comments to refer to new location of files 2006-02-10 16:53:51 +11:00
io.h powerpc: Move include files to arch/powerpc/include/asm 2008-08-04 12:02:00 +10:00
libfdt_env.h powerpc: Update in-kernel dtc and libfdt to version 1.2.0 2008-08-20 16:34:58 +10:00
libfdt-wrapper.c powerpc/boot: Allocate more memory for dtb 2008-11-06 09:49:43 +11:00
main.c powerpc: Fix format string warning in arch/powerpc/boot/main.c 2008-10-31 20:14:19 +11:00
Makefile powerpc/cell: add QPACE as a separate Cell platform 2008-12-22 22:19:19 +01:00
mktree.c [POWERPC] Support for the Ebony 440GP reference board in arch/powerpc 2007-05-08 14:47:32 +10:00
mpc8xx.c [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
mpc8xx.h [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
mpc52xx-psc.c [POWERPC] Add bootwrapper function to get virtual reg from the device tree. 2008-04-17 01:01:37 -05:00
mpsc.c [POWERPC] prpmc2800: Clean up dts properties 2008-04-15 21:21:24 +10:00
mv64x60_i2c.c [POWERPC] mv64x60: Remove device tree absolute path references 2008-04-15 21:21:24 +10:00
mv64x60.c [POWERPC] mv64x60: Remove device tree absolute path references 2008-04-15 21:21:24 +10:00
mv64x60.h [POWERPC] Add bootwrapper support for Marvell/mv64x60 hostbridge 2007-05-12 11:32:49 +10:00
ns16550.c [POWERPC] Xilinx: boot support for Xilinx uart 16550. 2008-04-24 13:32:46 -05:00
of.c [POWERPC] bootwrapper: Move linker symbols into ops.h 2007-08-22 15:27:28 +10:00
of.h [POWERPC] Make more OF-related bootwrapper functions available to non-OF platforms 2007-06-28 19:19:28 +10:00
ofconsole.c [POWERPC] Make more OF-related bootwrapper functions available to non-OF platforms 2007-06-28 19:19:28 +10:00
oflib.c powerpc: Change the default link address for pSeries zImage kernels 2008-07-01 11:28:32 +10:00
ops.h powerpc: Add del_node() for early boot code to prune inapplicable devices. 2008-10-22 15:01:21 +11:00
page.h
planetcore.c [POWERPC] bootwrapper: Add PlanetCore firmware support 2007-10-03 11:48:43 +10:00
planetcore.h [POWERPC] bootwrapper: Add PlanetCore firmware support 2007-10-03 11:48:43 +10:00
ppc_asm.h
ppcboot.h [POWERPC] bootwrapper: Add TARGET_HAS_ETHn tests to ppcboot.h 2007-08-22 15:21:48 +10:00
pq2.c [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
pq2.h [POWERPC] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions. 2007-10-03 20:36:35 -05:00
prpmc2800.c [POWERPC] mv64x60: Remove device tree absolute path references 2008-04-15 21:21:24 +10:00
ps3-head.S [POWERPC] PS3: Bootwrapper improvements 2008-04-01 20:43:07 +11:00
ps3-hvcall.S [POWERPC] PS3: Fix bootwrapper hang bug 2008-02-14 22:11:01 +11:00
ps3.c [POWERPC] PS3: Bootwrapper improvements 2008-04-01 20:43:07 +11:00
README
redboot-8xx.c [POWERPC] 8xx: Analogue & Micro Adder875 board support. 2008-01-23 19:34:40 -06:00
redboot-83xx.c [POWERPC] 83xx: Add support for Analogue & Micro ASP837E board 2008-06-02 14:44:25 -05:00
redboot.h [POWERPC] 8xx: Analogue & Micro Adder875 board support. 2008-01-23 19:34:40 -06:00
reg.h [POWERPC] 4xx: Add mfspr/mtspr inline macros to 4xx bootwrapper 2007-12-23 13:14:22 -06:00
rs6000.h powerpc: Make COFF zImages for old 32-bit powermacs 2006-01-14 15:04:06 +11:00
serial.c [POWERPC] mv64x60: Fix FDT compatible names: mv64x60 => mv64360 2008-04-15 21:21:24 +10:00
simple_alloc.c [POWERPC] bootwrapper: Use `unsigned long' for malloc sizes 2007-04-24 22:06:54 +10:00
simpleboot.c powerpc/virtex: Fix booting of Xilinx FPGAs with 16550 for 405 and 440 2008-07-04 00:58:59 -06:00
stdio.c [POWERPC] Add u64 printf to bootwrapper 2007-06-28 19:16:48 +10:00
stdio.h [POWERPC] Add gcc format warnings to zImage printf() 2007-03-26 15:11:20 +10:00
stdlib.c [POWERPC] bootwrapper: Add strtoull() 2007-09-14 01:33:23 +10:00
stdlib.h [POWERPC] bootwrapper: Add strtoull() 2007-09-14 01:33:23 +10:00
string.h [POWERPC] Add memchr() to the bootwrapper 2007-10-12 14:13:44 +10:00
string.S powerpc: Fix boot wrapper memcmp() called with zero length argument 2008-10-21 15:17:48 +11:00
treeboot-bamboo.c [POWERPC] cuimage for Bamboo board 2007-09-19 21:13:16 -05:00
treeboot-ebony.c [POWERPC] bootwrapper: Move linker symbols into ops.h 2007-08-22 15:27:28 +10:00
treeboot-walnut.c [POWERPC] Start removing linux,network-index in favour of aliases 2008-03-26 07:19:16 -05:00
types.h [POWERPC] Add signed types to bootwrapper 2007-06-28 19:16:47 +10:00
uartlite.c [POWERPC] Uartlite: bootwrapper bug fix, getc loops forever 2007-10-10 09:14:35 -06:00
util.S [POWERPC] Add non-OF serial console support 2006-10-23 12:49:19 +10:00
virtex405-head.S [POWERPC] bootwrapper: Add a firmware-independent simpleboot target. 2008-04-02 20:36:11 -05:00
virtex.c powerpc/virtex: Fix booting of Xilinx FPGAs with 16550 for 405 and 440 2008-07-04 00:58:59 -06:00
wrapper Revert "powerpc: Sync RPA note in zImage with kernel's RPA note" 2008-10-31 22:36:21 +11:00
zImage.coff.lds.S powerpc: Change the default link address for pSeries zImage kernels 2008-07-01 11:28:32 +10:00
zImage.lds.S powerpc: Change the default link address for pSeries zImage kernels 2008-07-01 11:28:32 +10:00
zImage.ps3.lds.S [POWERPC] PS3: Bootwrapper support. 2007-07-10 21:56:40 +10:00

To extract the kernel vmlinux, System.map, .config or initrd from the zImage binary:

objcopy -j .kernel:vmlinux -O binary zImage vmlinux.gz
objcopy -j .kernel:System.map -O binary zImage System.map.gz
objcopy -j .kernel:.config -O binary zImage config.gz
objcopy -j .kernel:initrd -O binary zImage.initrd initrd.gz


	Peter