Skip to contentSkip to conversation

U-Boot success .. Linux big test

U-Boot-Users Wolfgang Denk 1 participant 1 message Jan 3, 2004 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

Dear Ronen,

Quoted 3 lines · in message <[email protected]> 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

Quoted 3 lines

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.

Quoted 1 line

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

Added.

Quoted 3 lines

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.

Quoted 2 lines

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

Added.

Quoted 2 lines

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

Added.

Quoted 9 lines

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.

Quoted 2 lines

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

Signature · 3 lines
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.