Merge branch 'master' into next
This commit is contained in:
commit
f35f3968c2
752
CHANGELOG
752
CHANGELOG
@ -1,3 +1,736 @@
|
||||
commit 460c2ce362e56890c2a029e2c3b1ff2796c7fc54
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Mon Jun 21 22:29:59 2010 +0200
|
||||
|
||||
MPC5200: workaround data corruption for unaligned local bus accesses
|
||||
|
||||
The MPC5200 has a nasty problem that will cause silent data corruption
|
||||
when performing unaligned 16 or 32 byte accesses when reading from the
|
||||
local bus - typically this affects reading from flash. The problem can
|
||||
be easily shown:
|
||||
|
||||
=> md fc0c0000 10
|
||||
fc0c0000: 323e4337 01626f6f 74636d64 3d72756e 2>C7.bootcmd=run
|
||||
fc0c0010: 206e6574 5f6e6673 00626f6f 7464656c net_nfs.bootdel
|
||||
fc0c0020: 61793d35 00626175 64726174 653d3131 ay=5.baudrate=11
|
||||
fc0c0030: 35323030 00707265 626f6f74 3d656368 5200.preboot=ech
|
||||
=> md fc0c0001 10
|
||||
fc0c0001: 65636801 00000074 0000003d 00000020 ech....t...=...
|
||||
fc0c0011: 0000005f 00000000 00000074 00000061 ..._.......t...a
|
||||
fc0c0021: 00000000 00000064 00000065 00000035 .......d...e...5
|
||||
fc0c0031: 00000000 00000062 0000003d 0000006f .......b...=...o
|
||||
=> md.w fc0c0001 10
|
||||
fc0c0001: 0000 3701 0000 6f74 0000 643d 0000 6e20 ..7...ot..d=..n
|
||||
fc0c0011: 0000 745f 0000 7300 0000 6f74 0000 6c61 ..t_..s...ot..la
|
||||
|
||||
This commit implements a workaround at least for the most blatant
|
||||
problem: using memcpy() from NOR flash. We rename the assembler
|
||||
routine into __memcpy() and provide a wrapper, which will use a
|
||||
byte-wise copy loop for unaligned source or target addresses when
|
||||
reading from NOR flash, and branch to the optimized __memcpy()
|
||||
in all other cases, thus minimizing the performance impact.
|
||||
|
||||
Tested on lite5200b and TQM5200S.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
Cc: Detlev Zundel <dzu@denx.de>
|
||||
|
||||
commit 47ea6edfb3004fb2d2a979e19c3f6e4e32f45e51
|
||||
Author: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Date: Fri Jun 18 19:31:10 2010 +0900
|
||||
|
||||
ARM: remove unused VIDEOLFB ATAG
|
||||
|
||||
ATAG_VIDEOLFB is not used anywhere.
|
||||
The belowing warning is occurred due to this ATAG.
|
||||
|
||||
[ 0.000000] Ignoring unrecognised tag 0x54410008
|
||||
|
||||
This patch fixed it.
|
||||
|
||||
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
Acked-by: Martin Krause <Martin.Krause@tqs.de>
|
||||
|
||||
commit ceeba0030844b2e84ce4e47f4be7ad347cd1e827
|
||||
Author: Peter Horton <zero@colonel-panic.org>
|
||||
Date: Sat Jun 12 10:11:56 2010 +0900
|
||||
|
||||
UBI: initialise update marker
|
||||
|
||||
UBI: initialise update marker
|
||||
|
||||
The in kernel copy of a volume's update marker is not initialised from the
|
||||
volume table. This means that volumes where an update was unfinnished will
|
||||
not be treated as "forbidden to use". This is basically that the update
|
||||
functionality was broken.
|
||||
|
||||
Signed-off-by: Peter Horton <zero@colonel-panic.org>
|
||||
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
|
||||
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
Acked-by: Stefan Roese <sr@denx.de>
|
||||
|
||||
commit b8c4eea56b5f41f9bdbb89d3d5c79b7d282d513c
|
||||
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
Date: Wed Apr 14 15:32:06 2010 +0200
|
||||
|
||||
remove myself as a maintainer of several ARM boards
|
||||
|
||||
Since I haven't been actively maintaining these boards for a long while,
|
||||
keeping myself as their maintainer makes no sense.
|
||||
|
||||
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
|
||||
commit d6b937142008463d628ef26a753f9c20c57f3617
|
||||
Author: Ilya Yanok <yanok@emcraft.com>
|
||||
Date: Mon Jun 21 18:13:21 2010 +0400
|
||||
|
||||
Makefile: always call date with LC_ALL=C set
|
||||
|
||||
Ensure that date is called only with LC_ALL=C locale set to make dates
|
||||
locale neutral thus preventing lurking of non-ASCII characters into
|
||||
U-Boot binary.
|
||||
|
||||
Signed-off-by: Ilya Yanok <yanok@emcraft.com>
|
||||
|
||||
Changed LANG= into LC_ALL= as suggested by Mike Frysinger <vapier@gentoo.org>
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
|
||||
commit 23fdf0580660edf38cb7118f05b8865f2f73c674
|
||||
Author: Albert Aribaud <[albert.aribaud@free.fr]>
|
||||
Date: Tue Jun 22 15:50:28 2010 +0530
|
||||
|
||||
Fix wrong orion5x MPP and GIPO writel arguments
|
||||
|
||||
Orion5x MPP and GPIO setting code had writel arguments
|
||||
the wrong way around. Fixed and tested.
|
||||
|
||||
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
|
||||
|
||||
commit 95bc39e848dd3f741a064c826d1c282c48125d41
|
||||
Author: Terry Lv <r65388@freescale.com>
|
||||
Date: Thu May 6 18:30:55 2010 +0800
|
||||
|
||||
ARM: fix bug in macro __arch_ioremap.
|
||||
|
||||
Signed-off-by: Terry Lv <r65388@freescale.com>
|
||||
|
||||
Fix commit message and code formatting.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
|
||||
commit a71da1b6c96205549ca2e7cf991e2340181bbfcf
|
||||
Author: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
||||
Date: Tue Jun 15 22:18:11 2010 +0400
|
||||
|
||||
ARM: Align stack to 8 bytes
|
||||
|
||||
The ARM ABI requires that the stack be aligned to 8 bytes as it is noted
|
||||
in Procedure Call Standard for the ARM Architecture:
|
||||
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/index.html
|
||||
|
||||
Unaligned SP also causes the problem with variable-length arrays
|
||||
allocation when VLA address becomes less than stack pointer during
|
||||
aligning of this address, so the next 'push' in the stack overwrites
|
||||
first 4 bytes of VLA.
|
||||
|
||||
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
||||
|
||||
Tested on tx25(mx25), imx27lite(mx27), qong(mx31) and trab(s3c2400)
|
||||
Tested-by: Wolfgang Denk <wd@denx.de>
|
||||
|
||||
commit 6de27bdc788e7c4532ee0721ae291aeb5df475dc
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Sun Jun 20 12:32:37 2010 +0200
|
||||
|
||||
net/eth.c: eth_mac_skip() is only needed when CONFIG_NET_MULTI is set
|
||||
|
||||
Move it inside the #ifdef CONFIG_NET_MULTI to avoid
|
||||
|
||||
eth.c:64: warning: 'eth_mac_skip' defined but not used
|
||||
|
||||
messages from a number of old, non-CONFIG_NET_MULTI boards.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
|
||||
|
||||
commit e397e59e861aa818cda12a23206dde06f7e9f660
|
||||
Author: Fillod Stephane <stephane.fillod@grassvalley.com>
|
||||
Date: Fri Jun 11 19:26:43 2010 +0200
|
||||
|
||||
ip/defrag: fix processing of last short fragment
|
||||
|
||||
TFTP'ing a file of size 1747851 bytes with CONFIG_IP_DEFRAG and
|
||||
CONFIG_TFTP_BLOCKSIZE set to 4096 fails with a timeout, because
|
||||
the last fragment is not taken into account. This patch fixes
|
||||
IP fragments having less than 8 bytes of payload.
|
||||
|
||||
Signed-off-by: Stephane Fillod <stephane.fillod@grassvalley.com>
|
||||
Acked-by: Alessandro Rubini <rubini@gnudd.com>
|
||||
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
|
||||
|
||||
commit 9c00b2f0a3fe0f779761607024f99b7690c9776c
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Sun Jun 20 12:30:22 2010 +0200
|
||||
|
||||
net/eth.c: eth_mac_skip() is only needed when CONFIG_NET_MULTI is set
|
||||
|
||||
Move it inside the #ifdef CONFIG_NET_MULTI to avoid
|
||||
|
||||
eth.c:64: warning: 'eth_mac_skip' defined but not used
|
||||
|
||||
messages from anumber of old, non-CONFIG_NET_MULTI boards.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
Cc: Ben Warren <biggerbadderben@gmail.com>
|
||||
|
||||
commit 9312bba01a41191f20821b66b84b3ff1d2902e8a
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Sun Jun 20 02:16:44 2010 +0200
|
||||
|
||||
include/compiler.h: remove redundant declaration of errno
|
||||
|
||||
Commit 37566090 "compiler.h: unify system ifdef cruft here" added both
|
||||
a "#include <errno.h>" and a "extern int errno;" to include/compiler.h
|
||||
which is causing build warnings for some systems, for example for the
|
||||
"netstar" board:
|
||||
|
||||
In file included from /home/wd/git/u-boot/work/lib/crc32.c:15:
|
||||
include/compiler.h:28: warning: function declaration isn't a prototype
|
||||
|
||||
The declaration of "errno" should be redundant, as <errno.h> is
|
||||
supposed to provide a correct declaration, so drop it.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
Cc: Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
commit cd040a4953e55efe89dc3af4acf0302d5923026f
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Fri Jun 18 15:55:15 2010 +0200
|
||||
|
||||
arch/arm/cpu/arm_cortexa8/omap3/cache.S: make build with older tools
|
||||
|
||||
The push / pop instructions used in this file are available only with
|
||||
more recent tool chains:
|
||||
|
||||
cache.S: Assembler messages:
|
||||
cache.S:133: Error: bad instruction `push {r0,r1,r2,lr}'
|
||||
cache.S:160: Error: bad instruction `pop {r1,r2,r3,pc}'
|
||||
cache.S:164: Error: bad instruction `push {r0,r1,r2,lr}'
|
||||
cache.S:191: Error: bad instruction `pop {r1,r2,r3,pc}'
|
||||
|
||||
Change push/pop into stmfd/ldmfd instructions to support older
|
||||
versions of binutils as well.
|
||||
|
||||
I verified that the modified source code generates exactly the same
|
||||
binary code.
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
Cc: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
Cc: Tom Rix <tom@bumblecow.com>
|
||||
|
||||
commit ce9c227cc71afc3b4c78dcc0a565c40d4ad943e4
|
||||
Author: Albert Aribaud <[albert.aribaud@free.fr]>
|
||||
Date: Thu Jun 17 19:38:21 2010 +0530
|
||||
|
||||
Add support for the LaCie ED Mini V2 board
|
||||
|
||||
This patch adds support for the LaCie ED Mini V2 product
|
||||
which is based on the Marvell Orion5x SoC.
|
||||
|
||||
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
|
||||
|
||||
commit 83142c112d30ee3da23b62387909d33db064bdc4
|
||||
Author: Albert Aribaud <[albert.aribaud@free.fr]>
|
||||
Date: Thu Jun 17 19:37:01 2010 +0530
|
||||
|
||||
Add Orion5x support to 16550 device driver
|
||||
|
||||
This patch provides access to the 16550-compatible
|
||||
serial device of the Orion5x SoC.
|
||||
|
||||
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
|
||||
|
||||
commit 0c61e6f9257ef416959b740ee3cf191bf682007d
|
||||
Author: Albert Aribaud <[albert.aribaud@free.fr]>
|
||||
Date: Thu Jun 17 19:36:07 2010 +0530
|
||||
|
||||
Initial support for Marvell Orion5x SoC
|
||||
|
||||
This patch adds support for the Marvell Orion5x SoC.
|
||||
It has no use alone, and must be followed by a patch
|
||||
to add Orion5x support for serial, then support for
|
||||
the ED Mini V2, an Orion5x-based product from LaCie.
|
||||
|
||||
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
|
||||
|
||||
commit 376e7fadbad3285231e390c6534feb5af86d594b
|
||||
Author: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Date: Tue Jun 8 14:40:47 2010 +0900
|
||||
|
||||
SAMSUNG: goni: add the GPL licence
|
||||
|
||||
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
Acked-by: Tom <Tom@bumblecow.com>
|
||||
|
||||
commit c474a8ebb880e564df0c701c6a8cf73b7779b1d2
|
||||
Author: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Date: Mon May 31 22:02:42 2010 +0900
|
||||
|
||||
s5pc1xx: Add support for Samsung Goni board
|
||||
|
||||
This patch adds support for the Samsung Goni board (S5PC110 SoC)
|
||||
|
||||
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
|
||||
commit ffb4b02554d9972d66502efbe97b3933620c8a31
|
||||
Author: Minkyu Kang <mk7.kang@samsung.com>
|
||||
Date: Fri May 28 12:34:29 2010 +0900
|
||||
|
||||
s5pc1xx: gpio: bug fix at gpio_set_pull function
|
||||
|
||||
When set to PULL_NONE, gpio_set_pull function is returned without write the register.
|
||||
This patch fixed it.
|
||||
|
||||
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
|
||||
|
||||
commit a9046b9e1aeeedc66ddf1d00474ad0ce8c6aa6e4
|
||||
Author: Wolfgang Denk <wd@denx.de>
|
||||
Date: Sun Jun 13 17:48:15 2010 +0200
|
||||
|
||||
Prepare v2010-rc2
|
||||
|
||||
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
||||
|
||||
commit 3a96ad851f4f9267e1199b700cb838a77334e4b2
|
||||
Author: Marek Vasut <marek.vasut@gmail.com>
|
||||
Date: Sun Apr 11 08:53:55 2010 +0200
|
||||
|
||||
PXA: Align stack to 8 bytes
|
||||
|
||||
Part of this patch is by: Mikhail Kshevetskiy.
|
||||
|
||||
Stack must be aligned to 8 bytes on PXA (possibly all armv5te) for LDRD/STRD
|
||||
instructions. In case LDRD/STRD is issued on an unaligned address, the behaviour
|
||||
is undefined.
|
||||
|
||||
The issue was observed when working with the NAND code, which was rendered
|
||||
disfunctional. Also, the vsprintf() function had serious problems with printing
|
||||
64bit wide long longs. After aligning the stack, this wrong behaviour is no
|
||||
longer present.
|
||||
|
||||
Tested on:
|
||||
Marvell Littleton PXA310 board
|
||||
Toradex Colibri PXA320 board
|
||||
Aeronix Zipit Z2 PXA270 handheld
|
||||
Voipac PXA270 board
|
||||
|
||||
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
|
||||
|
||||
commit 89b765c7f6ddfde07ba673dd4adbeb5da391a81b
|
||||
Author: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Date: Thu Jun 10 15:18:15 2010 +0530
|
||||
|
||||
TI: DaVinci: Add board specific code for da850 EVM
|
||||
|
||||
Provides initial support for TI OMAP-L138/DA850 SoC devices on
|
||||
a Logic PD EVM board.
|
||||
|
||||
Provides:
|
||||
Initial boot and configuration.
|
||||
Support for i2c.
|
||||
UART support (console).
|
||||
|
||||
Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Acked-by: Ben Gardiner <bengardiner@nanometrics.ca>
|
||||
Reviewed-by: Wolfgang Denk <wd@denx.de>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 158557001afe167dcb848bb14ba0f2f20aeb25a1
|
||||
Author: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Date: Tue Jun 8 11:01:58 2010 +0530
|
||||
|
||||
TI: DaVinci: Prepare for da850 support
|
||||
|
||||
DA850/OMAP-L138 is a new SoC from Texas Instruments
|
||||
(http://focus.ti.com/docs/prod/folders/print/omap-l138.html).
|
||||
This SoC is similar to DA830/OMAP-L137 in many aspects. Hence
|
||||
rename the da830 specific files and folders to da8xx to
|
||||
accommodate DA850/OMAP-L138.
|
||||
|
||||
Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Acked-by: Ben Gardiner <bengardiner@nanometrics.ca>
|
||||
Reviewed-by: Wolfgang Denk <wd@denx.de>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 9d79956029ec379e7137948ba3a7debbea61325f
|
||||
Author: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Date: Mon Jun 7 12:39:59 2010 +0530
|
||||
|
||||
da830: Move common code out of da830evm.c file
|
||||
|
||||
TI's DA850/OMAP-L138 platform is similar to DA830/OMAP-L137
|
||||
in many aspects. So instead of repeating the same code in
|
||||
multiple files, move the common code to a different file
|
||||
and call those functions from the respective da830/da850
|
||||
files.
|
||||
|
||||
Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
|
||||
Acked-by: Nick Thompson <nick.thompson@ge.com>
|
||||
Acked-by: Ben Gardiner <bengardiner@nanometrics.ca>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 5246d01edd8935e04cdf79a5b9a03874509a31b1
|
||||
Author: Grazvydas Ignotas <notasas@gmail.com>
|
||||
Date: Tue Jun 8 17:19:22 2010 -0400
|
||||
|
||||
OMAP3: pandora: enable battery backup capacitor
|
||||
|
||||
Pandora has a capacitor connected as backup battery, which allows
|
||||
retaining RTC for some time while main battery is removed. Enable backup
|
||||
battery charge function to charge that capacitor.
|
||||
|
||||
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 9268236529161312c877e638a14c011fd3c883e1
|
||||
Author: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Date: Mon Jun 7 17:16:13 2010 -0400
|
||||
|
||||
DaVinci: Improve DaVinci SPI speed.
|
||||
|
||||
I have updated this patch based on the comments [1] by Wolfgang Denk and
|
||||
removed unused variables.
|
||||
[1][http://lists.denx.de/pipermail/u-boot/2010-May/071728.html]
|
||||
|
||||
Reduce the number of reads per byte transferred on the BUF register from 2 to 1 and
|
||||
take advantage of the TX buffer in the SPI module. On LogicPD OMAP-L138 EVM,
|
||||
SPI read throughput goes up from ~0.8Mbyte/s to ~1.3Mbyte/s. Tested with a 2Mbyte image file.
|
||||
Remove unused variables in the spi_xfer() function.
|
||||
|
||||
Signed-off-by: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Tested-by: Ben Gardiner <bengardiner@nanometrics.ca>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 1a5038ca6831e31875cf67c46226f04743574032
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:53 2010 -0400
|
||||
|
||||
AM35x: Add support for EMIF4
|
||||
|
||||
This patch adds support for the EMIF4 interface
|
||||
available in the AM35x processors.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sanjeev Premi <premi@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit ed01e45cfa20d60ee83a4ee0128d843730055294
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:43 2010 -0400
|
||||
|
||||
AM35x: Add support for AM3517EVM
|
||||
|
||||
This patch adds basic support for the AM3517EVM.
|
||||
It includes:
|
||||
- Board files (.c and .h)
|
||||
- Default configuration file
|
||||
- Updates for Makefile
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sanjeev Premi <premi@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit cae377b59a179e34d27cd6b79dee24d967de839c
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:34 2010 -0400
|
||||
|
||||
omap3: Consolidate SDRC related operations
|
||||
|
||||
Consolidated SDRC related functions into one file - sdrc.c
|
||||
|
||||
And also replaced sdrc_init with generic memory init
|
||||
function (mem_init), this generalization of omap memory setup
|
||||
is necessary to support the new emif4 interface introduced in AM3517.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit d11212e3772c8fe43a1f487bbf58f3341118a241
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:29 2010 -0400
|
||||
|
||||
omap3: Calculate CS1 size only when SDRC is
|
||||
|
||||
initialized for CS1
|
||||
|
||||
From: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
|
||||
The patch makes sure that size for SDRC CS1 gets calculated
|
||||
only when the CS1 SDRC is initialized.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 675e0eaf0f0429aac3c6fb41634fbcea2350fe49
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:19 2010 -0400
|
||||
|
||||
OMAP3EVM: Added NAND support
|
||||
|
||||
The EVMS have been shipping with NAND (instead of OneNAND) as default.
|
||||
So, this patch sets NAND as default.
|
||||
|
||||
To choose OneNAND, define CMD_ONENAND instead of CMD_NAND in the
|
||||
config file omap3_evm.h.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 5cc48f7e55df0d74a12d338de2117f05951fc536
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:36 2010 -0400
|
||||
|
||||
TI: TNETV107X EVM initial support
|
||||
|
||||
TNETV107X is a Texas Instruments SoC based on an ARM1176 core, and with a
|
||||
bunch on on-chip integrated peripherals. This patch adds support for the
|
||||
TNETV107X EVM board.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 3712367c4830e87b4e7af5b480e82d316bab1251
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:32 2010 -0400
|
||||
|
||||
ARM1176: TI: TNETV107X soc initial support
|
||||
|
||||
TNETV107X is a Texas Instruments SoC based on an ARM1176 core, and with a
|
||||
bunch on on-chip integrated peripherals. This is an initial commit with
|
||||
basic functionality, more commits with drivers, etc. to follow.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 678e008c3a3a27fe2d30cf423679d2d11d0fa5c2
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:27 2010 -0400
|
||||
|
||||
ARM1176: Coexist with other ARM1176 platforms
|
||||
|
||||
The current ARM1176 CPU specific code is too specific to the SMDK6400
|
||||
architecture. The following changes were necessary prerequisites for the
|
||||
addition of other SoCs based on ARM1176.
|
||||
|
||||
Existing board's (SMDK6400) configuration has been modified to keep behavior
|
||||
unchanged despite these changes.
|
||||
|
||||
1. Peripheral port remap configurability
|
||||
The earlier code had hardcoded remap values specific to s3c64xx in start.S.
|
||||
This change makes the peripheral port remap addresses and sizes configurable.
|
||||
|
||||
2. U-Boot code relocation support
|
||||
Most architectures allow u-boot code to run initially at a different
|
||||
address (possibly in NOR) and then get relocated to its final resting place
|
||||
in RAM. Added support for this capability in ARM1176 architecture.
|
||||
|
||||
3. Disable TCM if necessary
|
||||
If a ROM based bootloader happened to have initialized TCM, we disable it here
|
||||
to keep things sane.
|
||||
|
||||
4. Remove unnecessary SoC specific includes
|
||||
ARM1176 code does not really need this SoC specific include. The presence
|
||||
of this include prevents builds on other ARM1176 archs.
|
||||
|
||||
5. Modified virt-to-phys conversion during MMU disable
|
||||
The original MMU disable code masks out too many bits from the load address
|
||||
when it tries to figure out the physical address of the jump target label.
|
||||
Consequently, it ends up branching to the wrong address after disabling the
|
||||
MMU.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 23911740486c59851df57521c49bfd81ce1865ec
|
||||
Author: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Date: Mon Jun 7 17:16:13 2010 -0400
|
||||
|
||||
DaVinci: Improve DaVinci SPI speed.
|
||||
|
||||
I have updated this patch based on the comments [1] by Wolfgang Denk and
|
||||
removed unused variables.
|
||||
[1][http://lists.denx.de/pipermail/u-boot/2010-May/071728.html]
|
||||
|
||||
Reduce the number of reads per byte transferred on the BUF register from 2 to 1 and
|
||||
take advantage of the TX buffer in the SPI module. On LogicPD OMAP-L138 EVM,
|
||||
SPI read throughput goes up from ~0.8Mbyte/s to ~1.3Mbyte/s. Tested with a 2Mbyte image file.
|
||||
Remove unused variables in the spi_xfer() function.
|
||||
|
||||
Signed-off-by: Delio Brignoli <dbrignoli@audioscience.com>
|
||||
Tested-by: Ben Gardiner <bengardiner@nanometrics.ca>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 05ee415e316e3b1617aba06a747649f4d4053d41
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:53 2010 -0400
|
||||
|
||||
AM35x: Add support for EMIF4
|
||||
|
||||
This patch adds support for the EMIF4 interface
|
||||
available in the AM35x processors.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sanjeev Premi <premi@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 3d9f0ffddaf1ece95a826785b971860ebdadf424
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:43 2010 -0400
|
||||
|
||||
AM35x: Add support for AM3517EVM
|
||||
|
||||
This patch adds basic support for the AM3517EVM.
|
||||
It includes:
|
||||
- Board files (.c and .h)
|
||||
- Default configuration file
|
||||
- Updates for Makefile
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sanjeev Premi <premi@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 8aa5c7cdc4e534df9129485ba317a2871c4f9880
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:34 2010 -0400
|
||||
|
||||
omap3: Consolidate SDRC related operations
|
||||
|
||||
Consolidated SDRC related functions into one file - sdrc.c
|
||||
|
||||
And also replaced sdrc_init with generic memory init
|
||||
function (mem_init), this generalization of omap memory setup
|
||||
is necessary to support the new emif4 interface introduced in AM3517.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 16807ee411d83762804d075a3fe11f0a2b5eaf39
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:29 2010 -0400
|
||||
|
||||
omap3: Calculate CS1 size only when SDRC is
|
||||
|
||||
initialized for CS1
|
||||
|
||||
From: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
|
||||
The patch makes sure that size for SDRC CS1 gets calculated
|
||||
only when the CS1 SDRC is initialized.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 7ca4766bd7f74e5f7371fb331b573ec384230c1d
|
||||
Author: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Date: Mon Jun 7 15:20:19 2010 -0400
|
||||
|
||||
OMAP3EVM: Added NAND support
|
||||
|
||||
The EVMS have been shipping with NAND (instead of OneNAND) as default.
|
||||
So, this patch sets NAND as default.
|
||||
|
||||
To choose OneNAND, define CMD_ONENAND instead of CMD_NAND in the
|
||||
config file omap3_evm.h.
|
||||
|
||||
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit 04cbc19fedb55265d08cddea294c3b6d9f8b2d18
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:36 2010 -0400
|
||||
|
||||
TI: TNETV107X EVM initial support
|
||||
|
||||
TNETV107X is a Texas Instruments SoC based on an ARM1176 core, and with a
|
||||
bunch on on-chip integrated peripherals. This patch adds support for the
|
||||
TNETV107X EVM board.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit da1ec42aafcc821ce6b5d316a2d4105292960d6b
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:32 2010 -0400
|
||||
|
||||
ARM1176: TI: TNETV107X soc initial support
|
||||
|
||||
TNETV107X is a Texas Instruments SoC based on an ARM1176 core, and with a
|
||||
bunch on on-chip integrated peripherals. This is an initial commit with
|
||||
basic functionality, more commits with drivers, etc. to follow.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit b87996d24a41cfc15fea125e5c805163af4acba1
|
||||
Author: Cyril Chemparathy <cyril@ti.com>
|
||||
Date: Mon Jun 7 14:13:27 2010 -0400
|
||||
|
||||
ARM1176: Coexist with other ARM1176 platforms
|
||||
|
||||
The current ARM1176 CPU specific code is too specific to the SMDK6400
|
||||
architecture. The following changes were necessary prerequisites for the
|
||||
addition of other SoCs based on ARM1176.
|
||||
|
||||
Existing board's (SMDK6400) configuration has been modified to keep behavior
|
||||
unchanged despite these changes.
|
||||
|
||||
1. Peripheral port remap configurability
|
||||
The earlier code had hardcoded remap values specific to s3c64xx in start.S.
|
||||
This change makes the peripheral port remap addresses and sizes configurable.
|
||||
|
||||
2. U-Boot code relocation support
|
||||
Most architectures allow u-boot code to run initially at a different
|
||||
address (possibly in NOR) and then get relocated to its final resting place
|
||||
in RAM. Added support for this capability in ARM1176 architecture.
|
||||
|
||||
3. Disable TCM if necessary
|
||||
If a ROM based bootloader happened to have initialized TCM, we disable it here
|
||||
to keep things sane.
|
||||
|
||||
4. Remove unnecessary SoC specific includes
|
||||
ARM1176 code does not really need this SoC specific include. The presence
|
||||
of this include prevents builds on other ARM1176 archs.
|
||||
|
||||
5. Modified virt-to-phys conversion during MMU disable
|
||||
The original MMU disable code masks out too many bits from the load address
|
||||
when it tries to figure out the physical address of the jump target label.
|
||||
Consequently, it ends up branching to the wrong address after disabling the
|
||||
MMU.
|
||||
|
||||
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
|
||||
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
|
||||
|
||||
commit b5d289fc29842095d5cd0f82cceab1b0b2e824ba
|
||||
Author: Asen Dimov <dimov@ronetix.at>
|
||||
Date: Tue Apr 20 22:49:04 2010 +0300
|
||||
|
||||
add new board pm9g45
|
||||
|
||||
Add the new board PM9G45 from Ronetix GmbH.
|
||||
* AT91SAM9G45 MCU at 400Mhz.
|
||||
* 128MB DDR2 SDRAM
|
||||
* 256MB NAND
|
||||
* 10/100 MBits Ethernet DP83848
|
||||
* Serial number chip DS2401
|
||||
|
||||
The board is made as SODIMM200 module.
|
||||
For more info www.ronatix.at or info@ronetix.at.
|
||||
|
||||
Signed-off-by: Asen Dimov <dimov@ronetix.at>
|
||||
|
||||
commit f986325dd569faeaec4186f678d113505c5c4828
|
||||
Author: Ron Madrid <ron_madrid@sbcglobal.net>
|
||||
Date: Tue Jun 1 17:00:49 2010 -0700
|
||||
@ -13,6 +746,25 @@ Date: Tue Jun 1 17:00:49 2010 -0700
|
||||
Signed-off-by: Ron Madrid <ron_madrid@sbcglobal.net>
|
||||
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
|
||||
|
||||
commit 409a07c9d72b0d833c1cce264bdb4bb2628fe28e
|
||||
Author: George G. Davis <gdavis@mvista.com>
|
||||
Date: Tue May 11 10:15:36 2010 -0400
|
||||
|
||||
ARM1136: Fix cache_flush() error and correct cpu_init_crit() comments
|
||||
|
||||
The ARM1136 cache_flush() function uses the "mcr p15, 0, rn, c7, c7, 0"
|
||||
instruction which means "Invalidate Both Caches" when in fact the intent
|
||||
is to clean and invalidate all caches. So add an "mcr p15, 0, %0, c7,
|
||||
c10, 0" instruction to "Clean Entire Data Cache" prior to the "Invalidate
|
||||
Both Caches" instruction to insure that memory is consistent with any
|
||||
dirty cache lines.
|
||||
|
||||
Also fix a couple of "flush v*" comments in ARM1136 cpu_init_crit() so
|
||||
that they correctly describe the actual ARM1136 CP15 C7 Cache Operations
|
||||
used.
|
||||
|
||||
Signed-off-by: George G. Davis <gdavis@mvista.com>
|
||||
|
||||
commit 3057c6be5efda781a72ca04432e0a4ed6e670030
|
||||
Author: Kim Phillips <kim.phillips@freescale.com>
|
||||
Date: Fri Apr 23 12:20:11 2010 -0500
|
||||
|
10
MAINTAINERS
10
MAINTAINERS
@ -677,12 +677,6 @@ Sergey Lapin <slapin@ossfans.org>
|
||||
|
||||
afeb9260 ARM926EJS (AT91SAM9260 SoC)
|
||||
|
||||
Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
|
||||
imx31_phycore_eet i.MX31
|
||||
mx31ads i.MX31
|
||||
SMDK6400 S3C6400
|
||||
|
||||
Nishanth Menon <nm@ti.com>
|
||||
|
||||
omap3_sdp3430 ARM CORTEX-A8 (OMAP3xx SoC)
|
||||
@ -825,6 +819,10 @@ Unknown / orphaned boards:
|
||||
ixdp425 xscale Kyle Harris <kharris@nexus-tech.net> / dead address
|
||||
lubbock xscale Kyle Harris <kharris@nexus-tech.net> / dead address
|
||||
|
||||
imx31_phycore_eet i.MX31 Guennadi Liakhovetski <g.liakhovetski@gmx.de> / resigned
|
||||
mx31ads i.MX31 Guennadi Liakhovetski <g.liakhovetski@gmx.de> / resigned
|
||||
SMDK6400 S3C6400 Guennadi Liakhovetski <g.liakhovetski@gmx.de> / resigned
|
||||
|
||||
#########################################################################
|
||||
# x86 Systems: #
|
||||
# #
|
||||
|
8
Makefile
8
Makefile
@ -24,7 +24,7 @@
|
||||
VERSION = 2010
|
||||
PATCHLEVEL = 06
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc2
|
||||
EXTRAVERSION = -rc3
|
||||
ifneq "$(SUBLEVEL)" ""
|
||||
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
||||
else
|
||||
@ -385,8 +385,8 @@ $(VERSION_FILE):
|
||||
@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
|
||||
|
||||
$(TIMESTAMP_FILE):
|
||||
@date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
|
||||
@date +'#define U_BOOT_TIME "%T"' >> $@
|
||||
@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
|
||||
@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@
|
||||
|
||||
gdbtools:
|
||||
$(MAKE) -C tools/gdb all || exit 1
|
||||
@ -2476,6 +2476,6 @@ endif
|
||||
|
||||
backup:
|
||||
F=`basename $(TOPDIR)` ; cd .. ; \
|
||||
gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
|
||||
gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
|
||||
|
||||
#########################################################################
|
||||
|
@ -185,6 +185,7 @@ stack_setup:
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
#endif /* CONFIG_PRELOADER */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -276,6 +276,7 @@ stack_setup:
|
||||
sub r0, r0, #CONFIG_SYS_MALLOC_LEN /* malloc area */
|
||||
sub r0, r0, #CONFIG_SYS_GBL_DATA_SIZE /* bdinfo */
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -172,6 +172,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -204,6 +204,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -196,6 +196,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -260,10 +260,10 @@ int arch_misc_init(void)
|
||||
|
||||
/* Set CPIOs and MPPs - values provided by board
|
||||
include file */
|
||||
writel(ORION5X_MPP_BASE+0x00, ORION5X_MPP0_7);
|
||||
writel(ORION5X_MPP_BASE+0x04, ORION5X_MPP8_15);
|
||||
writel(ORION5X_MPP_BASE+0x50, ORION5X_MPP16_23);
|
||||
writel(ORION5X_GPIO_BASE+0x04, ORION5X_GPIO_OUT_ENABLE);
|
||||
writel(ORION5X_MPP0_7, ORION5X_MPP_BASE+0x00);
|
||||
writel(ORION5X_MPP8_15, ORION5X_MPP_BASE+0x04);
|
||||
writel(ORION5X_MPP16_23, ORION5X_MPP_BASE+0x50);
|
||||
writel(ORION5X_GPIO_OUT_ENABLE, ORION5X_GPIO_BASE+0x04);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -87,30 +87,30 @@
|
||||
lowlevel_init:
|
||||
|
||||
/* Use 'r4 as the base for internal register accesses */
|
||||
ldr r4, =ORION5X_REGS_PHY_BASE
|
||||
ldr r4, =ORION5X_REGS_PHY_BASE
|
||||
|
||||
/* move internal registers from the default 0xD0000000
|
||||
* to their intended location, defined by SoC */
|
||||
ldr r3, =0xD0000000
|
||||
add r3, r3, #0x20000
|
||||
str r4, [r3, #0x80]
|
||||
str r4, [r3, #0x80]
|
||||
|
||||
/* Use R3 as the base for DRAM registers */
|
||||
add r3, r4, #0x01000
|
||||
add r3, r4, #0x01000
|
||||
|
||||
/*DDR SDRAM Initialization Control */
|
||||
ldr r6, =0x00000001
|
||||
str r6, [r3, #0x480]
|
||||
|
||||
/* Use R3 as the base for PCI registers */
|
||||
add r3, r4, #0x31000
|
||||
add r3, r4, #0x31000
|
||||
|
||||
/* Disable arbiter */
|
||||
ldr r6, =0x00000030
|
||||
str r6, [r3, #0xd00]
|
||||
|
||||
/* Use R3 as the base for DRAM registers */
|
||||
add r3, r4, #0x01000
|
||||
add r3, r4, #0x01000
|
||||
|
||||
/* set all dram windows to 0 */
|
||||
mov r6, #0
|
||||
@ -127,63 +127,63 @@ lowlevel_init:
|
||||
ldr r6, =SDRAM_CONTROL
|
||||
str r6, [r3, #0x404]
|
||||
|
||||
/* 3) Write SDRAM address control register */
|
||||
/* 3) Write SDRAM address control register */
|
||||
ldr r6, =SDRAM_ADDR_CTRL
|
||||
str r6, [r3, #0x410]
|
||||
|
||||
/* 4) Write SDRAM bank 0 size register */
|
||||
/* 4) Write SDRAM bank 0 size register */
|
||||
ldr r6, =SDRAM_BANK0_SIZE
|
||||
str r6, [r3, #0x504]
|
||||
/* keep other banks disabled */
|
||||
|
||||
/* 5) Write SDRAM open pages control register */
|
||||
/* 5) Write SDRAM open pages control register */
|
||||
ldr r6, =SDRAM_OPEN_PAGE_EN
|
||||
str r6, [r3, #0x414]
|
||||
|
||||
/* 6) Write SDRAM timing Low register */
|
||||
/* 6) Write SDRAM timing Low register */
|
||||
ldr r6, =SDRAM_TIME_CTRL_LOW
|
||||
str r6, [r3, #0x408]
|
||||
|
||||
/* 7) Write SDRAM timing High register */
|
||||
/* 7) Write SDRAM timing High register */
|
||||
ldr r6, =SDRAM_TIME_CTRL_HI
|
||||
str r6, [r3, #0x40C]
|
||||
|
||||
/* 8) Write SDRAM mode register */
|
||||
/* The CPU must not attempt to change the SDRAM Mode register setting */
|
||||
/* prior to DRAM controller completion of the DRAM initialization */
|
||||
/* sequence. To guarantee this restriction, it is recommended that */
|
||||
/* the CPU sets the SDRAM Operation register to NOP command, performs */
|
||||
/* read polling until the register is back in Normal operation value, */
|
||||
/* and then sets SDRAM Mode register to its new value. */
|
||||
/* 8) Write SDRAM mode register */
|
||||
/* The CPU must not attempt to change the SDRAM Mode register setting */
|
||||
/* prior to DRAM controller completion of the DRAM initialization */
|
||||
/* sequence. To guarantee this restriction, it is recommended that */
|
||||
/* the CPU sets the SDRAM Operation register to NOP command, performs */
|
||||
/* read polling until the register is back in Normal operation value, */
|
||||
/* and then sets SDRAM Mode register to its new value. */
|
||||
|
||||
/* 8.1 write 'nop' to SDRAM operation */
|
||||
ldr r6, =SDRAM_OP_NOP
|
||||
ldr r6, =SDRAM_OP_NOP
|
||||
str r6, [r3, #0x418]
|
||||
|
||||
/* 8.2 poll SDRAM operation until back in 'normal' mode. */
|
||||
/* 8.2 poll SDRAM operation until back in 'normal' mode. */
|
||||
1:
|
||||
ldr r6, [r3, #0x418]
|
||||
cmp r6, #0
|
||||
bne 1b
|
||||
|
||||
/* 8.3 Now its safe to write new value to SDRAM Mode register */
|
||||
/* 8.3 Now its safe to write new value to SDRAM Mode register */
|
||||
ldr r6, =SDRAM_MODE
|
||||
str r6, [r3, #0x41C]
|
||||
|
||||
/* 8.4 Set new mode */
|
||||
ldr r6, =SDRAM_OP_SETMODE
|
||||
/* 8.4 Set new mode */
|
||||
ldr r6, =SDRAM_OP_SETMODE
|
||||
str r6, [r3, #0x418]
|
||||
|
||||
/* 8.5 poll SDRAM operation until back in 'normal' mode. */
|
||||
/* 8.5 poll SDRAM operation until back in 'normal' mode. */
|
||||
2:
|
||||
ldr r6, [r3, #0x418]
|
||||
cmp r6, #0
|
||||
bne 2b
|
||||
|
||||
/* DDR SDRAM Address/Control Pads Calibration */
|
||||
/* DDR SDRAM Address/Control Pads Calibration */
|
||||
ldr r6, [r3, #0x4C0]
|
||||
|
||||
/* Set Bit [31] to make the register writable */
|
||||
/* Set Bit [31] to make the register writable */
|
||||
orr r6, r6, #SDRAM_PAD_CTRL_WR_EN
|
||||
str r6, [r3, #0x4C0]
|
||||
|
||||
@ -192,20 +192,20 @@ lowlevel_init:
|
||||
bic r6, r6, #SDRAM_PAD_CTRL_DRVN_MASK
|
||||
bic r6, r6, #SDRAM_PAD_CTRL_DRVP_MASK
|
||||
|
||||
/* Get the final N locked value of driving strength [22:17] */
|
||||
mov r1, r6
|
||||
mov r1, r1, LSL #9
|
||||
mov r1, r1, LSR #26 /* r1[5:0]<DrvN> = r3[22:17]<LockN> */
|
||||
orr r1, r1, r1, LSL #6 /* r1[11:6]<DrvP> = r1[5:0]<DrvN> */
|
||||
/* Get the final N locked value of driving strength [22:17] */
|
||||
mov r1, r6
|
||||
mov r1, r1, LSL #9
|
||||
mov r1, r1, LSR #26 /* r1[5:0]<DrvN> = r3[22:17]<LockN> */
|
||||
orr r1, r1, r1, LSL #6 /* r1[11:6]<DrvP> = r1[5:0]<DrvN> */
|
||||
|
||||
/* Write to both <DrvN> bits [5:0] and <DrvP> bits [11:6] */
|
||||
/* Write to both <DrvN> bits [5:0] and <DrvP> bits [11:6] */
|
||||
orr r6, r6, r1
|
||||
str r6, [r3, #0x4C0]
|
||||
|
||||
/* DDR SDRAM Data Pads Calibration */
|
||||
/* DDR SDRAM Data Pads Calibration */
|
||||
ldr r6, [r3, #0x4C4]
|
||||
|
||||
/* Set Bit [31] to make the register writable */
|
||||
/* Set Bit [31] to make the register writable */
|
||||
orr r6, r6, #SDRAM_PAD_CTRL_WR_EN
|
||||
str r6, [r3, #0x4C4]
|
||||
|
||||
@ -214,21 +214,21 @@ lowlevel_init:
|
||||
bic r6, r6, #SDRAM_PAD_CTRL_DRVN_MASK
|
||||
bic r6, r6, #SDRAM_PAD_CTRL_DRVP_MASK
|
||||
|
||||
/* Get the final N locked value of driving strength [22:17] */
|
||||
mov r1, r6
|
||||
mov r1, r1, LSL #9
|
||||
mov r1, r1, LSR #26
|
||||
orr r1, r1, r1, LSL #6 /* r1[5:0] = r3[22:17]<LockN> */
|
||||
/* Get the final N locked value of driving strength [22:17] */
|
||||
mov r1, r6
|
||||
mov r1, r1, LSL #9
|
||||
mov r1, r1, LSR #26
|
||||
orr r1, r1, r1, LSL #6 /* r1[5:0] = r3[22:17]<LockN> */
|
||||
|
||||
/* Write to both <DrvN> bits [5:0] and <DrvP> bits [11:6] */
|
||||
/* Write to both <DrvN> bits [5:0] and <DrvP> bits [11:6] */
|
||||
orr r6, r6, r1
|
||||
|
||||
str r6, [r3, #0x4C4]
|
||||
|
||||
/* Implement Guideline (GL# MEM-3) Drive Strength Value */
|
||||
/* Relevant for: 88F5181-A1/B0/B1 and 88F5281-A0/B0 */
|
||||
/* Implement Guideline (GL# MEM-3) Drive Strength Value */
|
||||
/* Relevant for: 88F5181-A1/B0/B1 and 88F5281-A0/B0 */
|
||||
|
||||
ldr r1, =DDR1_PAD_STRENGTH_DEFAULT
|
||||
ldr r1, =DDR1_PAD_STRENGTH_DEFAULT
|
||||
|
||||
/* Enable writes to DDR SDRAM Addr/Ctrl Pads Calibration register */
|
||||
ldr r6, [r3, #0x4C0]
|
||||
@ -252,42 +252,42 @@ lowlevel_init:
|
||||
orr r6, r6, r1
|
||||
str r6, [r3, #0x4C4]
|
||||
|
||||
/* Implement Guideline (GL# MEM-4) DQS Reference Delay Tuning */
|
||||
/* Relevant for: 88F5181-A1/B0/B1 and 88F5281-A0/B0 */
|
||||
/* Implement Guideline (GL# MEM-4) DQS Reference Delay Tuning */
|
||||
/* Relevant for: 88F5181-A1/B0/B1 and 88F5281-A0/B0 */
|
||||
|
||||
/* Get the "sample on reset" register for the DDR frequancy */
|
||||
/* Get the "sample on reset" register for the DDR frequancy */
|
||||
ldr r3, =0x10000
|
||||
ldr r6, [r3, #0x010]
|
||||
ldr r1, =MSAR_ARMDDRCLCK_MASK
|
||||
and r1, r6, r1
|
||||
ldr r6, [r3, #0x010]
|
||||
ldr r1, =MSAR_ARMDDRCLCK_MASK
|
||||
and r1, r6, r1
|
||||
|
||||
ldr r6, =FTDLL_DDR1_166MHZ
|
||||
cmp r1, #MSAR_ARMDDRCLCK_333_167
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_500_167
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_667_167
|
||||
beq 3f
|
||||
ldr r6, =FTDLL_DDR1_166MHZ
|
||||
cmp r1, #MSAR_ARMDDRCLCK_333_167
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_500_167
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_667_167
|
||||
beq 3f
|
||||
|
||||
ldr r6, =FTDLL_DDR1_200MHZ
|
||||
cmp r1, #MSAR_ARMDDRCLCK_400_200_1
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_400_200
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_600_200
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_800_200
|
||||
beq 3f
|
||||
ldr r6, =FTDLL_DDR1_200MHZ
|
||||
cmp r1, #MSAR_ARMDDRCLCK_400_200_1
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_400_200
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_600_200
|
||||
beq 3f
|
||||
cmp r1, #MSAR_ARMDDRCLCK_800_200
|
||||
beq 3f
|
||||
|
||||
ldr r6, =0
|
||||
ldr r6, =0
|
||||
|
||||
3:
|
||||
/* Use R3 as the base for DRAM registers */
|
||||
add r3, r4, #0x01000
|
||||
add r3, r4, #0x01000
|
||||
|
||||
ldr r2, [r3, #0x484]
|
||||
orr r2, r2, r6
|
||||
str r2, [r3, #0x484]
|
||||
|
||||
/* Return to U-boot via saved link register */
|
||||
mov pc, lr
|
||||
mov pc, lr
|
||||
|
@ -196,7 +196,7 @@ stack_setup:
|
||||
#endif
|
||||
#endif /* CONFIG_PRELOADER */
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, r0, #7 /* 8-byte align stack for ABI compliance */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -163,6 +163,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -130,7 +130,7 @@ finished_inval:
|
||||
|
||||
|
||||
l2_cache_enable:
|
||||
push {r0, r1, r2, lr}
|
||||
stmfd r13!, {r0, r1, r2, lr}
|
||||
@ ES2 onwards we can disable/enable L2 ourselves
|
||||
bl get_cpu_rev
|
||||
cmp r0, #CPU_3XX_ES20
|
||||
@ -157,11 +157,11 @@ l2_cache_enable_EARLIER_THAN_ES2:
|
||||
mov ip, r3
|
||||
str r3, [sp, #4]
|
||||
l2_cache_enable_END:
|
||||
pop {r1, r2, r3, pc}
|
||||
ldmfd r13!, {r1, r2, r3, pc}
|
||||
|
||||
|
||||
l2_cache_disable:
|
||||
push {r0, r1, r2, lr}
|
||||
stmfd r13!, {r0, r1, r2, lr}
|
||||
@ ES2 onwards we can disable/enable L2 ourselves
|
||||
bl get_cpu_rev
|
||||
cmp r0, #CPU_3XX_ES20
|
||||
@ -188,4 +188,4 @@ l2_cache_disable_EARLIER_THAN_ES2:
|
||||
mov ip, r3
|
||||
str r3, [sp, #4]
|
||||
l2_cache_disable_END:
|
||||
pop {r1, r2, r3, pc}
|
||||
ldmfd r13!, {r1, r2, r3, pc}
|
||||
|
@ -164,7 +164,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 @ leave 3 words for abort-stack
|
||||
and sp, sp, #~7 @ 8 byte alinged for (ldr/str)d
|
||||
bic sp, sp, #7 @ 8-byte alignment for ABI compliance
|
||||
|
||||
/* Clear BSS (if any). Is below tx (watch load addr - need space) */
|
||||
clear_bss:
|
||||
|
@ -161,6 +161,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -289,6 +289,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -178,6 +178,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -140,10 +140,8 @@ stack_setup:
|
||||
#ifdef CONFIG_USE_IRQ
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif /* CONFIG_USE_IRQ */
|
||||
sub r0, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, r0, #7 /* NOTE: stack MUST be aligned to */
|
||||
/* 8 bytes in case we want to use */
|
||||
/* 64bit datatypes (eg. VSPRINTF64) */
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -163,6 +163,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
ldr pc, _start_armboot
|
||||
|
||||
|
@ -153,6 +153,7 @@ stack_setup:
|
||||
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
|
||||
#endif
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
|
||||
|
||||
clear_bss:
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
|
@ -248,13 +248,13 @@ extern void __iounmap(void *addr);
|
||||
* iomem_to_phys(off)
|
||||
*/
|
||||
#ifdef iomem_valid_addr
|
||||
#define __arch_ioremap(off,sz,nocache) \
|
||||
({ \
|
||||
unsigned long _off = (off), _size = (sz); \
|
||||
void *_ret = (void *)0; \
|
||||
if (iomem_valid_addr(_off, _size)) \
|
||||
_ret = __ioremap(iomem_to_phys(_off),_size,0); \
|
||||
_ret; \
|
||||
#define __arch_ioremap(off,sz,nocache) \
|
||||
({ \
|
||||
unsigned long _off = (off), _size = (sz); \
|
||||
void *_ret = (void *)0; \
|
||||
if (iomem_valid_addr(_off, _size)) \
|
||||
_ret = __ioremap(iomem_to_phys(_off),_size,nocache); \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#define __arch_iounmap __iounmap
|
||||
|
@ -33,9 +33,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
defined (CONFIG_CMDLINE_TAG) || \
|
||||
defined (CONFIG_INITRD_TAG) || \
|
||||
defined (CONFIG_SERIAL_TAG) || \
|
||||
defined (CONFIG_REVISION_TAG) || \
|
||||
defined (CONFIG_VFD) || \
|
||||
defined (CONFIG_LCD)
|
||||
defined (CONFIG_REVISION_TAG)
|
||||
static void setup_start_tag (bd_t *bd);
|
||||
|
||||
# ifdef CONFIG_SETUP_MEMORY_TAGS
|
||||
@ -49,10 +47,6 @@ static void setup_initrd_tag (bd_t *bd, ulong initrd_start,
|
||||
# endif
|
||||
static void setup_end_tag (bd_t *bd);
|
||||
|
||||
# if defined (CONFIG_VFD) || defined (CONFIG_LCD)
|
||||
static void setup_videolfb_tag (gd_t *gd);
|
||||
# endif
|
||||
|
||||
static struct tag *params;
|
||||
#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */
|
||||
|
||||
@ -87,9 +81,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||
defined (CONFIG_CMDLINE_TAG) || \
|
||||
defined (CONFIG_INITRD_TAG) || \
|
||||
defined (CONFIG_SERIAL_TAG) || \
|
||||
defined (CONFIG_REVISION_TAG) || \
|
||||
defined (CONFIG_LCD) || \
|
||||
defined (CONFIG_VFD)
|
||||
defined (CONFIG_REVISION_TAG)
|
||||
setup_start_tag (bd);
|
||||
#ifdef CONFIG_SERIAL_TAG
|
||||
setup_serial_tag (¶ms);
|
||||
@ -106,9 +98,6 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||
#ifdef CONFIG_INITRD_TAG
|
||||
if (images->rd_start && images->rd_end)
|
||||
setup_initrd_tag (bd, images->rd_start, images->rd_end);
|
||||
#endif
|
||||
#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
|
||||
setup_videolfb_tag ((gd_t *) gd);
|
||||
#endif
|
||||
setup_end_tag (bd);
|
||||
#endif
|
||||
@ -136,9 +125,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||
defined (CONFIG_CMDLINE_TAG) || \
|
||||
defined (CONFIG_INITRD_TAG) || \
|
||||
defined (CONFIG_SERIAL_TAG) || \
|
||||
defined (CONFIG_REVISION_TAG) || \
|
||||
defined (CONFIG_LCD) || \
|
||||
defined (CONFIG_VFD)
|
||||
defined (CONFIG_REVISION_TAG)
|
||||
static void setup_start_tag (bd_t *bd)
|
||||
{
|
||||
params = (struct tag *) bd->bi_boot_params;
|
||||
@ -214,30 +201,6 @@ static void setup_initrd_tag (bd_t *bd, ulong initrd_start, ulong initrd_end)
|
||||
}
|
||||
#endif /* CONFIG_INITRD_TAG */
|
||||
|
||||
|
||||
#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
|
||||
extern ulong calc_fbsize (void);
|
||||
static void setup_videolfb_tag (gd_t *gd)
|
||||
{
|
||||
/* An ATAG_VIDEOLFB node tells the kernel where and how large
|
||||
* the framebuffer for video was allocated (among other things).
|
||||
* Note that a _physical_ address is passed !
|
||||
*
|
||||
* We only use it to pass the address and size, the other entries
|
||||
* in the tag_videolfb are not of interest.
|
||||
*/
|
||||
params->hdr.tag = ATAG_VIDEOLFB;
|
||||
params->hdr.size = tag_size (tag_videolfb);
|
||||
|
||||
params->u.videolfb.lfb_base = (u32) gd->fb_base;
|
||||
/* Fb size is calculated according to parameters for our panel
|
||||
*/
|
||||
params->u.videolfb.lfb_size = calc_fbsize();
|
||||
|
||||
params = tag_next (params);
|
||||
}
|
||||
#endif /* CONFIG_VFD || CONFIG_LCD */
|
||||
|
||||
#ifdef CONFIG_SERIAL_TAG
|
||||
void setup_serial_tag (struct tag **tmp)
|
||||
{
|
||||
|
@ -30,6 +30,11 @@ SOBJS = io.o firmware_sc_task_bestcomm.impl.o
|
||||
COBJS = i2c.o traps.o cpu.o cpu_init.o ide.o interrupts.o \
|
||||
loadtask.o pci_mpc5200.o serial.o speed.o usb_ohci.o usb.o
|
||||
|
||||
# Workaround for local bus unaligned access problem on MPC5200
|
||||
#ifdef CONFIG_MPC5200
|
||||
COBJS += memcpy_mpc5200.o
|
||||
#endif
|
||||
|
||||
SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
|
||||
START := $(addprefix $(obj),$(START))
|
||||
|
71
arch/powerpc/cpu/mpc5xxx/memcpy_mpc5200.c
Normal file
71
arch/powerpc/cpu/mpc5xxx/memcpy_mpc5200.c
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* (C) Copyright 2010
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is a workaround for issues on the MPC5200, where unaligned
|
||||
* 32-bit-accesses to the local bus will deliver corrupted data. This
|
||||
* happens for example when trying to use memcpy() from an odd NOR
|
||||
* flash address; the behaviour can be also seen when using "md" on an
|
||||
* odd NOR flash address (but there it is not a bug in U-Boot, which
|
||||
* only shows the behaviour of this processor).
|
||||
*
|
||||
* For memcpy(), we test if either the source or the target address
|
||||
* are not 32 bit aligned, and - if so - if the source address is in
|
||||
* NOR flash: in this case we perform a byte-wise (slow) then; for
|
||||
* aligned operations of non-flash areas we use the optimized (fast)
|
||||
* real __memcpy(). This way we minimize the performance impact of
|
||||
* this workaround.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <flash.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
void *memcpy(void *trg, const void *src, size_t len)
|
||||
{
|
||||
extern void* __memcpy(void *, const void *, size_t);
|
||||
char *s = (char *)src;
|
||||
char *t = (char *)trg;
|
||||
void *dest = (void *)src;
|
||||
|
||||
/*
|
||||
* Check is source address is in flash:
|
||||
* If not, we use the fast assembler code
|
||||
*/
|
||||
if (((((unsigned long)s & 3) == 0) /* source aligned */
|
||||
&& /* AND */
|
||||
(((unsigned long)t & 3) == 0)) /* target aligned, */
|
||||
|| /* or */
|
||||
(addr2info((ulong)s) == NULL)) { /* source not in flash */
|
||||
return __memcpy(trg, src, len);
|
||||
}
|
||||
|
||||
/*
|
||||
* Copying from flash, perform byte by byte copy.
|
||||
*/
|
||||
while (len-- > 0)
|
||||
*t++ = *s++;
|
||||
|
||||
return dest;
|
||||
}
|
@ -43,6 +43,11 @@ COBJS-y += time.o
|
||||
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
|
||||
|
||||
# Workaround for local bus unaligned access problem on MPC5200
|
||||
ifdef CONFIG_MPC5200
|
||||
$(obj)ppcstring.o: AFLAGS += -Dmemcpy=__memcpy
|
||||
endif
|
||||
|
||||
$(LIB): $(obj).depend $(OBJS)
|
||||
@if ! $(CROSS_COMPILE)readelf -S $(OBJS) | grep -q '\.fixup.*PROGBITS';\
|
||||
then \
|
||||
|
@ -32,7 +32,7 @@ static ulong get_arg(char *s, int w)
|
||||
{
|
||||
ulong *p;
|
||||
|
||||
/*
|
||||
/*
|
||||
* if the parameter starts with a '*' then assume
|
||||
* it is a pointer to the value we want
|
||||
*/
|
||||
|
@ -520,6 +520,7 @@ static int init_volumes(struct ubi_device *ubi, const struct ubi_scan_info *si,
|
||||
vol->reserved_pebs = be32_to_cpu(vtbl[i].reserved_pebs);
|
||||
vol->alignment = be32_to_cpu(vtbl[i].alignment);
|
||||
vol->data_pad = be32_to_cpu(vtbl[i].data_pad);
|
||||
vol->upd_marker = vtbl[i].upd_marker;
|
||||
vol->vol_type = vtbl[i].vol_type == UBI_VID_DYNAMIC ?
|
||||
UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME;
|
||||
vol->name_len = be16_to_cpu(vtbl[i].name_len);
|
||||
|
@ -25,8 +25,6 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
extern int errno;
|
||||
|
||||
#if !defined(__WIN32__) && !defined(__MINGW32__)
|
||||
# include <sys/mman.h>
|
||||
#endif
|
||||
|
@ -60,6 +60,8 @@ int eth_getenv_enetaddr_by_index(int index, uchar *enetaddr)
|
||||
return eth_getenv_enetaddr(enetvar, enetaddr);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_MULTI
|
||||
|
||||
static int eth_mac_skip(int index)
|
||||
{
|
||||
char enetvar[15];
|
||||
@ -68,8 +70,6 @@ static int eth_mac_skip(int index)
|
||||
return ((skip_state = getenv(enetvar)) != NULL);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_MULTI
|
||||
|
||||
/*
|
||||
* CPU and board-specific Ethernet initializations. Aliased function
|
||||
* signals caller to move on
|
||||
|
@ -1201,7 +1201,8 @@ static IP_t *__NetDefragment(IP_t *ip, int *lenp)
|
||||
h = payload + h->next_hole;
|
||||
}
|
||||
|
||||
if (offset8 + (len / 8) <= h - payload) {
|
||||
/* last fragment may be 1..7 bytes, the "+7" forces acceptance */
|
||||
if (offset8 + ((len + 7) / 8) <= h - payload) {
|
||||
/* no overlap with holes (dup fragment?) */
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user