[U-Boot-Users] U-Boot success .. Linux big test

Wolfgang Denk wd at denx.de
Sat Jan 3 01:20:09 CET 2004


Dear Ronen,

in message <3FD74E1D.1010308 at il.marvell.com> you wrote:
> 
> O.K. I'm ready ...
> I want to submit a patch for the U-Boot project.

I'm ttrying to check this in, but an iteration will be needed as some
parts are not acceptable as implemented.


I have a few requests for future contributions:

* Please don't use C++ style (//) comments

* Please remove trailing white space

* Please stick to the "Coding Rules" (see README)

* Please write READABLE code. Something like this:
	...
	/*  RESET_REG_BITS(regOffset,bits) -
	   gets register offset and bits: a 32bit value. It set to logic '0' in the
	   internal register the bits which given as an input example:
	   RESET_REG_BITS(0x840,BIT3 | BIT24 | BIT30) - set bits: 3,24 and 30 to logic
	   '0' in register 0x840 while the other bits stays as is. */
	#define RESET_REG_BITS(regOffset,bits) \
		*(unsigned int*)(NONE_CACHEABLE | INTERNAL_REG_BASE_ADDR   \
		| regOffset) &= ~( (unsigned int)WORD_SWAP(bits) )
	/* gets register offset and bits: a 32bit value. It set to logic '1' in the
	   internal register the bits which given as an input example:
	   GT_SET_REG_BITS(0x840,BIT3 | BIT24 | BIT30) - set bits: 3,24 and 30 to logic
	   '1' in register 0x840 while the other bits stays as is. */
	 /*#define GT_SET_REG_BITS(regOffset,bits)      ((*((volatile unsigned int*)(NONE_CACHEABLE(INTERNAL_REG_BASE_ADDR) | (regOffset)))) |= ((unsigned int)WORD_SWAP(bits)))1 */
	 /*#define GT_SET_REG_BITS(regOffset,bits) RESET_REG_BITS(regOffset,bits)1 */
	#define GT_SET_REG_BITS(regOffset,bits) SET_REG_BITS(regOffset,bits)
	/* gets register offset and bits: a 32bit value. It set to logic '0' in the
	   internal register the bits which given as an input example:
	   GT_RESET_REG_BITS(0x840,BIT3 | BIT24 | BIT30) - set bits: 3,24 and 30 to
	   logic '0' in register 0x840 while the other bits stays as is. */
	 /*#define GT_RESET_REG_BITS(regOffset,bits)    ((*((volatile unsigned int*)(NONE_CACHEABLE(INTERNAL_REG_BASE_ADDR) |  (regOffset)))) &= ~((unsigned int)WORD_SWAP(bits)))1 */
	#define GT_RESET_REG_BITS(regOffset,bits) RESET_REG_BITS(regOffset,bits)
	...
  is _NOT_ readable. It is a nightmare!!!

* Please write useful comments. If the code reads
	GT_SET_REG_BITS(0x840,BIT3 | BIT24 | BIT30)
  then a comment like your "set bits: 3,24 and 30 to logic '1' in register 0x840"
  is not only redundand and useless, it just makes the code unreadable.

* Please don't use too long lines; normally the maximum is 72...80
  characters per line


I checked in most of your code now, but I ask you to clean up the following issues:

* Most files in your board directories are more or less identical; if
  there are differences these are only in names (64360 vs. 64460)
  like this:
	<       MV_REG_WRITE (MV64360_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),
	---
	>       MV_REG_WRITE (MV64460_ETH_TX_FIFO_URGENT_THRESHOLD_REG (eth_port_num),

  The following files are 100% identical:

	board/Marvell/db64360/pci.c		board/Marvell/db64460/pci.c
	board/Marvell/db64360/Makefile		board/Marvell/db64460/Makefile
	board/Marvell/db64360/u-boot.lds	board/Marvell/db64460/u-boot.lds

  The following files are logically identical (i. e. just trivial
  differences in some identifiers):

	board/Marvell/db64360/64360.h		board/Marvell/db64460/64460.h
	board/Marvell/db64360/mv_eth.c		board/Marvell/db64460/mv_eth.c
	board/Marvell/db64360/config.mk		board/Marvell/db64460/config.mk
	board/Marvell/db64360/db64360.c		board/Marvell/db64460/db64460.c
	board/Marvell/db64360/eth.h		board/Marvell/db64460/eth.h
	board/Marvell/db64360/mpsc.c		board/Marvell/db64460/mpsc.c
	board/Marvell/db64360/mpsc.h		board/Marvell/db64460/mpsc.h
	arch/ppc/galileo/EVB64360/mv64360_eth.c	arch/ppc/galileo/EVB64460/mv64460_eth.c
	board/Marvell/db64360/mv_eth.h		board/Marvell/db64460/mv_eth.h
	board/Marvell/db64360/mv_regs.h		board/Marvell/db64460/mv_regs.h

  Such a duplication of code is not acceptable.

  Please clean this up - remove the board  specific  files,  and  use
  common  files  instead (and check that you don't duplicate existing
  code like 64360 network drivers).

* board/Marvell/include/mv_gen_reg.h contains more or less  the  same
  definitions  like  include/galileo/gt64260R.h  -- please clean this
  up (include file conflict in "cpu/74xx_7xx/start.S").

* "board/Marvell/common/serial.c" looks pretty generic to me; I think
  it can (and should) be removed

> Attached you can find a zip file containing:
> 1. board/Marvell/* - Files to support Marvell development boards db64360 
> and db64460.

Added for now, but cleanup is required. Please see above.

> 2. include/configs/* - Configuration files for db64360 and db64460

Added.

> 3. common/cmd_bootm.c, drivers/eepro100.c and net/eth.c are 3 files that 
> I added #ifdef inside them:
>     cmd_bootm - the ifdef is needed for booting of the linux kernel.

Rejected. No such #ifdef is needed or acceptable. Please perform  all
necessary  board  initializations  where apropriate, i. e. as part of
the board init sequence (see lib_ppc/board.c).

Note: this means that your board_prebootm_init() function (which must
be renamed, of course) will never be called in the  current  code  in
CVS.

>     eepro100 - without this define our PCI NIC will not function.
>     eth.c - simple initialization of the network interface.

Added.

> 4. include/74xx_7xx.h and cpu/* - Files to support the following CPUs: 
> MPC7455, MPC7457 and 750GX.

Added.

> 5. Makefile - An updated Makefile that include the Marvel development 
> boards.
> 6. MAKEALL - An updated MAKEALL file that include the Marvel development 
> boards.
> 7. README - An updated README for the new boards only. (I didn't 
> mentioned the new cpus support)
> 8. doc/*- 2 files describing the features that are supported on the 
> Marvell development boards and a list of
>             the main test cases that we run.

Added.

> Our compilation is clean  from warning or errors.
> If you find anything inappropriate in this patch, please let me know.

Also missing: entries for the MAINTAINERS and CREDITS files.


Best regards, and a Happy New Year!

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
I haven't lost my mind -- it's backed up on tape somewhere.




More information about the U-Boot mailing list