Эх сурвалжийг харах

Merge branch 'master' of /home/stefan/git/u-boot/u-boot

Stefan Roese 17 жил өмнө
parent
commit
ac5ba41c22
93 өөрчлөгдсөн 2785 нэмэгдсэн , 870 устгасан
  1. 697 0
      CHANGELOG
  2. 5 0
      CREDITS
  3. 1 1
      MAKEALL
  4. 2 0
      Makefile
  5. 71 70
      README
  6. 1 1
      board/MigoR/Makefile
  7. 2 6
      board/apollon/apollon.c
  8. 1 1
      board/cm5200/cm5200.c
  9. 1 1
      board/davinci/sffsdr/Makefile
  10. 5 6
      board/davinci/sffsdr/config.mk
  11. 0 212
      board/davinci/sffsdr/dv_board.c
  12. 310 0
      board/davinci/sffsdr/sffsdr.c
  13. 27 0
      board/freescale/mpc8260ads/mpc8260ads.c
  14. 1 1
      board/ids8247/ids8247.c
  15. 3 3
      board/mgcoge/mgcoge.c
  16. 4 4
      board/mgsuvd/mgsuvd.c
  17. 1 1
      board/mpr2/Makefile
  18. 1 1
      board/ms7720se/Makefile
  19. 0 1
      board/ms7720se/ms7720se.c
  20. 1 1
      board/ms7722se/Makefile
  21. 4 4
      board/ms7722se/ms7722se.c
  22. 1 1
      board/ms7750se/Makefile
  23. 1 1
      board/r2dplus/Makefile
  24. 15 13
      board/r2dplus/r2dplus.c
  25. 1 1
      board/r7780mp/Makefile
  26. 10 12
      board/r7780mp/r7780mp.c
  27. 1 1
      board/sh7763rdp/Makefile
  28. 9 8
      board/sh7763rdp/sh7763rdp.c
  29. 4 4
      common/cmd_fdt.c
  30. 31 22
      common/env_common.c
  31. 5 17
      common/env_nand.c
  32. 1 1
      common/main.c
  33. 8 7
      cpu/arm920t/at91rm9200/lxt972.c
  34. 20 34
      cpu/arm926ejs/davinci/lxt972.c
  35. 7 3
      cpu/arm926ejs/davinci/nand.c
  36. 0 1
      cpu/at32ap/Makefile
  37. 12 0
      cpu/mpc8260/pci.c
  38. 20 0
      cpu/mpc83xx/cpu.c
  39. 30 0
      cpu/mpc85xx/cpu.c
  40. 4 4
      cpu/mpc85xx/traps.c
  41. 26 0
      cpu/mpc86xx/cpu.c
  42. 1 1
      cpu/pxa/start.S
  43. 1 1
      cpu/sh3/Makefile
  44. 1 1
      cpu/sh4/Makefile
  45. 46 0
      drivers/mmc/Makefile
  46. 0 0
      drivers/mmc/atmel_mci.c
  47. 0 0
      drivers/mmc/atmel_mci.h
  48. 1 1
      drivers/mtd/jedec_flash.c
  49. 68 35
      drivers/mtd/nand/nand_base.c
  50. 2 2
      drivers/mtd/nand/nand_bbt.c
  51. 50 45
      drivers/mtd/onenand/onenand_base.c
  52. 3 3
      drivers/mtd/onenand/onenand_bbt.c
  53. 1 0
      drivers/net/Makefile
  54. 2 0
      drivers/net/e1000.c
  55. 2 1
      drivers/net/e1000.h
  56. 5 9
      drivers/net/ne2000.c
  57. 19 23
      drivers/net/ns7520_eth.c
  58. 28 31
      drivers/net/ns9750_eth.c
  59. 603 0
      drivers/net/sh_eth.c
  60. 446 0
      drivers/net/sh_eth.h
  61. 6 1
      drivers/serial/serial.c
  62. 0 1
      include/asm-sparc/io.h
  63. 3 0
      include/asm-sparc/types.h
  64. 10 5
      include/common.h
  65. 7 0
      include/configs/MPC8260ADS.h
  66. 0 4
      include/configs/MigoR.h
  67. 1 0
      include/configs/atngw100.h
  68. 1 0
      include/configs/atstk1002.h
  69. 1 0
      include/configs/atstk1003.h
  70. 1 0
      include/configs/atstk1004.h
  71. 1 0
      include/configs/atstk1006.h
  72. 21 48
      include/configs/davinci_sffsdr.h
  73. 0 4
      include/configs/ms7722se.h
  74. 9 33
      include/configs/r2dplus.h
  75. 23 18
      include/configs/r7780mp.h
  76. 0 10
      include/configs/sh7763rdp.h
  77. 5 2
      include/environment.h
  78. 2 2
      include/linux/mtd/mtd.h
  79. 1 1
      include/lmb.h
  80. 0 100
      include/lxt971a.h
  81. 4 1
      include/nand.h
  82. 1 0
      include/ns7520_eth.h
  83. 1 0
      include/ns9750_eth.h
  84. 1 0
      include/pci_ids.h
  85. 21 13
      lib_generic/display_options.c
  86. 3 3
      lib_generic/lmb.c
  87. 11 0
      lib_mips/bootm.c
  88. 7 6
      lib_ppc/bootm.c
  89. 1 1
      lib_sh/Makefile
  90. 3 1
      lib_sh/board.c
  91. 1 1
      lib_sh/time.c
  92. 15 17
      net/eth.c
  93. 1 1
      net/tftp.c

+ 697 - 0
CHANGELOG

@@ -1,3 +1,561 @@
+commit 8915f1189c1d29d8be7f4de325702d90a8988219
+Author: Paul Gortmaker <paul.gortmaker@windriver.com>
+Date:	Wed Jul 9 17:50:45 2008 -0400
+
+    e1000: add support for 82545GM 64bit PCI-X copper variant
+
+    This PCI-X e1000 variant works by just adding in the correct
+    PCI IDs in the appropriate places.
+
+    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
+
+commit 21ae6ca0315afdbc65dc3e95ffd5763e6773d030
+Author: Daniel Hellstrom <daniel@gaisler.com>
+Date:	Wed Jul 9 12:34:11 2008 +0000
+
+    SPARC: Build error fix
+
+    (introduced by commit 391fd93ab23e15ab3dd58a54f5b609024009c378)
+
+    This patch makes SPARC targets build again. It is caused by
+    phys_addr_t and phys_size_t being defined in the wrong header
+    file. include/lmb.h need those typedefs to build.
+
+    Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
+
+commit 11ccc33fa21acce108f6b4a6936e3271af904c64
+Author: Marcel Ziswiler <marcel@ziswiler.com>
+Date:	Wed Jul 9 08:17:15 2008 +0200
+
+    Many spelling fixes in README.
+
+    Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com>
+
+commit dbab0691d2533560f7e91b92ae844046a9ad1df3
+Author: Marcel Ziswiler <marcel@ziswiler.com>
+Date:	Wed Jul 9 08:17:06 2008 +0200
+
+    Minor spelling fix in comment.
+
+    Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com>
+
+commit 89134ea1f67208fd3160bdbb0b9eaab4eab98484
+Author: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+Date:	Tue Jul 8 14:54:58 2008 -0400
+
+    Round the serial port clock divisor value returned by calc_divisor()
+
+    Round the serial port clock divisor value returned by
+    calc_divisor().
+
+    Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+    Signed-off-by: John Roberts <john.roberts@pwav.com>
+
+commit 9d2e3947b2944e5bb85b4335533f8c93c58445fe
+Author: Scott Wood <scottwood@freescale.com>
+Date:	Wed Jul 9 17:47:52 2008 -0500
+
+    NAND: ifdef-protect most of nand.h when using legacy NAND.
+
+    Some macros such as NAND_CTL_SETALE conflict between current and legacy
+    NAND, being defined by the subsystem in the former case and the board
+    config file in the latter.
+
+    Signed-off-by: Scott Wood <scottwood@freescale.com>
+
+commit 2b1fa9d383cbbb7d347c1583bd6ca4e181ba8e9e
+Author: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+Date:	Tue Jul 8 11:02:05 2008 -0400
+
+    ARM: Fix for wrong patch version applied for Lyrtech SFF-SDR board (ARM926EJS)
+
+    ARM: Fix for incorrect version of patch applied when
+    adding support for the Lyrtech SFF-SDR board.
+
+    Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+    Signed-off-by: Philip Balister, OpenSDR <philip@opensdr.com>
+
+commit 47042b363ee5022b8180c65d3f4558e7972c79cd
+Author: Kyungmin Park <kmpark@infradead.org>
+Date:	Tue Jul 8 09:08:40 2008 +0900
+
+    Remove useless print message at apollon
+
+    Remove useless print message at apollon
+
+    Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
+
+commit 98874ff329d4a5b32c467b43f6e966e1aa68479f
+Author: Andy Fleming <afleming@freescale.com>
+Date:	Mon Jul 7 14:24:39 2008 -0500
+
+    Fix LMB type issues
+
+    The LMB code now uses phys_addr_t and phys_size_t.	Also, there were a couple
+    of casting problems in the bootm code that called the LMB functions.
+
+    Signed-off-by: Andy Fleming <afleming@freescale.com>
+
+commit da8693a91b8eef75ade8de50a1b2ce035bc5fb54
+Author: Kumar Gala <galak@kernel.crashing.org>
+Date:	Mon Jul 7 09:39:06 2008 -0500
+
+    Fix compiler warnings
+
+    gcc-4.3.x generates the following:
+
+    bootm.c: In function 'do_bootm_linux':
+    bootm.c:208: warning: cast from pointer to integer of different size
+    bootm.c:215: warning: cast from pointer to integer of different size
+
+    Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
+
+commit 5bb12dbd7ae03189b6c13d8737b5a1b37c3df698
+Author: Harald Welte <laforge@gnumonks.org>
+Date:	Mon Jul 7 15:40:39 2008 +0800
+
+    Remove code duplication for setting the default environment
+
+    common/env_common.c (default_env): new function that resets the environment to
+		    the default value
+    common/env_common.c (env_relocate): use default_env instead of own copy
+    common/env_nand.c (env_relocate_spec): use default_env instead of own copy
+    include/environment.h: added default_env prototype
+
+    Signed-off-by: Werner Almesberger <werner@openmoko.org>
+    Signed-off-by: Harald Welte <laforge@openmoko.org>
+
+commit 99c2b434d37863df5dda5207a53760c6506fc2be
+Author: Marcel Ziswiler <marcel@ziswiler.com>
+Date:	Sun Jun 22 16:13:46 2008 +0200
+
+    NAND: Fix warning due to missing env_ptr casts to u_char * in env_nand.c.
+
+    The writeenv() and readenv() calls introduced by the recently added bad block
+    management for environment variables were missing casts therefore producing
+    compile time warnings.
+    While at it fixing some typo in a comment and indentation.
+
+    Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com>
+    Signed-off-by: Scott Wood <scottwood@freescale.com>
+
+commit 3167c5386ea1c98b638be5d8763ef6d5938ef1bd
+Author: Scott Wood <scottwood@freescale.com>
+Date:	Fri Jun 20 12:38:57 2008 -0500
+
+    NAND: Rename DEBUG to MTDDEBUG to avoid namespace pollution.
+
+    This is particularly problematic now that non-NAND-specific code is
+    including <nand.h>, and thus all debugging code is being compiled
+    regardless of whether it was requested, as reported by Scott McNutt
+    <smcnutt@psyent.com>.
+
+    Signed-off-by: Scott Wood <scottwood@freescale.com>
+
+commit c3bf1ad7baa1b0dd989dedc260b7098b6089ae05
+Author: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Date:	Thu Jun 12 19:27:58 2008 +0200
+
+    mmc: Move atmel_mci driver into drivers/mmc
+
+    This makes it easier to use the driver on other platforms.
+
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+    Acked-by: Jean-Chritophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit d2d54ea449639f3d1a6007e333ab9fcc609a18f0
+Author: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Date:	Thu Jun 12 19:27:57 2008 +0200
+
+    avr32: Use CONFIG_ATMEL_MCI to select the atmel_mci driver
+
+    After we move the atmel_mci driver into drivers/mmc, we can't select
+    it with CONFIG_MMC anymore. Introduce a new symbol specifically for
+    this driver so that there's no ambiguity.
+
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+    Acked-by: Jean-Chritophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit 5ce13051a48c62bda9723df3b4778c492fb47f36
+Author: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Date:	Thu Jun 12 19:27:56 2008 +0200
+
+    Create drivers/mmc subdirectory
+
+    In order to consolidate more of the various MMC drivers around the
+    tree, we must first have a common place to put them.
+
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+    Acked-by: Jean-Chritophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit b502611b51f02718c2d1117d4981dabceb5af6de
+Author: Joakim Tjernlund <joakim.tjernlund@transmode.se>
+Date:	Sun Jul 6 12:30:09 2008 +0200
+
+    Change env_get_char from a global function ptr to a function
+
+    This avoids an early global data reference.
+
+    Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
+
+commit 27269417ade432189b234d9fbac98b54e37b978c
+Author: Matvejchikov Ilya <matvejchikov@gmail.com>
+Date:	Sun Jul 6 13:57:58 2008 +0400
+
+    Some copy-n-paste fixes in printf usage
+
+    Signed-off-by: Matvejchikov Ilya <matvejchikov@gmail.com>
+
+commit 0e6989b9faf1588e8723535539e88a0df3c71356
+Author: Matvejchikov Ilya <matvejchikov@gmail.com>
+Date:	Sun Jul 6 13:57:00 2008 +0400
+
+    FDT memory and pci node fixes for MPC8260ADS
+
+    Signed-off-by: Matvejchikov Ilya <matvejchikov@gmail.com>
+
+commit dc4b0b38d4aadf08826f6c31270f1eecd27964fd
+Author: Andrew Klossner <andrew@cesa.opbu.xerox.com>
+Date:	Mon Jul 7 06:41:14 2008 -0700
+
+    Fix printf errors.
+
+    The compiler will help find mismatches between printf formats and
+    arguments if you let it.  This patch adds the necessary attributes to
+    declarations in include/common.h, then begins to correct the resulting
+    compiler warnings.	Some of these were bugs, e.g., "$d" instead of
+    "%d" and incorrect arguments.  Others were just annoying, like
+    int-long mismatches on a system where both are 32 bits.  It's worth
+    fixing the annoying errors to catch the real ones.
+
+    Signed-off-by: Andrew Klossner <andrew@cesa.opbu.xerox.com>
+
+commit 417faf285b2527acb2de24c5cd3e2621d385408c
+Author: Becky Bruce <becky.bruce@freescale.com>
+Date:	Wed Jul 9 11:09:41 2008 -0500
+
+    Allow print_size to print in GB
+
+    Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
+
+commit e7c374529c87525c9aa463e0557c287887ae4e9e
+Author: Jason McMullan <mcmullan@netapp.com>
+Date:	Sun Jun 8 23:56:00 2008 -0400
+
+    mips: When booting Linux images, add 'ethaddr' and 'eth1addr' to the environment
+
+    Add 'ethaddr' and 'eth1addr' to the Linux kernel environment if
+    they are set in the U-Boot environment.
+
+    Signed-off-by: Jason McMullan <mcmullan@netapp.com>
+    Signed-off-by: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp>
+
+commit 0192d7d56e9320819dea262f49789ae18fdd2c72
+Author: Stefan Roese <sr@denx.de>
+Date:	Tue Jul 8 12:57:14 2008 +0200
+
+    jedec_flash: Fix AM29DL800BB device ID
+
+    As pointed out by Jerry Hicks, this patch corrects the device ID of
+    the Spansion AM29DL800BB NOR device. Verified against latest Spansion
+    datasheet (rev C4 from Dezember 2006).
+
+    Signed-off-by: Stefan Roese <sr@denx.de>
+
+commit 689c1b30caacba3fbca0b1813facb3ab70b6cd63
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date:	Mon Jul 7 11:22:37 2008 +0900
+
+    sh: Fix compile error sh7763rdp board
+
+    Disable SH ether driver.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 9e23fe0560b84e324dc5f0ff8813dab2aa34f074
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date:	Tue Jul 8 12:03:24 2008 +0900
+
+    sh: Fix SH-boards compile error
+
+    By Cleanup out-or-tree building for some boards (.depend)
+    (commit:c8a3b109f07f02342d097b30908965f7261d9f15)
+    because filse ware changed, some SH-boards have compile error.
+    I revised this problem.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 63676841ca2d603b13765f3f7b72ff1a61c23f90
+Author: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+Date:	Wed Jun 18 12:10:33 2008 -0400
+
+    Remove duplicate code in cpu/arm926ejs/davinci/lxt972.c.
+
+    Remove duplicate code in cpu/arm926ejs/davinci/lxt972.c.
+
+    Remove duplicate code in a if/else block in
+    cpu/arm926ejs/davinci/lxt972.c.
+    Fixed style issues.
+
+    Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit fec61431a003f5778bafa2624073a571af8bec9f
+Author: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+Date:	Wed Jun 18 12:10:31 2008 -0400
+
+    Remove duplicate definitions in include/lxt971a.h.
+
+    Remove duplicate definitions in include/lxt971a.h.
+
+    Remove duplicate registers and bits definitions in
+    include/lxt971a.h for standard MII registers, and
+    use values in include/miiphy.h instead.
+
+    Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit 9751ee0990f467941da0b095a4e995f863672d7a
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Wed Jun 11 21:05:00 2008 +0900
+
+    net: sh: Renesas SH7763 Ethernet device support
+
+    Renesas SH7763 has 2 channel Ethernet device.
+    This is 10/100/1000 Base support.
+    But this patch check 10/100 Base only.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit 873d97aabc0b1c8822ed1d87e8c5c8ae0a7e4ae9
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:28:05 2008 +0900
+
+    sh: Update Renesas R2DPlus board
+
+    New NOR Flash board support and remove old type flash board config.
+    And Remove network setting from config file.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit ec39d479d2003f15e86e23ebc4e02a1c9a3a181c
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:28:01 2008 +0900
+
+    sh: Update Renesas R7780MP board
+
+    New NOR Flash board support and remove network setting from config file.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit c001cd604e9f133743effbddb1c215b48e761c5a
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:56 2008 +0900
+
+    sh: Update Renesas Migo-R board
+
+    Remove network setting from config file.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit f9599eca7cb5ebe40e5305c8006dced6ecc5cd9e
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:52 2008 +0900
+
+    sh: Update Hitachi MS7722SE board
+
+    Remove network setting from config file.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 26209e48e8791670c93108029a5c31a30016c6df
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:48 2008 +0900
+
+    sh: Cleanup source code of SH7763RDP
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 5cd5b2c96ef0025762931349d350287aec03ab47
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:44 2008 +0900
+
+    sh: Cleanup source code of R2DPlus
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 4ec7e915cfaa31b392755dd2c8231e64736d2ea8
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:41 2008 +0900
+
+    sh: Cleanup source code of R7780MP
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 0955ef34c0454ae2ee59a78657a0f01fb3ef16d6
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:38 2008 +0900
+
+    sh: Cleanup source code of MS7722SE
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 1d7b31d97b34ccb6f9b20a2465864998b0bf2691
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Tue Jun 17 16:27:34 2008 +0900
+
+    sh: Cleanup source code of MS7720SE
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+commit 3ab4827cbe409488ebea1a2ee5094783f2672214
+Author: Wolfgang Denk <wd@denx.de>
+Date:	Mon Jul 7 00:45:03 2008 +0200
+
+    SH: fix out of tree building
+
+    Signed-off-by: Wolfgang Denk <wd@denx.de>
+
+commit 9047bfa1e737d787be460387dd6f45737eeceb10
+Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Date:	Thu Jul 3 23:16:06 2008 +0900
+
+    net: smc911x: Fix typo
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+
+commit 5ed546fdd0ca46a165661c2009fa743d9c9fceca
+Author: Andre Schwarz <andre.schwarz@matrix-vision.de>
+Date:	Wed Jul 2 18:54:08 2008 +0200
+
+    update mvBL-M7 board config
+
+    update mvBL-M7 config file to use UBOOT_VERSION and define
+    CONFIG_HIGH_BATS.
+
+    Signed-off-by: Andre Schwarz <andre.schwarz@matrix-vision.de>
+
+commit 5cacc5d0ec52678a5eb83ecda5c3bcb22eb47f30
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date:	Mon Jun 30 17:45:01 2008 +0900
+
+    net: fix compile problem in smc911x driver.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+    Acked-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit 9fea65a6c469b1b474b27446feb58738baba2d31
+Author: Michal Simek <monstr@monstr.eu>
+Date:	Tue Jun 24 09:54:09 2008 +0200
+
+    ppc4xx: Rename CONFIG_XILINX_ML300 to CONFIG_XILINX_405
+
+    This change helps with better handling with others
+    Xilinx based platform.
+
+    Signed-off-by: Michal Simek <monstr@monstr.eu>
+    Acked-by: Stefan Roese <sr@denx.de>
+
+commit cbb6289569ae4fc6e2d676528e46ffcc72d743d0
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date:	Tue Jun 17 13:07:11 2008 +0900
+
+    net: ne2000: Move dev_addr variable from grobal to local.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit dd7e5fa5f847188f78f62f2c52de6cb3def3ecdb
+Author: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date:	Tue Jun 17 13:07:15 2008 +0900
+
+    net: ne2000: Fix compile error of NE2000
+
+    If enable DEBUG, can not compile ne2000 driver.
+
+    Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit dd35479a50f6c7c31ea491c07c5200c6dfd06a24
+Author: Ben Warren <biggerbadderben@gmail.com>
+Date:	Mon Jun 23 22:57:27 2008 -0700
+
+    Add mechanisms for CPU and board-specific Ethernet initialization
+
+    This patch is the first step in cleaning up net/eth.c, by moving Ethernet
+    initialization to CPU or board-specific code.  Initial implementation is
+    only on the Freescale TSEC controller, but others will be added soon.
+
+    Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
+
+commit 7754f2be5d1835d263aad21b5a629526f3e680b0
+Author: Wolfgang Denk <wd@denx.de>
+Date:	Sun Jul 6 01:21:46 2008 +0200
+
+    include/sha256.h: fix file permissions.
+
+    Signed-off-by: Wolfgang Denk <wd@denx.de>
+
+commit d3bcdf838e2991d58571308fa6e04ca335bc06e8
+Author: Patrice Vilchez <patrice.vilchez@atmel.com>
+Date:	Tue May 27 11:15:29 2008 +0200
+
+    [AT91SAM9] Fix NAND FLASH timings
+
+    Fix NAND FLASH timings for at91sam9x evaluation kits.
+
+    New timings are based on application note
+    "NAND Flash Support on AT91SAM9 Microcontrollers" available at
+    http://atmel.com/dyn/resources/prod_documents/doc6255.pdf
+
+    Signed-off-by: Patrice Vilchez <patice.vilchez@atmel.com>
+    Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+    Acked-by: Stelian Pop <stelian@popies.net>
+
+commit 19bd688484322fe62d1a66c8299da6ff9e967ff9
+Author: Stelian Pop <stelian@popies.net>
+Date:	Thu May 22 00:15:40 2008 +0200
+
+    Fix boot from NOR due to incorrect reset delay.
+
+    AT91 RSTC registers are battery-backuped, so their values
+    are not reset across power cycles. One of those registers,
+    the AT91_RSTC_MR register, is being modified by U-Boot, in
+    the ethernet initialisation routine, to generate a 500ms
+    user reset.
+
+    Unfortunately, this value is not being restored afterwards,
+    causing subsequent resets to also last for 500ms.
+
+    This long reset sequence causes problems (at least) in the
+    boot sequence from NOR: by the time the CPU tries to load
+    a program from the NOR flash, the latter is still in reset
+    and not yet available.
+
+    Additionaly, this patch fixes a bug in the original code which
+    caused the reset delay to last for 2s instead of 500ms.
+
+    Signed-off-by: Stelian Pop <stelian@popies.net>
+    Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit f492dd636fbbae529e17533995bc6e5813c007f6
+Author: Wolfgang Denk <wd@denx.de>
+Date:	Fri Jul 4 20:11:49 2008 +0200
+
+    Update CHANGELOG
+
+    Signed-off-by: Wolfgang Denk <wd@denx.de>
+
 commit 5e6e350fc489aa19402f1e79037dd8c0a4bbd73d
 commit 5e6e350fc489aa19402f1e79037dd8c0a4bbd73d
 Author: Wolfgang Denk <wd@denx.de>
 Author: Wolfgang Denk <wd@denx.de>
 Date:	Fri Jul 4 20:07:35 2008 +0200
 Date:	Fri Jul 4 20:07:35 2008 +0200
@@ -30,6 +588,17 @@ Date:	Thu Jul 3 23:00:24 2008 +0200
 
 
     Signed-off-by: Wolfgang Denk <wd@denx.de>
     Signed-off-by: Wolfgang Denk <wd@denx.de>
 
 
+commit f16ed51702cb9fb6fa2e019bbc0fcd1466b57c3b
+Author: Andre Schwarz <andre.schwarz@matrix-vision.de>
+Date:	Wed Jul 2 18:54:08 2008 +0200
+
+    update mvBL-M7 board config
+
+    update mvBL-M7 config file to use UBOOT_VERSION.
+
+    Signed-off-by: Andre Schwarz <andre.schwarz@matrix-vision.de>
+    Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
+
 commit ced209c50e80c25f13c083099b05044048d21f4f
 commit ced209c50e80c25f13c083099b05044048d21f4f
 Author: Wolfgang Denk <wd@denx.de>
 Author: Wolfgang Denk <wd@denx.de>
 Date:	Thu Jul 3 22:39:21 2008 +0200
 Date:	Thu Jul 3 22:39:21 2008 +0200
@@ -214,6 +783,25 @@ Date:	Tue Jun 3 17:38:19 2008 +0800
 
 
     Signed-off-by: Dave Liu <daveliu@freescale.com>
     Signed-off-by: Dave Liu <daveliu@freescale.com>
 
 
+commit 745d8a0d3cea82e6d1753e14afb4588c34761b15
+Author: Stefan Roese <sr@denx.de>
+Date:	Sat Jun 28 14:56:17 2008 +0200
+
+    ppc4xx: Fix 460EX errata with CPU lockup upon high AHB traffic
+
+    This patch implements a fix provided by AMCC so that the lockup upon
+    simultanious traffic on AHB USB OTG, USB 2.0 and SATA doesn't occur
+    anymore:
+
+    Set SDR0_AHB_CFG[A2P_INCR4] (bit 24) and clear SDR0_AHB_CFG[A2P_PROT2]
+    (bit 25) for a new 460EX errata regarding concurrent use of AHB USB OTG,
+    USB 2.0 host and SATA.
+
+    This errata is not officially available yet. I'll update the comment
+    to add the errata number later.
+
+    Signed-off-by: Stefan Roese <sr@denx.de>
+
 commit 8b616edb118e37d05f6401389eaee1c636b22828
 commit 8b616edb118e37d05f6401389eaee1c636b22828
 Author: Stuart Wood <stuart.wood@labxtechnologies.com>
 Author: Stuart Wood <stuart.wood@labxtechnologies.com>
 Date:	Mon Jun 2 16:42:19 2008 -0400
 Date:	Mon Jun 2 16:42:19 2008 -0400
@@ -353,6 +941,17 @@ Date:	Mon Jun 16 13:58:53 2008 -0500
 
 
     Signed-off-by: Andy Fleming <afleming@freescale.com>
     Signed-off-by: Andy Fleming <afleming@freescale.com>
 
 
+commit 93262af85e3e9d9974c6c08fbd37a9a72e090ca2
+Author: Stefan Roese <sr@denx.de>
+Date:	Tue Jun 24 17:15:22 2008 +0200
+
+    ppc4xx: Fix compilation problems with phys_size_t
+
+    This patch includes <asm/types.h> before <asm/u-boot.h> in some 4xx
+    board specific files where it has been missing.
+
+    Signed-off-by: Stefan Roese <sr@denx.de>
+
 commit 28eab0d77352b84885f938759bf2612b7bf0bc44
 commit 28eab0d77352b84885f938759bf2612b7bf0bc44
 Author: Haavard Skinnemoen <hskinnemoen@atmel.com>
 Author: Haavard Skinnemoen <hskinnemoen@atmel.com>
 Date:	Mon May 19 12:26:38 2008 +0200
 Date:	Mon May 19 12:26:38 2008 +0200
@@ -401,6 +1000,104 @@ Date:	Sun May 18 19:09:50 2008 +0200
 
 
     Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
     Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 
 
+commit 6a19c46cae43c16c528eddefae3db97134f1915d
+Author: Andre Schwarz <andre.schwarz@matrix-vision.de>
+Date:	Mon Jun 23 13:25:34 2008 +0200
+
+    fix non-working mvBL-M7
+
+    Add missing #define CONFIG_HIGH_BATS in mvBL-M7 board config file.
+
+    Signed-off-by: Andre Schwarz <andre.schwarz@matrix-vision.de>
+    Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
+
+commit 846f1574ddddeda2bc227655e687308695f41cdc
+Author: Andre Schwarz <andre.schwarz@matrix-vision.de>
+Date:	Mon Jun 23 11:40:56 2008 +0200
+
+    fix system config overwrite @ MPC834x and MPC8313
+
+    During 83xx setup the "System I/O configuration register high" gets
+    overwritten with user defined value if CFG_SICRH is defined.
+
+    Regarding to the MPC834x manual (Table 5-28 reve.1) bits 28+29 of SICRH
+    must keep their reset value regardless of configuration.
+
+    On my board (using RGMII) those bits are set after reset - yet it's
+    unclear where they come from.
+
+    The patch keeps both bits on MPC834x and MPC8313.
+
+    Signed-off-by: Andre Schwarz <andre.schwarz@matrix-vision.de>
+    Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
+
+commit 4890246a2c5df90a74e2941e3673a49bbd36aee9
+Author: Kim Phillips <kim.phillips@freescale.com>
+Date:	Tue Jun 17 17:45:27 2008 -0500
+
+    mpc83xx: move CPU_TYPE_ENTRY over to processor.h
+
+    to avoid this:
+
+    cpu.c:47:1: warning: "CPU_TYPE_ENTRY" redefined
+    In file included from cpu.c:33:
+    /home/kim/git/u-boot/include/asm/processor.h:982:1: warning: this is the location of the previous definition
+
+    Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
+
+commit aac7a5095b968d6c9a3e6422f31b4ad203cac9c8
+Author: Stefan Roese <sr@denx.de>
+Date:	Mon Jun 23 11:15:09 2008 +0200
+
+    ppc4xx: Fix problem in gpio_config()
+
+    As pointed out by Guennadi Liakhovetski (thanks), pin2 is already shifted
+    left by one. So the additional shift is bogus.
+
+    Signed-off-by: Stefan Roese <sr@denx.de>
+
+commit 40777812316fc252c941665c0f60c148fd79d50f
+Author: Detlev Zundel <dzu@denx.de>
+Date:	Fri Jun 20 22:24:05 2008 +0200
+
+    fdt: Fix typo in variable name.
+
+    Signed-off-by: Detlev Zundel <dzu@denx.de>
+
+commit 5f723a3b98c630bde33de74351f2121691fdef14
+Author: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Date:	Fri Jun 20 10:41:05 2008 +0200
+
+    avr32: Enable SPI flash support on ATNGW100
+
+    The ATNGW100 has 8MB DataFlash on board. Give users access to it through
+    the new SPI flash framework.
+
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+
+commit 5605ef6b5802921cbefe6a933a9dea3497396b5c
+Author: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Date:	Fri Jun 20 12:44:28 2008 +0200
+
+    avr32: Fix SPI portmux initialization
+
+    Use the new GPIO manipulation functions to set up the chip select lines,
+    and make sure both busses use GPIO for chip select control.
+
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+
+commit 4688f9e34a87e825aed34d07c9ca7a273e6fc8ab
+Author: Peter Ma <pma@mediamatech.com>
+Date:	Sun Jun 1 22:59:24 2008 -0700
+
+    avr32: Add GPIO manipulation functions
+
+    Adds GPIO manipulation functions for AVR32 AP7 platform.
+
+    Signed-off-by: Peter Ma <pma@mediamatech.com>
+    [haavard.skinnemoen@atmel.com: coding style fixup, slight simplification]
+    Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+
 commit b4fe1a71090c73efc6e4188eed188b2ff67fc02a
 commit b4fe1a71090c73efc6e4188eed188b2ff67fc02a
 Author: Wolfgang Grandegger <wg@grandegger.com>
 Author: Wolfgang Grandegger <wg@grandegger.com>
 Date:	Thu Jun 5 13:02:30 2008 +0200
 Date:	Thu Jun 5 13:02:30 2008 +0200

+ 5 - 0
CREDITS

@@ -537,3 +537,8 @@ N: Timo Tuunainen
 E: timo.tuunainen@sysart.fi
 E: timo.tuunainen@sysart.fi
 D: Support for Artila M-501 starter kit
 D: Support for Artila M-501 starter kit
 W: http://www.sysart.fi/
 W: http://www.sysart.fi/
+
+N: Philip Balister
+E: philip@opensdr.com
+D: Port to Lyrtech SFFSDR development board.
+W: www.opensdr.com

+ 1 - 1
MAKEALL

@@ -749,7 +749,7 @@ LIST_sh3="		\
 LIST_sh4="		\
 LIST_sh4="		\
 	ms7750se	\
 	ms7750se	\
 	ms7722se	\
 	ms7722se	\
-	Migo-R		\
+	MigoR		\
 	r7780mp		\
 	r7780mp		\
 	r2dplus		\
 	r2dplus		\
 	sh7763rdp	\
 	sh7763rdp	\

+ 2 - 0
Makefile

@@ -220,6 +220,7 @@ LIBS += drivers/hwmon/libhwmon.a
 LIBS += drivers/i2c/libi2c.a
 LIBS += drivers/i2c/libi2c.a
 LIBS += drivers/input/libinput.a
 LIBS += drivers/input/libinput.a
 LIBS += drivers/misc/libmisc.a
 LIBS += drivers/misc/libmisc.a
+LIBS += drivers/mmc/libmmc.a
 LIBS += drivers/mtd/libmtd.a
 LIBS += drivers/mtd/libmtd.a
 LIBS += drivers/mtd/nand/libnand.a
 LIBS += drivers/mtd/nand/libnand.a
 LIBS += drivers/mtd/nand_legacy/libnand_legacy.a
 LIBS += drivers/mtd/nand_legacy/libnand_legacy.a
@@ -387,6 +388,7 @@ TAG_SUBDIRS += drivers/hwmon
 TAG_SUBDIRS += drivers/i2c
 TAG_SUBDIRS += drivers/i2c
 TAG_SUBDIRS += drivers/input
 TAG_SUBDIRS += drivers/input
 TAG_SUBDIRS += drivers/misc
 TAG_SUBDIRS += drivers/misc
+TAG_SUBDIRS += drivers/mmc
 TAG_SUBDIRS += drivers/mtd
 TAG_SUBDIRS += drivers/mtd
 TAG_SUBDIRS += drivers/mtd/nand
 TAG_SUBDIRS += drivers/mtd/nand
 TAG_SUBDIRS += drivers/mtd/nand_legacy
 TAG_SUBDIRS += drivers/mtd/nand_legacy

+ 71 - 70
README

@@ -74,7 +74,7 @@ git://www.denx.de/git/u-boot.git ; you can browse it online at
 http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
 http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
 
 
 The "snapshot" links on this page allow you to download tarballs of
 The "snapshot" links on this page allow you to download tarballs of
-any version you might be interested in. Ofifcial releases are also
+any version you might be interested in. Official releases are also
 available for FTP download from the ftp://ftp.denx.de/pub/u-boot/
 available for FTP download from the ftp://ftp.denx.de/pub/u-boot/
 directory.
 directory.
 
 
@@ -94,7 +94,7 @@ Where we come from:
   * Provide extended interface to Linux boot loader
   * Provide extended interface to Linux boot loader
   * S-Record download
   * S-Record download
   * network boot
   * network boot
-  * PCMCIA / CompactFLash / ATA disk / SCSI ... boot
+  * PCMCIA / CompactFlash / ATA disk / SCSI ... boot
 - create ARMBoot project (http://sourceforge.net/projects/armboot)
 - create ARMBoot project (http://sourceforge.net/projects/armboot)
 - add other CPU families (starting with ARM)
 - add other CPU families (starting with ARM)
 - create U-Boot project (http://sourceforge.net/projects/u-boot)
 - create U-Boot project (http://sourceforge.net/projects/u-boot)
@@ -230,7 +230,7 @@ Example: For a TQM823L module type:
 	cd u-boot
 	cd u-boot
 	make TQM823L_config
 	make TQM823L_config
 
 
-For the Cogent platform, you need to specify the cpu type as well;
+For the Cogent platform, you need to specify the CPU type as well;
 e.g. "make cogent_mpc8xx_config". And also configure the cogent
 e.g. "make cogent_mpc8xx_config". And also configure the cogent
 directory according to the instructions in cogent/README.
 directory according to the instructions in cogent/README.
 
 
@@ -278,7 +278,7 @@ The following options need to be configured:
 - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
 - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
 		Define one or more of
 		Define one or more of
 		CONFIG_LCD_HEARTBEAT	- update a character position on
 		CONFIG_LCD_HEARTBEAT	- update a character position on
-					  the lcd display every second with
+					  the LCD display every second with
 					  a "rotator" |\-/|\-/
 					  a "rotator" |\-/|\-/
 
 
 - Board flavour: (if CONFIG_MPC8260ADS is defined)
 - Board flavour: (if CONFIG_MPC8260ADS is defined)
@@ -293,7 +293,7 @@ The following options need to be configured:
 		Define exactly one of
 		Define exactly one of
 		CONFIG_MPC8240, CONFIG_MPC8245
 		CONFIG_MPC8240, CONFIG_MPC8245
 
 
-- 8xx CPU Options: (if using an MPC8xx cpu)
+- 8xx CPU Options: (if using an MPC8xx CPU)
 		CONFIG_8xx_GCLK_FREQ	- deprecated: CPU clock if
 		CONFIG_8xx_GCLK_FREQ	- deprecated: CPU clock if
 					  get_gclk_freq() cannot work
 					  get_gclk_freq() cannot work
 					  e.g. if there is no 32KHz
 					  e.g. if there is no 32KHz
@@ -346,7 +346,7 @@ The following options need to be configured:
 
 
 		CONFIG_MEMSIZE_IN_BYTES		[relevant for MIPS only]
 		CONFIG_MEMSIZE_IN_BYTES		[relevant for MIPS only]
 
 
-		When transfering memsize parameter to linux, some versions
+		When transferring memsize parameter to linux, some versions
 		expect it to be in bytes, others in MB.
 		expect it to be in bytes, others in MB.
 		Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
 		Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
 
 
@@ -366,7 +366,8 @@ The following options need to be configured:
 		OF_TBCLK - The timebase frequency.
 		OF_TBCLK - The timebase frequency.
 		OF_STDOUT_PATH - The path to the console device
 		OF_STDOUT_PATH - The path to the console device
 
 
-		boards with QUICC Engines require OF_QE to set UCC mac addresses
+		boards with QUICC Engines require OF_QE to set UCC MAC
+		addresses
 
 
 		CONFIG_OF_BOARD_SETUP
 		CONFIG_OF_BOARD_SETUP
 
 
@@ -375,7 +376,7 @@ The following options need to be configured:
 
 
 		CONFIG_OF_BOOT_CPU
 		CONFIG_OF_BOOT_CPU
 
 
-		This define fills in the correct boot cpu in the boot
+		This define fills in the correct boot CPU in the boot
 		param header, the default value is zero if undefined.
 		param header, the default value is zero if undefined.
 
 
 - Serial Ports:
 - Serial Ports:
@@ -445,7 +446,7 @@ The following options need to be configured:
 						linux_logo.h for logo.
 						linux_logo.h for logo.
 						Requires CONFIG_VIDEO_LOGO
 						Requires CONFIG_VIDEO_LOGO
 			CONFIG_CONSOLE_EXTRA_INFO
 			CONFIG_CONSOLE_EXTRA_INFO
-						addional board info beside
+						additional board info beside
 						the logo
 						the logo
 
 
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		When CONFIG_CFB_CONSOLE is defined, video console is
@@ -515,7 +516,7 @@ The following options need to be configured:
 		The value of these goes into the environment as
 		The value of these goes into the environment as
 		"ramboot" and "nfsboot" respectively, and can be used
 		"ramboot" and "nfsboot" respectively, and can be used
 		as a convenience, when switching between booting from
 		as a convenience, when switching between booting from
-		ram and nfs.
+		RAM and NFS.
 
 
 - Pre-Boot Commands:
 - Pre-Boot Commands:
 		CONFIG_PREBOOT
 		CONFIG_PREBOOT
@@ -735,11 +736,11 @@ The following options need to be configured:
 		Support for Intel 8254x gigabit chips.
 		Support for Intel 8254x gigabit chips.
 
 
 		CONFIG_E1000_FALLBACK_MAC
 		CONFIG_E1000_FALLBACK_MAC
-		default MAC for empty eeprom after production.
+		default MAC for empty EEPROM after production.
 
 
 		CONFIG_EEPRO100
 		CONFIG_EEPRO100
 		Support for Intel 82557/82559/82559ER chips.
 		Support for Intel 82557/82559/82559ER chips.
-		Optional CONFIG_EEPRO100_SROM_WRITE enables eeprom
+		Optional CONFIG_EEPRO100_SROM_WRITE enables EEPROM
 		write routine for first time initialisation.
 		write routine for first time initialisation.
 
 
 		CONFIG_TULIP
 		CONFIG_TULIP
@@ -818,7 +819,7 @@ The following options need to be configured:
 		Define the below if you wish to use the USB console.
 		Define the below if you wish to use the USB console.
 		Once firmware is rebuilt from a serial console issue the
 		Once firmware is rebuilt from a serial console issue the
 		command "setenv stdin usbtty; setenv stdout usbtty" and
 		command "setenv stdin usbtty; setenv stdout usbtty" and
-		attach your usb cable. The Unix command "dmesg" should print
+		attach your USB cable. The Unix command "dmesg" should print
 		it has found a new device. The environment variable usbtty
 		it has found a new device. The environment variable usbtty
 		can be set to gserial or cdc_acm to enable your device to
 		can be set to gserial or cdc_acm to enable your device to
 		appear to a USB host as a Linux gserial device or a
 		appear to a USB host as a Linux gserial device or a
@@ -932,7 +933,7 @@ The following options need to be configured:
 		assumed.
 		assumed.
 
 
 		For the CT69000 and SMI_LYNXEM drivers, videomode is
 		For the CT69000 and SMI_LYNXEM drivers, videomode is
-		selected via environment 'videomode'. Two diferent ways
+		selected via environment 'videomode'. Two different ways
 		are possible:
 		are possible:
 		- "videomode=num"   'num' is a standard LiLo mode numbers.
 		- "videomode=num"   'num' is a standard LiLo mode numbers.
 		Following standard modes are supported	(* is default):
 		Following standard modes are supported	(* is default):
@@ -1055,7 +1056,7 @@ The following options need to be configured:
 		CONFIG_PHY_GIGE
 		CONFIG_PHY_GIGE
 
 
 		If this option is set, support for speed/duplex
 		If this option is set, support for speed/duplex
-		detection of Gigabit PHY is included.
+		detection of gigabit PHY is included.
 
 
 		CONFIG_PHY_RESET_DELAY
 		CONFIG_PHY_RESET_DELAY
 
 
@@ -1074,21 +1075,21 @@ The following options need to be configured:
 		CONFIG_ETH2ADDR
 		CONFIG_ETH2ADDR
 		CONFIG_ETH3ADDR
 		CONFIG_ETH3ADDR
 
 
-		Define a default value for ethernet address to use
-		for the respective ethernet interface, in case this
+		Define a default value for Ethernet address to use
+		for the respective Ethernet interface, in case this
 		is not determined automatically.
 		is not determined automatically.
 
 
 - IP address:
 - IP address:
 		CONFIG_IPADDR
 		CONFIG_IPADDR
 
 
 		Define a default value for the IP address to use for
 		Define a default value for the IP address to use for
-		the default ethernet interface, in case this is not
+		the default Ethernet interface, in case this is not
 		determined through e.g. bootp.
 		determined through e.g. bootp.
 
 
 - Server IP address:
 - Server IP address:
 		CONFIG_SERVERIP
 		CONFIG_SERVERIP
 
 
-		Defines a default value for theIP address of a TFTP
+		Defines a default value for the IP address of a TFTP
 		server to contact when using the "tftboot" command.
 		server to contact when using the "tftboot" command.
 
 
 - Multicast TFTP Mode:
 - Multicast TFTP Mode:
@@ -1096,7 +1097,7 @@ The following options need to be configured:
 
 
 		Defines whether you want to support multicast TFTP as per
 		Defines whether you want to support multicast TFTP as per
 		rfc-2090; for example to work with atftp.  Lets lots of targets
 		rfc-2090; for example to work with atftp.  Lets lots of targets
-		tftp down the same boot image concurrently.  Note: the ethernet
+		tftp down the same boot image concurrently.  Note: the Ethernet
 		driver in use must provide a function: mcast() to join/leave a
 		driver in use must provide a function: mcast() to join/leave a
 		multicast group.
 		multicast group.
 
 
@@ -1184,7 +1185,7 @@ The following options need to be configured:
 
 
 		A printf format string which contains the ascii name of
 		A printf format string which contains the ascii name of
 		the port. Normally is set to "eth%d" which sets
 		the port. Normally is set to "eth%d" which sets
-		eth0 for the first ethernet, eth1 for the second etc.
+		eth0 for the first Ethernet, eth1 for the second etc.
 
 
 		CONFIG_CDP_CAPABILITIES
 		CONFIG_CDP_CAPABILITIES
 
 
@@ -1233,7 +1234,7 @@ The following options need to be configured:
 
 
 		These enable I2C serial bus commands. Defining either of
 		These enable I2C serial bus commands. Defining either of
 		(but not both of) CONFIG_HARD_I2C or CONFIG_SOFT_I2C will
 		(but not both of) CONFIG_HARD_I2C or CONFIG_SOFT_I2C will
-		include the appropriate I2C driver for the selected cpu.
+		include the appropriate I2C driver for the selected CPU.
 
 
 		This will allow you to use i2c commands at the u-boot
 		This will allow you to use i2c commands at the u-boot
 		command line (as long as you set CONFIG_CMD_I2C in
 		command line (as long as you set CONFIG_CMD_I2C in
@@ -1258,10 +1259,10 @@ The following options need to be configured:
 		In both cases you will need to define CFG_I2C_SPEED
 		In both cases you will need to define CFG_I2C_SPEED
 		to be the frequency (in Hz) at which you wish your i2c bus
 		to be the frequency (in Hz) at which you wish your i2c bus
 		to run and CFG_I2C_SLAVE to be the address of this node (ie
 		to run and CFG_I2C_SLAVE to be the address of this node (ie
-		the cpu's i2c node address).
+		the CPU's i2c node address).
 
 
 		Now, the u-boot i2c code for the mpc8xx (cpu/mpc8xx/i2c.c)
 		Now, the u-boot i2c code for the mpc8xx (cpu/mpc8xx/i2c.c)
-		sets the cpu up as a master node and so its address should
+		sets the CPU up as a master node and so its address should
 		therefore be cleared to 0 (See, eg, MPC823e User's Manual
 		therefore be cleared to 0 (See, eg, MPC823e User's Manual
 		p.16-473). So, set CFG_I2C_SLAVE to 0.
 		p.16-473). So, set CFG_I2C_SLAVE to 0.
 
 
@@ -1480,17 +1481,17 @@ The following options need to be configured:
 		Maximum time to wait for the INIT_B line to deassert
 		Maximum time to wait for the INIT_B line to deassert
 		after PROB_B has been deasserted during a Virtex II
 		after PROB_B has been deasserted during a Virtex II
 		FPGA configuration sequence. The default time is 500
 		FPGA configuration sequence. The default time is 500
-		mS.
+		ms.
 
 
 		CFG_FPGA_WAIT_BUSY
 		CFG_FPGA_WAIT_BUSY
 
 
 		Maximum time to wait for BUSY to deassert during
 		Maximum time to wait for BUSY to deassert during
-		Virtex II FPGA configuration. The default is 5 mS.
+		Virtex II FPGA configuration. The default is 5 ms.
 
 
 		CFG_FPGA_WAIT_CONFIG
 		CFG_FPGA_WAIT_CONFIG
 
 
 		Time to wait after FPGA configuration. The default is
 		Time to wait after FPGA configuration. The default is
-		200 mS.
+		200 ms.
 
 
 - Configuration Management:
 - Configuration Management:
 		CONFIG_IDENT_STRING
 		CONFIG_IDENT_STRING
@@ -1507,7 +1508,7 @@ The following options need to be configured:
 		protects these variables from casual modification by
 		protects these variables from casual modification by
 		the user. Once set, these variables are read-only,
 		the user. Once set, these variables are read-only,
 		and write or delete attempts are rejected. You can
 		and write or delete attempts are rejected. You can
-		change this behviour:
+		change this behaviour:
 
 
 		If CONFIG_ENV_OVERWRITE is #defined in your config
 		If CONFIG_ENV_OVERWRITE is #defined in your config
 		file, the write protection for vendor parameters is
 		file, the write protection for vendor parameters is
@@ -1516,7 +1517,7 @@ The following options need to be configured:
 
 
 		Alternatively, if you #define _both_ CONFIG_ETHADDR
 		Alternatively, if you #define _both_ CONFIG_ETHADDR
 		_and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
 		_and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
-		ethernet address is installed in the environment,
+		Ethernet address is installed in the environment,
 		which can be changed exactly ONCE by the user. [The
 		which can be changed exactly ONCE by the user. [The
 		serial# is unaffected by this, i. e. it remains
 		serial# is unaffected by this, i. e. it remains
 		read-only.]
 		read-only.]
@@ -1560,7 +1561,7 @@ The following options need to be configured:
 		Define this variable to stop the system in case of a
 		Define this variable to stop the system in case of a
 		fatal error, so that you have to reset it manually.
 		fatal error, so that you have to reset it manually.
 		This is probably NOT a good idea for an embedded
 		This is probably NOT a good idea for an embedded
-		system where you want to system to reboot
+		system where you want the system to reboot
 		automatically as fast as possible, but it may be
 		automatically as fast as possible, but it may be
 		useful during development since you can try to debug
 		useful during development since you can try to debug
 		the conditions that lead to the situation.
 		the conditions that lead to the situation.
@@ -1627,7 +1628,7 @@ The following options need to be configured:
 - Commandline Editing and History:
 - Commandline Editing and History:
 		CONFIG_CMDLINE_EDITING
 		CONFIG_CMDLINE_EDITING
 
 
-		Enable editiong and History functions for interactive
+		Enable editing and History functions for interactive
 		commandline input operations
 		commandline input operations
 
 
 - Default Environment:
 - Default Environment:
@@ -1668,7 +1669,7 @@ The following options need to be configured:
 
 
 		Adding this option adds support for Xilinx SystemACE
 		Adding this option adds support for Xilinx SystemACE
 		chips attached via some sort of local bus. The address
 		chips attached via some sort of local bus. The address
-		of the chip must alsh be defined in the
+		of the chip must also be defined in the
 		CFG_SYSTEMACE_BASE macro. For example:
 		CFG_SYSTEMACE_BASE macro. For example:
 
 
 		#define CONFIG_SYSTEMACE
 		#define CONFIG_SYSTEMACE
@@ -1734,7 +1735,7 @@ Legacy uImage format:
   -12	common/image.c		Ramdisk data   has bad	   checksum
   -12	common/image.c		Ramdisk data   has bad	   checksum
    11	common/image.c		Ramdisk data   has correct checksum
    11	common/image.c		Ramdisk data   has correct checksum
    12	common/image.c		Ramdisk verification complete, start loading
    12	common/image.c		Ramdisk verification complete, start loading
-  -13	common/image.c		Wrong Image Type (not PPC Linux Ramdisk)
+  -13	common/image.c		Wrong Image Type (not PPC Linux ramdisk)
    13	common/image.c		Start multifile image verification
    13	common/image.c		Start multifile image verification
    14	common/image.c		No initial ramdisk, no multifile, continue.
    14	common/image.c		No initial ramdisk, no multifile, continue.
 
 
@@ -1794,13 +1795,13 @@ Legacy uImage format:
 
 
   -60	common/env_common.c	Environment has a bad CRC, using default
   -60	common/env_common.c	Environment has a bad CRC, using default
 
 
-   64	net/eth.c		starting with Ethernetconfiguration.
+   64	net/eth.c		starting with Ethernet configuration.
   -64	net/eth.c		no Ethernet found.
   -64	net/eth.c		no Ethernet found.
    65	net/eth.c		Ethernet found.
    65	net/eth.c		Ethernet found.
 
 
   -80	common/cmd_net.c	usage wrong
   -80	common/cmd_net.c	usage wrong
    80	common/cmd_net.c	before calling NetLoop()
    80	common/cmd_net.c	before calling NetLoop()
-  -81	common/cmd_net.c	some error in NetLoop() occured
+  -81	common/cmd_net.c	some error in NetLoop() occurred
    81	common/cmd_net.c	NetLoop() back without error
    81	common/cmd_net.c	NetLoop() back without error
   -82	common/cmd_net.c	size == 0 (File with size 0 loaded)
   -82	common/cmd_net.c	size == 0 (File with size 0 loaded)
    82	common/cmd_net.c	trying automatic boot
    82	common/cmd_net.c	trying automatic boot
@@ -1823,8 +1824,8 @@ FIT uImage format:
   105	common/cmd_bootm.c	Kernel subimage hash verification OK
   105	common/cmd_bootm.c	Kernel subimage hash verification OK
  -105	common/cmd_bootm.c	Kernel subimage is for unsupported architecture
  -105	common/cmd_bootm.c	Kernel subimage is for unsupported architecture
   106	common/cmd_bootm.c	Architecture check OK
   106	common/cmd_bootm.c	Architecture check OK
- -106	common/cmd_bootm.c	Kernel subimage has wrong typea
-  107	common/cmd_bootm.c	Kernel subimge type OK
+ -106	common/cmd_bootm.c	Kernel subimage has wrong type
+  107	common/cmd_bootm.c	Kernel subimage type OK
  -107	common/cmd_bootm.c	Can't get kernel subimage data/size
  -107	common/cmd_bootm.c	Can't get kernel subimage data/size
   108	common/cmd_bootm.c	Got kernel subimage data/size
   108	common/cmd_bootm.c	Got kernel subimage data/size
  -108	common/cmd_bootm.c	Wrong image type (not legacy, FIT)
  -108	common/cmd_bootm.c	Wrong image type (not legacy, FIT)
@@ -1837,7 +1838,7 @@ FIT uImage format:
   120	common/image.c		Start initial ramdisk verification
   120	common/image.c		Start initial ramdisk verification
  -120	common/image.c		Ramdisk FIT image has incorrect format
  -120	common/image.c		Ramdisk FIT image has incorrect format
   121	common/image.c		Ramdisk FIT image has correct format
   121	common/image.c		Ramdisk FIT image has correct format
-  122	common/image.c		No Ramdisk subimage unit name, using configuration
+  122	common/image.c		No ramdisk subimage unit name, using configuration
  -122	common/image.c		Can't get configuration for ramdisk subimage
  -122	common/image.c		Can't get configuration for ramdisk subimage
   123	common/image.c		Ramdisk unit name specified
   123	common/image.c		Ramdisk unit name specified
  -124	common/image.c		Can't get ramdisk subimage node offset
  -124	common/image.c		Can't get ramdisk subimage node offset
@@ -1851,13 +1852,13 @@ FIT uImage format:
   129	common/image.c		Can't get ramdisk load address
   129	common/image.c		Can't get ramdisk load address
  -129	common/image.c		Got ramdisk load address
  -129	common/image.c		Got ramdisk load address
 
 
- -130	common/cmd_doc.c	Icorrect FIT image format
+ -130	common/cmd_doc.c	Incorrect FIT image format
   131	common/cmd_doc.c	FIT image format OK
   131	common/cmd_doc.c	FIT image format OK
 
 
- -140	common/cmd_ide.c	Icorrect FIT image format
+ -140	common/cmd_ide.c	Incorrect FIT image format
   141	common/cmd_ide.c	FIT image format OK
   141	common/cmd_ide.c	FIT image format OK
 
 
- -150	common/cmd_nand.c	Icorrect FIT image format
+ -150	common/cmd_nand.c	Incorrect FIT image format
   151	common/cmd_nand.c	FIT image format OK
   151	common/cmd_nand.c	FIT image format OK
 
 
 
 
@@ -1866,7 +1867,7 @@ Modem Support:
 
 
 [so far only for SMDK2400 and TRAB boards]
 [so far only for SMDK2400 and TRAB boards]
 
 
-- Modem support endable:
+- Modem support enable:
 		CONFIG_MODEM_SUPPORT
 		CONFIG_MODEM_SUPPORT
 
 
 - RTS/CTS Flow control enable:
 - RTS/CTS Flow control enable:
@@ -1882,11 +1883,11 @@ Modem Support:
 
 
 		There are common interrupt_init() and timer_interrupt()
 		There are common interrupt_init() and timer_interrupt()
 		for all PPC archs. interrupt_init() calls interrupt_init_cpu()
 		for all PPC archs. interrupt_init() calls interrupt_init_cpu()
-		for cpu specific initialization. interrupt_init_cpu()
+		for CPU specific initialization. interrupt_init_cpu()
 		should set decrementer_count to appropriate value. If
 		should set decrementer_count to appropriate value. If
-		cpu resets decrementer automatically after interrupt
+		CPU resets decrementer automatically after interrupt
 		(ppc4xx) it should set decrementer_count to zero.
 		(ppc4xx) it should set decrementer_count to zero.
-		timer_interrupt() calls timer_interrupt_cpu() for cpu
+		timer_interrupt() calls timer_interrupt_cpu() for CPU
 		specific handling. If board has watchdog / status_led
 		specific handling. If board has watchdog / status_led
 		/ other_activity_monitor it works automatically from
 		/ other_activity_monitor it works automatically from
 		general timer_interrupt().
 		general timer_interrupt().
@@ -1896,7 +1897,7 @@ Modem Support:
 		In the target system modem support is enabled when a
 		In the target system modem support is enabled when a
 		specific key (key combination) is pressed during
 		specific key (key combination) is pressed during
 		power-on. Otherwise U-Boot will boot normally
 		power-on. Otherwise U-Boot will boot normally
-		(autoboot). The key_pressed() fuction is called from
+		(autoboot). The key_pressed() function is called from
 		board_init(). Currently key_pressed() is a dummy
 		board_init(). Currently key_pressed() is a dummy
 		function, returning 1 and thus enabling modem
 		function, returning 1 and thus enabling modem
 		initialization.
 		initialization.
@@ -1904,7 +1905,7 @@ Modem Support:
 		If there are no modem init strings in the
 		If there are no modem init strings in the
 		environment, U-Boot proceed to autoboot; the
 		environment, U-Boot proceed to autoboot; the
 		previous output (banner, info printfs) will be
 		previous output (banner, info printfs) will be
-		supressed, though.
+		suppressed, though.
 
 
 		See also: doc/README.Modem
 		See also: doc/README.Modem
 
 
@@ -1960,7 +1961,7 @@ Configuration Settings:
 - CFG_MEM_TOP_HIDE (PPC only):
 - CFG_MEM_TOP_HIDE (PPC only):
 		If CFG_MEM_TOP_HIDE is defined in the board config header,
 		If CFG_MEM_TOP_HIDE is defined in the board config header,
 		this specified memory area will get subtracted from the top
 		this specified memory area will get subtracted from the top
-		(end) of ram and won't get "touched" at all by U-Boot. By
+		(end) of RAM and won't get "touched" at all by U-Boot. By
 		fixing up gd->ram_size the Linux kernel should gets passed
 		fixing up gd->ram_size the Linux kernel should gets passed
 		the now "corrected" memory size and won't touch it either.
 		the now "corrected" memory size and won't touch it either.
 		This should work for arch/ppc and arch/powerpc. Only Linux
 		This should work for arch/ppc and arch/powerpc. Only Linux
@@ -2055,8 +2056,8 @@ Configuration Settings:
 
 
 		The two-step approach is usually more reliable, since
 		The two-step approach is usually more reliable, since
 		you can check if the download worked before you erase
 		you can check if the download worked before you erase
-		the flash, but in some situations (when sytem RAM is
-		too limited to allow for a tempory copy of the
+		the flash, but in some situations (when system RAM is
+		too limited to allow for a temporary copy of the
 		downloaded image) this option may be very useful.
 		downloaded image) this option may be very useful.
 
 
 - CFG_FLASH_CFI:
 - CFG_FLASH_CFI:
@@ -2086,11 +2087,11 @@ Configuration Settings:
 		column displays, 15 (3..1) for 40 column displays.
 		column displays, 15 (3..1) for 40 column displays.
 
 
 - CFG_RX_ETH_BUFFER:
 - CFG_RX_ETH_BUFFER:
-		Defines the number of ethernet receive buffers. On some
-		ethernet controllers it is recommended to set this value
+		Defines the number of Ethernet receive buffers. On some
+		Ethernet controllers it is recommended to set this value
 		to 8 or even higher (EEPRO100 or 405 EMAC), since all
 		to 8 or even higher (EEPRO100 or 405 EMAC), since all
 		buffers can be full shortly after enabling the interface
 		buffers can be full shortly after enabling the interface
-		on high ethernet traffic.
+		on high Ethernet traffic.
 		Defaults to 4 if not defined.
 		Defaults to 4 if not defined.
 
 
 The following definitions that deal with the placement and management
 The following definitions that deal with the placement and management
@@ -2158,7 +2159,7 @@ following configurations:
 	  CFG_ENV_SIZE_REDUND
 	  CFG_ENV_SIZE_REDUND
 
 
 	   These settings describe a second storage area used to hold
 	   These settings describe a second storage area used to hold
-	   a redundand copy of the environment data, so that there is
+	   a redundant copy of the environment data, so that there is
 	   a valid backup copy in case there is a power failure during
 	   a valid backup copy in case there is a power failure during
 	   a "saveenv" operation.
 	   a "saveenv" operation.
 
 
@@ -2176,14 +2177,14 @@ accordingly!
 	- CFG_ENV_ADDR:
 	- CFG_ENV_ADDR:
 	- CFG_ENV_SIZE:
 	- CFG_ENV_SIZE:
 
 
-	  These two #defines are used to determin the memory area you
+	  These two #defines are used to determine the memory area you
 	  want to use for environment. It is assumed that this memory
 	  want to use for environment. It is assumed that this memory
 	  can just be read and written to, without any special
 	  can just be read and written to, without any special
 	  provision.
 	  provision.
 
 
 BE CAREFUL! The first access to the environment happens quite early
 BE CAREFUL! The first access to the environment happens quite early
 in U-Boot initalization (when we try to get the setting of for the
 in U-Boot initalization (when we try to get the setting of for the
-console baudrate). You *MUST* have mappend your NVRAM area then, or
+console baudrate). You *MUST* have mapped your NVRAM area then, or
 U-Boot will hang.
 U-Boot will hang.
 
 
 Please note that even with NVRAM we still use a copy of the
 Please note that even with NVRAM we still use a copy of the
@@ -2332,14 +2333,14 @@ Low Level (hardware related) configuration options:
 
 
 		CFG_ISA_IO_STRIDE
 		CFG_ISA_IO_STRIDE
 
 
-		defines the spacing between fdc chipset registers
+		defines the spacing between FDC chipset registers
 		(default value 1)
 		(default value 1)
 
 
 		CFG_ISA_IO_OFFSET
 		CFG_ISA_IO_OFFSET
 
 
 		defines the offset of register from address. It
 		defines the offset of register from address. It
 		depends on which part of the data bus is connected to
 		depends on which part of the data bus is connected to
-		the fdc chipset. (default value 0)
+		the FDC chipset. (default value 0)
 
 
 		If CFG_ISA_IO_STRIDE CFG_ISA_IO_OFFSET and
 		If CFG_ISA_IO_STRIDE CFG_ISA_IO_OFFSET and
 		CFG_FDC_DRIVE_NUMBER are undefined, they take their
 		CFG_FDC_DRIVE_NUMBER are undefined, they take their
@@ -2535,7 +2536,7 @@ Low Level (hardware related) configuration options:
 		Normally these variables MUST NOT be defined. The
 		Normally these variables MUST NOT be defined. The
 		only exception is when U-Boot is loaded (to RAM) by
 		only exception is when U-Boot is loaded (to RAM) by
 		some other boot loader or by a debugger which
 		some other boot loader or by a debugger which
-		performs these intializations itself.
+		performs these initializations itself.
 
 
 
 
 Building the Software:
 Building the Software:
@@ -2570,7 +2571,7 @@ Note: for some board special configuration names may exist; check if
       additional information is available from the board vendor; for
       additional information is available from the board vendor; for
       instance, the TQM823L systems are available without (standard)
       instance, the TQM823L systems are available without (standard)
       or with LCD support. You can select such additional "features"
       or with LCD support. You can select such additional "features"
-      when chosing the configuration, i. e.
+      when choosing the configuration, i. e.
 
 
       make TQM823L_config
       make TQM823L_config
 	- will configure for a plain TQM823L, i. e. no LCD support
 	- will configure for a plain TQM823L, i. e. no LCD support
@@ -2773,7 +2774,7 @@ Some configuration options can be set using Environment Variables:
 		  for use by the bootm command. See also "bootm_size"
 		  for use by the bootm command. See also "bootm_size"
 		  environment variable. Address defined by "bootm_low" is
 		  environment variable. Address defined by "bootm_low" is
 		  also the base of the initial memory mapping for the Linux
 		  also the base of the initial memory mapping for the Linux
-		  kernel -- see the descripton of CFG_BOOTMAPSZ.
+		  kernel -- see the description of CFG_BOOTMAPSZ.
 
 
   bootm_size	- Memory range available for image processing in the bootm
   bootm_size	- Memory range available for image processing in the bootm
 		  command can be restricted. This variable is given as
 		  command can be restricted. This variable is given as
@@ -2880,7 +2881,7 @@ Some configuration options can be set using Environment Variables:
 		  themselves.
 		  themselves.
 
 
   npe_ucode	- see CONFIG_IXP4XX_NPE_EXT_UCOD
   npe_ucode	- see CONFIG_IXP4XX_NPE_EXT_UCOD
-		  if set load address for the npe microcode
+		  if set load address for the NPE microcode
 
 
   tftpsrcport	- If this is set, the value is used for TFTP's
   tftpsrcport	- If this is set, the value is used for TFTP's
 		  UDP source port.
 		  UDP source port.
@@ -2889,7 +2890,7 @@ Some configuration options can be set using Environment Variables:
 		  destination port instead of the Well Know Port 69.
 		  destination port instead of the Well Know Port 69.
 
 
    vlan		- When set to a value < 4095 the traffic over
    vlan		- When set to a value < 4095 the traffic over
-		  ethernet is encapsulated/received over 802.1q
+		  Ethernet is encapsulated/received over 802.1q
 		  VLAN tagged frames.
 		  VLAN tagged frames.
 
 
 The following environment variables may be used and automatically
 The following environment variables may be used and automatically
@@ -2967,14 +2968,14 @@ General rules:
     executed anyway.
     executed anyway.
 
 
 (2) If you execute several variables with one call to run (i. e.
 (2) If you execute several variables with one call to run (i. e.
-    calling run with a list af variables as arguments), any failing
+    calling run with a list of variables as arguments), any failing
     command will cause "run" to terminate, i. e. the remaining
     command will cause "run" to terminate, i. e. the remaining
     variables are not executed.
     variables are not executed.
 
 
 Note for Redundant Ethernet Interfaces:
 Note for Redundant Ethernet Interfaces:
 =======================================
 =======================================
 
 
-Some boards come with redundant ethernet interfaces; U-Boot supports
+Some boards come with redundant Ethernet interfaces; U-Boot supports
 such configurations and is capable of automatic selection of a
 such configurations and is capable of automatic selection of a
 "working" interface when needed. MAC assignment works as follows:
 "working" interface when needed. MAC assignment works as follows:
 
 
@@ -3315,7 +3316,7 @@ parameters. You can check and modify this variable using the
 	Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]
 	Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]
 	...
 	...
 
 
-If you want to boot a Linux kernel with initial ram disk, you pass
+If you want to boot a Linux kernel with initial RAM disk, you pass
 the memory addresses of both the kernel and the initrd image (PPBCOOT
 the memory addresses of both the kernel and the initrd image (PPBCOOT
 format!) to the "bootm" command:
 format!) to the "bootm" command:
 
 
@@ -3625,13 +3626,13 @@ locked as (mis-) used as memory, etc.
 	require any physical RAM backing up the cache. The cleverness
 	require any physical RAM backing up the cache. The cleverness
 	is that the cache is being used as a temporary supply of
 	is that the cache is being used as a temporary supply of
 	necessary storage before the SDRAM controller is setup. It's
 	necessary storage before the SDRAM controller is setup. It's
-	beyond the scope of this list to expain the details, but you
+	beyond the scope of this list to explain the details, but you
 	can see how this works by studying the cache architecture and
 	can see how this works by studying the cache architecture and
 	operation in the architecture and processor-specific manuals.
 	operation in the architecture and processor-specific manuals.
 
 
 	OCM is On Chip Memory, which I believe the 405GP has 4K. It
 	OCM is On Chip Memory, which I believe the 405GP has 4K. It
 	is another option for the system designer to use as an
 	is another option for the system designer to use as an
-	initial stack/ram area prior to SDRAM being available. Either
+	initial stack/RAM area prior to SDRAM being available. Either
 	option should work for you. Using CS 4 should be fine if your
 	option should work for you. Using CS 4 should be fine if your
 	board designers haven't used it for something that would
 	board designers haven't used it for something that would
 	cause you grief during the initial boot! It is frequently not
 	cause you grief during the initial boot! It is frequently not
@@ -3656,7 +3657,7 @@ code for the initialization procedures:
 * Initialized global data (data segment) is read-only. Do not attempt
 * Initialized global data (data segment) is read-only. Do not attempt
   to write it.
   to write it.
 
 
-* Do not use any unitialized global data (or implicitely initialized
+* Do not use any uninitialized global data (or implicitely initialized
   as zero data - BSS segment) at all - this is undefined, initiali-
   as zero data - BSS segment) at all - this is undefined, initiali-
   zation is performed later (when relocating to RAM).
   zation is performed later (when relocating to RAM).
 
 
@@ -3768,7 +3769,7 @@ System Initialization:
 ----------------------
 ----------------------
 
 
 In the reset configuration, U-Boot starts at the reset entry point
 In the reset configuration, U-Boot starts at the reset entry point
-(on most PowerPC systens at address 0x00000100). Because of the reset
+(on most PowerPC systems at address 0x00000100). Because of the reset
 configuration for CS0# this is a mirror of the onboard Flash memory.
 configuration for CS0# this is a mirror of the onboard Flash memory.
 To be able to re-map memory U-Boot then jumps to its link address.
 To be able to re-map memory U-Boot then jumps to its link address.
 To be able to implement the initialization code in C, a (small!)
 To be able to implement the initialization code in C, a (small!)

+ 1 - 1
board/MigoR/Makefile

@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= migo_r.o
+COBJS	:= migo_r.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 2 - 6
board/apollon/apollon.c

@@ -153,10 +153,8 @@ void ether_init(void)
 	do {
 	do {
 		__raw_writew(0x1, LAN_RESET_REGISTER);
 		__raw_writew(0x1, LAN_RESET_REGISTER);
 		udelay(100);
 		udelay(100);
-		if (cnt == 0) {
-			printf("1. eth reset err\n");
+		if (cnt == 0)
 			goto eth_reset_err_out;
 			goto eth_reset_err_out;
-		}
 		--cnt;
 		--cnt;
 	} while (__raw_readw(LAN_RESET_REGISTER) != 0x1);
 	} while (__raw_readw(LAN_RESET_REGISTER) != 0x1);
 
 
@@ -165,10 +163,8 @@ void ether_init(void)
 	do {
 	do {
 		__raw_writew(0x0, LAN_RESET_REGISTER);
 		__raw_writew(0x0, LAN_RESET_REGISTER);
 		udelay(100);
 		udelay(100);
-		if (cnt == 0) {
-			printf("2. eth reset err\n");
+		if (cnt == 0)
 			goto eth_reset_err_out;
 			goto eth_reset_err_out;
-		}
 		--cnt;
 		--cnt;
 	} while (__raw_readw(LAN_RESET_REGISTER) != 0x0000);
 	} while (__raw_readw(LAN_RESET_REGISTER) != 0x0000);
 	udelay(1000);
 	udelay(1000);

+ 1 - 1
board/cm5200/cm5200.c

@@ -275,7 +275,7 @@ static void ft_blob_update(void *blob, bd_t *bd)
 	ret = fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
 	ret = fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
 
 
 	if (ret < 0) {
 	if (ret < 0) {
-		printf("ft_blob_update): cannot set /memory/reg "
+		printf("ft_blob_update(): cannot set /memory/reg "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 }
 }

+ 1 - 1
board/davinci/sffsdr/Makefile

@@ -27,7 +27,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-COBJS	:= dv_board.o
+COBJS	:= $(BOARD).o
 SOBJS	:= board_init.o
 SOBJS	:= board_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 5 - 6
board/davinci/sffsdr/config.mk

@@ -3,8 +3,10 @@
 # Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
 # Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
 # David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
 # David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
 #
 #
+# Copyright (C) 2008 Lyrtech <www.lyrtech.com>
+# Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
+#
 # Lyrtech SFF SDR board (ARM926EJS) cpu
 # Lyrtech SFF SDR board (ARM926EJS) cpu
-# see http://www.lyrtech.com/ for more information on Lyrtech
 #
 #
 # SFF SDR board has 1 bank of 128 MB DDR RAM
 # SFF SDR board has 1 bank of 128 MB DDR RAM
 # Physical Address:
 # Physical Address:
@@ -16,9 +18,6 @@
 # Integrity kernel is expected to be at 8000'0000, entry 8000'00D0,
 # Integrity kernel is expected to be at 8000'0000, entry 8000'00D0,
 # up to 81FF'FFFF (uses up to 32 MB of memory for text, heap, etc).
 # up to 81FF'FFFF (uses up to 32 MB of memory for text, heap, etc).
 #
 #
-# we load ourself to 8400'0000
-#
-#
-
-# Provide at least 32MB spacing between us and the Integrity kernel image
+# we load ourself to 8400'0000 to provide at least 32MB spacing
+# between us and the Integrity kernel image
 TEXT_BASE = 0x84000000
 TEXT_BASE = 0x84000000

+ 0 - 212
board/davinci/sffsdr/dv_board.c

@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Parts are shamelessly stolen from various TI sources, original copyright
- * follows:
- * -----------------------------------------------------------------
- *
- * Copyright (C) 2004 Texas Instruments.
- *
- * ----------------------------------------------------------------------------
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- * ----------------------------------------------------------------------------
- */
-
-#include <common.h>
-#include <i2c.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/emac_defs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void	timer_init(void);
-extern int	eth_hw_init(void);
-extern phy_t	phy;
-
-
-/* Works on Always On power domain only (no PD argument) */
-void lpsc_on(unsigned int id)
-{
-	dv_reg_p	mdstat, mdctl;
-
-	if (id >= DAVINCI_LPSC_GEM)
-		return;			/* Don't work on DSP Power Domain */
-
-	mdstat = REG_P(PSC_MDSTAT_BASE + (id * 4));
-	mdctl = REG_P(PSC_MDCTL_BASE + (id * 4));
-
-	while (REG(PSC_PTSTAT) & 0x01);
-
-	if ((*mdstat & 0x1f) == 0x03)
-		return;			/* Already on and enabled */
-
-	*mdctl |= 0x03;
-
-	/* Special treatment for some modules as for sprue14 p.7.4.2 */
-	if ((id == DAVINCI_LPSC_VPSSSLV) ||
-	    (id == DAVINCI_LPSC_EMAC) ||
-	    (id == DAVINCI_LPSC_EMAC_WRAPPER) ||
-	    (id == DAVINCI_LPSC_MDIO) ||
-	    (id == DAVINCI_LPSC_USB) ||
-	    (id == DAVINCI_LPSC_ATA) ||
-	    (id == DAVINCI_LPSC_VLYNQ) ||
-	    (id == DAVINCI_LPSC_UHPI) ||
-	    (id == DAVINCI_LPSC_DDR_EMIF) ||
-	    (id == DAVINCI_LPSC_AEMIF) ||
-	    (id == DAVINCI_LPSC_MMC_SD) ||
-	    (id == DAVINCI_LPSC_MEMSTICK) ||
-	    (id == DAVINCI_LPSC_McBSP) ||
-	    (id == DAVINCI_LPSC_GPIO))
-		* mdctl |= 0x200;
-
-	REG(PSC_PTCMD) = 0x01;
-
-	while (REG(PSC_PTSTAT) & 0x03);
-	while ((*mdstat & 0x1f) != 0x03);	/* Probably an overkill... */
-}
-
-void dsp_on(void)
-{
-	int	i;
-
-	if (REG(PSC_PDSTAT1) & 0x1f)
-		return;			/* Already on */
-
-	REG(PSC_GBLCTL) |= 0x01;
-	REG(PSC_PDCTL1) |= 0x01;
-	REG(PSC_PDCTL1) &= ~0x100;
-	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) |= 0x03;
-	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) &= 0xfffffeff;
-	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) |= 0x03;
-	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) &= 0xfffffeff;
-	REG(PSC_PTCMD) = 0x02;
-
-	for (i = 0; i < 100; i++) {
-		if (REG(PSC_EPCPR) & 0x02)
-			break;
-	}
-
-	REG(PSC_CHP_SHRTSW) = 0x01;
-	REG(PSC_PDCTL1) |= 0x100;
-	REG(PSC_EPCCR) = 0x02;
-
-	for (i = 0; i < 100; i++) {
-		if (!(REG(PSC_PTSTAT) & 0x02))
-			break;
-	}
-
-	REG(PSC_GBLCTL) &= ~0x1f;
-}
-
-
-int board_init(void)
-{
-	/* arch number of the board */
-	gd->bd->bi_arch_number = MACH_TYPE_SFFSDR;
-
-	/* address of boot parameters */
-	gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-
-	/* Workaround for TMS320DM6446 errata 1.3.22 */
-	REG(PSC_SILVER_BULLET) = 0;
-
-	/* Power on required peripherals */
-	lpsc_on(DAVINCI_LPSC_EMAC);
-	lpsc_on(DAVINCI_LPSC_EMAC_WRAPPER);
-	lpsc_on(DAVINCI_LPSC_MDIO);
-	lpsc_on(DAVINCI_LPSC_I2C);
-	lpsc_on(DAVINCI_LPSC_UART0);
-	lpsc_on(DAVINCI_LPSC_TIMER1);
-	lpsc_on(DAVINCI_LPSC_GPIO);
-
-	/* Powerup the DSP */
-	dsp_on();
-
-	/* Bringup UART0 out of reset */
-	REG(UART0_PWREMU_MGMT) = 0x0000e003;
-
-	/* Enable GIO3.3V cells used for EMAC */
-	REG(VDD3P3V_PWDN) = 0;
-
-	/* Enable UART0 MUX lines */
-	REG(PINMUX1) |= 1;
-
-	/* Enable EMAC and AEMIF pins */
-	REG(PINMUX0) = 0x80000c1f;
-
-	/* Enable I2C pin Mux */
-	REG(PINMUX1) |= (1 << 7);
-
-	/* Set the Bus Priority Register to appropriate value */
-	REG(VBPR) = 0x20;
-
-	timer_init();
-
-	return(0);
-}
-
-int misc_init_r(void)
-{
-	u_int8_t	tmp[20], buf[10];
-	int		i = 0;
-	int		clk = 0;
-
-	clk = ((REG(PLL2_PLLM) + 1) * 27) / ((REG(PLL2_DIV2) & 0x1f) + 1);
-
-	printf("ARM Clock: %dMHz\n", ((REG(PLL1_PLLM) + 1) * 27) / 2);
-	printf("DDR Clock: %dMHz\n", (clk / 2));
-
-	/* Configure I2C switch (PCA9543) to enable channel 0. */
-	tmp[0] = CFG_I2C_PCA9543_ENABLE_CH0;
-	if (i2c_write(CFG_I2C_PCA9543_ADDR, 0,
-		     CFG_I2C_PCA9543_ADDR_LEN, tmp, 1))
-		printf("Write to MUX @ 0x%02x failed\n", CFG_I2C_PCA9543_ADDR);
-
-	/* Set Ethernet MAC address from EEPROM.
-	 * We must read 8 bytes because data is stored in little-endian. */
-	if (i2c_read(CFG_I2C_EEPROM_ADDR, 0x05A8,
-		     CFG_I2C_EEPROM_ADDR_LEN, buf, 8)) {
-		printf("Read from EEPROM @ 0x%02x failed\n",
-		       CFG_I2C_EEPROM_ADDR);
-	} else {
-		tmp[0] = 0xff;
-		for (i = 0; i < 6; i++)
-			tmp[0] &= buf[i];
-
-		if ((tmp[0] != 0xff) && (getenv("ethaddr") == NULL)) {
-			sprintf((char *)&tmp[0],
-				"%02x:%02x:%02x:%02x:%02x:%02x",
-				buf[3], buf[2], buf[1], buf[0],
-				buf[7], buf[6]);
-			setenv("ethaddr", (char *)&tmp[0]);
-		}
-	}
-
-	if (!eth_hw_init()) {
-		printf("Ethernet init failed\n");
-	} else {
-		printf("ETH PHY: %s\n", phy.name);
-	}
-
-	return(0);
-}
-
-int dram_init(void)
-{
-	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-	return(0);
-}

+ 310 - 0
board/davinci/sffsdr/sffsdr.c

@@ -0,0 +1,310 @@
+/*
+ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
+ *
+ * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
+ * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
+ *
+ * Parts are shamelessly stolen from various TI sources, original copyright
+ * follows:
+ *
+ * Copyright (C) 2004 Texas Instruments.
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/emac_defs.h>
+
+#define DAVINCI_A3CR     (0x01E00014)	/* EMIF-A CS3 config register. */
+#define DAVINCI_A3CR_VAL (0x3FFFFFFD)	/* EMIF-A CS3 value for FPGA. */
+
+#define INTEGRITY_SYSCFG_OFFSET    0x7E8
+#define INTEGRITY_CHECKWORD_OFFSET 0x7F8
+#define INTEGRITY_CHECKWORD_VALUE  0x10ADBEEF
+
+DECLARE_GLOBAL_DATA_PTR;
+
+extern void timer_init(void);
+extern int eth_hw_init(void);
+extern phy_t phy;
+
+
+/* Works on Always On power domain only (no PD argument) */
+void lpsc_on(unsigned int id)
+{
+	dv_reg_p mdstat, mdctl;
+
+	if (id >= DAVINCI_LPSC_GEM)
+		return;			/* Don't work on DSP Power Domain */
+
+	mdstat = REG_P(PSC_MDSTAT_BASE + (id * 4));
+	mdctl = REG_P(PSC_MDCTL_BASE + (id * 4));
+
+	while (REG(PSC_PTSTAT) & 0x01);
+
+	if ((*mdstat & 0x1f) == 0x03)
+		return;			/* Already on and enabled */
+
+	*mdctl |= 0x03;
+
+	/* Special treatment for some modules as for sprue14 p.7.4.2 */
+	switch (id) {
+	case DAVINCI_LPSC_VPSSSLV:
+	case DAVINCI_LPSC_EMAC:
+	case DAVINCI_LPSC_EMAC_WRAPPER:
+	case DAVINCI_LPSC_MDIO:
+	case DAVINCI_LPSC_USB:
+	case DAVINCI_LPSC_ATA:
+	case DAVINCI_LPSC_VLYNQ:
+	case DAVINCI_LPSC_UHPI:
+	case DAVINCI_LPSC_DDR_EMIF:
+	case DAVINCI_LPSC_AEMIF:
+	case DAVINCI_LPSC_MMC_SD:
+	case DAVINCI_LPSC_MEMSTICK:
+	case DAVINCI_LPSC_McBSP:
+	case DAVINCI_LPSC_GPIO:
+		*mdctl |= 0x200;
+		break;
+	}
+
+	REG(PSC_PTCMD) = 0x01;
+
+	while (REG(PSC_PTSTAT) & 0x03);
+	while ((*mdstat & 0x1f) != 0x03);	/* Probably an overkill... */
+}
+
+#if !defined(CFG_USE_DSPLINK)
+void dsp_on(void)
+{
+	int i;
+
+	if (REG(PSC_PDSTAT1) & 0x1f)
+		return;			/* Already on */
+
+	REG(PSC_GBLCTL) |= 0x01;
+	REG(PSC_PDCTL1) |= 0x01;
+	REG(PSC_PDCTL1) &= ~0x100;
+	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) |= 0x03;
+	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) &= 0xfffffeff;
+	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) |= 0x03;
+	REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) &= 0xfffffeff;
+	REG(PSC_PTCMD) = 0x02;
+
+	for (i = 0; i < 100; i++) {
+		if (REG(PSC_EPCPR) & 0x02)
+			break;
+	}
+
+	REG(PSC_CHP_SHRTSW) = 0x01;
+	REG(PSC_PDCTL1) |= 0x100;
+	REG(PSC_EPCCR) = 0x02;
+
+	for (i = 0; i < 100; i++) {
+		if (!(REG(PSC_PTSTAT) & 0x02))
+			break;
+	}
+
+	REG(PSC_GBLCTL) &= ~0x1f;
+}
+#endif /* CFG_USE_DSPLINK */
+
+int board_init(void)
+{
+	/* arch number of the board */
+	gd->bd->bi_arch_number = MACH_TYPE_SFFSDR;
+
+	/* address of boot parameters */
+	gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
+
+	/* Workaround for TMS320DM6446 errata 1.3.22 */
+	REG(PSC_SILVER_BULLET) = 0;
+
+	/* Power on required peripherals */
+	lpsc_on(DAVINCI_LPSC_EMAC);
+	lpsc_on(DAVINCI_LPSC_EMAC_WRAPPER);
+	lpsc_on(DAVINCI_LPSC_MDIO);
+	lpsc_on(DAVINCI_LPSC_I2C);
+	lpsc_on(DAVINCI_LPSC_UART0);
+	lpsc_on(DAVINCI_LPSC_TIMER1);
+	lpsc_on(DAVINCI_LPSC_GPIO);
+
+#if !defined(CFG_USE_DSPLINK)
+	/* Powerup the DSP */
+	dsp_on();
+#endif /* CFG_USE_DSPLINK */
+
+	/* Bringup UART0 out of reset */
+	REG(UART0_PWREMU_MGMT) = 0x0000e003;
+
+	/* Enable GIO3.3V cells used for EMAC */
+	REG(VDD3P3V_PWDN) = 0;
+
+	/* Enable UART0 MUX lines */
+	REG(PINMUX1) |= 1;
+
+	/* Enable EMAC and AEMIF pins */
+	REG(PINMUX0) = 0x80000c1f;
+
+	/* Enable I2C pin Mux */
+	REG(PINMUX1) |= (1 << 7);
+
+	/* Set the Bus Priority Register to appropriate value */
+	REG(VBPR) = 0x20;
+
+	timer_init();
+
+	return(0);
+}
+
+/* Read ethernet MAC address from Integrity data structure inside EEPROM. */
+int read_mac_address(uint8_t *buf)
+{
+	u_int32_t value, mac[2], address;
+
+	/* Read Integrity data structure checkword. */
+	if (i2c_read(CFG_I2C_EEPROM_ADDR, INTEGRITY_CHECKWORD_OFFSET,
+		     CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
+		goto err;
+	if (value != INTEGRITY_CHECKWORD_VALUE)
+		return 1;
+
+	/* Read SYSCFG structure offset. */
+	if (i2c_read(CFG_I2C_EEPROM_ADDR, INTEGRITY_SYSCFG_OFFSET,
+		     CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
+		goto err;
+	address = 0x800 + (int) value; /* Address of SYSCFG structure. */
+
+	/* Read NET CONFIG structure offset. */
+	if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
+		     CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
+		goto err;
+	address = 0x800 + (int) value; /* Address of NET CONFIG structure. */
+	address += 12; /* Address of NET INTERFACE CONFIG structure. */
+
+	/* Read NET INTERFACE CONFIG 2 structure offset. */
+	if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
+		     CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
+		goto err;
+	address = 0x800 + 16 + (int) value;	/* Address of NET INTERFACE
+						 * CONFIG 2 structure. */
+
+	/* Read MAC address. */
+	if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
+		     CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &mac[0], 8))
+		goto err;
+
+	buf[0] = mac[0] >> 24;
+	buf[1] = mac[0] >> 16;
+	buf[2] = mac[0] >> 8;
+	buf[3] = mac[0];
+	buf[4] = mac[1] >> 24;
+	buf[5] = mac[1] >> 16;
+
+	return 0;
+
+err:
+	printf("Read from EEPROM @ 0x%02x failed\n", CFG_I2C_EEPROM_ADDR);
+	return 1;
+}
+
+/* Platform dependent initialisation. */
+int misc_init_r(void)
+{
+	int i;
+	u_int8_t i2cbuf;
+	u_int8_t env_enetaddr[6], eeprom_enetaddr[6];
+	char *tmp = getenv("ethaddr");
+	char *end;
+	int clk;
+
+	/* EMIF-A CS3 configuration for FPGA. */
+	REG(DAVINCI_A3CR) = DAVINCI_A3CR_VAL;
+
+	clk = ((REG(PLL2_PLLM) + 1) * 27) / ((REG(PLL2_DIV2) & 0x1f) + 1);
+
+	printf("ARM Clock: %dMHz\n", ((REG(PLL1_PLLM) + 1) * 27) / 2);
+	printf("DDR Clock: %dMHz\n", (clk / 2));
+
+	/* Configure I2C switch (PCA9543) to enable channel 0. */
+	i2cbuf = CFG_I2C_PCA9543_ENABLE_CH0;
+	if (i2c_write(CFG_I2C_PCA9543_ADDR, 0,
+		      CFG_I2C_PCA9543_ADDR_LEN, &i2cbuf, 1)) {
+		printf("Write to MUX @ 0x%02x failed\n", CFG_I2C_PCA9543_ADDR);
+		return 1;
+	}
+
+	/* Read Ethernet MAC address from the U-Boot environment. */
+	for (i = 0; i < 6; i++) {
+		env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
+		if (tmp)
+			tmp = (*end) ? end+1 : end;
+	}
+
+	/* Read Ethernet MAC address from EEPROM. */
+	if (read_mac_address(eeprom_enetaddr) == 0) {
+		if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6) != 0 &&
+		    memcmp(env_enetaddr, eeprom_enetaddr, 6) != 0) {
+			printf("\nWarning: MAC addresses don't match:\n");
+			printf("\tHW MAC address:  "
+			       "%02X:%02X:%02X:%02X:%02X:%02X\n",
+			       eeprom_enetaddr[0], eeprom_enetaddr[1],
+			       eeprom_enetaddr[2], eeprom_enetaddr[3],
+			       eeprom_enetaddr[4], eeprom_enetaddr[5]);
+			printf("\t\"ethaddr\" value: "
+			       "%02X:%02X:%02X:%02X:%02X:%02X\n",
+			       env_enetaddr[0], env_enetaddr[1],
+			       env_enetaddr[2], env_enetaddr[3],
+			       env_enetaddr[4], env_enetaddr[5]) ;
+			debug("### Set MAC addr from environment\n");
+			memcpy(eeprom_enetaddr, env_enetaddr, 6);
+		}
+		if (!tmp) {
+			char ethaddr[20];
+
+			sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X",
+				eeprom_enetaddr[0], eeprom_enetaddr[1],
+				eeprom_enetaddr[2], eeprom_enetaddr[3],
+				eeprom_enetaddr[4], eeprom_enetaddr[5]) ;
+			debug("### Set environment from HW MAC addr = \"%s\"\n",
+			      ethaddr);
+			setenv("ethaddr", ethaddr);
+		}
+	}
+
+	if (!eth_hw_init()) {
+		printf("Ethernet init failed\n");
+	} else {
+		printf("ETH PHY: %s\n", phy.name);
+	}
+
+	/* On this platform, U-Boot is copied in RAM by the UBL,
+	 * so we are always in the relocated state. */
+	gd->flags |= GD_FLG_RELOC;
+
+	return(0);
+}
+
+int dram_init(void)
+{
+	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+
+	return(0);
+}

+ 27 - 0
board/freescale/mpc8260ads/mpc8260ads.c

@@ -46,6 +46,10 @@
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
 #include <pci.h>
 #include <pci.h>
 #endif
 #endif
+#ifdef CONFIG_OF_LIBFDT
+#include <libfdt.h>
+#include <fdt_support.h>
+#endif
 
 
 /*
 /*
  * I/O Port configuration table
  * I/O Port configuration table
@@ -544,3 +548,26 @@ void pci_init_board(void)
 	pci_mpc8250_init(&hose);
 	pci_mpc8250_init(&hose);
 }
 }
 #endif
 #endif
+
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+void ft_blob_update(void *blob, bd_t *bd)
+{
+	int ret;
+
+	ret = fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+
+	if (ret < 0) {
+		printf("ft_blob_update(): cannot set /memory/reg "
+			"property err:%s\n", fdt_strerror(ret));
+	}
+}
+
+void ft_board_setup(void *blob, bd_t *bd)
+{
+	ft_cpu_setup(blob, bd);
+#ifdef CONFIG_PCI
+	ft_pci_setup(blob, bd);
+#endif
+	ft_blob_update(blob, bd);
+}
+#endif

+ 1 - 1
board/ids8247/ids8247.c

@@ -334,7 +334,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 	ret = fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
 	ret = fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
 
 
 	if (ret < 0) {
 	if (ret < 0) {
-		printf("ft_blob_update): cannot set /memory/reg "
+		printf("ft_blob_update(): cannot set /memory/reg "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 }
 }

+ 3 - 3
board/mgcoge/mgcoge.c

@@ -307,7 +307,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 		ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 					sizeof(memory_data));
 					sizeof(memory_data));
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /memory/reg "
+		printf("ft_blob_update(): cannot set /memory/reg "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {
@@ -327,7 +327,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "ranges", flash_data,
 		ret = fdt_setprop(blob, nodeoffset, "ranges", flash_data,
 					sizeof(flash_data));
 					sizeof(flash_data));
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /localbus/ranges "
+		printf("ft_blob_update(): cannot set /localbus/ranges "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {
@@ -341,7 +341,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "mac-address", bd->bi_enetaddr,
 		ret = fdt_setprop(blob, nodeoffset, "mac-address", bd->bi_enetaddr,
 					sizeof(uchar) * 6);
 					sizeof(uchar) * 6);
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /soc/cpm/ethernet/mac-address "
+		printf("ft_blob_update(): cannot set /soc/cpm/ethernet/mac-address "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {

+ 4 - 4
board/mgsuvd/mgsuvd.c

@@ -164,7 +164,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 			ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 			ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 						sizeof(memory_data));
 						sizeof(memory_data));
 		if (ret < 0)
 		if (ret < 0)
-			printf("ft_blob_update): cannot set /memory/reg "
+			printf("ft_blob_update(): cannot set /memory/reg "
 				"property err:%s\n", fdt_strerror(ret));
 				"property err:%s\n", fdt_strerror(ret));
 		}
 		}
 		else {
 		else {
@@ -180,7 +180,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "ranges", flash_data,
 		ret = fdt_setprop(blob, nodeoffset, "ranges", flash_data,
 					sizeof(flash_data));
 					sizeof(flash_data));
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /localbus/ranges "
+		printf("ft_blob_update(): cannot set /localbus/ranges "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {
@@ -195,7 +195,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "brg-frequency", brg_data,
 		ret = fdt_setprop(blob, nodeoffset, "brg-frequency", brg_data,
 					sizeof(brg_data));
 					sizeof(brg_data));
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /soc/cpm/brg-frequency "
+		printf("ft_blob_update(): cannot set /soc/cpm/brg-frequency "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {
@@ -209,7 +209,7 @@ void ft_blob_update(void *blob, bd_t *bd)
 		ret = fdt_setprop(blob, nodeoffset, "mac-address", bd->bi_enetaddr,
 		ret = fdt_setprop(blob, nodeoffset, "mac-address", bd->bi_enetaddr,
 					sizeof(uchar) * 6);
 					sizeof(uchar) * 6);
 	if (ret < 0)
 	if (ret < 0)
-		printf("ft_blob_update): cannot set /soc/cpm/scc/mac-address "
+		printf("ft_blob_update(): cannot set /soc/cpm/scc/mac-address "
 			"property err:%s\n", fdt_strerror(ret));
 			"property err:%s\n", fdt_strerror(ret));
 	}
 	}
 	else {
 	else {

+ 1 - 1
board/mpr2/Makefile

@@ -32,7 +32,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= mpr2.o
+COBJS	:= mpr2.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 1 - 1
board/ms7720se/Makefile

@@ -29,7 +29,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= ms7720se.o
+COBJS	:= ms7720se.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 0 - 1
board/ms7720se/ms7720se.c

@@ -40,7 +40,6 @@ int checkboard(void)
 
 
 int board_init(void)
 int board_init(void)
 {
 {
-
 	return 0;
 	return 0;
 }
 }
 
 

+ 1 - 1
board/ms7722se/Makefile

@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= ms7722se.o
+COBJS	:= ms7722se.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 4 - 4
board/ms7722se/ms7722se.c

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (C) 2007
+ * Copyright (C) 2007,2008
  * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
  * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
  *
  *
  * Copyright (C) 2007
  * Copyright (C) 2007
@@ -43,7 +43,7 @@ int board_init(void)
 	return 0;
 	return 0;
 }
 }
 
 
-int dram_init (void)
+int dram_init(void)
 {
 {
 	DECLARE_GLOBAL_DATA_PTR;
 	DECLARE_GLOBAL_DATA_PTR;
 
 
@@ -53,7 +53,7 @@ int dram_init (void)
 	return 0;
 	return 0;
 }
 }
 
 
-void led_set_state (unsigned short value)
+void led_set_state(unsigned short value)
 {
 {
-	*((volatile unsigned short *) LED_BASE) = (value & 0xFF);
+	writew(value & 0xFF, LED_BASE);
 }
 }

+ 1 - 1
board/ms7750se/Makefile

@@ -21,7 +21,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= ms7750se.o
+COBJS	:= ms7750se.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 1 - 1
board/r2dplus/Makefile

@@ -21,7 +21,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= r2dplus.o
+COBJS	:= r2dplus.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 15 - 13
board/r2dplus/r2dplus.c

@@ -24,6 +24,7 @@
 #include <common.h>
 #include <common.h>
 #include <ide.h>
 #include <ide.h>
 #include <asm/processor.h>
 #include <asm/processor.h>
+#include <asm/io.h>
 #include <asm/pci.h>
 #include <asm/pci.h>
 
 
 int checkboard(void)
 int checkboard(void)
@@ -37,7 +38,7 @@ int board_init(void)
 	return 0;
 	return 0;
 }
 }
 
 
-int dram_init (void)
+int dram_init(void)
 {
 {
 	DECLARE_GLOBAL_DATA_PTR;
 	DECLARE_GLOBAL_DATA_PTR;
 
 
@@ -52,25 +53,26 @@ int board_late_init(void)
 	return 0;
 	return 0;
 }
 }
 
 
-#define FPGA_BASE          0xA4000000
-#define FPGA_CFCTL         (FPGA_BASE + 0x04)
-#define FPGA_CFPOW         (FPGA_BASE + 0x06)
-#define FPGA_CFCDINTCLR    (FPGA_BASE + 0x2A)
+#define FPGA_BASE		0xA4000000
+#define FPGA_CFCTL		(FPGA_BASE + 0x04)
+#define CFCTL_EN		(0x432)
+#define FPGA_CFPOW		(FPGA_BASE + 0x06)
+#define CFPOW_ON		(0x02)
+#define FPGA_CFCDINTCLR	(FPGA_BASE + 0x2A)
+#define CFCDINTCLR_EN	(0x01)
 
 
-void ide_set_reset (int idereset)
+void ide_set_reset(int idereset)
 {
 {
 	/* if reset = 1 IDE reset will be asserted */
 	/* if reset = 1 IDE reset will be asserted */
-	if (idereset){
-		(*(vu_short *)FPGA_CFCTL) = 0x432;
-		(*(vu_short *)FPGA_CFPOW) |= 0x02;
-		(*(vu_short *)FPGA_CFCDINTCLR) = 0x01;
+	if (idereset) {
+		outw(CFCTL_EN, FPGA_CFCTL);	/* CF enable */
+		outw(inw(FPGA_CFPOW)|CFPOW_ON, FPGA_CFPOW); /* Power OM */
+		outw(CFCDINTCLR_EN, FPGA_CFCDINTCLR); /* Int clear */
 	}
 	}
 }
 }
 
 
-#if defined(CONFIG_PCI)
 static struct pci_controller hose;
 static struct pci_controller hose;
 void pci_init_board(void)
 void pci_init_board(void)
 {
 {
-	pci_sh7751_init( &hose );
+	pci_sh7751_init(&hose);
 }
 }
-#endif /* CONFIG_PCI */

+ 1 - 1
board/r7780mp/Makefile

@@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= r7780mp.o
+COBJS	:= r7780mp.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 10 - 12
board/r7780mp/r7780mp.c

@@ -38,12 +38,12 @@ int checkboard(void)
 int board_init(void)
 int board_init(void)
 {
 {
 	/* SCIF Enable */
 	/* SCIF Enable */
-	*(vu_short*)PHCR = 0x0000;
+	writew(0x0, PHCR);
 
 
 	return 0;
 	return 0;
 }
 }
 
 
-int dram_init (void)
+int dram_init(void)
 {
 {
 	DECLARE_GLOBAL_DATA_PTR;
 	DECLARE_GLOBAL_DATA_PTR;
 
 
@@ -53,29 +53,27 @@ int dram_init (void)
 	return 0;
 	return 0;
 }
 }
 
 
-void led_set_state (unsigned short value)
+void led_set_state(unsigned short value)
 {
 {
 
 
 }
 }
 
 
-void ide_set_reset (int idereset)
+void ide_set_reset(int idereset)
 {
 {
 	/* if reset = 1 IDE reset will be asserted */
 	/* if reset = 1 IDE reset will be asserted */
-	if (idereset){
-		(*(vu_short *)FPGA_CFCTL) = 0x432;
+	if (idereset) {
+		writew(0x432, FPGA_CFCTL);
 #if defined(CONFIG_R7780MP)
 #if defined(CONFIG_R7780MP)
-		(*(vu_short *)FPGA_CFPOW) |= 0x01;
+		writew(inw(FPGA_CFPOW)|0x01, FPGA_CFPOW);
 #else
 #else
-		(*(vu_short *)FPGA_CFPOW) |= 0x02;
+		writew(inw(FPGA_CFPOW)|0x02, FPGA_CFPOW);
 #endif
 #endif
-		(*(vu_short *)FPGA_CFCDINTCLR) = 0x01;
+		writew(0x01, FPGA_CFCDINTCLR);
 	}
 	}
 }
 }
 
 
-#if defined(CONFIG_PCI)
 static struct pci_controller hose;
 static struct pci_controller hose;
 void pci_init_board(void)
 void pci_init_board(void)
 {
 {
-	pci_sh7780_init( &hose );
+	pci_sh7780_init(&hose);
 }
 }
-#endif

+ 1 - 1
board/sh7763rdp/Makefile

@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
 
 
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
-OBJS	:= sh7763rdp.o
+COBJS	:= sh7763rdp.o
 SOBJS	:= lowlevel_init.o
 SOBJS	:= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)

+ 9 - 8
board/sh7763rdp/sh7763rdp.c

@@ -49,19 +49,20 @@ int board_init(void)
 {
 {
 	vu_short dat;
 	vu_short dat;
 
 
-	*(vu_short *)(CPU_CMDREG) |= 0x0001;
+	/* Enable mode */
+	writew(inw(CPU_CMDREG)|0x0001, CPU_CMDREG);
 
 
 	/* GPIO Setting (eth1) */
 	/* GPIO Setting (eth1) */
-	dat = *(vu_short *)(PSEL1);
-	*(vu_short *)PSEL1 = ((dat & ~0xff00) | 0x2400);
-	*(vu_short *)PFCR = 0;
-	*(vu_short *)PGCR = 0;
-	*(vu_short *)PHCR = 0;
+	dat = inw(PSEL1);
+	writew(((dat & ~0xff00) | 0x2400), PSEL1);
+	writew(0, PFCR);
+	writew(0, PGCR);
+	writew(0, PHCR);
 
 
 	return 0;
 	return 0;
 }
 }
 
 
-int dram_init (void)
+int dram_init(void)
 {
 {
 	DECLARE_GLOBAL_DATA_PTR;
 	DECLARE_GLOBAL_DATA_PTR;
 
 
@@ -71,6 +72,6 @@ int dram_init (void)
 	return 0;
 	return 0;
 }
 }
 
 
-void led_set_state (unsigned short value)
+void led_set_state(unsigned short value)
 {
 {
 }
 }

+ 4 - 4
common/cmd_fdt.c

@@ -451,14 +451,14 @@ static int fdt_valid(void)
 		if (err == -FDT_ERR_BADVERSION) {
 		if (err == -FDT_ERR_BADVERSION) {
 			if (fdt_version(working_fdt) <
 			if (fdt_version(working_fdt) <
 			    FDT_FIRST_SUPPORTED_VERSION) {
 			    FDT_FIRST_SUPPORTED_VERSION) {
-				printf (" - too old, fdt $d < %d",
+				printf (" - too old, fdt %d < %d",
 					fdt_version(working_fdt),
 					fdt_version(working_fdt),
 					FDT_FIRST_SUPPORTED_VERSION);
 					FDT_FIRST_SUPPORTED_VERSION);
 				working_fdt = NULL;
 				working_fdt = NULL;
 			}
 			}
 			if (fdt_last_comp_version(working_fdt) >
 			if (fdt_last_comp_version(working_fdt) >
 			    FDT_LAST_SUPPORTED_VERSION) {
 			    FDT_LAST_SUPPORTED_VERSION) {
-				printf (" - too new, fdt $d > %d",
+				printf (" - too new, fdt %d > %d",
 					fdt_version(working_fdt),
 					fdt_version(working_fdt),
 					FDT_LAST_SUPPORTED_VERSION);
 					FDT_LAST_SUPPORTED_VERSION);
 				working_fdt = NULL;
 				working_fdt = NULL;
@@ -546,7 +546,7 @@ static int fdt_parse_prop(char **newval, int count, char *data, int *len)
 				newp = newval[++stridx];
 				newp = newval[++stridx];
 		}
 		}
 		if (*newp != ']') {
 		if (*newp != ']') {
-			printf("Unexpected character '%c'\n", *newval);
+			printf("Unexpected character '%c'\n", *newp);
 			return 1;
 			return 1;
 		}
 		}
 	} else {
 	} else {
@@ -763,7 +763,7 @@ static int fdt_print(const char *pathp, char *prop, int depth)
 			}
 			}
 			break;
 			break;
 		case FDT_NOP:
 		case FDT_NOP:
-			printf("/* NOP */\n", &tabs[MAX_LEVEL - level]);
+			printf("%s/* NOP */\n", &tabs[MAX_LEVEL - level]);
 			break;
 			break;
 		case FDT_END:
 		case FDT_END:
 			return 1;
 			return 1;

+ 31 - 22
common/env_common.c

@@ -50,7 +50,6 @@ extern void env_relocate_spec (void);
 extern uchar env_get_char_spec(int);
 extern uchar env_get_char_spec(int);
 
 
 static uchar env_get_char_init (int index);
 static uchar env_get_char_init (int index);
-uchar (*env_get_char)(int) = env_get_char_init;
 
 
 /************************************************************************
 /************************************************************************
  * Default settings to be used when no valid environment is found
  * Default settings to be used when no valid environment is found
@@ -183,6 +182,19 @@ uchar env_get_char_memory (int index)
 }
 }
 #endif
 #endif
 
 
+uchar env_get_char (int index)
+{
+	uchar c;
+
+	/* if relocated to RAM */
+	if (gd->flags & GD_FLG_RELOC)
+		c = env_get_char_memory(index);
+	else
+		c = env_get_char_init(index);
+
+	return (c);
+}
+
 uchar *env_get_addr (int index)
 uchar *env_get_addr (int index)
 {
 {
 	if (gd->env_valid) {
 	if (gd->env_valid) {
@@ -192,6 +204,23 @@ uchar *env_get_addr (int index)
 	}
 	}
 }
 }
 
 
+void set_default_env(void)
+{
+	if (sizeof(default_environment) > ENV_SIZE) {
+		puts ("*** Error - default environment is too large\n\n");
+		return;
+	}
+
+	memset(env_ptr, 0, sizeof(env_t));
+	memcpy(env_ptr->data, default_environment,
+	       sizeof(default_environment));
+#ifdef CFG_REDUNDAND_ENVIRONMENT
+	env_ptr->flags = 0xFF;
+#endif
+	env_crc_update ();
+	gd->env_valid = 1;
+}
+
 void env_relocate (void)
 void env_relocate (void)
 {
 {
 	DEBUGF ("%s[%d] offset = 0x%lx\n", __FUNCTION__,__LINE__,
 	DEBUGF ("%s[%d] offset = 0x%lx\n", __FUNCTION__,__LINE__,
@@ -216,11 +245,6 @@ void env_relocate (void)
 	DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
 	DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
 #endif
 #endif
 
 
-	/*
-	 * After relocation to RAM, we can always use the "memory" functions
-	 */
-	env_get_char = env_get_char_memory;
-
 	if (gd->env_valid == 0) {
 	if (gd->env_valid == 0) {
 #if defined(CONFIG_GTH)	|| defined(CFG_ENV_IS_NOWHERE)	/* Environment not changable */
 #if defined(CONFIG_GTH)	|| defined(CFG_ENV_IS_NOWHERE)	/* Environment not changable */
 		puts ("Using default environment\n\n");
 		puts ("Using default environment\n\n");
@@ -228,22 +252,7 @@ void env_relocate (void)
 		puts ("*** Warning - bad CRC, using default environment\n\n");
 		puts ("*** Warning - bad CRC, using default environment\n\n");
 		show_boot_progress (-60);
 		show_boot_progress (-60);
 #endif
 #endif
-
-		if (sizeof(default_environment) > ENV_SIZE)
-		{
-			puts ("*** Error - default environment is too large\n\n");
-			return;
-		}
-
-		memset (env_ptr, 0, sizeof(env_t));
-		memcpy (env_ptr->data,
-			default_environment,
-			sizeof(default_environment));
-#ifdef CFG_REDUNDAND_ENVIRONMENT
-		env_ptr->flags = 0xFF;
-#endif
-		env_crc_update ();
-		gd->env_valid = 1;
+		set_default_env();
 	}
 	}
 	else {
 	else {
 		env_relocate_spec ();
 		env_relocate_spec ();

+ 5 - 17
common/env_nand.c

@@ -95,8 +95,8 @@ uchar env_get_char_spec (int index)
 /* this is called before nand_init()
 /* this is called before nand_init()
  * so we can't read Nand to validate env data.
  * so we can't read Nand to validate env data.
  * Mark it OK for now. env_relocate() in env_common.c
  * Mark it OK for now. env_relocate() in env_common.c
- * will call our relocate function which will does
- * the real validation.
+ * will call our relocate function which does the real
+ * validation.
  *
  *
  * When using a NAND boot image (like sequoia_nand), the environment
  * When using a NAND boot image (like sequoia_nand), the environment
  * can be embedded or attached to the U-Boot image in NAND flash. This way
  * can be embedded or attached to the U-Boot image in NAND flash. This way
@@ -246,7 +246,7 @@ int saveenv(void)
 
 
 	puts ("Writing to Nand... ");
 	puts ("Writing to Nand... ");
 	total = CFG_ENV_SIZE;
 	total = CFG_ENV_SIZE;
-	if (writeenv(CFG_ENV_OFFSET, env_ptr)) {
+	if (writeenv(CFG_ENV_OFFSET, (u_char *) env_ptr)) {
 		puts("FAILED!\n");
 		puts("FAILED!\n");
 		return 1;
 		return 1;
 	}
 	}
@@ -349,7 +349,7 @@ void env_relocate_spec (void)
 	int ret;
 	int ret;
 
 
 	total = CFG_ENV_SIZE;
 	total = CFG_ENV_SIZE;
-	ret = readenv(CFG_ENV_OFFSET, env_ptr);
+	ret = readenv(CFG_ENV_OFFSET, (u_char *) env_ptr);
 	if (ret || total != CFG_ENV_SIZE)
 	if (ret || total != CFG_ENV_SIZE)
 		return use_default();
 		return use_default();
 
 
@@ -363,19 +363,7 @@ void env_relocate_spec (void)
 static void use_default()
 static void use_default()
 {
 {
 	puts ("*** Warning - bad CRC or NAND, using default environment\n\n");
 	puts ("*** Warning - bad CRC or NAND, using default environment\n\n");
-
-	if (default_environment_size > CFG_ENV_SIZE){
-		puts ("*** Error - default environment is too large\n\n");
-		return;
-	}
-
-	memset (env_ptr, 0, sizeof(env_t));
-	memcpy (env_ptr->data,
-			default_environment,
-			default_environment_size);
-	env_ptr->crc = crc32(0, env_ptr->data, ENV_SIZE);
-	gd->env_valid = 1;
-
+	set_default_env();
 }
 }
 #endif
 #endif
 
 

+ 1 - 1
common/main.c

@@ -509,7 +509,7 @@ void reset_cmd_timeout(void)
  */
  */
 
 
 #define putnstr(str,n)	do {			\
 #define putnstr(str,n)	do {			\
-		printf ("%.*s", n, str);	\
+		printf ("%.*s", (int)n, str);	\
 	} while (0)
 	} while (0)
 
 
 #define CTL_CH(c)		((c) - 'a' + 1)
 #define CTL_CH(c)		((c) - 'a' + 1)

+ 8 - 7
cpu/arm920t/at91rm9200/lxt972.c

@@ -29,6 +29,7 @@
 #include <common.h>
 #include <common.h>
 #include <at91rm9200_net.h>
 #include <at91rm9200_net.h>
 #include <net.h>
 #include <net.h>
+#include <miiphy.h>
 #include <lxt971a.h>
 #include <lxt971a.h>
 
 
 #ifdef CONFIG_DRIVER_ETHER
 #ifdef CONFIG_DRIVER_ETHER
@@ -51,8 +52,8 @@ unsigned int lxt972_IsPhyConnected (AT91PS_EMAC p_mac)
 	unsigned short Id1, Id2;
 	unsigned short Id1, Id2;
 
 
 	at91rm9200_EmacEnableMDIO (p_mac);
 	at91rm9200_EmacEnableMDIO (p_mac);
-	at91rm9200_EmacReadPhy (p_mac, PHY_COMMON_ID1, &Id1);
-	at91rm9200_EmacReadPhy (p_mac, PHY_COMMON_ID2, &Id2);
+	at91rm9200_EmacReadPhy(p_mac, PHY_PHYIDR1, &Id1);
+	at91rm9200_EmacReadPhy(p_mac, PHY_PHYIDR2, &Id2);
 	at91rm9200_EmacDisableMDIO (p_mac);
 	at91rm9200_EmacDisableMDIO (p_mac);
 
 
 	if ((Id1 == (0x0013)) && ((Id2  & 0xFFF0) == 0x78E0))
 	if ((Id1 == (0x0013)) && ((Id2  & 0xFFF0) == 0x78E0))
@@ -169,18 +170,18 @@ UCHAR lxt972_AutoNegotiate (AT91PS_EMAC p_mac, int *status)
 	unsigned short value;
 	unsigned short value;
 
 
 	/* Set lxt972 control register */
 	/* Set lxt972 control register */
-	if (!at91rm9200_EmacReadPhy (p_mac, PHY_COMMON_CTRL, &value))
+	if (!at91rm9200_EmacReadPhy (p_mac, PHY_BMCR, &value))
 		return FALSE;
 		return FALSE;
 
 
 	/* Restart Auto_negotiation  */
 	/* Restart Auto_negotiation  */
-	value |= PHY_COMMON_CTRL_RES_AUTO;
-	if (!at91rm9200_EmacWritePhy (p_mac, PHY_COMMON_CTRL, &value))
+	value |= PHY_BMCR_RST_NEG;
+	if (!at91rm9200_EmacWritePhy (p_mac, PHY_BMCR, &value))
 		return FALSE;
 		return FALSE;
 
 
 	/*check AutoNegotiate complete */
 	/*check AutoNegotiate complete */
 	udelay (10000);
 	udelay (10000);
-	at91rm9200_EmacReadPhy (p_mac, PHY_COMMON_STAT, &value);
-	if (!(value & PHY_COMMON_STAT_AN_COMP))
+	at91rm9200_EmacReadPhy(p_mac, PHY_BMSR, &value);
+	if (!(value & PHY_BMSR_AUTN_COMP))
 		return FALSE;
 		return FALSE;
 
 
 	return (lxt972_GetLinkSpeed (p_mac));
 	return (lxt972_GetLinkSpeed (p_mac));

+ 20 - 34
cpu/arm926ejs/davinci/lxt972.c

@@ -27,6 +27,7 @@
 
 
 #include <common.h>
 #include <common.h>
 #include <net.h>
 #include <net.h>
+#include <miiphy.h>
 #include <lxt971a.h>
 #include <lxt971a.h>
 #include <asm/arch/emac_defs.h>
 #include <asm/arch/emac_defs.h>
 
 
@@ -36,11 +37,11 @@
 
 
 int lxt972_is_phy_connected(int phy_addr)
 int lxt972_is_phy_connected(int phy_addr)
 {
 {
-	u_int16_t	id1, id2;
+	u_int16_t id1, id2;
 
 
-	if (!dm644x_eth_phy_read(phy_addr, PHY_COMMON_ID1, &id1))
+	if (!dm644x_eth_phy_read(phy_addr, PHY_PHYIDR1, &id1))
 		return(0);
 		return(0);
-	if (!dm644x_eth_phy_read(phy_addr, PHY_COMMON_ID2, &id2))
+	if (!dm644x_eth_phy_read(phy_addr, PHY_PHYIDR2, &id2))
 		return(0);
 		return(0);
 
 
 	if ((id1 == (0x0013)) && ((id2  & 0xfff0) == 0x78e0))
 	if ((id1 == (0x0013)) && ((id2  & 0xfff0) == 0x78e0))
@@ -51,8 +52,8 @@ int lxt972_is_phy_connected(int phy_addr)
 
 
 int lxt972_get_link_speed(int phy_addr)
 int lxt972_get_link_speed(int phy_addr)
 {
 {
-	u_int16_t		stat1, tmp;
-	volatile emac_regs*	emac = (emac_regs *)EMAC_BASE_ADDR;
+	u_int16_t stat1, tmp;
+	volatile emac_regs *emac = (emac_regs *)EMAC_BASE_ADDR;
 
 
 	if (!dm644x_eth_phy_read(phy_addr, PHY_LXT971_STAT2, &stat1))
 	if (!dm644x_eth_phy_read(phy_addr, PHY_LXT971_STAT2, &stat1))
 		return(0);
 		return(0);
@@ -70,37 +71,23 @@ int lxt972_get_link_speed(int phy_addr)
 	if (!dm644x_eth_phy_read(phy_addr, PHY_LXT971_DIG_CFG, &tmp))
 	if (!dm644x_eth_phy_read(phy_addr, PHY_LXT971_DIG_CFG, &tmp))
 		return(0);
 		return(0);
 
 
-
 	/* Speed doesn't matter, there is no setting for it in EMAC... */
 	/* Speed doesn't matter, there is no setting for it in EMAC... */
-	if (stat1 & PHY_LXT971_STAT2_100BTX) {
-		if (stat1 & PHY_LXT971_STAT2_DUPLEX_MODE) {
-			/* set DM644x EMAC for Full Duplex  */
-			emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE | EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-		} else {
-			/*set DM644x EMAC for Half Duplex  */
-			emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE;
-		}
-
-		return(1);
+	if (stat1 & PHY_LXT971_STAT2_DUPLEX_MODE) {
+		/* set DM644x EMAC for Full Duplex  */
+		emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE |
+			EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
 	} else {
 	} else {
-		if (stat1 & PHY_LXT971_STAT2_DUPLEX_MODE) {
-			/* set DM644x EMAC for Full Duplex  */
-			emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE | EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-		} else {
-			/*set DM644x EMAC for Half Duplex  */
-			emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE;
-		}
-
-		return(1);
+		/*set DM644x EMAC for Half Duplex  */
+		emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE;
 	}
 	}
 
 
-	return(0);
+	return(1);
 }
 }
 
 
 
 
 int lxt972_init_phy(int phy_addr)
 int lxt972_init_phy(int phy_addr)
 {
 {
-	int	ret = 1;
+	int ret = 1;
 
 
 	if (!lxt972_get_link_speed(phy_addr)) {
 	if (!lxt972_get_link_speed(phy_addr)) {
 		/* Try another time */
 		/* Try another time */
@@ -116,22 +103,21 @@ int lxt972_init_phy(int phy_addr)
 
 
 int lxt972_auto_negotiate(int phy_addr)
 int lxt972_auto_negotiate(int phy_addr)
 {
 {
-	u_int16_t	tmp;
-
+	u_int16_t tmp;
 
 
-	if (!dm644x_eth_phy_read(phy_addr, PHY_COMMON_CTRL, &tmp))
+	if (!dm644x_eth_phy_read(phy_addr, PHY_BMCR, &tmp))
 		return(0);
 		return(0);
 
 
 	/* Restart Auto_negotiation  */
 	/* Restart Auto_negotiation  */
-	tmp |= PHY_COMMON_CTRL_RES_AUTO;
-	dm644x_eth_phy_write(phy_addr, PHY_COMMON_CTRL, tmp);
+	tmp |= PHY_BMCR_RST_NEG;
+	dm644x_eth_phy_write(phy_addr, PHY_BMCR, tmp);
 
 
 	/*check AutoNegotiate complete */
 	/*check AutoNegotiate complete */
 	udelay (10000);
 	udelay (10000);
-	if (!dm644x_eth_phy_read(phy_addr, PHY_COMMON_STAT, &tmp))
+	if (!dm644x_eth_phy_read(phy_addr, PHY_BMSR, &tmp))
 		return(0);
 		return(0);
 
 
-	if (!(tmp & PHY_COMMON_STAT_AN_COMP))
+	if (!(tmp & PHY_BMSR_AUTN_COMP))
 		return(0);
 		return(0);
 
 
 	return (lxt972_get_link_speed(phy_addr));
 	return (lxt972_get_link_speed(phy_addr));

+ 7 - 3
cpu/arm926ejs/davinci/nand.c

@@ -240,7 +240,8 @@ static int nand_davinci_compare_ecc(u_int8_t *ecc_nand, u_int8_t *ecc_calc, u_in
 			return 0;
 			return 0;
 		case 1:
 		case 1:
 			/* Uncorrectable error */
 			/* Uncorrectable error */
-			DEBUG (MTD_DEBUG_LEVEL0, "ECC UNCORRECTED_ERROR 1\n");
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "ECC UNCORRECTED_ERROR 1\n");
 			return(-1);
 			return(-1);
 		case 12:
 		case 12:
 			/* Correctable error */
 			/* Correctable error */
@@ -256,7 +257,9 @@ static int nand_davinci_compare_ecc(u_int8_t *ecc_nand, u_int8_t *ecc_calc, u_in
 
 
 			find_bit = (ecc_bit[5] << 2) + (ecc_bit[3] << 1) + ecc_bit[1];
 			find_bit = (ecc_bit[5] << 2) + (ecc_bit[3] << 1) + ecc_bit[1];
 
 
-			DEBUG (MTD_DEBUG_LEVEL0, "Correcting single bit ECC error at offset: %d, bit: %d\n", find_byte, find_bit);
+			MTDDEBUG (MTD_DEBUG_LEVEL0, "Correcting single bit ECC "
+			          "error at offset: %d, bit: %d\n",
+			          find_byte, find_bit);
 
 
 			page_data[find_byte] ^= (1 << find_bit);
 			page_data[find_byte] ^= (1 << find_bit);
 
 
@@ -266,7 +269,8 @@ static int nand_davinci_compare_ecc(u_int8_t *ecc_nand, u_int8_t *ecc_calc, u_in
 				if (ecc_calc[0] == 0 && ecc_calc[1] == 0 && ecc_calc[2] == 0)
 				if (ecc_calc[0] == 0 && ecc_calc[1] == 0 && ecc_calc[2] == 0)
 					return(0);
 					return(0);
 			}
 			}
-			DEBUG (MTD_DEBUG_LEVEL0, "UNCORRECTED_ERROR default\n");
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "UNCORRECTED_ERROR default\n");
 			return(-1);
 			return(-1);
 	}
 	}
 }
 }

+ 0 - 1
cpu/at32ap/Makefile

@@ -35,7 +35,6 @@ COBJS-y			+= exception.o
 COBJS-y			+= cache.o
 COBJS-y			+= cache.o
 COBJS-y			+= interrupts.o
 COBJS-y			+= interrupts.o
 COBJS-y			+= pio.o
 COBJS-y			+= pio.o
-COBJS-$(CONFIG_MMC)	+= atmel_mci.o
 
 
 SRCS	:= $(START-y:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 SRCS	:= $(START-y:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
 OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))

+ 12 - 0
cpu/mpc8260/pci.c

@@ -33,6 +33,10 @@
 #include <mpc8260.h>
 #include <mpc8260.h>
 #include <asm/m8260_pci.h>
 #include <asm/m8260_pci.h>
 #include <asm/io.h>
 #include <asm/io.h>
+#ifdef CONFIG_OF_LIBFDT
+#include <libfdt.h>
+#include <fdt_support.h>
+#endif
 
 
 #if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272 || defined CONFIG_PM826
 #if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272 || defined CONFIG_PM826
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
@@ -449,4 +453,12 @@ void pci_mpc8250_init (struct pci_controller *hose)
 	immap->im_pci.pci_emr |= cpu_to_le32 (PCI_ERROR_PCI_NO_RSP);
 	immap->im_pci.pci_emr |= cpu_to_le32 (PCI_ERROR_PCI_NO_RSP);
 }
 }
 
 
+#if defined(CONFIG_OF_LIBFDT)
+void ft_pci_setup(void *blob, bd_t *bd)
+{
+	do_fixup_by_prop_u32(blob, "device_type", "pci", 4,
+		"clock-frequency", bd->pci_clk, 1);
+}
+#endif
+
 #endif /* CONFIG_PCI */
 #endif /* CONFIG_PCI */

+ 20 - 0
cpu/mpc83xx/cpu.c

@@ -357,3 +357,23 @@ int dma_xfer(void *dest, u32 count, void *src)
 	return ((int)dma_check());
 	return ((int)dma_check());
 }
 }
 #endif /*CONFIG_DDR_ECC*/
 #endif /*CONFIG_DDR_ECC*/
+
+#ifdef CONFIG_TSEC_ENET
+/* Default initializations for TSEC controllers.  To override,
+ * create a board-specific function called:
+ * 	int board_eth_init(bd_t *bis)
+ */
+
+extern int tsec_initialize(bd_t * bis, int index, char *devname);
+
+int cpu_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_TSEC1)
+	tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
+#endif
+#if defined(CONFIG_TSEC2)
+	tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
+#endif
+	return 0;
+}
+#endif

+ 30 - 0
cpu/mpc85xx/cpu.c

@@ -353,3 +353,33 @@ void upmconfig (uint upm, uint * table, uint size)
 	}
 	}
 	out_be32(mxmr, loopval); /* OP_NORMAL */
 	out_be32(mxmr, loopval); /* OP_NORMAL */
 }
 }
+
+#if defined(CONFIG_TSEC_ENET) || defined(CONFIGMPC85XX_FEC)
+/* Default initializations for TSEC controllers.  To override,
+ * create a board-specific function called:
+ * 	int board_eth_init(bd_t *bis)
+ */
+
+extern int tsec_initialize(bd_t * bis, int index, char *devname);
+
+int cpu_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_TSEC1)
+	tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
+#endif
+#if defined(CONFIG_TSEC2)
+	tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
+#endif
+#if defined(CONFIG_MPC85XX_FEC)
+	tsec_initialize(bis, 2, CONFIG_MPC85XX_FEC_NAME);
+#else
+#if defined(CONFIG_TSEC3)
+	tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
+#endif
+#if defined(CONFIG_TSEC4)
+	tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
+#endif
+#endif
+	return 0;
+}
+#endif

+ 4 - 4
cpu/mpc85xx/traps.c

@@ -216,10 +216,10 @@ MachineCheckException(struct pt_regs *regs)
 
 
 	if (machinecheck_count > 1) {
 	if (machinecheck_count > 1) {
 		regs->nip += 4; /* skip offending instruction */
 		regs->nip += 4; /* skip offending instruction */
-		printf("Skipping current instr, Returning to 0x%08x\n",
+		printf("Skipping current instr, Returning to 0x%08lx\n",
 		       regs->nip);
 		       regs->nip);
 	} else {
 	} else {
-		printf("Returning back to 0x%08x\n",regs->nip);
+		printf("Returning back to 0x%08lx\n",regs->nip);
 	}
 	}
 }
 }
 
 
@@ -302,7 +302,7 @@ ExtIntException(struct pt_regs *regs)
 	printf("External Interrupt Exception at PC: %lx, SR: %lx, vector=%lx",
 	printf("External Interrupt Exception at PC: %lx, SR: %lx, vector=%lx",
 	       regs->nip, regs->msr, regs->trap);
 	       regs->nip, regs->msr, regs->trap);
 	vect = pic->iack0;
 	vect = pic->iack0;
-	printf(" irq IACK0@%05x=%d\n",&pic->iack0,vect);
+	printf(" irq IACK0@%05x=%d\n",(int)&pic->iack0,vect);
 	show_regs(regs);
 	show_regs(regs);
 	print_backtrace((unsigned long *)regs->gpr[1]);
 	print_backtrace((unsigned long *)regs->gpr[1]);
 	machinecheck_count++;
 	machinecheck_count++;
@@ -310,7 +310,7 @@ ExtIntException(struct pt_regs *regs)
 	printf("Returning back to 0x%08x\n",regs->nip);
 	printf("Returning back to 0x%08x\n",regs->nip);
 #else
 #else
 	regs->nip += 4; /* skip offending instruction */
 	regs->nip += 4; /* skip offending instruction */
-	printf("Skipping current instr, Returning to 0x%08x\n",regs->nip);
+	printf("Skipping current instr, Returning to 0x%08lx\n",regs->nip);
 #endif
 #endif
 
 
 }
 }

+ 26 - 0
cpu/mpc86xx/cpu.c

@@ -290,3 +290,29 @@ void mpc86xx_reginfo(void)
 	printf("\tBR7\t0x%08X\tOR7\t0x%08X \n", in_be32(&lbc->br7), in_be32(&lbc->or7));
 	printf("\tBR7\t0x%08X\tOR7\t0x%08X \n", in_be32(&lbc->br7), in_be32(&lbc->or7));
 
 
 }
 }
+
+#ifdef CONFIG_TSEC_ENET
+/* Default initializations for TSEC controllers.  To override,
+ * create a board-specific function called:
+ * 	int board_eth_init(bd_t *bis)
+ */
+
+extern int tsec_initialize(bd_t * bis, int index, char *devname);
+
+int cpu_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_TSEC1)
+	tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
+#endif
+#if defined(CONFIG_TSEC2)
+	tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
+#endif
+#if defined(CONFIG_TSEC3)
+	tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
+#endif
+#if defined(CONFIG_TSEC4)
+	tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
+#endif
+	return 0;
+}
+#endif /* CONFIG_TSEC_ENET */

+ 1 - 1
cpu/pxa/start.S

@@ -128,7 +128,7 @@ relocate:				/* relocate U-Boot to RAM	    */
 copy_loop:
 copy_loop:
 	ldmia	r0!, {r3-r10}		/* copy from source address [r0]    */
 	ldmia	r0!, {r3-r10}		/* copy from source address [r0]    */
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
-	cmp	r0, r2			/* until source end addreee [r2]    */
+	cmp	r0, r2			/* until source end address [r2]    */
 	ble	copy_loop
 	ble	copy_loop
 #endif /* !CONFIG_SKIP_RELOCATE_UBOOT */
 #endif /* !CONFIG_SKIP_RELOCATE_UBOOT */
 
 

+ 1 - 1
cpu/sh3/Makefile

@@ -32,7 +32,7 @@ include $(TOPDIR)/config.mk
 LIB	= $(obj)lib$(CPU).a
 LIB	= $(obj)lib$(CPU).a
 
 
 SOBJS	= start.o
 SOBJS	= start.o
-OBJS	= cpu.o interrupts.o watchdog.o time.o cache.o
+COBJS	= cpu.o interrupts.o watchdog.o time.o cache.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 OBJS	:= $(addprefix $(obj),$(COBJS))

+ 1 - 1
cpu/sh4/Makefile

@@ -29,7 +29,7 @@ include $(TOPDIR)/config.mk
 LIB	= $(obj)lib$(CPU).a
 LIB	= $(obj)lib$(CPU).a
 
 
 SOBJS	= start.o
 SOBJS	= start.o
-OBJS	= cpu.o interrupts.o watchdog.o time.o cache.o
+COBJS	= cpu.o interrupts.o watchdog.o time.o cache.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 OBJS	:= $(addprefix $(obj),$(COBJS))

+ 46 - 0
drivers/mmc/Makefile

@@ -0,0 +1,46 @@
+#
+# (C) Copyright 2006
+# 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
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	:= $(obj)libmmc.a
+
+COBJS-$(CONFIG_ATMEL_MCI) += atmel_mci.o
+
+COBJS	:= $(COBJS-y)
+SRCS	:= $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB): $(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################

+ 0 - 0
cpu/at32ap/atmel_mci.c → drivers/mmc/atmel_mci.c


+ 0 - 0
cpu/at32ap/atmel_mci.h → drivers/mmc/atmel_mci.h


+ 1 - 1
drivers/mtd/jedec_flash.c

@@ -42,7 +42,7 @@
 #define MANUFACTURER_SST	0x00BF
 #define MANUFACTURER_SST	0x00BF
 
 
 /* AMD */
 /* AMD */
-#define AM29DL800BB	0x22C8
+#define AM29DL800BB	0x22CB
 #define AM29DL800BT	0x224A
 #define AM29DL800BT	0x224A
 
 
 #define AM29F800BB	0x2258
 #define AM29F800BB	0x2258

+ 68 - 35
drivers/mtd/nand/nand_base.c

@@ -962,7 +962,9 @@ static int nand_write_page (struct mtd_info *mtd, struct nand_chip *this, int pa
 		status = this->waitfunc (mtd, this, FL_WRITING);
 		status = this->waitfunc (mtd, this, FL_WRITING);
 		/* See if device thinks it succeeded */
 		/* See if device thinks it succeeded */
 		if (status & 0x01) {
 		if (status & 0x01) {
-			DEBUG (MTD_DEBUG_LEVEL0, "%s: " "Failed write, page 0x%08x, ", __FUNCTION__, page);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "%s: Failed write, page 0x%08x, ",
+			          __FUNCTION__, page);
 			return -EIO;
 			return -EIO;
 		}
 		}
 	} else {
 	} else {
@@ -1010,7 +1012,9 @@ static int nand_verify_pages (struct mtd_info *mtd, struct nand_chip *this, int
 		for (j = 0; j < eccsteps; j++) {
 		for (j = 0; j < eccsteps; j++) {
 			/* Loop through and verify the data */
 			/* Loop through and verify the data */
 			if (this->verify_buf(mtd, &this->data_poi[datidx], mtd->eccsize)) {
 			if (this->verify_buf(mtd, &this->data_poi[datidx], mtd->eccsize)) {
-				DEBUG (MTD_DEBUG_LEVEL0, "%s: " "Failed write verify, page 0x%08x ", __FUNCTION__, page);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "%s: "
+				          "Failed write verify, page 0x%08x ",
+				          __FUNCTION__, page);
 				goto out;
 				goto out;
 			}
 			}
 			datidx += mtd->eccsize;
 			datidx += mtd->eccsize;
@@ -1018,7 +1022,9 @@ static int nand_verify_pages (struct mtd_info *mtd, struct nand_chip *this, int
 			if (!hweccbytes)
 			if (!hweccbytes)
 				continue;
 				continue;
 			if (this->verify_buf(mtd, &this->oob_buf[oobofs], hweccbytes)) {
 			if (this->verify_buf(mtd, &this->oob_buf[oobofs], hweccbytes)) {
-				DEBUG (MTD_DEBUG_LEVEL0, "%s: " "Failed write verify, page 0x%08x ", __FUNCTION__, page);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "%s: "
+				          "Failed write verify, page 0x%08x ",
+				          __FUNCTION__, page);
 				goto out;
 				goto out;
 			}
 			}
 			oobofs += hweccbytes;
 			oobofs += hweccbytes;
@@ -1029,7 +1035,9 @@ static int nand_verify_pages (struct mtd_info *mtd, struct nand_chip *this, int
 		 */
 		 */
 		if (oobmode) {
 		if (oobmode) {
 			if (this->verify_buf(mtd, &oob_buf[oobofs], mtd->oobsize - hweccbytes * eccsteps)) {
 			if (this->verify_buf(mtd, &oob_buf[oobofs], mtd->oobsize - hweccbytes * eccsteps)) {
-				DEBUG (MTD_DEBUG_LEVEL0, "%s: " "Failed write verify, page 0x%08x ", __FUNCTION__, page);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "%s: "
+				          "Failed write verify, page 0x%08x ",
+				          __FUNCTION__, page);
 				goto out;
 				goto out;
 			}
 			}
 		} else {
 		} else {
@@ -1042,9 +1050,11 @@ static int nand_verify_pages (struct mtd_info *mtd, struct nand_chip *this, int
 				for (i = 0; i < ecccnt; i++) {
 				for (i = 0; i < ecccnt; i++) {
 					int idx = oobsel->eccpos[i];
 					int idx = oobsel->eccpos[i];
 					if (oobdata[idx] != oob_buf[oobofs + idx] ) {
 					if (oobdata[idx] != oob_buf[oobofs + idx] ) {
-						DEBUG (MTD_DEBUG_LEVEL0,
+						MTDDEBUG (MTD_DEBUG_LEVEL0,
 						"%s: Failed ECC write "
 						"%s: Failed ECC write "
-						"verify, page 0x%08x, " "%6i bytes were succesful\n", __FUNCTION__, page, i);
+						"verify, page 0x%08x, "
+						"%6i bytes were succesful\n",
+						__FUNCTION__, page, i);
 						goto out;
 						goto out;
 					}
 					}
 				}
 				}
@@ -1131,11 +1141,13 @@ static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
 	int	oobreadlen;
 	int	oobreadlen;
 
 
 
 
-	DEBUG (MTD_DEBUG_LEVEL3, "nand_read_ecc: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_read_ecc: from = 0x%08x, len = %i\n",
+	          (unsigned int) from, (int) len);
 
 
 	/* Do not allow reads past end of device */
 	/* Do not allow reads past end of device */
 	if ((from + len) > mtd->size) {
 	if ((from + len) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: Attempt read beyond end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_read_ecc: Attempt read beyond end of device\n");
 		*retlen = 0;
 		*retlen = 0;
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
@@ -1252,7 +1264,7 @@ static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
 					 * generator for an error, reads back the syndrome and
 					 * generator for an error, reads back the syndrome and
 					 * does the error correction on the fly */
 					 * does the error correction on the fly */
 					if (this->correct_data(mtd, &data_poi[datidx], &oob_data[i], &ecc_code[i]) == -1) {
 					if (this->correct_data(mtd, &data_poi[datidx], &oob_data[i], &ecc_code[i]) == -1) {
-						DEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: "
+						MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: "
 							"Failed ECC read, page 0x%08x on chip %d\n", page, chipnr);
 							"Failed ECC read, page 0x%08x on chip %d\n", page, chipnr);
 						ecc_failed++;
 						ecc_failed++;
 					}
 					}
@@ -1291,7 +1303,9 @@ static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
 			}
 			}
 
 
 			if (ecc_status == -1) {
 			if (ecc_status == -1) {
-				DEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: " "Failed ECC read, page 0x%08x\n", page);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: "
+				          "Failed ECC read, page 0x%08x\n",
+				          page);
 				ecc_failed++;
 				ecc_failed++;
 			}
 			}
 		}
 		}
@@ -1388,7 +1402,8 @@ static int nand_read_oob (struct mtd_info *mtd, loff_t from, size_t len, size_t
 	struct nand_chip *this = mtd->priv;
 	struct nand_chip *this = mtd->priv;
 	int	blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
 	int	blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
 
 
-	DEBUG (MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08x, len = %i\n",
+	          (unsigned int) from, (int) len);
 
 
 	/* Shift to get page */
 	/* Shift to get page */
 	page = (int)(from >> this->page_shift);
 	page = (int)(from >> this->page_shift);
@@ -1402,7 +1417,8 @@ static int nand_read_oob (struct mtd_info *mtd, loff_t from, size_t len, size_t
 
 
 	/* Do not allow reads past end of device */
 	/* Do not allow reads past end of device */
 	if ((from + len) > mtd->size) {
 	if ((from + len) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: Attempt read beyond end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_read_oob: Attempt read beyond end of device\n");
 		*retlen = 0;
 		*retlen = 0;
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
@@ -1488,7 +1504,8 @@ int nand_read_raw (struct mtd_info *mtd, uint8_t *buf, loff_t from, size_t len,
 
 
 	/* Do not allow reads past end of device */
 	/* Do not allow reads past end of device */
 	if ((from + len) > mtd->size) {
 	if ((from + len) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_read_raw: Attempt read beyond end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_read_raw: Attempt read beyond end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -1626,14 +1643,16 @@ static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
 	u_char *oobbuf, *bufstart;
 	u_char *oobbuf, *bufstart;
 	int	ppblock = (1 << (this->phys_erase_shift - this->page_shift));
 	int	ppblock = (1 << (this->phys_erase_shift - this->page_shift));
 
 
-	DEBUG (MTD_DEBUG_LEVEL3, "nand_write_ecc: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_write_ecc: to = 0x%08x, len = %i\n",
+	          (unsigned int) to, (int) len);
 
 
 	/* Initialize retlen, in case of early exit */
 	/* Initialize retlen, in case of early exit */
 	*retlen = 0;
 	*retlen = 0;
 
 
 	/* Do not allow write past end of device */
 	/* Do not allow write past end of device */
 	if ((to + len) > mtd->size) {
 	if ((to + len) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_write_ecc: Attempt to write past end of page\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_write_ecc: Attempt to write past end of page\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -1695,7 +1714,8 @@ static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
 		 */
 		 */
 		ret = nand_write_page (mtd, this, page, &oobbuf[oob], oobsel, (--numpages > 0));
 		ret = nand_write_page (mtd, this, page, &oobbuf[oob], oobsel, (--numpages > 0));
 		if (ret) {
 		if (ret) {
-			DEBUG (MTD_DEBUG_LEVEL0, "nand_write_ecc: write_page failed %d\n", ret);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "nand_write_ecc: write_page failed %d\n", ret);
 			goto out;
 			goto out;
 		}
 		}
 		/* Next oob page */
 		/* Next oob page */
@@ -1719,7 +1739,8 @@ static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
 				page - startpage,
 				page - startpage,
 				oobbuf, oobsel, chipnr, (eccbuf != NULL));
 				oobbuf, oobsel, chipnr, (eccbuf != NULL));
 			if (ret) {
 			if (ret) {
-				DEBUG (MTD_DEBUG_LEVEL0, "nand_write_ecc: verify_pages failed %d\n", ret);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_ecc: "
+				          "verify_pages failed %d\n", ret);
 				goto out;
 				goto out;
 			}
 			}
 			*retlen = written;
 			*retlen = written;
@@ -1752,7 +1773,8 @@ cmp:
 	if (!ret)
 	if (!ret)
 		*retlen = written;
 		*retlen = written;
 	else
 	else
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_write_ecc: verify_pages failed %d\n", ret);
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_write_ecc: verify_pages failed %d\n", ret);
 
 
 out:
 out:
 	/* Deselect and wake up anyone waiting on the device */
 	/* Deselect and wake up anyone waiting on the device */
@@ -1777,7 +1799,8 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *
 	int column, page, status, ret = -EIO, chipnr;
 	int column, page, status, ret = -EIO, chipnr;
 	struct nand_chip *this = mtd->priv;
 	struct nand_chip *this = mtd->priv;
 
 
-	DEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n",
+	          (unsigned int) to, (int) len);
 
 
 	/* Shift to get page */
 	/* Shift to get page */
 	page = (int) (to >> this->page_shift);
 	page = (int) (to >> this->page_shift);
@@ -1791,7 +1814,8 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *
 
 
 	/* Do not allow write past end of page */
 	/* Do not allow write past end of page */
 	if ((column + len) > mtd->oobsize) {
 	if ((column + len) > mtd->oobsize) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: Attempt to write past end of page\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
+		          "Attempt to write past end of page\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -1821,8 +1845,9 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *
 		this->cmdfunc (mtd, NAND_CMD_SEQIN, mtd->oobblock, page & this->pagemask);
 		this->cmdfunc (mtd, NAND_CMD_SEQIN, mtd->oobblock, page & this->pagemask);
 		if (!ffchars) {
 		if (!ffchars) {
 			if (!(ffchars = kmalloc (mtd->oobsize, GFP_KERNEL))) {
 			if (!(ffchars = kmalloc (mtd->oobsize, GFP_KERNEL))) {
-				DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
-					   "No memory for padding array, need %d bytes", mtd->oobsize);
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
+				          "No memory for padding array, "
+				          "need %d bytes", mtd->oobsize);
 				ret = -ENOMEM;
 				ret = -ENOMEM;
 				goto out;
 				goto out;
 			}
 			}
@@ -1847,7 +1872,8 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *
 
 
 	/* See if device thinks it succeeded */
 	/* See if device thinks it succeeded */
 	if (status & 0x01) {
 	if (status & 0x01) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write, page 0x%08x\n", page);
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
+		          "Failed write, page 0x%08x\n", page);
 		ret = -EIO;
 		ret = -EIO;
 		goto out;
 		goto out;
 	}
 	}
@@ -1859,7 +1885,8 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *
 	this->cmdfunc (mtd, NAND_CMD_READOOB, column, page & this->pagemask);
 	this->cmdfunc (mtd, NAND_CMD_READOOB, column, page & this->pagemask);
 
 
 	if (this->verify_buf(mtd, buf, len)) {
 	if (this->verify_buf(mtd, buf, len)) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page);
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
+		          "Failed write verify, page 0x%08x\n", page);
 		ret = -EIO;
 		ret = -EIO;
 		goto out;
 		goto out;
 	}
 	}
@@ -1919,12 +1946,14 @@ static int nand_writev_ecc (struct mtd_info *mtd, const struct kvec *vecs, unsig
 	for (i = 0; i < count; i++)
 	for (i = 0; i < count; i++)
 		total_len += (int) vecs[i].iov_len;
 		total_len += (int) vecs[i].iov_len;
 
 
-	DEBUG (MTD_DEBUG_LEVEL3,
-	       "nand_writev: to = 0x%08x, len = %i, count = %ld\n", (unsigned int) to, (unsigned int) total_len, count);
+	MTDDEBUG (MTD_DEBUG_LEVEL3,
+	          "nand_writev: to = 0x%08x, len = %i, count = %ld\n",
+	          (unsigned int) to, (unsigned int) total_len, count);
 
 
 	/* Do not allow write past end of page */
 	/* Do not allow write past end of page */
 	if ((to + total_len) > mtd->size) {
 	if ((to + total_len) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_writev: Attempted write past end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_writev: Attempted write past end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -2117,24 +2146,26 @@ int nand_erase_nand (struct mtd_info *mtd, struct erase_info *instr, int allowbb
 	int page, len, status, pages_per_block, ret, chipnr;
 	int page, len, status, pages_per_block, ret, chipnr;
 	struct nand_chip *this = mtd->priv;
 	struct nand_chip *this = mtd->priv;
 
 
-	DEBUG (MTD_DEBUG_LEVEL3,
-	       "nand_erase: start = 0x%08x, len = %i\n", (unsigned int) instr->addr, (unsigned int) instr->len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_erase: start = 0x%08x, len = %i\n",
+	          (unsigned int) instr->addr, (unsigned int) instr->len);
 
 
 	/* Start address must align on block boundary */
 	/* Start address must align on block boundary */
 	if (instr->addr & ((1 << this->phys_erase_shift) - 1)) {
 	if (instr->addr & ((1 << this->phys_erase_shift) - 1)) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Unaligned address\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Unaligned address\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	/* Length must align on block boundary */
 	/* Length must align on block boundary */
 	if (instr->len & ((1 << this->phys_erase_shift) - 1)) {
 	if (instr->len & ((1 << this->phys_erase_shift) - 1)) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Length not block aligned\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_erase: Length not block aligned\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	/* Do not allow erase past end of device */
 	/* Do not allow erase past end of device */
 	if ((instr->len + instr->addr) > mtd->size) {
 	if ((instr->len + instr->addr) > mtd->size) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Erase past end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_erase: Erase past end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -2156,7 +2187,8 @@ int nand_erase_nand (struct mtd_info *mtd, struct erase_info *instr, int allowbb
 	/* Check the WP bit */
 	/* Check the WP bit */
 	/* Check, if it is write protected */
 	/* Check, if it is write protected */
 	if (nand_check_wp(mtd)) {
 	if (nand_check_wp(mtd)) {
-		DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Device is write protected!!!\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "nand_erase: Device is write protected!!!\n");
 		instr->state = MTD_ERASE_FAILED;
 		instr->state = MTD_ERASE_FAILED;
 		goto erase_exit;
 		goto erase_exit;
 	}
 	}
@@ -2186,7 +2218,8 @@ int nand_erase_nand (struct mtd_info *mtd, struct erase_info *instr, int allowbb
 
 
 		/* See if block erase succeeded */
 		/* See if block erase succeeded */
 		if (status & 0x01) {
 		if (status & 0x01) {
-			DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: " "Failed erase, page 0x%08x\n", page);
+			MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_erase: "
+			          "Failed erase, page 0x%08x\n", page);
 			instr->state = MTD_ERASE_FAILED;
 			instr->state = MTD_ERASE_FAILED;
 			instr->fail_addr = (page << this->page_shift);
 			instr->fail_addr = (page << this->page_shift);
 			goto erase_exit;
 			goto erase_exit;
@@ -2229,7 +2262,7 @@ static void nand_sync (struct mtd_info *mtd)
 {
 {
 	struct nand_chip *this = mtd->priv;
 	struct nand_chip *this = mtd->priv;
 
 
-	DEBUG (MTD_DEBUG_LEVEL3, "nand_sync: called\n");
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_sync: called\n");
 
 
 	/* Grab the lock and see if the device is available */
 	/* Grab the lock and see if the device is available */
 	nand_get_device (this, mtd, FL_SYNCING);
 	nand_get_device (this, mtd, FL_SYNCING);

+ 2 - 2
drivers/mtd/nand/nand_bbt.c

@@ -1038,8 +1038,8 @@ int nand_isbad_bbt (struct mtd_info *mtd, loff_t offs, int allowbbt)
 	block = (int) (offs >> (this->bbt_erase_shift - 1));
 	block = (int) (offs >> (this->bbt_erase_shift - 1));
 	res = (this->bbt[block >> 3] >> (block & 0x06)) & 0x03;
 	res = (this->bbt[block >> 3] >> (block & 0x06)) & 0x03;
 
 
-	DEBUG (MTD_DEBUG_LEVEL2, "nand_isbad_bbt(): bbt info for offs 0x%08x: (block %d) 0x%02x\n",
-		(unsigned int)offs, res, block >> 1);
+	MTDDEBUG (MTD_DEBUG_LEVEL2, "nand_isbad_bbt(): bbt info for offs 0x%08x: "
+	          "(block %d) 0x%02x\n", (unsigned int)offs, res, block >> 1);
 
 
 	switch ((int)res) {
 	switch ((int)res) {
 	case 0x00:	return 0;
 	case 0x00:	return 0;

+ 50 - 45
drivers/mtd/onenand/onenand_base.c

@@ -293,22 +293,22 @@ static int onenand_wait(struct mtd_info *mtd, int state)
 	ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS);
 	ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS);
 
 
 	if (ctrl & ONENAND_CTRL_ERROR) {
 	if (ctrl & ONENAND_CTRL_ERROR) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_wait: controller error = 0x%04x\n", ctrl);
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "onenand_wait: controller error = 0x%04x\n", ctrl);
 		return -EAGAIN;
 		return -EAGAIN;
 	}
 	}
 
 
 	if (ctrl & ONENAND_CTRL_LOCK) {
 	if (ctrl & ONENAND_CTRL_LOCK) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_wait: it's locked error = 0x%04x\n", ctrl);
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "onenand_wait: it's locked error = 0x%04x\n", ctrl);
 		return -EIO;
 		return -EIO;
 	}
 	}
 
 
 	if (interrupt & ONENAND_INT_READ) {
 	if (interrupt & ONENAND_INT_READ) {
 		ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS);
 		ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS);
 		if (ecc & ONENAND_ECC_2BIT_ALL) {
 		if (ecc & ONENAND_ECC_2BIT_ALL) {
-			DEBUG(MTD_DEBUG_LEVEL0,
-			      "onenand_wait: ECC error = 0x%04x\n", ecc);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "onenand_wait: ECC error = 0x%04x\n", ecc);
 			return -EBADMSG;
 			return -EBADMSG;
 		}
 		}
 	}
 	}
@@ -524,13 +524,14 @@ static int onenand_read_ecc(struct mtd_info *mtd, loff_t from, size_t len,
 	int thislen;
 	int thislen;
 	int ret = 0;
 	int ret = 0;
 
 
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_read_ecc: from = 0x%08x, len = %i\n",
-	      (unsigned int)from, (int)len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_read_ecc: "
+	          "from = 0x%08x, len = %i\n",
+	          (unsigned int)from, (int)len);
 
 
 	/* Do not allow reads past end of device */
 	/* Do not allow reads past end of device */
 	if ((from + len) > mtd->size) {
 	if ((from + len) > mtd->size) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_read_ecc: Attempt read beyond end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_read_ecc: "
+		          "Attempt read beyond end of device\n");
 		*retlen = 0;
 		*retlen = 0;
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
@@ -561,8 +562,8 @@ static int onenand_read_ecc(struct mtd_info *mtd, loff_t from, size_t len,
 			break;
 			break;
 
 
 		if (ret) {
 		if (ret) {
-			DEBUG(MTD_DEBUG_LEVEL0,
-			      "onenand_read_ecc: read failed = %d\n", ret);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "onenand_read_ecc: read failed = %d\n", ret);
 			break;
 			break;
 		}
 		}
 
 
@@ -615,16 +616,17 @@ int onenand_read_oob(struct mtd_info *mtd, loff_t from, size_t len,
 	int read = 0, thislen, column;
 	int read = 0, thislen, column;
 	int ret = 0;
 	int ret = 0;
 
 
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_read_oob: from = 0x%08x, len = %i\n",
-	      (unsigned int)from, (int)len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_read_oob: "
+	          "from = 0x%08x, len = %i\n",
+	          (unsigned int)from, (int)len);
 
 
 	/* Initialize return length value */
 	/* Initialize return length value */
 	*retlen = 0;
 	*retlen = 0;
 
 
 	/* Do not allow reads past end of device */
 	/* Do not allow reads past end of device */
 	if (unlikely((from + len) > mtd->size)) {
 	if (unlikely((from + len) > mtd->size)) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_read_oob: Attempt read beyond end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_read_oob: "
+		          "Attempt read beyond end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -652,8 +654,8 @@ int onenand_read_oob(struct mtd_info *mtd, loff_t from, size_t len,
 			break;
 			break;
 
 
 		if (ret) {
 		if (ret) {
-			DEBUG(MTD_DEBUG_LEVEL0,
-			      "onenand_read_oob: read failed = %d\n", ret);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "onenand_read_oob: read failed = %d\n", ret);
 			break;
 			break;
 		}
 		}
 
 
@@ -733,23 +735,24 @@ static int onenand_write_ecc(struct mtd_info *mtd, loff_t to, size_t len,
 	int written = 0;
 	int written = 0;
 	int ret = 0;
 	int ret = 0;
 
 
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_write_ecc: to = 0x%08x, len = %i\n",
-	      (unsigned int)to, (int)len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_write_ecc: "
+	          "to = 0x%08x, len = %i\n",
+	          (unsigned int)to, (int)len);
 
 
 	/* Initialize retlen, in case of early exit */
 	/* Initialize retlen, in case of early exit */
 	*retlen = 0;
 	*retlen = 0;
 
 
 	/* Do not allow writes past end of device */
 	/* Do not allow writes past end of device */
 	if (unlikely((to + len) > mtd->size)) {
 	if (unlikely((to + len) > mtd->size)) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_write_ecc: Attempt write to past end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_write_ecc: "
+		          "Attempt write to past end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	/* Reject writes, which are not page aligned */
 	/* Reject writes, which are not page aligned */
 	if (unlikely(NOTALIGNED(to)) || unlikely(NOTALIGNED(len))) {
 	if (unlikely(NOTALIGNED(to)) || unlikely(NOTALIGNED(len))) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_write_ecc: Attempt to write not page aligned data\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_write_ecc: "
+		          "Attempt to write not page aligned data\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -772,8 +775,8 @@ static int onenand_write_ecc(struct mtd_info *mtd, loff_t to, size_t len,
 
 
 		ret = this->wait(mtd, FL_WRITING);
 		ret = this->wait(mtd, FL_WRITING);
 		if (ret) {
 		if (ret) {
-			DEBUG(MTD_DEBUG_LEVEL0,
-			      "onenand_write_ecc: write filaed %d\n", ret);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "onenand_write_ecc: write filaed %d\n", ret);
 			break;
 			break;
 		}
 		}
 
 
@@ -782,8 +785,8 @@ static int onenand_write_ecc(struct mtd_info *mtd, loff_t to, size_t len,
 		/* Only check verify write turn on */
 		/* Only check verify write turn on */
 		ret = onenand_verify_page(mtd, (u_char *) buf, to, block, page);
 		ret = onenand_verify_page(mtd, (u_char *) buf, to, block, page);
 		if (ret) {
 		if (ret) {
-			DEBUG(MTD_DEBUG_LEVEL0,
-			      "onenand_write_ecc: verify failed %d\n", ret);
+			MTDDEBUG (MTD_DEBUG_LEVEL0,
+			          "onenand_write_ecc: verify failed %d\n", ret);
 			break;
 			break;
 		}
 		}
 
 
@@ -836,16 +839,17 @@ int onenand_write_oob(struct mtd_info *mtd, loff_t to, size_t len,
 	int column, status;
 	int column, status;
 	int written = 0;
 	int written = 0;
 
 
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_write_oob: to = 0x%08x, len = %i\n",
-	      (unsigned int)to, (int)len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_write_oob: "
+	          "to = 0x%08x, len = %i\n",
+	          (unsigned int)to, (int)len);
 
 
 	/* Initialize retlen, in case of early exit */
 	/* Initialize retlen, in case of early exit */
 	*retlen = 0;
 	*retlen = 0;
 
 
 	/* Do not allow writes past end of device */
 	/* Do not allow writes past end of device */
 	if (unlikely((to + len) > mtd->size)) {
 	if (unlikely((to + len) > mtd->size)) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_write_oob: Attempt write to past end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_write_oob: "
+		          "Attempt write to past end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -904,28 +908,29 @@ int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
 	int len;
 	int len;
 	int ret = 0;
 	int ret = 0;
 
 
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_erase: start = 0x%08x, len = %i\n",
-	      (unsigned int)instr->addr, (unsigned int)instr->len);
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_erase: start = 0x%08x, len = %i\n",
+	          (unsigned int)instr->addr, (unsigned int)instr->len);
 
 
 	block_size = (1 << this->erase_shift);
 	block_size = (1 << this->erase_shift);
 
 
 	/* Start address must align on block boundary */
 	/* Start address must align on block boundary */
 	if (unlikely(instr->addr & (block_size - 1))) {
 	if (unlikely(instr->addr & (block_size - 1))) {
-		DEBUG(MTD_DEBUG_LEVEL0, "onenand_erase: Unaligned address\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "onenand_erase: Unaligned address\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	/* Length must align on block boundary */
 	/* Length must align on block boundary */
 	if (unlikely(instr->len & (block_size - 1))) {
 	if (unlikely(instr->len & (block_size - 1))) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_erase: Length not block aligned\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "onenand_erase: Length not block aligned\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	/* Do not allow erase past end of device */
 	/* Do not allow erase past end of device */
 	if (unlikely((instr->len + instr->addr) > mtd->size)) {
 	if (unlikely((instr->len + instr->addr) > mtd->size)) {
-		DEBUG(MTD_DEBUG_LEVEL0,
-		      "onenand_erase: Erase past end of device\n");
+		MTDDEBUG (MTD_DEBUG_LEVEL0,
+		          "onenand_erase: Erase past end of device\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -950,12 +955,12 @@ int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
 		/* Check, if it is write protected */
 		/* Check, if it is write protected */
 		if (ret) {
 		if (ret) {
 			if (ret == -EPERM)
 			if (ret == -EPERM)
-				DEBUG(MTD_DEBUG_LEVEL0,
-				      "onenand_erase: Device is write protected!!!\n");
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_erase: "
+				          "Device is write protected!!!\n");
 			else
 			else
-				DEBUG(MTD_DEBUG_LEVEL0,
-				      "onenand_erase: Failed erase, block %d\n",
-				      (unsigned)(addr >> this->erase_shift));
+				MTDDEBUG (MTD_DEBUG_LEVEL0, "onenand_erase: "
+				          "Failed erase, block %d\n",
+				          (unsigned)(addr >> this->erase_shift));
 			instr->state = MTD_ERASE_FAILED;
 			instr->state = MTD_ERASE_FAILED;
 			instr->fail_addr = addr;
 			instr->fail_addr = addr;
 			goto erase_exit;
 			goto erase_exit;
@@ -988,7 +993,7 @@ int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
  */
  */
 void onenand_sync(struct mtd_info *mtd)
 void onenand_sync(struct mtd_info *mtd)
 {
 {
-	DEBUG(MTD_DEBUG_LEVEL3, "onenand_sync: called\n");
+	MTDDEBUG (MTD_DEBUG_LEVEL3, "onenand_sync: called\n");
 
 
 	/* Grab the lock and see if the device is available */
 	/* Grab the lock and see if the device is available */
 	onenand_get_device(mtd, FL_SYNCING);
 	onenand_get_device(mtd, FL_SYNCING);

+ 3 - 3
drivers/mtd/onenand/onenand_bbt.c

@@ -156,9 +156,9 @@ static int onenand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt)
 	block = (int)(offs >> (bbm->bbt_erase_shift - 1));
 	block = (int)(offs >> (bbm->bbt_erase_shift - 1));
 	res = (bbm->bbt[block >> 3] >> (block & 0x06)) & 0x03;
 	res = (bbm->bbt[block >> 3] >> (block & 0x06)) & 0x03;
 
 
-	DEBUG(MTD_DEBUG_LEVEL2,
-	      "onenand_isbad_bbt: bbt info for offs 0x%08x: (block %d) 0x%02x\n",
-	      (unsigned int)offs, block >> 1, res);
+	MTDDEBUG (MTD_DEBUG_LEVEL2,
+	          "onenand_isbad_bbt: bbt info for offs 0x%08x: (block %d) 0x%02x\n",
+	          (unsigned int)offs, block >> 1, res);
 
 
 	switch ((int)res) {
 	switch ((int)res) {
 	case 0x00:
 	case 0x00:

+ 1 - 0
drivers/net/Makefile

@@ -66,6 +66,7 @@ COBJS-$(CONFIG_ULI526X) += uli526x.o
 COBJS-$(CONFIG_VSC7385_ENET) += vsc7385.o
 COBJS-$(CONFIG_VSC7385_ENET) += vsc7385.o
 COBJS-$(CONFIG_XILINX_EMAC) += xilinx_emac.o
 COBJS-$(CONFIG_XILINX_EMAC) += xilinx_emac.o
 COBJS-$(CONFIG_XILINX_EMACLITE) += xilinx_emaclite.o
 COBJS-$(CONFIG_XILINX_EMACLITE) += xilinx_emaclite.o
+COBJS-$(CONFIG_SH_ETHER) += sh_eth.o
 
 
 COBJS	:= $(COBJS-y)
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
 SRCS	:= $(COBJS:.o=.c)

+ 2 - 0
drivers/net/e1000.c

@@ -75,6 +75,7 @@ static struct pci_device_id supported[] = {
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82544GC_LOM},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82544GC_LOM},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82540EM},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82540EM},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82545EM_COPPER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82545EM_COPPER},
+	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82545GM_COPPER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82546EB_COPPER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82546EB_COPPER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82545EM_FIBER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82545EM_FIBER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82546EB_FIBER},
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82546EB_FIBER},
@@ -636,6 +637,7 @@ e1000_set_mac_type(struct e1000_hw *hw)
 		hw->mac_type = e1000_82540;
 		hw->mac_type = e1000_82540;
 		break;
 		break;
 	case E1000_DEV_ID_82545EM_COPPER:
 	case E1000_DEV_ID_82545EM_COPPER:
+	case E1000_DEV_ID_82545GM_COPPER:
 	case E1000_DEV_ID_82545EM_FIBER:
 	case E1000_DEV_ID_82545EM_FIBER:
 		hw->mac_type = e1000_82545;
 		hw->mac_type = e1000_82545;
 		break;
 		break;

+ 2 - 1
drivers/net/e1000.h

@@ -217,13 +217,14 @@ struct e1000_phy_stats {
 #define E1000_DEV_ID_82544GC_LOM    0x100D
 #define E1000_DEV_ID_82544GC_LOM    0x100D
 #define E1000_DEV_ID_82540EM	    0x100E
 #define E1000_DEV_ID_82540EM	    0x100E
 #define E1000_DEV_ID_82540EM_LOM    0x1015
 #define E1000_DEV_ID_82540EM_LOM    0x1015
+#define E1000_DEV_ID_82545GM_COPPER 0x1026
 #define E1000_DEV_ID_82545EM_COPPER 0x100F
 #define E1000_DEV_ID_82545EM_COPPER 0x100F
 #define E1000_DEV_ID_82545EM_FIBER  0x1011
 #define E1000_DEV_ID_82545EM_FIBER  0x1011
 #define E1000_DEV_ID_82546EB_COPPER 0x1010
 #define E1000_DEV_ID_82546EB_COPPER 0x1010
 #define E1000_DEV_ID_82546EB_FIBER  0x1012
 #define E1000_DEV_ID_82546EB_FIBER  0x1012
 #define E1000_DEV_ID_82541ER	    0x1078
 #define E1000_DEV_ID_82541ER	    0x1078
 #define E1000_DEV_ID_82541GI_LF	    0x107C
 #define E1000_DEV_ID_82541GI_LF	    0x107C
-#define NUM_DEV_IDS 15
+#define NUM_DEV_IDS 16
 
 
 #define NODE_ADDRESS_SIZE 6
 #define NODE_ADDRESS_SIZE 6
 #define ETH_LENGTH_OF_ADDRESS 6
 #define ETH_LENGTH_OF_ADDRESS 6

+ 5 - 9
drivers/net/ne2000.c

@@ -758,8 +758,6 @@ static hw_info_t hw_info[] = {
 
 
 #define NR_INFO		(sizeof(hw_info)/sizeof(hw_info_t))
 #define NR_INFO		(sizeof(hw_info)/sizeof(hw_info_t))
 
 
-u8 dev_addr[6];
-
 #define PCNET_CMD	0x00
 #define PCNET_CMD	0x00
 #define PCNET_DATAPORT	0x10	/* NatSemi-defined port window offset. */
 #define PCNET_DATAPORT	0x10	/* NatSemi-defined port window offset. */
 #define PCNET_RESET	0x1f	/* Issue a read to reset, a write to clear. */
 #define PCNET_RESET	0x1f	/* Issue a read to reset, a write to clear. */
@@ -769,14 +767,14 @@ static void pcnet_reset_8390(void)
 {
 {
 	int i, r;
 	int i, r;
 
 
-	PRINTK("nic base is %lx\n", nic_base);
+	PRINTK("nic base is %lx\n", nic.base);
 
 
 	n2k_outb(E8390_NODMA + E8390_PAGE0+E8390_STOP, E8390_CMD);
 	n2k_outb(E8390_NODMA + E8390_PAGE0+E8390_STOP, E8390_CMD);
-	PRINTK("cmd (at %lx) is %x\n", nic_base + E8390_CMD, n2k_inb(E8390_CMD));
+	PRINTK("cmd (at %lx) is %x\n", nic.base + E8390_CMD, n2k_inb(E8390_CMD));
 	n2k_outb(E8390_NODMA+E8390_PAGE1+E8390_STOP, E8390_CMD);
 	n2k_outb(E8390_NODMA+E8390_PAGE1+E8390_STOP, E8390_CMD);
-	PRINTK("cmd (at %lx) is %x\n", nic_base + E8390_CMD, n2k_inb(E8390_CMD));
+	PRINTK("cmd (at %lx) is %x\n", nic.base + E8390_CMD, n2k_inb(E8390_CMD));
 	n2k_outb(E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD);
 	n2k_outb(E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD);
-	PRINTK("cmd (at %lx) is %x\n", nic_base + E8390_CMD, n2k_inb(E8390_CMD));
+	PRINTK("cmd (at %lx) is %x\n", nic.base + E8390_CMD, n2k_inb(E8390_CMD));
 	n2k_outb(E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD);
 	n2k_outb(E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD);
 
 
 	n2k_outb(n2k_inb(PCNET_RESET), PCNET_RESET);
 	n2k_outb(n2k_inb(PCNET_RESET), PCNET_RESET);
@@ -852,8 +850,6 @@ int __get_prom(u8* mac_addr)
 	return 0;
 	return 0;
 }
 }
 
 
-u32 nic_base;
-
 /* U-boot specific routines */
 /* U-boot specific routines */
 static u8 *pbuf = NULL;
 static u8 *pbuf = NULL;
 
 
@@ -879,6 +875,7 @@ void uboot_push_tx_done(int key, int val) {
 
 
 int eth_init(bd_t *bd) {
 int eth_init(bd_t *bd) {
 	int r;
 	int r;
+	u8 dev_addr[6];
 	char ethaddr[20];
 	char ethaddr[20];
 
 
 	PRINTK("### eth_init\n");
 	PRINTK("### eth_init\n");
@@ -901,7 +898,6 @@ int eth_init(bd_t *bd) {
 	}
 	}
 #endif
 #endif
 
 
-	nic_base = CONFIG_DRIVER_NE2000_BASE;
 	nic.base = (u8 *) CONFIG_DRIVER_NE2000_BASE;
 	nic.base = (u8 *) CONFIG_DRIVER_NE2000_BASE;
 
 
 	r = get_prom(dev_addr);
 	r = get_prom(dev_addr);

+ 19 - 23
drivers/net/ns7520_eth.c

@@ -387,8 +387,8 @@ static int ns7520_eth_reset(void)
 	    ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
 	    ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
 
 
 	/* reset PHY */
 	/* reset PHY */
-	ns7520_mii_write(PHY_COMMON_CTRL, PHY_COMMON_CTRL_RESET);
-	ns7520_mii_write(PHY_COMMON_CTRL, 0);
+	ns7520_mii_write(PHY_BMCR, PHY_BMCR_RESET);
+	ns7520_mii_write(PHY_BMCR, 0);
 
 
 	udelay(3000);		/* [2] p.70 says at least 300us reset recovery time. */
 	udelay(3000);		/* [2] p.70 says at least 300us reset recovery time. */
 
 
@@ -438,26 +438,23 @@ static void ns7520_link_auto_negotiate(void)
 
 
 	/* run auto-negotation */
 	/* run auto-negotation */
 	/* define what we are capable of */
 	/* define what we are capable of */
-	ns7520_mii_write(PHY_COMMON_AUTO_ADV,
-			 PHY_COMMON_AUTO_ADV_100BTXFD |
-			 PHY_COMMON_AUTO_ADV_100BTX |
-			 PHY_COMMON_AUTO_ADV_10BTFD |
-			 PHY_COMMON_AUTO_ADV_10BT |
-			 PHY_COMMON_AUTO_ADV_802_3);
+	ns7520_mii_write(PHY_ANAR,
+			 PHY_ANLPAR_TXFD |
+			 PHY_ANLPAR_TX |
+			 PHY_ANLPAR_10FD |
+			 PHY_ANLPAR_10 |
+			 PHY_ANLPAR_PSB_802_3);
 	/* start auto-negotiation */
 	/* start auto-negotiation */
-	ns7520_mii_write(PHY_COMMON_CTRL,
-			 PHY_COMMON_CTRL_AUTO_NEG |
-			 PHY_COMMON_CTRL_RES_AUTO);
+	ns7520_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
 
 
 	/* wait for completion */
 	/* wait for completion */
 
 
 	ulStartJiffies = get_timer(0);
 	ulStartJiffies = get_timer(0);
 	while (get_timer(0) < ulStartJiffies + NS7520_MII_NEG_DELAY) {
 	while (get_timer(0) < ulStartJiffies + NS7520_MII_NEG_DELAY) {
-		uiStatus = ns7520_mii_read(PHY_COMMON_STAT);
+		uiStatus = ns7520_mii_read(PHY_BMSR);
 		if ((uiStatus &
 		if ((uiStatus &
-		     (PHY_COMMON_STAT_AN_COMP | PHY_COMMON_STAT_LNK_STAT))
-		    ==
-		    (PHY_COMMON_STAT_AN_COMP | PHY_COMMON_STAT_LNK_STAT)) {
+		     (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
+		    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
 			/* lucky we are, auto-negotiation succeeded */
 			/* lucky we are, auto-negotiation succeeded */
 			ns7520_link_print_changed();
 			ns7520_link_print_changed();
 			ns7520_link_update_egcr();
 			ns7520_link_update_egcr();
@@ -518,14 +515,13 @@ static void ns7520_link_print_changed(void)
 
 
 	DEBUG_FN(DEBUG_LINK);
 	DEBUG_FN(DEBUG_LINK);
 
 
-	uiControl = ns7520_mii_read(PHY_COMMON_CTRL);
+	uiControl = ns7520_mii_read(PHY_BMCR);
 
 
-	if ((uiControl & PHY_COMMON_CTRL_AUTO_NEG) ==
-	    PHY_COMMON_CTRL_AUTO_NEG) {
-		/* PHY_COMMON_STAT_LNK_STAT is only set on autonegotiation */
-		uiStatus = ns7520_mii_read(PHY_COMMON_STAT);
+	if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
+		/* PHY_BMSR_LS is only set on autonegotiation */
+		uiStatus = ns7520_mii_read(PHY_BMSR);
 
 
-		if (!(uiStatus & PHY_COMMON_STAT_LNK_STAT)) {
+		if (!(uiStatus & PHY_BMSR_LS)) {
 			printk(KERN_WARNING NS7520_DRIVER_NAME
 			printk(KERN_WARNING NS7520_DRIVER_NAME
 			       ": link down\n");
 			       ": link down\n");
 			/* @TODO Linux: carrier_off */
 			/* @TODO Linux: carrier_off */
@@ -586,12 +582,12 @@ static char ns7520_mii_identify_phy(void)
 
 
 	DEBUG_FN(DEBUG_MII);
 	DEBUG_FN(DEBUG_MII);
 
 
-	phyDetected = (PhyType) uiID1 = ns7520_mii_read(PHY_COMMON_ID1);
+	phyDetected = (PhyType) uiID1 = ns7520_mii_read(PHY_PHYIDR1);
 
 
 	switch (phyDetected) {
 	switch (phyDetected) {
 	case PHY_LXT971A:
 	case PHY_LXT971A:
 		szName = "LXT971A";
 		szName = "LXT971A";
-		uiID2 = ns7520_mii_read(PHY_COMMON_ID2);
+		uiID2 = ns7520_mii_read(PHY_PHYIDR2);
 		nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
 		nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
 		cRes = 1;
 		cRes = 1;
 		break;
 		break;

+ 28 - 31
drivers/net/ns9750_eth.c

@@ -37,7 +37,7 @@
 
 
 #include "ns9750_eth.h"		/* for Ethernet and PHY */
 #include "ns9750_eth.h"		/* for Ethernet and PHY */
 
 
-/* some definition to make transistion to linux easier */
+/* some definition to make transition to linux easier */
 
 
 #define NS9750_DRIVER_NAME	"eth"
 #define NS9750_DRIVER_NAME	"eth"
 #define KERN_WARNING		"Warning:"
 #define KERN_WARNING		"Warning:"
@@ -399,8 +399,8 @@ static int ns9750_eth_reset (void)
 		ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
 		ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
 
 
 	/* reset PHY */
 	/* reset PHY */
-	ns9750_mii_write (PHY_COMMON_CTRL, PHY_COMMON_CTRL_RESET);
-	ns9750_mii_write (PHY_COMMON_CTRL, 0);
+	ns9750_mii_write(PHY_BMCR, PHY_BMCR_RESET);
+	ns9750_mii_write(PHY_BMCR, 0);
 
 
 	/* @TODO check time */
 	/* @TODO check time */
 	udelay (3000);		/* [2] p.70 says at least 300us reset recovery time. But
 	udelay (3000);		/* [2] p.70 says at least 300us reset recovery time. But
@@ -455,26 +455,26 @@ static void ns9750_link_force (void)
 
 
 	DEBUG_FN (DEBUG_LINK);
 	DEBUG_FN (DEBUG_LINK);
 
 
-	uiControl = ns9750_mii_read (PHY_COMMON_CTRL);
-	uiControl &= ~(PHY_COMMON_CTRL_SPD_MA |
-		       PHY_COMMON_CTRL_AUTO_NEG | PHY_COMMON_CTRL_DUPLEX);
+	uiControl = ns9750_mii_read(PHY_BMCR);
+	uiControl &= ~(PHY_BMCR_SPEED_MASK |
+		       PHY_BMCR_AUTON | PHY_BMCR_DPLX);
 
 
 	uiLastLinkStatus = 0;
 	uiLastLinkStatus = 0;
 
 
 	if ((ucLinkMode & FS_EEPROM_AUTONEG_SPEED_MASK) ==
 	if ((ucLinkMode & FS_EEPROM_AUTONEG_SPEED_MASK) ==
 	    FS_EEPROM_AUTONEG_SPEED_100) {
 	    FS_EEPROM_AUTONEG_SPEED_100) {
-		uiControl |= PHY_COMMON_CTRL_SPD_100;
+		uiControl |= PHY_BMCR_100MB;
 		uiLastLinkStatus |= PHY_LXT971_STAT2_100BTX;
 		uiLastLinkStatus |= PHY_LXT971_STAT2_100BTX;
 	} else
 	} else
-		uiControl |= PHY_COMMON_CTRL_SPD_10;
+		uiControl |= PHY_BMCR_10_MBPS;
 
 
 	if ((ucLinkMode & FS_EEPROM_AUTONEG_DUPLEX_MASK) ==
 	if ((ucLinkMode & FS_EEPROM_AUTONEG_DUPLEX_MASK) ==
 	    FS_EEPROM_AUTONEG_DUPLEX_FULL) {
 	    FS_EEPROM_AUTONEG_DUPLEX_FULL) {
-		uiControl |= PHY_COMMON_CTRL_DUPLEX;
+		uiControl |= PHY_BMCR_DPLX;
 		uiLastLinkStatus |= PHY_LXT971_STAT2_DUPLEX_MODE;
 		uiLastLinkStatus |= PHY_LXT971_STAT2_DUPLEX_MODE;
 	}
 	}
 
 
-	ns9750_mii_write (PHY_COMMON_CTRL, uiControl);
+	ns9750_mii_write(PHY_BMCR, uiControl);
 
 
 	ns9750_link_print_changed ();
 	ns9750_link_print_changed ();
 	ns9750_link_update_egcr ();
 	ns9750_link_update_egcr ();
@@ -495,25 +495,23 @@ static void ns9750_link_auto_negotiate (void)
 
 
 	/* run auto-negotation */
 	/* run auto-negotation */
 	/* define what we are capable of */
 	/* define what we are capable of */
-	ns9750_mii_write (PHY_COMMON_AUTO_ADV,
-			  PHY_COMMON_AUTO_ADV_100BTXFD |
-			  PHY_COMMON_AUTO_ADV_100BTX |
-			  PHY_COMMON_AUTO_ADV_10BTFD |
-			  PHY_COMMON_AUTO_ADV_10BT |
-			  PHY_COMMON_AUTO_ADV_802_3);
+	ns9750_mii_write(PHY_ANAR,
+			 PHY_ANLPAR_TXFD |
+			 PHY_ANLPAR_TX |
+			 PHY_ANLPAR_10FD |
+			 PHY_ANLPAR_10 |
+			 PHY_ANLPAR_PSB_802_3);
 	/* start auto-negotiation */
 	/* start auto-negotiation */
-	ns9750_mii_write (PHY_COMMON_CTRL,
-			  PHY_COMMON_CTRL_AUTO_NEG |
-			  PHY_COMMON_CTRL_RES_AUTO);
+	ns9750_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
 
 
 	/* wait for completion */
 	/* wait for completion */
 
 
 	ulStartJiffies = get_ticks ();
 	ulStartJiffies = get_ticks ();
 	while (get_ticks () < ulStartJiffies + NS9750_MII_NEG_DELAY) {
 	while (get_ticks () < ulStartJiffies + NS9750_MII_NEG_DELAY) {
-		uiStatus = ns9750_mii_read (PHY_COMMON_STAT);
+		uiStatus = ns9750_mii_read(PHY_BMSR);
 		if ((uiStatus &
 		if ((uiStatus &
-		     (PHY_COMMON_STAT_AN_COMP | PHY_COMMON_STAT_LNK_STAT)) ==
-		    (PHY_COMMON_STAT_AN_COMP | PHY_COMMON_STAT_LNK_STAT)) {
+		     (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
+		    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
 			/* lucky we are, auto-negotiation succeeded */
 			/* lucky we are, auto-negotiation succeeded */
 			ns9750_link_print_changed ();
 			ns9750_link_print_changed ();
 			ns9750_link_update_egcr ();
 			ns9750_link_update_egcr ();
@@ -571,14 +569,13 @@ static void ns9750_link_print_changed (void)
 
 
 	DEBUG_FN (DEBUG_LINK);
 	DEBUG_FN (DEBUG_LINK);
 
 
-	uiControl = ns9750_mii_read (PHY_COMMON_CTRL);
+	uiControl = ns9750_mii_read(PHY_BMCR);
 
 
-	if ((uiControl & PHY_COMMON_CTRL_AUTO_NEG) ==
-	    PHY_COMMON_CTRL_AUTO_NEG) {
-		/* PHY_COMMON_STAT_LNK_STAT is only set on autonegotiation */
-		uiStatus = ns9750_mii_read (PHY_COMMON_STAT);
+	if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
+		/* PHY_BMSR_LS is only set on autonegotiation */
+		uiStatus = ns9750_mii_read(PHY_BMSR);
 
 
-		if (!(uiStatus & PHY_COMMON_STAT_LNK_STAT)) {
+		if (!(uiStatus & PHY_BMSR_LS)) {
 			printk (KERN_WARNING NS9750_DRIVER_NAME
 			printk (KERN_WARNING NS9750_DRIVER_NAME
 				": link down\n");
 				": link down\n");
 			/* @TODO Linux: carrier_off */
 			/* @TODO Linux: carrier_off */
@@ -592,7 +589,7 @@ static void ns9750_link_print_changed (void)
 
 
 				/* mask out all uninteresting parts */
 				/* mask out all uninteresting parts */
 			}
 			}
-			/* other PHYs must store there link information in
+			/* other PHYs must store their link information in
 			   uiStatus as PHY_LXT971 */
 			   uiStatus as PHY_LXT971 */
 		}
 		}
 	} else {
 	} else {
@@ -637,12 +634,12 @@ static char ns9750_mii_identify_phy (void)
 
 
 	DEBUG_FN (DEBUG_MII);
 	DEBUG_FN (DEBUG_MII);
 
 
-	phyDetected = (PhyType) uiID1 = ns9750_mii_read (PHY_COMMON_ID1);
+	phyDetected = (PhyType) uiID1 = ns9750_mii_read(PHY_PHYIDR1);
 
 
 	switch (phyDetected) {
 	switch (phyDetected) {
 	case PHY_LXT971A:
 	case PHY_LXT971A:
 		szName = "LXT971A";
 		szName = "LXT971A";
-		uiID2 = ns9750_mii_read (PHY_COMMON_ID2);
+		uiID2 = ns9750_mii_read(PHY_PHYIDR2);
 		nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
 		nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
 		cRes = 1;
 		cRes = 1;
 		break;
 		break;

+ 603 - 0
drivers/net/sh_eth.c

@@ -0,0 +1,603 @@
+/*
+ * sh_eth.c - Driver for Renesas SH7763's ethernet controler.
+ *
+ * Copyright (C) 2008 Renesas Solutions Corp.
+ * Copyright (c) 2008 Nobuhiro Iwamatsu
+ * Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <common.h>
+#include <malloc.h>
+#include <net.h>
+#include <asm/errno.h>
+#include <asm/io.h>
+
+#include "sh_eth.h"
+
+#ifndef CONFIG_SH_ETHER_USE_PORT
+# error "Please define CONFIG_SH_ETHER_USE_PORT"
+#endif
+#ifndef CONFIG_SH_ETHER_PHY_ADDR
+# error "Please define CONFIG_SH_ETHER_PHY_ADDR"
+#endif
+
+extern int eth_init(bd_t *bd);
+extern void eth_halt(void);
+extern int eth_rx(void);
+extern int eth_send(volatile void *packet, int length);
+
+static struct dev_info_s *dev;
+
+/*
+ * Bits are written to the PHY serially using the
+ * PIR register, just like a bit banger.
+ */
+static void sh_eth_mii_write_phy_bits(int port, u32 val, int len)
+{
+	int i;
+	u32 pir;
+
+	/* Bit positions is 1 less than the number of bits */
+	for (i = len - 1; i >= 0; i--) {
+		/* Write direction, bit to write, clock is low */
+		pir = 2 | ((val & 1 << i) ? 1 << 2 : 0);
+		outl(pir, PIR(port));
+		udelay(1);
+		/* Write direction, bit to write, clock is high */
+		pir = 3 | ((val & 1 << i) ? 1 << 2 : 0);
+		outl(pir, PIR(port));
+		udelay(1);
+		/* Write direction, bit to write, clock is low */
+		pir = 2 | ((val & 1 << i) ? 1 << 2 : 0);
+		outl(pir, PIR(port));
+		udelay(1);
+	}
+}
+
+static void sh_eth_mii_bus_release(int port)
+{
+	/* Read direction, clock is low */
+	outl(0, PIR(port));
+	udelay(1);
+	/* Read direction, clock is high */
+	outl(1, PIR(port));
+	udelay(1);
+	/* Read direction, clock is low */
+	outl(0, PIR(port));
+	udelay(1);
+}
+
+static void sh_eth_mii_ind_bus_release(int port)
+{
+	/* Read direction, clock is low */
+	outl(0, PIR(port));
+	udelay(1);
+}
+
+static int sh_eth_mii_read_phy_bits(int port, u32 * val, int len)
+{
+	int i;
+	u32 pir;
+
+	*val = 0;
+	for (i = len - 1; i >= 0; i--) {
+		/* Read direction, clock is high */
+		outl(1, PIR(port));
+		udelay(1);
+		/* Read bit */
+		pir = inl(PIR(port));
+		*val |= (pir & 8) ? 1 << i : 0;
+		/* Read direction, clock is low */
+		outl(0, PIR(port));
+		udelay(1);
+	}
+
+	return 0;
+}
+
+#define PHY_INIT	0xFFFFFFFF
+#define PHY_READ	0x02
+#define PHY_WRITE	0x01
+/*
+ * To read a phy register, mii managements frames are sent to the phy.
+ * The frames look like this:
+ * pre (32 bits):	0xffff ffff
+ * st (2 bits):		01
+ * op (2bits):		10: read 01: write
+ * phyad (5 bits):	xxxxx
+ * regad (5 bits):	xxxxx
+ * ta (Bus release):
+ * data (16 bits):	read data
+ */
+static u32 sh_eth_mii_read_phy_reg(int port, u8 phy_addr, int reg)
+{
+	u32 val;
+
+	/* Sent mii management frame */
+	/* pre */
+	sh_eth_mii_write_phy_bits(port, PHY_INIT, 32);
+	/* st (start of frame) */
+	sh_eth_mii_write_phy_bits(port, 0x1, 2);
+	/* op (code) */
+	sh_eth_mii_write_phy_bits(port, PHY_READ, 2);
+	/* phy address */
+	sh_eth_mii_write_phy_bits(port, phy_addr, 5);
+	/* Register to read */
+	sh_eth_mii_write_phy_bits(port, reg, 5);
+
+	/* Bus release */
+	sh_eth_mii_bus_release(port);
+
+	/* Read register */
+	sh_eth_mii_read_phy_bits(port, &val, 16);
+
+	return val;
+}
+
+/*
+ * To write a phy register, mii managements frames are sent to the phy.
+ * The frames look like this:
+ * pre (32 bits):	0xffff ffff
+ * st (2 bits):		01
+ * op (2bits):		10: read 01: write
+ * phyad (5 bits):	xxxxx
+ * regad (5 bits):	xxxxx
+ * ta (2 bits):		10
+ * data (16 bits):	write data
+ * idle (Independent bus release)
+ */
+static void sh_eth_mii_write_phy_reg(int port, u8 phy_addr, int reg, u16 val)
+{
+	/* Sent mii management frame */
+	/* pre */
+	sh_eth_mii_write_phy_bits(port, PHY_INIT, 32);
+	/* st (start of frame) */
+	sh_eth_mii_write_phy_bits(port, 0x1, 2);
+	/* op (code) */
+	sh_eth_mii_write_phy_bits(port, PHY_WRITE, 2);
+	/* phy address */
+	sh_eth_mii_write_phy_bits(port, phy_addr, 5);
+	/* Register to read */
+	sh_eth_mii_write_phy_bits(port, reg, 5);
+	/* ta */
+	sh_eth_mii_write_phy_bits(port, PHY_READ, 2);
+	/* Write register data */
+	sh_eth_mii_write_phy_bits(port, val, 16);
+
+	/* Independent bus release */
+	sh_eth_mii_ind_bus_release(port);
+}
+
+void eth_halt(void)
+{
+}
+
+int eth_send(volatile void *packet, int len)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	int timeout;
+	int rc = 0;
+
+	if (!packet || len > 0xffff) {
+		printf("eth_send: Invalid argument\n");
+		return -EINVAL;
+	}
+
+	/* packet must be a 4 byte boundary */
+	if ((int)packet & (4 - 1)) {
+		printf("eth_send: packet not 4 byte alligned\n");
+		return -EFAULT;
+	}
+
+	/* Update tx descriptor */
+	port_info->tx_desc_cur->td2 = ADDR_TO_PHY(packet);
+	port_info->tx_desc_cur->td1 = len << 16;
+	/* Must preserve the end of descriptor list indication */
+	if (port_info->tx_desc_cur->td0 & TD_TDLE)
+		port_info->tx_desc_cur->td0 = TD_TACT | TD_TFP | TD_TDLE;
+	else
+		port_info->tx_desc_cur->td0 = TD_TACT | TD_TFP;
+
+	/* Restart the transmitter if disabled */
+	if (!(inl(EDTRR(port)) & EDTRR_TRNS))
+		outl(EDTRR_TRNS, EDTRR(port));
+
+	/* Wait until packet is transmitted */
+	timeout = 1000;
+	while (port_info->tx_desc_cur->td0 & TD_TACT && timeout--)
+		udelay(100);
+
+	if (timeout < 0) {
+		printf("eth_send: transmit timeout\n");
+		rc = -1;
+		goto err;
+	}
+
+err:
+	port_info->tx_desc_cur++;
+	if (port_info->tx_desc_cur >= port_info->tx_desc_base + NUM_TX_DESC)
+		port_info->tx_desc_cur = port_info->tx_desc_base;
+
+	return rc;
+}
+
+int eth_rx(void)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	int len = 0;
+	volatile u8 *packet;
+
+	/* Check if the rx descriptor is ready */
+	if (!(port_info->rx_desc_cur->rd0 & RD_RACT)) {
+		/* Check for errors */
+		if (!(port_info->rx_desc_cur->rd0 & RD_RFE)) {
+			len = port_info->rx_desc_cur->rd1 & 0xffff;
+			packet = (volatile u8 *)
+			    ADDR_TO_P2(port_info->rx_desc_cur->rd2);
+			NetReceive(packet, len);
+		}
+
+		/* Make current descriptor available again */
+		if (port_info->rx_desc_cur->rd0 & RD_RDLE)
+			port_info->rx_desc_cur->rd0 = RD_RACT | RD_RDLE;
+		else
+			port_info->rx_desc_cur->rd0 = RD_RACT;
+
+		/* Point to the next descriptor */
+		port_info->rx_desc_cur++;
+		if (port_info->rx_desc_cur >=
+		    port_info->rx_desc_base + NUM_RX_DESC)
+			port_info->rx_desc_cur = port_info->rx_desc_base;
+	}
+
+	/* Restart the receiver if disabled */
+	if (!(inl(EDRRR(port)) & EDRRR_R))
+		outl(EDRRR_R, EDRRR(port));
+
+	return len;
+}
+
+#define EDMR_INIT_CNT 1000
+static int sh_eth_reset(struct dev_info_s *dev)
+{
+	int port = dev->port;
+	int i;
+
+	/* Start e-dmac transmitter and receiver */
+	outl(EDSR_ENALL, EDSR(port));
+
+	/* Perform a software reset and wait for it to complete */
+	outl(EDMR_SRST, EDMR(port));
+	for (i = 0; i < EDMR_INIT_CNT; i++) {
+		if (!(inl(EDMR(port)) & EDMR_SRST))
+			break;
+		udelay(1000);
+	}
+
+	if (i == EDMR_INIT_CNT) {
+		printf("Error: Software reset timeout\n");
+		return -1;
+	}
+	return 0;
+}
+
+static int sh_eth_tx_desc_init(struct dev_info_s *dev)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	u32 tmp_addr;
+	struct tx_desc_s *cur_tx_desc;
+	int i;
+
+	/* Allocate tx descriptors. They must be TX_DESC_SIZE bytes
+	   aligned */
+	if (!(port_info->tx_desc_malloc = malloc(NUM_TX_DESC *
+						 sizeof(struct tx_desc_s) +
+						 TX_DESC_SIZE - 1))) {
+		printf("Error: malloc failed\n");
+		return -ENOMEM;
+	}
+	tmp_addr = (u32) (((int)port_info->tx_desc_malloc + TX_DESC_SIZE - 1) &
+			  ~(TX_DESC_SIZE - 1));
+	/* Make sure we use a P2 address (non-cacheable) */
+	port_info->tx_desc_base = (struct tx_desc_s *)ADDR_TO_P2(tmp_addr);
+
+	port_info->tx_desc_cur = port_info->tx_desc_base;
+
+	/* Initialize all descriptors */
+	for (cur_tx_desc = port_info->tx_desc_base, i = 0; i < NUM_TX_DESC;
+	     cur_tx_desc++, i++) {
+		cur_tx_desc->td0 = 0x00;
+		cur_tx_desc->td1 = 0x00;
+		cur_tx_desc->td2 = 0x00;
+	}
+
+	/* Mark the end of the descriptors */
+	cur_tx_desc--;
+	cur_tx_desc->td0 |= TD_TDLE;
+
+	/* Point the controller to the tx descriptor list. Must use physical
+	   addresses */
+	outl(ADDR_TO_PHY(port_info->tx_desc_base), TDLAR(port));
+	outl(ADDR_TO_PHY(port_info->tx_desc_base), TDFAR(port));
+	outl(ADDR_TO_PHY(cur_tx_desc), TDFXR(port));
+	outl(0x01, TDFFR(port));/* Last discriptor bit */
+
+	return 0;
+}
+
+static int sh_eth_rx_desc_init(struct dev_info_s *dev)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	u32 tmp_addr;
+	struct rx_desc_s *cur_rx_desc;
+	u8 *rx_buf;
+	int i;
+
+	/* Allocate rx descriptors. They must be RX_DESC_SIZE bytes
+	   aligned */
+	if (!(port_info->rx_desc_malloc = malloc(NUM_RX_DESC *
+						 sizeof(struct rx_desc_s) +
+						 RX_DESC_SIZE - 1))) {
+		printf("Error: malloc failed\n");
+		return -ENOMEM;
+	}
+	tmp_addr = (u32) (((int)port_info->rx_desc_malloc + RX_DESC_SIZE - 1) &
+			  ~(RX_DESC_SIZE - 1));
+	/* Make sure we use a P2 address (non-cacheable) */
+	port_info->rx_desc_base = (struct rx_desc_s *)ADDR_TO_P2(tmp_addr);
+
+	port_info->rx_desc_cur = port_info->rx_desc_base;
+
+	/* Allocate rx data buffers. They must be 32 bytes aligned  and in
+	   P2 area */
+	if (!(port_info->rx_buf_malloc = malloc(NUM_RX_DESC * MAX_BUF_SIZE +
+						31))) {
+		printf("Error: malloc failed\n");
+		free(port_info->rx_desc_malloc);
+		port_info->rx_desc_malloc = NULL;
+		return -ENOMEM;
+	}
+	tmp_addr = (u32)(((int)port_info->rx_buf_malloc + (32 - 1)) &
+			  ~(32 - 1));
+	port_info->rx_buf_base = (u8 *)ADDR_TO_P2(tmp_addr);
+
+	/* Initialize all descriptors */
+	for (cur_rx_desc = port_info->rx_desc_base,
+	     rx_buf = port_info->rx_buf_base, i = 0;
+	     i < NUM_RX_DESC; cur_rx_desc++, rx_buf += MAX_BUF_SIZE, i++) {
+		cur_rx_desc->rd0 = RD_RACT;
+		cur_rx_desc->rd1 = MAX_BUF_SIZE << 16;
+		cur_rx_desc->rd2 = (u32) ADDR_TO_PHY(rx_buf);
+	}
+
+	/* Mark the end of the descriptors */
+	cur_rx_desc--;
+	cur_rx_desc->rd0 |= RD_RDLE;
+
+	/* Point the controller to the rx descriptor list */
+	outl(ADDR_TO_PHY(port_info->rx_desc_base), RDLAR(port));
+	outl(ADDR_TO_PHY(port_info->rx_desc_base), RDFAR(port));
+	outl(ADDR_TO_PHY(cur_rx_desc), RDFXR(port));
+	outl(RDFFR_RDLF, RDFFR(port));
+
+	return 0;
+}
+
+static void sh_eth_desc_free(struct dev_info_s *dev)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+
+	if (port_info->tx_desc_malloc) {
+		free(port_info->tx_desc_malloc);
+		port_info->tx_desc_malloc = NULL;
+	}
+
+	if (port_info->rx_desc_malloc) {
+		free(port_info->rx_desc_malloc);
+		port_info->rx_desc_malloc = NULL;
+	}
+
+	if (port_info->rx_buf_malloc) {
+		free(port_info->rx_buf_malloc);
+		port_info->rx_buf_malloc = NULL;
+	}
+}
+
+static int sh_eth_desc_init(struct dev_info_s *dev)
+{
+	int rc;
+
+	if ((rc = sh_eth_tx_desc_init(dev)) || (rc = sh_eth_rx_desc_init(dev))) {
+		sh_eth_desc_free(dev);
+		return rc;
+	}
+
+	return 0;
+}
+
+static int sh_eth_phy_config(struct dev_info_s *dev)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	int timeout;
+	u32 val;
+	/* Reset phy */
+	sh_eth_mii_write_phy_reg(port, port_info->phy_addr, PHY_CTRL, PHY_C_RESET);
+	timeout = 10;
+	while (timeout--) {
+		val = sh_eth_mii_read_phy_reg(port, port_info->phy_addr, PHY_CTRL);
+		if (!(val & PHY_C_RESET))
+			break;
+		udelay(50000);
+	}
+	if (timeout < 0) {
+		printf("%s phy reset timeout\n", __func__);
+		return -1;
+	}
+
+	/* Advertise 100/10 baseT full/half duplex */
+	sh_eth_mii_write_phy_reg(port, port_info->phy_addr, PHY_ANA,
+		(PHY_A_FDX|PHY_A_HDX|PHY_A_10FDX|PHY_A_10HDX|PHY_A_EXT));
+	/* Autonegotiation, normal operation, full duplex, enable tx */
+	sh_eth_mii_write_phy_reg(port, port_info->phy_addr, PHY_CTRL,
+		(PHY_C_ANEGEN|PHY_C_RANEG));
+	/* Wait for autonegotiation to complete */
+	timeout = 100;
+	while (timeout--) {
+		val = sh_eth_mii_read_phy_reg(port, port_info->phy_addr, 1);
+		if (val & PHY_S_ANEGC)
+			break;
+		udelay(50000);
+	}
+	if (timeout < 0) {
+		printf("sh_eth_phy_config() phy auto-negotiation failed\n");
+		return -1;
+	}
+
+	return 0;
+}
+
+static int sh_eth_config(struct dev_info_s *dev, bd_t * bd)
+{
+	int port = dev->port;
+	struct port_info_s *port_info = &dev->port_info[port];
+	u32 val;
+	u32 phy_status;
+	int rc;
+
+	/* Configure e-dmac registers */
+	outl((inl(EDMR(port)) & ~EMDR_DESC_R) | EDMR_EL, EDMR(port));
+	outl(0, EESIPR(port));
+	outl(0, TRSCER(port));
+	outl(0, TFTR(port));
+	outl((FIFO_SIZE_T | FIFO_SIZE_R), FDR(port));
+	outl(RMCR_RST, RMCR(port));
+	outl(0, RPADIR(port));
+	outl((FIFO_F_D_RFF | FIFO_F_D_RFD), FCFTR(port));
+
+	/* Configure e-mac registers */
+	outl(0, ECSIPR(port));
+
+	/* Set Mac address */
+	val = bd->bi_enetaddr[0] << 24 | bd->bi_enetaddr[1] << 16 |
+	    bd->bi_enetaddr[2] << 8 | bd->bi_enetaddr[3];
+	outl(val, MAHR(port));
+
+	val = bd->bi_enetaddr[4] << 8 | bd->bi_enetaddr[5];
+	outl(val, MALR(port));
+
+	outl(RFLR_RFL_MIN, RFLR(port));
+	outl(0, PIPR(port));
+	outl(APR_AP, APR(port));
+	outl(MPR_MP, MPR(port));
+	outl(TPAUSER_TPAUSE, TPAUSER(port));
+
+	/* Configure phy */
+	if ((rc = sh_eth_phy_config(dev)))
+		return rc;
+
+	/* Read phy status to finish configuring the e-mac */
+	phy_status = sh_eth_mii_read_phy_reg(dev->port,
+					     dev->port_info[dev->port].phy_addr,
+					     1);
+
+	/* Set the transfer speed */
+	if (phy_status & (PHY_S_100X_F|PHY_S_100X_H)) {
+		printf("100Base/");
+		outl(GECMR_100B, GECMR(port));
+	} else {
+		printf("10Base/");
+		outl(GECMR_10B, GECMR(port));
+	}
+
+	/* Check if full duplex mode is supported by the phy */
+	if (phy_status & (PHY_S_100X_F|PHY_S_10T_F)) {
+		printf("Full\n");
+		outl((ECMR_CHG_DM|ECMR_RE|ECMR_TE|ECMR_DM), ECMR(port));
+	} else {
+		printf("Half\n");
+		outl((ECMR_CHG_DM|ECMR_RE|ECMR_TE),  ECMR(port));
+	}
+	return 0;
+}
+
+static int sh_eth_start(struct dev_info_s *dev)
+{
+	/*
+	 * Enable the e-dmac receiver only. The transmitter will be enabled when
+	 * we have something to transmit
+	 */
+	outl(EDRRR_R, EDRRR(dev->port));
+
+	return 0;
+}
+
+static int sh_eth_get_mac(bd_t *bd)
+{
+	char *s, *e;
+	int i;
+
+	s = getenv("ethaddr");
+	if (s != NULL) {
+		for (i = 0; i < 6; ++i) {
+			bd->bi_enetaddr[i] = s ? simple_strtoul(s, &e, 16) : 0;
+			if (s)
+				s = (*e) ? e + 1 : e;
+		}
+	} else {
+		puts("Please set MAC address\n");
+	}
+	return 0;
+}
+
+int eth_init(bd_t *bd)
+{
+	int rc;
+	/* Allocate main device information structure */
+	if (!(dev = malloc(sizeof(*dev)))) {
+		printf("eth_init: malloc failed\n");
+		return -ENOMEM;
+	}
+
+	memset(dev, 0, sizeof(*dev));
+
+	dev->port = CONFIG_SH_ETHER_USE_PORT;
+	dev->port_info[dev->port].phy_addr = CONFIG_SH_ETHER_PHY_ADDR;
+
+	sh_eth_get_mac(bd);
+
+	if ((rc = sh_eth_reset(dev)) || (rc = sh_eth_desc_init(dev)))
+		goto err;
+
+	if ((rc = sh_eth_config(dev, bd)) || (rc = sh_eth_start(dev)))
+		goto err_desc;
+
+	return 0;
+
+err_desc:
+	sh_eth_desc_free(dev);
+err:
+	free(dev);
+	printf("eth_init: Failed\n");
+	return rc;
+}

+ 446 - 0
drivers/net/sh_eth.h

@@ -0,0 +1,446 @@
+/*
+ * sh_eth.h - Driver for Renesas SH7763's gigabit ethernet controler.
+ *
+ * Copyright (C) 2008 Renesas Solutions Corp.
+ * Copyright (c) 2008 Nobuhiro Iwamatsu
+ * Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <asm/types.h>
+
+#define SHETHER_NAME "sh_eth"
+
+/* Malloc returns addresses in the P1 area (cacheable). However we need to
+   use area P2 (non-cacheable) */
+#define ADDR_TO_P2(addr)	((((int)(addr) & ~0xe0000000) | 0xa0000000))
+
+/* The ethernet controller needs to use physical addresses */
+#define ADDR_TO_PHY(addr)	((int)(addr) & ~0xe0000000)
+
+/* Number of supported ports */
+#define MAX_PORT_NUM	2
+
+/* Buffers must be big enough to hold the largest ethernet frame. Also, rx
+   buffers must be a multiple of 32 bytes */
+#define MAX_BUF_SIZE	(48 * 32)
+
+/* The number of tx descriptors must be large enough to point to 5 or more
+   frames. If each frame uses 2 descriptors, at least 10 descriptors are needed.
+   We use one descriptor per frame */
+#define NUM_TX_DESC		8
+
+/* The size of the tx descriptor is determined by how much padding is used.
+   4, 20, or 52 bytes of padding can be used */
+#define TX_DESC_PADDING		4
+#define TX_DESC_SIZE		(12 + TX_DESC_PADDING)
+
+/* Tx descriptor. We always use 4 bytes of padding */
+struct tx_desc_s {
+	volatile u32 td0;
+	u32 td1;
+	u32 td2;		/* Buffer start */
+	u32 padding;
+};
+
+/* There is no limitation in the number of rx descriptors */
+#define NUM_RX_DESC	8
+
+/* The size of the rx descriptor is determined by how much padding is used.
+   4, 20, or 52 bytes of padding can be used */
+#define RX_DESC_PADDING		4
+#define RX_DESC_SIZE		(12 + RX_DESC_PADDING)
+
+/* Rx descriptor. We always use 4 bytes of padding */
+struct rx_desc_s {
+	volatile u32 rd0;
+	volatile u32 rd1;
+	u32 rd2;		/* Buffer start */
+	u32 padding;
+};
+
+struct port_info_s {
+	struct tx_desc_s *tx_desc_malloc;
+	struct tx_desc_s *tx_desc_base;
+	struct tx_desc_s *tx_desc_cur;
+	struct rx_desc_s *rx_desc_malloc;
+	struct rx_desc_s *rx_desc_base;
+	struct rx_desc_s *rx_desc_cur;
+	u8 *rx_buf_malloc;
+	u8 *rx_buf_base;
+	u8 mac_addr[6];
+	u8 phy_addr;
+};
+
+struct dev_info_s {
+	int port;
+	struct port_info_s port_info[MAX_PORT_NUM];
+};
+
+/* Register Address */
+#define BASE_IO_ADDR	0xfee00000
+
+#define EDSR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0000)
+
+#define TDLAR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0010)
+#define TDFAR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0014)
+#define TDFXR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0018)
+#define TDFFR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x001c)
+
+#define RDLAR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0030)
+#define RDFAR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0034)
+#define RDFXR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0038)
+#define RDFFR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x003c)
+
+#define EDMR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0400)
+#define EDTRR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0408)
+#define EDRRR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0410)
+#define EESR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0428)
+#define EESIPR(port)	(BASE_IO_ADDR + 0x800 * (port) + 0x0430)
+#define TRSCER(port)	(BASE_IO_ADDR + 0x800 * (port) + 0x0438)
+#define TFTR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0448)
+#define FDR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0450)
+#define RMCR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0458)
+#define RPADIR(port)	(BASE_IO_ADDR + 0x800 * (port) + 0x0460)
+#define FCFTR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0468)
+#define ECMR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0500)
+#define RFLR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0508)
+#define ECSIPR(port)	(BASE_IO_ADDR + 0x800 * (port) + 0x0518)
+#define PIR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0520)
+#define PIPR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x052c)
+#define APR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0554)
+#define MPR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x0558)
+#define TPAUSER(port)	(BASE_IO_ADDR + 0x800 * (port) + 0x0564)
+#define GECMR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x05b0)
+#define MALR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x05c8)
+#define MAHR(port)		(BASE_IO_ADDR + 0x800 * (port) + 0x05c0)
+
+/*
+ * Register's bits
+ * Copy from Linux driver source code
+ */
+#ifdef CONFIG_CPU_SH7763
+/* EDSR */
+enum EDSR_BIT {
+	EDSR_ENT = 0x01, EDSR_ENR = 0x02,
+};
+#define EDSR_ENALL (EDSR_ENT|EDSR_ENR)
+#endif
+
+/* EDMR */
+enum DMAC_M_BIT {
+	EDMR_DL1 = 0x20, EDMR_DL0 = 0x10,
+#ifdef CONFIG_CPU_SH7763
+	EDMR_SRST	= 0x03,
+	EMDR_DESC_R	= 0x30, /* Descriptor reserve size */
+	EDMR_EL		= 0x40, /* Litte endian */
+#else /* CONFIG_CPU_SH7763 */
+	EDMR_SRST = 0x01,
+#endif
+};
+
+/* RFLR */
+#define RFLR_RFL_MIN	0x05EE	/* Recv Frame length 1518 byte */
+
+/* EDTRR */
+enum DMAC_T_BIT {
+#ifdef CONFIG_CPU_SH7763
+	EDTRR_TRNS = 0x03,
+#else
+	EDTRR_TRNS = 0x01,
+#endif
+};
+
+/* GECMR */
+enum GECMR_BIT {
+	GECMR_1000B = 0x01, GECMR_100B = 0x40, GECMR_10B = 0x00,
+};
+
+/* EDRRR*/
+enum EDRRR_R_BIT {
+	EDRRR_R = 0x01,
+};
+
+/* TPAUSER */
+enum TPAUSER_BIT {
+	TPAUSER_TPAUSE = 0x0000ffff,
+	TPAUSER_UNLIMITED = 0,
+};
+
+/* BCFR */
+enum BCFR_BIT {
+	BCFR_RPAUSE = 0x0000ffff,
+	BCFR_UNLIMITED = 0,
+};
+
+/* PIR */
+enum PIR_BIT {
+	PIR_MDI = 0x08, PIR_MDO = 0x04, PIR_MMD = 0x02, PIR_MDC = 0x01,
+};
+
+/* PSR */
+enum PHY_STATUS_BIT { PHY_ST_LINK = 0x01, };
+
+/* EESR */
+enum EESR_BIT {
+#ifndef CONFIG_CPU_SH7763
+	EESR_TWB  = 0x40000000,
+#else
+	EESR_TWB  = 0xC0000000,
+	EESR_TC1  = 0x20000000,
+	EESR_TUC  = 0x10000000,
+	EESR_ROC  = 0x80000000,
+#endif
+	EESR_TABT = 0x04000000,
+	EESR_RABT = 0x02000000, EESR_RFRMER = 0x01000000,
+#ifndef CONFIG_CPU_SH7763
+	EESR_ADE  = 0x00800000,
+#endif
+	EESR_ECI  = 0x00400000,
+	EESR_FTC  = 0x00200000, EESR_TDE  = 0x00100000,
+	EESR_TFE  = 0x00080000, EESR_FRC  = 0x00040000,
+	EESR_RDE  = 0x00020000, EESR_RFE  = 0x00010000,
+#ifndef CONFIG_CPU_SH7763
+	EESR_CND  = 0x00000800,
+#endif
+	EESR_DLC  = 0x00000400,
+	EESR_CD   = 0x00000200, EESR_RTO  = 0x00000100,
+	EESR_RMAF = 0x00000080, EESR_CEEF = 0x00000040,
+	EESR_CELF = 0x00000020, EESR_RRF  = 0x00000010,
+	rESR_RTLF = 0x00000008, EESR_RTSF = 0x00000004,
+	EESR_PRE  = 0x00000002, EESR_CERF = 0x00000001,
+};
+
+
+#ifdef CONFIG_CPU_SH7763
+# define TX_CHECK (EESR_TC1 | EESR_FTC)
+# define EESR_ERR_CHECK	(EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE \
+		| EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI)
+# define TX_ERROR_CEHCK (EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE)
+
+#else
+# define TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO)
+# define EESR_ERR_CHECK	(EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE \
+		| EESR_RFRMER | EESR_ADE | EESR_TFE | EESR_TDE | EESR_ECI)
+# define TX_ERROR_CEHCK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | EESR_TFE)
+#endif
+
+/* EESIPR */
+enum DMAC_IM_BIT {
+	DMAC_M_TWB = 0x40000000, DMAC_M_TABT = 0x04000000,
+	DMAC_M_RABT = 0x02000000,
+	DMAC_M_RFRMER = 0x01000000, DMAC_M_ADF = 0x00800000,
+	DMAC_M_ECI = 0x00400000, DMAC_M_FTC = 0x00200000,
+	DMAC_M_TDE = 0x00100000, DMAC_M_TFE = 0x00080000,
+	DMAC_M_FRC = 0x00040000, DMAC_M_RDE = 0x00020000,
+	DMAC_M_RFE = 0x00010000, DMAC_M_TINT4 = 0x00000800,
+	DMAC_M_TINT3 = 0x00000400, DMAC_M_TINT2 = 0x00000200,
+	DMAC_M_TINT1 = 0x00000100, DMAC_M_RINT8 = 0x00000080,
+	DMAC_M_RINT5 = 0x00000010, DMAC_M_RINT4 = 0x00000008,
+	DMAC_M_RINT3 = 0x00000004, DMAC_M_RINT2 = 0x00000002,
+	DMAC_M_RINT1 = 0x00000001,
+};
+
+/* Receive descriptor bit */
+enum RD_STS_BIT {
+	RD_RACT = 0x80000000, RD_RDLE = 0x40000000,
+	RD_RFP1 = 0x20000000, RD_RFP0 = 0x10000000,
+	RD_RFE = 0x08000000, RD_RFS10 = 0x00000200,
+	RD_RFS9 = 0x00000100, RD_RFS8 = 0x00000080,
+	RD_RFS7 = 0x00000040, RD_RFS6 = 0x00000020,
+	RD_RFS5 = 0x00000010, RD_RFS4 = 0x00000008,
+	RD_RFS3 = 0x00000004, RD_RFS2 = 0x00000002,
+	RD_RFS1 = 0x00000001,
+};
+#define RDF1ST	RD_RFP1
+#define RDFEND	RD_RFP0
+#define RD_RFP	(RD_RFP1|RD_RFP0)
+
+/* RDFFR*/
+enum RDFFR_BIT {
+	RDFFR_RDLF = 0x01,
+};
+
+/* FCFTR */
+enum FCFTR_BIT {
+	FCFTR_RFF2 = 0x00040000, FCFTR_RFF1 = 0x00020000,
+	FCFTR_RFF0 = 0x00010000, FCFTR_RFD2 = 0x00000004,
+	FCFTR_RFD1 = 0x00000002, FCFTR_RFD0 = 0x00000001,
+};
+#define FIFO_F_D_RFF	(FCFTR_RFF2|FCFTR_RFF1|FCFTR_RFF0)
+#define FIFO_F_D_RFD	(FCFTR_RFD2|FCFTR_RFD1|FCFTR_RFD0)
+
+/* Transfer descriptor bit */
+enum TD_STS_BIT {
+#ifdef CONFIG_CPU_SH7763
+	TD_TACT = 0x80000000,
+#else
+	TD_TACT = 0x7fffffff,
+#endif
+	TD_TDLE = 0x40000000, TD_TFP1 = 0x20000000,
+	TD_TFP0 = 0x10000000,
+};
+#define TDF1ST	TD_TFP1
+#define TDFEND	TD_TFP0
+#define TD_TFP	(TD_TFP1|TD_TFP0)
+
+/* RMCR */
+enum RECV_RST_BIT { RMCR_RST = 0x01, };
+/* ECMR */
+enum FELIC_MODE_BIT {
+#ifdef CONFIG_CPU_SH7763
+	ECMR_TRCCM=0x04000000, ECMR_RCSC= 0x00800000, ECMR_DPAD= 0x00200000,
+	ECMR_RZPF = 0x00100000,
+#endif
+	ECMR_ZPF = 0x00080000, ECMR_PFR = 0x00040000, ECMR_RXF = 0x00020000,
+	ECMR_TXF = 0x00010000, ECMR_MCT = 0x00002000, ECMR_PRCEF = 0x00001000,
+	ECMR_PMDE = 0x00000200, ECMR_RE = 0x00000040, ECMR_TE = 0x00000020,
+	ECMR_ILB = 0x00000008, ECMR_ELB = 0x00000004, ECMR_DM = 0x00000002,
+	ECMR_PRM = 0x00000001,
+};
+
+#ifdef CONFIG_CPU_SH7763
+#define ECMR_CHG_DM	(ECMR_TRCCM | ECMR_RZPF | ECMR_ZPF | ECMR_PFR | ECMR_RXF | \
+						ECMR_TXF | ECMR_MCT)
+#else
+#define ECMR_CHG_DM	(ECMR_ZPF | ECMR_PFR ECMR_RXF | ECMR_TXF | ECMR_MCT)
+#endif
+
+/* ECSR */
+enum ECSR_STATUS_BIT {
+#ifndef CONFIG_CPU_SH7763
+	ECSR_BRCRX = 0x20, ECSR_PSRTO = 0x10,
+#endif
+	ECSR_LCHNG = 0x04,
+	ECSR_MPD = 0x02, ECSR_ICD = 0x01,
+};
+
+#ifdef CONFIG_CPU_SH7763
+# define ECSR_INIT (ECSR_ICD | ECSIPR_MPDIP)
+#else
+# define ECSR_INIT (ECSR_BRCRX | ECSR_PSRTO | \
+			ECSR_LCHNG | ECSR_ICD | ECSIPR_MPDIP)
+#endif
+
+/* ECSIPR */
+enum ECSIPR_STATUS_MASK_BIT {
+#ifndef CONFIG_CPU_SH7763
+	ECSIPR_BRCRXIP = 0x20, ECSIPR_PSRTOIP = 0x10,
+#endif
+	ECSIPR_LCHNGIP = 0x04,
+	ECSIPR_MPDIP = 0x02, ECSIPR_ICDIP = 0x01,
+};
+
+#ifdef CONFIG_CPU_SH7763
+# define ECSIPR_INIT (ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP)
+#else
+# define ECSIPR_INIT (ECSIPR_BRCRXIP | ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | \
+				ECSIPR_ICDIP | ECSIPR_MPDIP)
+#endif
+
+/* APR */
+enum APR_BIT {
+	APR_AP = 0x00000004,
+};
+
+/* MPR */
+enum MPR_BIT {
+	MPR_MP = 0x00000006,
+};
+
+/* TRSCER */
+enum DESC_I_BIT {
+	DESC_I_TINT4 = 0x0800, DESC_I_TINT3 = 0x0400, DESC_I_TINT2 = 0x0200,
+	DESC_I_TINT1 = 0x0100, DESC_I_RINT8 = 0x0080, DESC_I_RINT5 = 0x0010,
+	DESC_I_RINT4 = 0x0008, DESC_I_RINT3 = 0x0004, DESC_I_RINT2 = 0x0002,
+	DESC_I_RINT1 = 0x0001,
+};
+
+/* RPADIR */
+enum RPADIR_BIT {
+	RPADIR_PADS1 = 0x20000, RPADIR_PADS0 = 0x10000,
+	RPADIR_PADR = 0x0003f,
+};
+
+#ifdef CONFIG_CPU_SH7763
+# define RPADIR_INIT (0x00)
+#else
+# define RPADIR_INIT (RPADIR_PADS1)
+#endif
+
+/* FDR */
+enum FIFO_SIZE_BIT {
+	FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007,
+};
+
+enum PHY_OFFSETS {
+	PHY_CTRL = 0, PHY_STAT = 1, PHY_IDT1 = 2, PHY_IDT2 = 3,
+	PHY_ANA = 4, PHY_ANL = 5, PHY_ANE = 6,
+	PHY_16 = 16,
+};
+
+/* PHY_CTRL */
+enum PHY_CTRL_BIT {
+	PHY_C_RESET = 0x8000, PHY_C_LOOPBK = 0x4000, PHY_C_SPEEDSL = 0x2000,
+	PHY_C_ANEGEN = 0x1000, PHY_C_PWRDN = 0x0800, PHY_C_ISO = 0x0400,
+	PHY_C_RANEG = 0x0200, PHY_C_DUPLEX = 0x0100, PHY_C_COLT = 0x0080,
+};
+#define DM9161_PHY_C_ANEGEN 0	/* auto nego special */
+
+/* PHY_STAT */
+enum PHY_STAT_BIT {
+	PHY_S_100T4 = 0x8000, PHY_S_100X_F = 0x4000, PHY_S_100X_H = 0x2000,
+	PHY_S_10T_F = 0x1000, PHY_S_10T_H = 0x0800, PHY_S_ANEGC = 0x0020,
+	PHY_S_RFAULT = 0x0010, PHY_S_ANEGA = 0x0008, PHY_S_LINK = 0x0004,
+	PHY_S_JAB = 0x0002, PHY_S_EXTD = 0x0001,
+};
+
+/* PHY_ANA */
+enum PHY_ANA_BIT {
+	PHY_A_NP = 0x8000, PHY_A_ACK = 0x4000, PHY_A_RF = 0x2000,
+	PHY_A_FCS = 0x0400, PHY_A_T4 = 0x0200, PHY_A_FDX = 0x0100,
+	PHY_A_HDX = 0x0080, PHY_A_10FDX = 0x0040, PHY_A_10HDX = 0x0020,
+	PHY_A_SEL = 0x001e,
+	PHY_A_EXT = 0x0001,
+};
+
+/* PHY_ANL */
+enum PHY_ANL_BIT {
+	PHY_L_NP = 0x8000, PHY_L_ACK = 0x4000, PHY_L_RF = 0x2000,
+	PHY_L_FCS = 0x0400, PHY_L_T4 = 0x0200, PHY_L_FDX = 0x0100,
+	PHY_L_HDX = 0x0080, PHY_L_10FDX = 0x0040, PHY_L_10HDX = 0x0020,
+	PHY_L_SEL = 0x001f,
+};
+
+/* PHY_ANE */
+enum PHY_ANE_BIT {
+	PHY_E_PDF = 0x0010, PHY_E_LPNPA = 0x0008, PHY_E_NPA = 0x0004,
+	PHY_E_PRX = 0x0002, PHY_E_LPANEGA = 0x0001,
+};
+
+/* DM9161 */
+enum PHY_16_BIT {
+	PHY_16_BP4B45 = 0x8000, PHY_16_BPSCR = 0x4000, PHY_16_BPALIGN = 0x2000,
+	PHY_16_BP_ADPOK = 0x1000, PHY_16_Repeatmode = 0x0800,
+	PHY_16_TXselect = 0x0400,
+	PHY_16_Rsvd = 0x0200, PHY_16_RMIIEnable = 0x0100,
+	PHY_16_Force100LNK = 0x0080,
+	PHY_16_APDLED_CTL = 0x0040, PHY_16_COLLED_CTL = 0x0020,
+	PHY_16_RPDCTR_EN = 0x0010,
+	PHY_16_ResetStMch = 0x0008, PHY_16_PreamSupr = 0x0004,
+	PHY_16_Sleepmode = 0x0002,
+	PHY_16_RemoteLoopOut = 0x0001,
+};

+ 6 - 1
drivers/serial/serial.c

@@ -144,8 +144,13 @@ static int calc_divisor (NS16550_t port)
 #else
 #else
 #define MODE_X_DIV 16
 #define MODE_X_DIV 16
 #endif
 #endif
-	return (CFG_NS16550_CLK / MODE_X_DIV / gd->baudrate);
 
 
+	/* Compute divisor value. Normally, we should simply return:
+	 *   CFG_NS16550_CLK) / MODE_X_DIV / gd->baudrate
+	 * but we need to round that value by adding 0.5 or 8/16.
+	 * Rounding is especially important at high baud rates.
+	 */
+	return (((16 * CFG_NS16550_CLK) / MODE_X_DIV / gd->baudrate) + 8) / 16;
 }
 }
 
 
 #if !defined(CONFIG_SERIAL_MULTI)
 #if !defined(CONFIG_SERIAL_MULTI)

+ 0 - 1
include/asm-sparc/io.h

@@ -70,7 +70,6 @@
  * that can be used to access the memory range with the caching
  * that can be used to access the memory range with the caching
  * properties specified by "flags".
  * properties specified by "flags".
  */
  */
-typedef unsigned long phys_addr_t;
 
 
 #define MAP_NOCACHE	(0)
 #define MAP_NOCACHE	(0)
 #define MAP_WRCOMBINE	(0)
 #define MAP_WRCOMBINE	(0)

+ 3 - 0
include/asm-sparc/types.h

@@ -65,6 +65,9 @@ typedef unsigned long long u64;
 /* DMA addresses are 32-bits wide */
 /* DMA addresses are 32-bits wide */
 typedef u32 dma_addr_t;
 typedef u32 dma_addr_t;
 
 
+typedef unsigned long phys_addr_t;
+typedef unsigned long phys_size_t;
+
 #endif				/* __KERNEL__ */
 #endif				/* __KERNEL__ */
 #endif				/* __ASSEMBLY__ */
 #endif				/* __ASSEMBLY__ */
 
 

+ 10 - 5
include/common.h

@@ -607,8 +607,10 @@ ulong	simple_strtoul(const char *cp,char **endp,unsigned int base);
 unsigned long long	simple_strtoull(const char *cp,char **endp,unsigned int base);
 unsigned long long	simple_strtoull(const char *cp,char **endp,unsigned int base);
 #endif
 #endif
 long	simple_strtol(const char *cp,char **endp,unsigned int base);
 long	simple_strtol(const char *cp,char **endp,unsigned int base);
-void	panic(const char *fmt, ...);
-int	sprintf(char * buf, const char *fmt, ...);
+void	panic(const char *fmt, ...)
+		__attribute__ ((format (__printf__, 1, 2)));
+int	sprintf(char * buf, const char *fmt, ...)
+		__attribute__ ((format (__printf__, 2, 3)));
 int	vsprintf(char *buf, const char *fmt, va_list args);
 int	vsprintf(char *buf, const char *fmt, va_list args);
 
 
 /* lib_generic/crc32.c */
 /* lib_generic/crc32.c */
@@ -630,7 +632,8 @@ int	disable_ctrlc (int);	/* 1 to disable, 0 to enable Control-C detect */
  */
  */
 
 
 /* serial stuff */
 /* serial stuff */
-void	serial_printf (const char *fmt, ...);
+void	serial_printf (const char *fmt, ...)
+		__attribute__ ((format (__printf__, 1, 2)));
 
 
 /* stdin */
 /* stdin */
 int	getc(void);
 int	getc(void);
@@ -639,7 +642,8 @@ int	tstc(void);
 /* stdout */
 /* stdout */
 void	putc(const char c);
 void	putc(const char c);
 void	puts(const char *s);
 void	puts(const char *s);
-void	printf(const char *fmt, ...);
+void	printf(const char *fmt, ...)
+		__attribute__ ((format (__printf__, 1, 2)));
 void	vprintf(const char *fmt, va_list args);
 void	vprintf(const char *fmt, va_list args);
 
 
 /* stderr */
 /* stderr */
@@ -656,7 +660,8 @@ void	vprintf(const char *fmt, va_list args);
 #define stderr		2
 #define stderr		2
 #define MAX_FILES	3
 #define MAX_FILES	3
 
 
-void	fprintf(int file, const char *fmt, ...);
+void	fprintf(int file, const char *fmt, ...)
+		__attribute__ ((format (__printf__, 2, 3)));
 void	fputs(int file, const char *s);
 void	fputs(int file, const char *s);
 void	fputc(int file, const char c);
 void	fputc(int file, const char c);
 int	ftstc(int file);
 int	ftstc(int file);

+ 7 - 0
include/configs/MPC8260ADS.h

@@ -197,6 +197,13 @@
 
 
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_BAUDRATE		115200
 
 
+#define CONFIG_OF_LIBFDT	1
+#define CONFIG_OF_BOARD_SETUP	1
+#if defined(CONFIG_OF_LIBFDT)
+#define OF_CPU			"cpu@0"
+#define OF_TBCLK		(bd->bi_busfreq / 4)
+#endif
+
 /*
 /*
  * BOOTP options
  * BOOTP options
  */
  */

+ 0 - 4
include/configs/MigoR.h

@@ -45,10 +45,6 @@
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_BOOTDELAY	3
 #define CONFIG_BOOTDELAY	3
 #define CONFIG_BOOTARGS		"console=ttySC0,115200 root=1f01"
 #define CONFIG_BOOTARGS		"console=ttySC0,115200 root=1f01"
-#define CONFIG_NETMASK		255.255.255.0
-#define CONFIG_IPADDR		192.168.10.100
-#define CONFIG_SERVERIP		192.168.10.77
-#define CONFIG_GATEWAYIP	192.168.10.77
 
 
 #define CONFIG_VERSION_VARIABLE
 #define CONFIG_VERSION_VARIABLE
 #undef  CONFIG_SHOW_BOOT_PROGRESS
 #undef  CONFIG_SHOW_BOOT_PROGRESS

+ 1 - 0
include/configs/atngw100.h

@@ -128,6 +128,7 @@
 #define CFG_NR_PIOS			5
 #define CFG_NR_PIOS			5
 #define CFG_HSDRAMC			1
 #define CFG_HSDRAMC			1
 #define CONFIG_MMC			1
 #define CONFIG_MMC			1
+#define CONFIG_ATMEL_MCI		1
 #define CONFIG_ATMEL_SPI		1
 #define CONFIG_ATMEL_SPI		1
 
 
 #define CONFIG_SPI_FLASH		1
 #define CONFIG_SPI_FLASH		1

+ 1 - 0
include/configs/atstk1002.h

@@ -153,6 +153,7 @@
 #define CFG_NR_PIOS			5
 #define CFG_NR_PIOS			5
 #define CFG_HSDRAMC			1
 #define CFG_HSDRAMC			1
 #define CONFIG_MMC			1
 #define CONFIG_MMC			1
+#define CONFIG_ATMEL_MCI		1
 
 
 #define CFG_DCACHE_LINESZ		32
 #define CFG_DCACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32

+ 1 - 0
include/configs/atstk1003.h

@@ -136,6 +136,7 @@
 #define CONFIG_PIO2			1
 #define CONFIG_PIO2			1
 #define CFG_HSDRAMC			1
 #define CFG_HSDRAMC			1
 #define CONFIG_MMC			1
 #define CONFIG_MMC			1
+#define CONFIG_ATMEL_MCI		1
 
 
 #define CFG_DCACHE_LINESZ		32
 #define CFG_DCACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32

+ 1 - 0
include/configs/atstk1004.h

@@ -136,6 +136,7 @@
 #define CONFIG_PIO2			1
 #define CONFIG_PIO2			1
 #define CFG_HSDRAMC			1
 #define CFG_HSDRAMC			1
 #define CONFIG_MMC			1
 #define CONFIG_MMC			1
+#define CONFIG_ATMEL_MCI		1
 
 
 #define CFG_DCACHE_LINESZ		32
 #define CFG_DCACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32

+ 1 - 0
include/configs/atstk1006.h

@@ -153,6 +153,7 @@
 #define CFG_NR_PIOS			5
 #define CFG_NR_PIOS			5
 #define CFG_HSDRAMC			1
 #define CFG_HSDRAMC			1
 #define CONFIG_MMC			1
 #define CONFIG_MMC			1
+#define CONFIG_ATMEL_MCI		1
 
 
 #define CFG_DCACHE_LINESZ		32
 #define CFG_DCACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32
 #define CFG_ICACHE_LINESZ		32

+ 21 - 48
include/configs/davinci_sffsdr.h

@@ -1,6 +1,9 @@
 /*
 /*
  * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
  * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
  *
  *
+ * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
+ * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
+ *
  * This program is free software; you can redistribute it and/or
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation; either version 2 of
  * published by the Free Software Foundation; either version 2 of
@@ -21,30 +24,24 @@
 #define __CONFIG_H
 #define __CONFIG_H
 #include <asm/sizes.h>
 #include <asm/sizes.h>
 
 
-/*=======*/
 /* Board */
 /* Board */
-/*=======*/
 #define SFFSDR
 #define SFFSDR
 #define CFG_NAND_LARGEPAGE
 #define CFG_NAND_LARGEPAGE
 #define CFG_USE_NAND
 #define CFG_USE_NAND
-/*===================*/
+#define CFG_USE_DSPLINK		/* This is to prevent U-Boot from
+				 * powering ON the DSP. */
 /* SoC Configuration */
 /* SoC Configuration */
-/*===================*/
 #define CONFIG_ARM926EJS			/* arm926ejs CPU core */
 #define CONFIG_ARM926EJS			/* arm926ejs CPU core */
 #define CONFIG_SYS_CLK_FREQ	297000000	/* Arm Clock frequency */
 #define CONFIG_SYS_CLK_FREQ	297000000	/* Arm Clock frequency */
 #define CFG_TIMERBASE		0x01c21400	/* use timer 0 */
 #define CFG_TIMERBASE		0x01c21400	/* use timer 0 */
 #define CFG_HZ_CLOCK		27000000	/* Timer Input clock freq */
 #define CFG_HZ_CLOCK		27000000	/* Timer Input clock freq */
 #define CFG_HZ			1000
 #define CFG_HZ			1000
-/*==================================================*/
-/* EEPROM definitions for Atmel 24LC64 EEPROM chip  */
-/*==================================================*/
+/* EEPROM definitions for Atmel 24LC64 EEPROM chip */
 #define CFG_I2C_EEPROM_ADDR_LEN		2
 #define CFG_I2C_EEPROM_ADDR_LEN		2
 #define CFG_I2C_EEPROM_ADDR		0x50
 #define CFG_I2C_EEPROM_ADDR		0x50
 #define CFG_EEPROM_PAGE_WRITE_BITS	5
 #define CFG_EEPROM_PAGE_WRITE_BITS	5
 #define CFG_EEPROM_PAGE_WRITE_DELAY_MS	20
 #define CFG_EEPROM_PAGE_WRITE_DELAY_MS	20
-/*=============*/
 /* Memory Info */
 /* Memory Info */
-/*=============*/
 #define CFG_MALLOC_LEN		(0x10000 + 256*1024)	/* malloc() len */
 #define CFG_MALLOC_LEN		(0x10000 + 256*1024)	/* malloc() len */
 #define CFG_GBL_DATA_SIZE	128		/* reserved for initial data */
 #define CFG_GBL_DATA_SIZE	128		/* reserved for initial data */
 #define CFG_MEMTEST_START	0x80000000	/* memtest start address */
 #define CFG_MEMTEST_START	0x80000000	/* memtest start address */
@@ -54,9 +51,7 @@
 #define PHYS_SDRAM_1		0x80000000	/* DDR Start */
 #define PHYS_SDRAM_1		0x80000000	/* DDR Start */
 #define PHYS_SDRAM_1_SIZE	0x08000000	/* DDR size 128MB */
 #define PHYS_SDRAM_1_SIZE	0x08000000	/* DDR size 128MB */
 #define DDR_4BANKS				/* 4-bank DDR2 (128MB) */
 #define DDR_4BANKS				/* 4-bank DDR2 (128MB) */
-/*====================*/
 /* Serial Driver info */
 /* Serial Driver info */
-/*====================*/
 #define CFG_NS16550
 #define CFG_NS16550
 #define CFG_NS16550_SERIAL
 #define CFG_NS16550_SERIAL
 #define CFG_NS16550_REG_SIZE	4		/* NS16550 register size */
 #define CFG_NS16550_REG_SIZE	4		/* NS16550 register size */
@@ -65,16 +60,12 @@
 #define CONFIG_CONS_INDEX	1		/* use UART0 for console */
 #define CONFIG_CONS_INDEX	1		/* use UART0 for console */
 #define CONFIG_BAUDRATE		115200		/* Default baud rate */
 #define CONFIG_BAUDRATE		115200		/* Default baud rate */
 #define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
 #define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
-/*===================*/
 /* I2C Configuration */
 /* I2C Configuration */
-/*===================*/
 #define CONFIG_HARD_I2C
 #define CONFIG_HARD_I2C
 #define CONFIG_DRIVER_DAVINCI_I2C
 #define CONFIG_DRIVER_DAVINCI_I2C
 #define CFG_I2C_SPEED		80000	/* 100Kbps won't work, silicon bug */
 #define CFG_I2C_SPEED		80000	/* 100Kbps won't work, silicon bug */
 #define CFG_I2C_SLAVE		10	/* Bogus, master-only in U-Boot */
 #define CFG_I2C_SLAVE		10	/* Bogus, master-only in U-Boot */
-/*==================================*/
 /* Network & Ethernet Configuration */
 /* Network & Ethernet Configuration */
-/*==================================*/
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
 #define CONFIG_MII
 #define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DEFAULT
@@ -83,9 +74,7 @@
 #define CONFIG_BOOTP_SEND_HOSTNAME
 #define CONFIG_BOOTP_SEND_HOSTNAME
 #define CONFIG_NET_RETRY_COUNT	10
 #define CONFIG_NET_RETRY_COUNT	10
 #define CONFIG_OVERWRITE_ETHADDR_ONCE
 #define CONFIG_OVERWRITE_ETHADDR_ONCE
-/*=====================*/
 /* Flash & Environment */
 /* Flash & Environment */
-/*=====================*/
 #undef CFG_ENV_IS_IN_FLASH
 #undef CFG_ENV_IS_IN_FLASH
 #define CFG_NO_FLASH
 #define CFG_NO_FLASH
 #define CFG_ENV_IS_IN_NAND		/* U-Boot env in NAND Flash  */
 #define CFG_ENV_IS_IN_NAND		/* U-Boot env in NAND Flash  */
@@ -98,28 +87,19 @@
 #define CFG_MAX_NAND_DEVICE	1	/* Max number of NAND devices */
 #define CFG_MAX_NAND_DEVICE	1	/* Max number of NAND devices */
 #define NAND_MAX_CHIPS		1
 #define NAND_MAX_CHIPS		1
 #define CFG_ENV_OFFSET		0x0	/* Block 0--not used by bootcode */
 #define CFG_ENV_OFFSET		0x0	/* Block 0--not used by bootcode */
-/*=====================*/
-/* Board related stuff */
-/*=====================*/
-/*==========================================*/
-/* I2C switch definitions for PCA9543 chip  */
-/* on Lyrtech SFF SDR board.                */
-/* This chip has a single register.         */
-/*==========================================*/
+/* I2C switch definitions for PCA9543 chip */
 #define CFG_I2C_PCA9543_ADDR		0x70
 #define CFG_I2C_PCA9543_ADDR		0x70
-#define CFG_I2C_PCA9543_ADDR_LEN	0
+#define CFG_I2C_PCA9543_ADDR_LEN	0	/* Single register. */
 #define CFG_I2C_PCA9543_ENABLE_CH0	0x01	/* Enable channel 0. */
 #define CFG_I2C_PCA9543_ENABLE_CH0	0x01	/* Enable channel 0. */
-/*==============================*/
 /* U-Boot general configuration */
 /* U-Boot general configuration */
-/*==============================*/
-#undef CONFIG_USE_IRQ                  /* No IRQ/FIQ in U-Boot */
+#undef CONFIG_USE_IRQ				/* No IRQ/FIQ in U-Boot */
 #define CONFIG_MISC_INIT_R
 #define CONFIG_MISC_INIT_R
-#undef CONFIG_BOOTDELAY
+#define CONFIG_BOOTDELAY	5		/* Autoboot after 5 seconds. */
 #define CONFIG_BOOTFILE		"uImage"	/* Boot file name */
 #define CONFIG_BOOTFILE		"uImage"	/* Boot file name */
 #define CFG_PROMPT		"U-Boot > "	/* Monitor Command Prompt */
 #define CFG_PROMPT		"U-Boot > "	/* Monitor Command Prompt */
 #define CFG_CBSIZE		1024		/* Console I/O Buffer Size  */
 #define CFG_CBSIZE		1024		/* Console I/O Buffer Size  */
-/* Print buffer size */
-#define CFG_PBSIZE		(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
+#define CFG_PBSIZE							\
+		(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)	/* Print buffer size */
 #define CFG_MAXARGS		16		/* max number of command args */
 #define CFG_MAXARGS		16		/* max number of command args */
 #define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size */
 #define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size */
 #define CFG_LOAD_ADDR		0x80700000	/* Default Linux kernel
 #define CFG_LOAD_ADDR		0x80700000	/* Default Linux kernel
@@ -133,25 +113,20 @@
 #define CFG_LONGHELP
 #define CFG_LONGHELP
 #define CONFIG_CRC32_VERIFY
 #define CONFIG_CRC32_VERIFY
 #define CONFIG_MX_CYCLIC
 #define CONFIG_MX_CYCLIC
-/*
- * Define this to load an Integrity kernel.
- *
-#define CONFIG_CMD_ELF
- */
-
-/*===================*/
 /* Linux Information */
 /* Linux Information */
-/*===================*/
 #define LINUX_BOOT_PARAM_ADDR	0x80000100
 #define LINUX_BOOT_PARAM_ADDR	0x80000100
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS							\
-	"mem=56M console=ttyS0,115200n8 root=/dev/hda1 rw noinitrd ip=dhcp"
-#define CONFIG_BOOTCOMMAND	"setenv setboot setenv bootargs \\$(bootargs) video=dm64xxfb:output=\\$(videostd);run setboot"
-
-/*=================*/
+#define CONFIG_BOOTARGS			\
+	"mem=56M "			\
+	"console=ttyS0,115200n8 "	\
+	"root=/dev/nfs rw noinitrd ip=dhcp "	\
+	"nfsroot=${serverip}:/nfsroot/sffsdr "	\
+	"eth0=${ethaddr}"
+#define CONFIG_BOOTCOMMAND	\
+	"nand read 87A00000 100000 300000;"	\
+	"bootelf 87A00000"
 /* U-Boot commands */
 /* U-Boot commands */
-/*=================*/
 #include <config_cmd_default.h>
 #include <config_cmd_default.h>
 #define CONFIG_CMD_ASKENV
 #define CONFIG_CMD_ASKENV
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_DHCP
@@ -167,9 +142,7 @@
 #undef CONFIG_CMD_SETGETDCR
 #undef CONFIG_CMD_SETGETDCR
 #undef CONFIG_CMD_FLASH
 #undef CONFIG_CMD_FLASH
 #undef CONFIG_CMD_IMLS
 #undef CONFIG_CMD_IMLS
-/*=======================*/
 /* KGDB support (if any) */
 /* KGDB support (if any) */
-/*=======================*/
 #ifdef CONFIG_CMD_KGDB
 #ifdef CONFIG_CMD_KGDB
 #define CONFIG_KGDB_BAUDRATE	115200	/* speed to run kgdb serial port */
 #define CONFIG_KGDB_BAUDRATE	115200	/* speed to run kgdb serial port */
 #define CONFIG_KGDB_SER_INDEX	1	/* which serial port to use */
 #define CONFIG_KGDB_SER_INDEX	1	/* which serial port to use */

+ 0 - 4
include/configs/ms7722se.h

@@ -40,10 +40,6 @@
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_BOOTDELAY	3
 #define CONFIG_BOOTDELAY	3
 #define CONFIG_BOOTARGS		"console=ttySC0,115200 root=1f01"
 #define CONFIG_BOOTARGS		"console=ttySC0,115200 root=1f01"
-#define CONFIG_NETMASK          255.255.255.0
-#define CONFIG_IPADDR		192.168.0.22
-#define CONFIG_SERVERIP		192.168.0.1
-#define CONFIG_GATEWAYIP	192.168.0.1
 
 
 #define CONFIG_VERSION_VARIABLE
 #define CONFIG_VERSION_VARIABLE
 #undef  CONFIG_SHOW_BOOT_PROGRESS
 #undef  CONFIG_SHOW_BOOT_PROGRESS

+ 9 - 33
include/configs/r2dplus.h

@@ -35,12 +35,6 @@
 #define CONFIG_BOOTARGS		"console=ttySC0,115200"
 #define CONFIG_BOOTARGS		"console=ttySC0,115200"
 #define CONFIG_ENV_OVERWRITE	1
 #define CONFIG_ENV_OVERWRITE	1
 
 
-/* Network setting */
-#define CONFIG_NETMASK		255.0.0.0
-#define CONFIG_IPADDR		10.0.192.51
-#define CONFIG_SERVERIP		10.0.0.1
-#define CONFIG_GATEWAYIP	10.0.0.1
-
 /* SDRAM */
 /* SDRAM */
 #define CFG_SDRAM_BASE		(0x8C000000)
 #define CFG_SDRAM_BASE		(0x8C000000)
 #define CFG_SDRAM_SIZE		(0x04000000)
 #define CFG_SDRAM_SIZE		(0x04000000)
@@ -60,45 +54,27 @@
 #define CFG_LOAD_ADDR		(CFG_SDRAM_BASE + 32 * 1024 * 1024)
 #define CFG_LOAD_ADDR		(CFG_SDRAM_BASE + 32 * 1024 * 1024)
 /* Address of u-boot image in Flash */
 /* Address of u-boot image in Flash */
 #define CFG_MONITOR_BASE	(CFG_FLASH_BASE)
 #define CFG_MONITOR_BASE	(CFG_FLASH_BASE)
-#define CFG_MONITOR_LEN		(128 * 1024)
+#define CFG_MONITOR_LEN		(256 * 1024)
 /* Size of DRAM reserved for malloc() use */
 /* Size of DRAM reserved for malloc() use */
-#define CFG_MALLOC_LEN		(256 * 1024)
+#define CFG_MALLOC_LEN		(1024 * 1024)
 /* size in bytes reserved for initial data */
 /* size in bytes reserved for initial data */
 #define CFG_GBL_DATA_SIZE	(256)
 #define CFG_GBL_DATA_SIZE	(256)
 #define CFG_BOOTMAPSZ		(8 * 1024 * 1024)
 #define CFG_BOOTMAPSZ		(8 * 1024 * 1024)
 
 
 /*
 /*
- * NOR Flash
+ * NOR Flash ( Spantion S29GL256P )
  */
  */
 #define CFG_FLASH_CFI
 #define CFG_FLASH_CFI
 #define CFG_FLASH_CFI_DRIVER
 #define CFG_FLASH_CFI_DRIVER
-
-#if defined(CONFIG_R2DPLUS_OLD)
-#define CFG_FLASH_BASE		(0xA0000000)
-#define CFG_MAX_FLASH_BANKS (1)	/* Max number of
-				 * Flash memory banks
-				 */
-#define CFG_MAX_FLASH_SECT  142
-#define CFG_FLASH_BANKS_LIST    { CFG_FLASH_BASE }
-
-#else /* CONFIG_R2DPLUS_OLD */
-
 #define CFG_FLASH_BASE		(0xA0000000)
 #define CFG_FLASH_BASE		(0xA0000000)
-#define CFG_FLASH_CFI_WIDTH	0x04	/* 32bit */
-#define CFG_MAX_FLASH_BANKS	(2)
-#define CFG_MAX_FLASH_SECT	270
-#define CFG_FLASH_BANKS_LIST    { CFG_FLASH_BASE,\
-			CFG_FLASH_BASE + 0x100000,\
-			CFG_FLASH_BASE + 0x400000,\
-			CFG_FLASH_BASE + 0x700000, }
-#endif /* CONFIG_R2DPLUS_OLD */
+#define CFG_MAX_FLASH_BANKS (1)
+#define CFG_MAX_FLASH_SECT  256
+#define CFG_FLASH_BANKS_LIST	{ CFG_FLASH_BASE }
 
 
 #define CFG_ENV_IS_IN_FLASH
 #define CFG_ENV_IS_IN_FLASH
-#define CFG_ENV_SECT_SIZE	0x20000
-#define CFG_ENV_SIZE		(CFG_ENV_SECT_SIZE)
-#define CFG_ENV_ADDR		(CFG_MONITOR_BASE + CFG_MONITOR_LEN)
-#define CFG_FLASH_ERASE_TOUT	120000
-#define CFG_FLASH_WRITE_TOUT	500
+#define CFG_ENV_SECT_SIZE	0x40000
+#define CFG_ENV_SIZE        (CFG_ENV_SECT_SIZE)
+#define CFG_ENV_ADDR        (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
 
 
 /*
 /*
  * SuperH Clock setting
  * SuperH Clock setting

+ 23 - 18
include/configs/r7780mp.h

@@ -1,7 +1,7 @@
 /*
 /*
  * Configuation settings for the Renesas R7780MP board
  * Configuation settings for the Renesas R7780MP board
  *
  *
- * Copyright (C) 2007 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+ * Copyright (C) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
  * Copyright (C) 2008 Yusuke Goda <goda.yusuke@renesas.com>
  * Copyright (C) 2008 Yusuke Goda <goda.yusuke@renesas.com>
  *
  *
  * See file CREDITS for list of people who contributed to this
  * See file CREDITS for list of people who contributed to this
@@ -31,7 +31,8 @@
 #define CONFIG_SH4A		1
 #define CONFIG_SH4A		1
 #define CONFIG_CPU_SH7780	1
 #define CONFIG_CPU_SH7780	1
 #define CONFIG_R7780MP		1
 #define CONFIG_R7780MP		1
-#define __LITTLE_ENDIAN 1
+#define CFG_R7780MP_OLD_FLASH	1
+#define __LITTLE_ENDIAN__ 1
 
 
 /*
 /*
  * Command line configuration.
  * Command line configuration.
@@ -59,12 +60,6 @@
 /* check for keypress on bootdelay==0 */
 /* check for keypress on bootdelay==0 */
 /*#define CONFIG_ZERO_BOOTDELAY_CHECK*/
 /*#define CONFIG_ZERO_BOOTDELAY_CHECK*/
 
 
-/* Network setting */
-#define CONFIG_NETMASK		255.0.0.0
-#define CONFIG_IPADDR		10.0.192.82
-#define CONFIG_SERVERIP		10.0.0.1
-#define CONFIG_GATEWAYIP	10.0.0.1
-
 #define CFG_SDRAM_BASE		(0x08000000)
 #define CFG_SDRAM_BASE		(0x08000000)
 #define CFG_SDRAM_SIZE		(128 * 1024 * 1024)
 #define CFG_SDRAM_SIZE		(128 * 1024 * 1024)
 
 
@@ -80,22 +75,30 @@
 #define CFG_MEMTEST_START	(CFG_SDRAM_BASE)
 #define CFG_MEMTEST_START	(CFG_SDRAM_BASE)
 #define CFG_MEMTEST_END		(TEXT_BASE - 0x100000)
 #define CFG_MEMTEST_END		(TEXT_BASE - 0x100000)
 
 
-/* NOR Flash (S29PL127J60TFI130) */
+/* Flash board support */
 #define CFG_FLASH_BASE		(0xA0000000)
 #define CFG_FLASH_BASE		(0xA0000000)
-#define CFG_FLASH_CFI_WIDTH FLASH_CFI_32BIT
-#define CFG_MAX_FLASH_BANKS (2)
-#define CFG_MAX_FLASH_SECT  270
-#define CFG_FLASH_BANKS_LIST    { CFG_FLASH_BASE,\
+#ifdef CFG_R7780MP_OLD_FLASH
+/* NOR Flash (S29PL127J60TFI130) */
+# define CFG_FLASH_CFI_WIDTH	FLASH_CFI_32BIT
+# define CFG_MAX_FLASH_BANKS	(2)
+# define CFG_MAX_FLASH_SECT	270
+# define CFG_FLASH_BANKS_LIST	{ CFG_FLASH_BASE,\
 				CFG_FLASH_BASE + 0x100000,\
 				CFG_FLASH_BASE + 0x100000,\
 				CFG_FLASH_BASE + 0x400000,\
 				CFG_FLASH_BASE + 0x400000,\
 				CFG_FLASH_BASE + 0x700000, }
 				CFG_FLASH_BASE + 0x700000, }
+#else /* CFG_R7780MP_OLD_FLASH */
+/* NOR Flash (Spantion S29GL256P) */
+# define CFG_MAX_FLASH_BANKS	(1)
+# define CFG_MAX_FLASH_SECT		256
+# define CFG_FLASH_BANKS_LIST	{ CFG_FLASH_BASE }
+#endif /* CFG_R7780MP_OLD_FLASH */
 
 
 #define CFG_LOAD_ADDR		(CFG_SDRAM_BASE + 4 * 1024 * 1024)
 #define CFG_LOAD_ADDR		(CFG_SDRAM_BASE + 4 * 1024 * 1024)
 /* Address of u-boot image in Flash */
 /* Address of u-boot image in Flash */
 #define CFG_MONITOR_BASE	(CFG_FLASH_BASE)
 #define CFG_MONITOR_BASE	(CFG_FLASH_BASE)
-#define CFG_MONITOR_LEN		(112 * 1024)
+#define CFG_MONITOR_LEN		(256 * 1024)
 /* Size of DRAM reserved for malloc() use */
 /* Size of DRAM reserved for malloc() use */
-#define CFG_MALLOC_LEN		(256 * 1024)
+#define CFG_MALLOC_LEN		(1204 * 1024)
 
 
 /* size in bytes reserved for initial data */
 /* size in bytes reserved for initial data */
 #define CFG_GBL_DATA_SIZE	(256)
 #define CFG_GBL_DATA_SIZE	(256)
@@ -110,7 +113,7 @@
 #define CFG_FLASH_EMPTY_INFO
 #define CFG_FLASH_EMPTY_INFO
 
 
 #define CFG_ENV_IS_IN_FLASH
 #define CFG_ENV_IS_IN_FLASH
-#define CFG_ENV_SECT_SIZE	(16 * 1024)
+#define CFG_ENV_SECT_SIZE	(256 * 1024)
 #define CFG_ENV_SIZE		(CFG_ENV_SECT_SIZE)
 #define CFG_ENV_SIZE		(CFG_ENV_SECT_SIZE)
 #define CFG_ENV_ADDR		(CFG_MONITOR_BASE + CFG_MONITOR_LEN)
 #define CFG_ENV_ADDR		(CFG_MONITOR_BASE + CFG_MONITOR_LEN)
 #define CFG_FLASH_ERASE_TOUT	120000
 #define CFG_FLASH_ERASE_TOUT	120000
@@ -141,8 +144,10 @@
 #endif /* CONFIG_CMD_PCI */
 #endif /* CONFIG_CMD_PCI */
 
 
 #if defined(CONFIG_CMD_NET)
 #if defined(CONFIG_CMD_NET)
-/* #define CONFIG_NET_MULTI
-   #define CONFIG_RTL8169 */
+/*
+#define CONFIG_NET_MULTI
+#define CONFIG_RTL8169
+*/
 /* AX88696L Support(NE2000 base chip) */
 /* AX88696L Support(NE2000 base chip) */
 #define CONFIG_DRIVER_NE2000
 #define CONFIG_DRIVER_NE2000
 #define CONFIG_DRIVER_AX88796L
 #define CONFIG_DRIVER_AX88796L

+ 0 - 10
include/configs/sh7763rdp.h

@@ -38,11 +38,7 @@
 #define CONFIG_CMD_SDRAM
 #define CONFIG_CMD_SDRAM
 #define CONFIG_CMD_FLASH
 #define CONFIG_CMD_FLASH
 #define CONFIG_CMD_MEMORY
 #define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_PING
 #define CONFIG_CMD_ENV
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_JFFS2
 
 
 #define CONFIG_BOOTDELAY        -1
 #define CONFIG_BOOTDELAY        -1
 #define CONFIG_BOOTARGS         "console=ttySC2,115200 root=1f01"
 #define CONFIG_BOOTARGS         "console=ttySC2,115200 root=1f01"
@@ -66,12 +62,6 @@
 #define CFG_BAUDRATE_TABLE	{ 115200 }	/* List of legal baudrate
 #define CFG_BAUDRATE_TABLE	{ 115200 }	/* List of legal baudrate
 												settings for this board */
 												settings for this board */
 
 
-/* Ethernet */
-#define CONFIG_SH_ETHER 1
-#define CONFIG_SH_ETHER_USE_PORT (1)
-#define CONFIG_SH_ETHER_PHY_ADDR (0x01)
-#define CFG_RX_ETH_BUFFER	(8)
-
 /* SDRAM */
 /* SDRAM */
 #define CFG_SDRAM_BASE		(0x8C000000)
 #define CFG_SDRAM_BASE		(0x8C000000)
 #define CFG_SDRAM_SIZE		(64 * 1024 * 1024)
 #define CFG_SDRAM_SIZE		(64 * 1024 * 1024)

+ 5 - 2
include/environment.h

@@ -107,8 +107,8 @@ typedef	struct environment_s {
 	unsigned char	data[ENV_SIZE]; /* Environment data		*/
 	unsigned char	data[ENV_SIZE]; /* Environment data		*/
 } env_t;
 } env_t;
 
 
-/* Pointer to function that returns a character from the environment */
-extern unsigned char (*env_get_char)(int);
+/* Function that returns a character from the environment */
+unsigned char env_get_char (int);
 
 
 /* Function that returns a pointer to a value from the environment */
 /* Function that returns a pointer to a value from the environment */
 unsigned char *env_get_addr(int);
 unsigned char *env_get_addr(int);
@@ -117,4 +117,7 @@ unsigned char env_get_char_memory (int index);
 /* Function that updates CRC of the enironment */
 /* Function that updates CRC of the enironment */
 void env_crc_update (void);
 void env_crc_update (void);
 
 
+/* [re]set to the default environment */
+void set_default_env(void);
+
 #endif	/* _ENVIRONMENT_H_ */
 #endif	/* _ENVIRONMENT_H_ */

+ 2 - 2
include/linux/mtd/mtd.h

@@ -201,13 +201,13 @@ static inline void mtd_erase_callback(struct erase_info *instr)
 #define MTD_DEBUG_LEVEL3	(3)	/* Noisy   */
 #define MTD_DEBUG_LEVEL3	(3)	/* Noisy   */
 
 
 #ifdef CONFIG_MTD_DEBUG
 #ifdef CONFIG_MTD_DEBUG
-#define DEBUG(n, args...)				\
+#define MTDDEBUG(n, args...)				\
 	do {						\
 	do {						\
 		if (n <= CONFIG_MTD_DEBUG_VERBOSE)	\
 		if (n <= CONFIG_MTD_DEBUG_VERBOSE)	\
 			printk(KERN_INFO args);		\
 			printk(KERN_INFO args);		\
 	} while(0)
 	} while(0)
 #else /* CONFIG_MTD_DEBUG */
 #else /* CONFIG_MTD_DEBUG */
-#define DEBUG(n, args...) do { } while(0)
+#define MTDDEBUG(n, args...) do { } while(0)
 
 
 #endif /* CONFIG_MTD_DEBUG */
 #endif /* CONFIG_MTD_DEBUG */
 
 

+ 1 - 1
include/lmb.h

@@ -43,7 +43,7 @@ extern phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align
 extern phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
 extern phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
 			      phys_addr_t max_addr);
 			      phys_addr_t max_addr);
 extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
 extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
-extern long lmb_free(struct lmb *lmb, u64 base, u64 size);
+extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
 
 
 extern void lmb_dump_all(struct lmb *lmb);
 extern void lmb_dump_all(struct lmb *lmb);
 
 

+ 0 - 100
include/lxt971a.h

@@ -30,15 +30,6 @@
 #define __LXT971A_H__
 #define __LXT971A_H__
 
 
 /* PHY definitions (LXT971A) [2] */
 /* PHY definitions (LXT971A) [2] */
-#define PHY_COMMON_CTRL			(0x00)
-#define PHY_COMMON_STAT			(0x01)
-#define PHY_COMMON_ID1			(0x02)
-#define PHY_COMMON_ID2			(0x03)
-#define PHY_COMMON_AUTO_ADV		(0x04)
-#define PHY_COMMON_AUTO_LNKB		(0x05)
-#define PHY_COMMON_AUTO_EXP		(0x06)
-#define PHY_COMMON_AUTO_NEXT		(0x07)
-#define PHY_COMMON_AUTO_LNKN		(0x08)
 #define PHY_LXT971_PORT_CFG		(0x10)
 #define PHY_LXT971_PORT_CFG		(0x10)
 #define PHY_LXT971_STAT2		(0x11)
 #define PHY_LXT971_STAT2		(0x11)
 #define PHY_LXT971_INT_ENABLE		(0x12)
 #define PHY_LXT971_INT_ENABLE		(0x12)
@@ -47,97 +38,6 @@
 #define PHY_LXT971_DIG_CFG		(0x1A)
 #define PHY_LXT971_DIG_CFG		(0x1A)
 #define PHY_LXT971_TX_CTRL		(0x1E)
 #define PHY_LXT971_TX_CTRL		(0x1E)
 
 
-/* CTRL PHY Control Register Bit Fields */
-#define PHY_COMMON_CTRL_RESET		(0x8000)
-#define PHY_COMMON_CTRL_LOOPBACK	(0x4000)
-#define PHY_COMMON_CTRL_SPD_MA		(0x2040)
-#define PHY_COMMON_CTRL_SPD_10		(0x0000)
-#define PHY_COMMON_CTRL_SPD_100		(0x2000)
-#define PHY_COMMON_CTRL_SPD_1000	(0x0040)
-#define PHY_COMMON_CTRL_SPD_RES		(0x2040)
-#define PHY_COMMON_CTRL_AUTO_NEG	(0x1000)
-#define PHY_COMMON_CTRL_POWER_DN	(0x0800)
-#define PHY_COMMON_CTRL_ISOLATE		(0x0400)
-#define PHY_COMMON_CTRL_RES_AUTO	(0x0200)
-#define PHY_COMMON_CTRL_DUPLEX		(0x0100)
-#define PHY_COMMON_CTRL_COL_TEST	(0x0080)
-#define PHY_COMMON_CTRL_RES1		(0x003F)
-
-/* STAT Status Register Bit Fields */
-#define PHY_COMMON_STAT_100BT4		(0x8000)
-#define PHY_COMMON_STAT_100BXFD		(0x4000)
-#define PHY_COMMON_STAT_100BXHD		(0x2000)
-#define PHY_COMMON_STAT_10BTFD		(0x1000)
-#define PHY_COMMON_STAT_10BTHD		(0x0800)
-#define PHY_COMMON_STAT_100BT2FD	(0x0400)
-#define PHY_COMMON_STAT_100BT2HD	(0x0200)
-#define PHY_COMMON_STAT_EXT_STAT	(0x0100)
-#define PHY_COMMON_STAT_RES1		(0x0080)
-#define PHY_COMMON_STAT_MF_PSUP		(0x0040)
-#define PHY_COMMON_STAT_AN_COMP		(0x0020)
-#define PHY_COMMON_STAT_RMT_FLT		(0x0010)
-#define PHY_COMMON_STAT_AN_CAP		(0x0008)
-#define PHY_COMMON_STAT_LNK_STAT	(0x0004)
-#define PHY_COMMON_STAT_JAB_DTCT	(0x0002)
-#define PHY_COMMON_STAT_EXT_CAP		(0x0001)
-
-/* AUTO_ADV Auto-neg Advert Register Bit Fields */
-#define PHY_COMMON_AUTO_ADV_NP		(0x8000)
-#define PHY_COMMON_AUTO_ADV_RES1        (0x4000)
-#define PHY_COMMON_AUTO_ADV_RMT_FLT     (0x2000)
-#define PHY_COMMON_AUTO_ADV_RES2        (0x1000)
-#define PHY_COMMON_AUTO_ADV_AS_PAUSE    (0x0800)
-#define PHY_COMMON_AUTO_ADV_PAUSE       (0x0400)
-#define PHY_COMMON_AUTO_ADV_100BT4      (0x0200)
-#define PHY_COMMON_AUTO_ADV_100BTXFD	(0x0100)
-#define PHY_COMMON_AUTO_ADV_100BTX      (0x0080)
-#define PHY_COMMON_AUTO_ADV_10BTFD	(0x0040)
-#define PHY_COMMON_AUTO_ADV_10BT	(0x0020)
-#define PHY_COMMON_AUTO_ADV_SEL_FLD_MA  (0x001F)
-#define PHY_COMMON_AUTO_ADV_802_9       (0x0002)
-#define PHY_COMMON_AUTO_ADV_802_3       (0x0001)
-
-/* AUTO_LNKB Auto-neg Link Ability Register Bit Fields */
-#define PHY_COMMON_AUTO_LNKB_NP		(0x8000)
-#define PHY_COMMON_AUTO_LNKB_ACK        (0x4000)
-#define PHY_COMMON_AUTO_LNKB_RMT_FLT    (0x2000)
-#define PHY_COMMON_AUTO_LNKB_RES2       (0x1000)
-#define PHY_COMMON_AUTO_LNKB_AS_PAUSE   (0x0800)
-#define PHY_COMMON_AUTO_LNKB_PAUSE      (0x0400)
-#define PHY_COMMON_AUTO_LNKB_100BT4     (0x0200)
-#define PHY_COMMON_AUTO_LNKB_100BTXFD   (0x0100)
-#define PHY_COMMON_AUTO_LNKB_100BTX     (0x0080)
-#define PHY_COMMON_AUTO_LNKB_10BTFD	(0x0040)
-#define PHY_COMMON_AUTO_LNKB_10BT	(0x0020)
-#define PHY_COMMON_AUTO_LNKB_SEL_FLD_MA (0x001F)
-#define PHY_COMMON_AUTO_LNKB_802_9      (0x0002)
-#define PHY_COMMON_AUTO_LNKB_802_3      (0x0001)
-
-/* AUTO_EXP Auto-neg Expansion Register Bit Fields */
-#define PHY_COMMON_AUTO_EXP_RES1        (0xFFC0)
-#define PHY_COMMON_AUTO_EXP_BASE_PAGE   (0x0020)
-#define PHY_COMMON_AUTO_EXP_PAR_DT_FLT  (0x0010)
-#define PHY_COMMON_AUTO_EXP_LNK_NP_CAP  (0x0008)
-#define PHY_COMMON_AUTO_EXP_NP_CAP      (0x0004)
-#define PHY_COMMON_AUTO_EXP_PAGE_REC    (0x0002)
-#define PHY_COMMON_AUTO_EXP_LNK_AN_CAP  (0x0001)
-
-/* AUTO_NEXT Aut-neg Next Page Tx Register Bit Fields */
-#define PHY_COMMON_AUTO_NEXT_NP         (0x8000)
-#define PHY_COMMON_AUTO_NEXT_RES1       (0x4000)
-#define PHY_COMMON_AUTO_NEXT_MSG_PAGE   (0x2000)
-#define PHY_COMMON_AUTO_NEXT_ACK_2      (0x1000)
-#define PHY_COMMON_AUTO_NEXT_TOGGLE     (0x0800)
-#define PHY_COMMON_AUTO_NEXT_MSG        (0x07FF)
-
-/* AUTO_LNKN Auto-neg Link Partner Rx Reg Bit Fields */
-#define PHY_COMMON_AUTO_LNKN_NP         (0x8000)
-#define PHY_COMMON_AUTO_LNKN_ACK        (0x4000)
-#define PHY_COMMON_AUTO_LNKN_MSG_PAGE   (0x2000)
-#define PHY_COMMON_AUTO_LNKN_ACK_2      (0x1000)
-#define PHY_COMMON_AUTO_LNKN_TOGGLE     (0x0800)
-#define PHY_COMMON_AUTO_LNKN_MSG        (0x07FF)
-
 /* PORT_CFG Port Configuration Register Bit Fields */
 /* PORT_CFG Port Configuration Register Bit Fields */
 #define PHY_LXT971_PORT_CFG_RES1        (0x8000)
 #define PHY_LXT971_PORT_CFG_RES1        (0x8000)
 #define PHY_LXT971_PORT_CFG_FORCE_LNK   (0x4000)
 #define PHY_LXT971_PORT_CFG_FORCE_LNK   (0x4000)

+ 4 - 1
include/nand.h

@@ -24,6 +24,9 @@
 #ifndef _NAND_H_
 #ifndef _NAND_H_
 #define _NAND_H_
 #define _NAND_H_
 
 
+extern void nand_init(void);
+
+#ifndef CFG_NAND_LEGACY
 #include <linux/mtd/compat.h>
 #include <linux/mtd/compat.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/nand.h>
@@ -32,7 +35,6 @@ typedef struct mtd_info nand_info_t;
 
 
 extern int nand_curr_device;
 extern int nand_curr_device;
 extern nand_info_t nand_info[];
 extern nand_info_t nand_info[];
-extern void nand_init(void);
 
 
 static inline int nand_read(nand_info_t *info, off_t ofs, size_t *len, u_char *buf)
 static inline int nand_read(nand_info_t *info, off_t ofs, size_t *len, u_char *buf)
 {
 {
@@ -122,4 +124,5 @@ int nand_get_lock_status(nand_info_t *meminfo, ulong offset);
 void board_nand_select_device(struct nand_chip *nand, int chip);
 void board_nand_select_device(struct nand_chip *nand, int chip);
 #endif
 #endif
 
 
+#endif /* !CFG_NAND_LEGACY */
 #endif
 #endif

+ 1 - 0
include/ns7520_eth.h

@@ -24,6 +24,7 @@
 
 
 #ifdef CONFIG_DRIVER_NS7520_ETHERNET
 #ifdef CONFIG_DRIVER_NS7520_ETHERNET
 
 
+#include <miiphy.h>
 #include "lxt971a.h"
 #include "lxt971a.h"
 
 
 /* The port addresses */
 /* The port addresses */

+ 1 - 0
include/ns9750_eth.h

@@ -31,6 +31,7 @@
 
 
 #ifdef CONFIG_DRIVER_NS9750_ETHERNET
 #ifdef CONFIG_DRIVER_NS9750_ETHERNET
 
 
+#include <miiphy.h>
 #include "lxt971a.h"
 #include "lxt971a.h"
 
 
 #define	NS9750_ETH_MODULE_BASE		(0xA0600000)
 #define	NS9750_ETH_MODULE_BASE		(0xA0600000)

+ 1 - 0
include/pci_ids.h

@@ -1827,6 +1827,7 @@
 #define PCI_DEVICE_ID_INTEL_82545EM_FIBER	0x1011
 #define PCI_DEVICE_ID_INTEL_82545EM_FIBER	0x1011
 #define PCI_DEVICE_ID_INTEL_82546EB_FIBER	0x1012
 #define PCI_DEVICE_ID_INTEL_82546EB_FIBER	0x1012
 #define PCI_DEVICE_ID_INTEL_82540EM_LOM		0x1015
 #define PCI_DEVICE_ID_INTEL_82540EM_LOM		0x1015
+#define PCI_DEVICE_ID_INTEL_82545GM_COPPER	0x1026
 #define PCI_DEVICE_ID_INTEL_82559		0x1030
 #define PCI_DEVICE_ID_INTEL_82559		0x1030
 
 
 #define PCI_DEVICE_ID_INTEL_82562ET	0x1031
 #define PCI_DEVICE_ID_INTEL_82562ET	0x1031

+ 21 - 13
lib_generic/display_options.c

@@ -39,27 +39,35 @@ int display_options (void)
 }
 }
 
 
 /*
 /*
- * print sizes as "xxx kB", "xxx.y kB", "xxx MB" or "xxx.y MB" as needed;
- * allow for optional trailing string (like "\n")
+ * print sizes as "xxx kB", "xxx.y kB", "xxx MB", "xxx.y MB",
+ * xxx GB, or xxx.y GB as needed; allow for optional trailing string
+ * (like "\n")
  */
  */
 void print_size (phys_size_t size, const char *s)
 void print_size (phys_size_t size, const char *s)
 {
 {
-	ulong m, n;
-	ulong d = 1 << 20;		/* 1 MB */
-	char  c = 'M';
-
-	if (size < d) {			/* print in kB */
-		c = 'k';
-		d = 1 << 10;
+	ulong m = 0, n;
+	phys_size_t d = 1 << 30;		/* 1 GB */
+	char  c = 'G';
+
+	if (size < d) {			/* try MB */
+		c = 'M';
+		d = 1 << 20;
+		if (size < d) {		/* print in kB */
+			c = 'k';
+			d = 1 << 10;
+		}
 	}
 	}
 
 
 	n = size / d;
 	n = size / d;
 
 
-	m = (10 * (size - (n * d)) + (d / 2) ) / d;
+	/* If there's a remainder, deal with it */
+	if(size % d) {
+		m = (10 * (size - (n * d)) + (d / 2) ) / d;
 
 
-	if (m >= 10) {
-		m -= 10;
-		n += 1;
+		if (m >= 10) {
+			m -= 10;
+			n += 1;
+		}
 	}
 	}
 
 
 	printf ("%2ld", n);
 	printf ("%2ld", n);

+ 3 - 3
lib_generic/lmb.c

@@ -181,11 +181,11 @@ long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size)
 	return lmb_add_region(_rgn, base, size);
 	return lmb_add_region(_rgn, base, size);
 }
 }
 
 
-long lmb_free(struct lmb *lmb, u64 base, u64 size)
+long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size)
 {
 {
 	struct lmb_region *rgn = &(lmb->reserved);
 	struct lmb_region *rgn = &(lmb->reserved);
-	u64 rgnbegin, rgnend;
-	u64 end = base + size;
+	phys_addr_t rgnbegin, rgnend;
+	phys_addr_t end = base + size;
 	int i;
 	int i;
 
 
 	rgnbegin = rgnend = 0; /* supress gcc warnings */
 	rgnbegin = rgnend = 0; /* supress gcc warnings */

+ 11 - 0
lib_mips/bootm.c

@@ -54,6 +54,7 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
 	char	*commandline = getenv ("bootargs");
 	char	*commandline = getenv ("bootargs");
 	char	env_buf[12];
 	char	env_buf[12];
 	int	ret;
 	int	ret;
+	const char *cp;
 
 
 	/* find kernel entry point */
 	/* find kernel entry point */
 	if (images->legacy_hdr_valid) {
 	if (images->legacy_hdr_valid) {
@@ -113,6 +114,16 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
 	sprintf (env_buf, "0x%X", (uint) (gd->bd->bi_flashsize));
 	sprintf (env_buf, "0x%X", (uint) (gd->bd->bi_flashsize));
 	linux_env_set ("flash_size", env_buf);
 	linux_env_set ("flash_size", env_buf);
 
 
+	cp = getenv("ethaddr");
+	if (cp != NULL) {
+		linux_env_set("ethaddr", cp);
+	}
+
+	cp = getenv("eth1addr");
+	if (cp != NULL) {
+		linux_env_set("eth1addr", cp);
+	}
+
 	if (!images->autostart)
 	if (!images->autostart)
 		return ;
 		return ;
 
 

+ 7 - 6
lib_ppc/bootm.c

@@ -105,7 +105,7 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 
 
 	if (size < bootm_size) {
 	if (size < bootm_size) {
 		ulong base = bootmap_base + size;
 		ulong base = bootmap_base + size;
-		printf("WARNING: adjusting available memory to %x\n", size);
+		printf("WARNING: adjusting available memory to %lx\n", size);
 		lmb_reserve(lmb, base, bootm_size - size);
 		lmb_reserve(lmb, base, bootm_size - size);
 	}
 	}
 
 
@@ -205,14 +205,15 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 
 
 		for (j = 0; j < total; j++) {
 		for (j = 0; j < total; j++) {
 			fdt_get_mem_rsv(of_flat_tree, j, &addr, &size);
 			fdt_get_mem_rsv(of_flat_tree, j, &addr, &size);
-			if (addr == (uint64_t)of_flat_tree) {
+			if (addr == (uint64_t)(u32)of_flat_tree) {
 				fdt_del_mem_rsv(of_flat_tree, j);
 				fdt_del_mem_rsv(of_flat_tree, j);
 				break;
 				break;
 			}
 			}
 		}
 		}
 
 
 		/* Delete the old LMB reservation */
 		/* Delete the old LMB reservation */
-		lmb_free(lmb, (uint64_t)of_flat_tree, fdt_totalsize(of_flat_tree));
+		lmb_free(lmb, (phys_addr_t)(u32)of_flat_tree,
+				(phys_size_t)fdt_totalsize(of_flat_tree));
 
 
 		/* Calculate the actual size of the fdt */
 		/* Calculate the actual size of the fdt */
 		actualsize = fdt_off_dt_strings(of_flat_tree) +
 		actualsize = fdt_off_dt_strings(of_flat_tree) +
@@ -672,7 +673,7 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 				 */
 				 */
 				fdt_blob = (char *)fdt_addr;
 				fdt_blob = (char *)fdt_addr;
 				debug ("*  fdt: raw FDT blob\n");
 				debug ("*  fdt: raw FDT blob\n");
-				printf ("## Flattened Device Tree blob at %08lx\n", fdt_blob);
+				printf ("## Flattened Device Tree blob at %08lx\n", (long)fdt_blob);
 			}
 			}
 			break;
 			break;
 		default:
 		default:
@@ -680,7 +681,7 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 			goto error;
 			goto error;
 		}
 		}
 
 
-		printf ("   Booting using the fdt blob at 0x%x\n", fdt_blob);
+		printf ("   Booting using the fdt blob at 0x%x\n", (int)fdt_blob);
 
 
 	} else if (images->legacy_hdr_valid &&
 	} else if (images->legacy_hdr_valid &&
 			image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
 			image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
@@ -699,7 +700,7 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 		if (fdt_len) {
 		if (fdt_len) {
 
 
 			fdt_blob = (char *)fdt_data;
 			fdt_blob = (char *)fdt_data;
-			printf ("   Booting using the fdt at 0x%x\n", fdt_blob);
+			printf ("   Booting using the fdt at 0x%x\n", (int)fdt_blob);
 
 
 			if (fdt_check_header (fdt_blob) != 0) {
 			if (fdt_check_header (fdt_blob) != 0) {
 				fdt_error ("image is not a fdt");
 				fdt_error ("image is not a fdt");

+ 1 - 1
lib_sh/Makefile

@@ -26,7 +26,7 @@ SOBJS-y	+=
 
 
 COBJS-y	+= board.o
 COBJS-y	+= board.o
 COBJS-y	+= bootm.o
 COBJS-y	+= bootm.o
-#COBJS-y	+= time.o
+# COBJS-y	+= time.o
 
 
 SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
 OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))

+ 3 - 1
lib_sh/board.c

@@ -112,6 +112,7 @@ static int sh_mem_env_init(void)
 	return 0;
 	return 0;
 }
 }
 
 
+#if defined(CONFIG_CMD_NET)
 static int sh_net_init(void)
 static int sh_net_init(void)
 {
 {
 	DECLARE_GLOBAL_DATA_PTR;
 	DECLARE_GLOBAL_DATA_PTR;
@@ -127,6 +128,7 @@ static int sh_net_init(void)
 
 
 	return 0;
 	return 0;
 }
 }
+#endif
 
 
 typedef int (init_fnc_t) (void);
 typedef int (init_fnc_t) (void);
 
 
@@ -170,8 +172,8 @@ void sh_generic_init (void)
 
 
 	bd_t *bd;
 	bd_t *bd;
 	init_fnc_t **init_fnc_ptr;
 	init_fnc_t **init_fnc_ptr;
-	char *s;
 	int i;
 	int i;
+	char *s;
 
 
 	memset (gd, 0, CFG_GBL_DATA_SIZE);
 	memset (gd, 0, CFG_GBL_DATA_SIZE);
 
 

+ 1 - 1
lib_sh/time.c

@@ -22,7 +22,7 @@
  */
  */
 
 
 #include <common.h>
 #include <common.h>
-#include <asm/processer.h>
+#include <asm/processor.h>
 
 
 static void tmu_timer_start (unsigned int timer)
 static void tmu_timer_start (unsigned int timer)
 {
 {

+ 15 - 17
net/eth.c

@@ -28,6 +28,17 @@
 
 
 #if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
 #if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
 
 
+/*
+ * CPU and board-specific Ethernet initializations.  Aliased function
+ * signals caller to move on
+ */
+static int __def_eth_init(bd_t *bis)
+{
+	return -1;
+}
+int cpu_eth_init(bd_t *bis) __attribute((weak, alias("__def_eth_init")));
+int board_eth_init(bd_t *bis) __attribute((weak, alias("__def_eth_init")));
+
 #ifdef CFG_GT_6426x
 #ifdef CFG_GT_6426x
 extern int gt6426x_eth_initialize(bd_t *bis);
 extern int gt6426x_eth_initialize(bd_t *bis);
 #endif
 #endif
@@ -55,7 +66,6 @@ extern int scc_initialize(bd_t*);
 extern int skge_initialize(bd_t*);
 extern int skge_initialize(bd_t*);
 extern int tsi108_eth_initialize(bd_t*);
 extern int tsi108_eth_initialize(bd_t*);
 extern int uli526x_initialize(bd_t *);
 extern int uli526x_initialize(bd_t *);
-extern int tsec_initialize(bd_t*, int, char *);
 extern int npe_initialize(bd_t *);
 extern int npe_initialize(bd_t *);
 extern int uec_initialize(int);
 extern int uec_initialize(int);
 extern int bfin_EMAC_initialize(bd_t *);
 extern int bfin_EMAC_initialize(bd_t *);
@@ -165,6 +175,10 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 	miiphy_init();
 	miiphy_init();
 #endif
 #endif
+	/* Try board-specific initialization first.  If it fails or isn't
+	 * present, try the cpu-specific initialization */
+	if (board_eth_init(bis) < 0)
+		cpu_eth_init(bis);
 
 
 #if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
 #if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
 	mv6436x_eth_initialize(bis);
 	mv6436x_eth_initialize(bis);
@@ -196,22 +210,6 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_SK98)
 #if defined(CONFIG_SK98)
 	skge_initialize(bis);
 	skge_initialize(bis);
 #endif
 #endif
-#if defined(CONFIG_TSEC1)
-	tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
-#endif
-#if defined(CONFIG_TSEC2)
-	tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
-#endif
-#if defined(CONFIG_MPC85XX_FEC)
-	tsec_initialize(bis, 2, CONFIG_MPC85XX_FEC_NAME);
-#else
-#    if defined(CONFIG_TSEC3)
-	tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
-#    endif
-#    if defined(CONFIG_TSEC4)
-	tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
-#    endif
-#endif
 #if defined(CONFIG_UEC_ETH1)
 #if defined(CONFIG_UEC_ETH1)
 	uec_initialize(0);
 	uec_initialize(0);
 #endif
 #endif

+ 1 - 1
net/tftp.c

@@ -178,7 +178,7 @@ TftpSend (void)
 		pkt += 5 /*strlen("octet")*/ + 1;
 		pkt += 5 /*strlen("octet")*/ + 1;
 		strcpy ((char *)pkt, "timeout");
 		strcpy ((char *)pkt, "timeout");
 		pkt += 7 /*strlen("timeout")*/ + 1;
 		pkt += 7 /*strlen("timeout")*/ + 1;
-		sprintf((char *)pkt, "%d", TIMEOUT);
+		sprintf((char *)pkt, "%lu", TIMEOUT);
 #ifdef ET_DEBUG
 #ifdef ET_DEBUG
 		printf("send option \"timeout %s\"\n", (char *)pkt);
 		printf("send option \"timeout %s\"\n", (char *)pkt);
 #endif
 #endif