From: Wolfgang Denk <wd@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 6/7] mpc5121: add support for PDM360NG board
Date: Sun, 21 Mar 2010 20:23:06 +0100 [thread overview]
Message-ID: <20100321192306.BFE104C022@gemini.denx.de> (raw)
In-Reply-To: <1268755808-24931-7-git-send-email-agust@denx.de>
Dear Anatolij Gustschin,
In message <1268755808-24931-7-git-send-email-agust@denx.de> you wrote:
> --===============0837153488==
>
> PDM360NG is a MPC5121E based board by ifm ecomatic gmbh.
>
> Signed-off-by: Michael Weiss <michael.weiss@ifm.com>
> Signed-off-by: Anatolij Gustschin <agust@denx.de>
> ---
> Changes since first version:
> - don't include RLE8 bitmap support in DIU code,
> now it is in common code submitted to U-Boot ML
> as separate patch. It is also extended to support
> more video formats.
> - fixed e-mail format
> - keep the list of targets sorted in the Makefile
> - move POST code into separate file
> - move post_word_load/store code to common file for
> all mpc512x boards
> - create a file with common board config options
> for mpc512x boards which can be included in the
> board config file.
> - use cfb_console driver for frame buffer support
> - allow configuration of coprocessor communication
> parameters (baudrate, wait delay) in the board config
> file
I see you already addressed a number of issues I mentioned in my
previous review of this patch.
Some others are still open:
> MAKEALL | 1 +
> Makefile | 3 +
> board/freescale/common/fsl_diu_fb.c | 29 ++-
> board/pdm360ng/Makefile | 52 ++++
> board/pdm360ng/config.mk | 24 ++
> board/pdm360ng/pdm360ng.c | 525 +++++++++++++++++++++++++++++++++++
> board/pdm360ng/post.c | 75 +++++
> cpu/mpc512x/diu.c | 14 +-
> include/configs/mpc5121-common.h | 52 ++++
> include/configs/pdm360ng.h | 520 ++++++++++++++++++++++++++++++++++
> include/post.h | 1 +
> post/tests.c | 4 +
> 12 files changed, 1294 insertions(+), 6 deletions(-)
> create mode 100644 board/pdm360ng/Makefile
> create mode 100644 board/pdm360ng/config.mk
> create mode 100644 board/pdm360ng/pdm360ng.c
> create mode 100644 board/pdm360ng/post.c
> create mode 100644 include/configs/mpc5121-common.h
> create mode 100644 include/configs/pdm360ng.h
Entry to MAINTAINERS file is missing.
> +#if defined(CONFIG_HARD_I2C)
> + if (!getenv("ethaddr")) {
> + uchar buf[6];
> + char mac[18];
> + int ret;
> +
> + /* I2C-0 for on-board eeprom */
> + i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS_NUM);
> +
> + /* Read ethaddr from EEPROM */
> + ret = i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR,
> + CONFIG_SYS_I2C_EEPROM_MAC_OFFSET, 1, buf, 6);
> + if (!ret) {
> + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X",
> + buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
> + /* Owned by IFM ? */
> + if (strstr(mac, "00:02:01") != mac) {
> + printf("Illegal MAC address in EEPROM: %s\n",
> + mac);
> + } else {
> + debug("Using MAC from I2C EEPROM: %s\n", mac);
> + setenv("ethaddr", mac);
> + }
> + } else {
> + printf("Error: Unable to read MAC from I2C"
> + " EEPROM at address %02X:%02X\n",
> + CONFIG_SYS_I2C_EEPROM_ADDR,
> + CONFIG_SYS_I2C_EEPROM_MAC_OFFSET);
> + }
Please see comments in previous message. IMHO this needs to be
rewritten.
> +#if defined(CONFIG_SERIAL_MULTI)
> +/*
> + * If argument is NULL, set the LCD brightness to the
> + * value from "brightness" environment variable. Set
> + * the LCD brightness to the value specified by the
> + * argument otherwise. Default brightness is zero.
> + */
> +#define MAX_BRIGHTNESS 99
> +static int set_lcd_brightness(char *brightness)
This seems wrong to me. Why does LCD related code depend on
CONFIG_SERIAL_MULTI ???
> diff --git a/cpu/mpc512x/diu.c b/cpu/mpc512x/diu.c
> index a24f395..fc43a9d 100644
> --- a/cpu/mpc512x/diu.c
> +++ b/cpu/mpc512x/diu.c
> @@ -68,8 +68,13 @@ char *valid_bmp(char *addr)
> unsigned long h_addr;
>
> h_addr = simple_strtoul(addr, NULL, 16);
> - if (h_addr < CONFIG_SYS_FLASH_BASE ||
> - h_addr >= (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE - 1)) {
> + if ((h_addr < CONFIG_SYS_FLASH_BASE ||
> + h_addr >= (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE - 1))
> +#if defined(CONFIG_SYS_FLASH1_BASE) && defined(CONFIG_SYS_FLASH1_SIZE)
> + && (h_addr < CONFIG_SYS_FLASH1_BASE ||
> + h_addr >= (CONFIG_SYS_FLASH1_BASE + CONFIG_SYS_FLASH1_SIZE - 1))
> +#endif
> + ) {
I don't like this. Why do we see hardcoded values here and not the
data from the CFI driver's auto-sizing? I assume both flash banks are
maped into one big contiguous array of NOR flash, right? Then there
should be just a single test for "< base || >(base+size)" here, using
the total size of the combined flash banks.
> printf("bmp addr %lx is not a valid flash address\n", h_addr);
> return 0;
And why would it be necessary that the BMP resides in NOR flash in the
first place?
Why cannot - for example - a "preboot" command be used to read it from
SDCard into RAM?
[I am aware that you did not create this code, but anyways - it seems
wrong to me.]
> } else if ((*(char *)(h_addr) != 'B') || (*(char *)(h_addr+1) != 'M')) {
> @@ -85,8 +90,13 @@ int mpc5121_diu_init(void)
> char *bmp = NULL;
> char *bmp_env;
>
> +#ifdef CONFIG_PDM360NG
> + xres = 800;
> + yres = 480;
> +#else
> xres = 1024;
> yres = 768;
> +#endif
Please avoid the board specific #define here. Please check for a
feature instead (resolution = 800x400).
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +#undef DEBUG
Please remove dead code.
> +#define CONFIG_PDM360NG 1
> +#define CONFIG_PDM360NG_BIG /* PDM360NG with big memory */
> +#undef CONFIG_PDM360NG_SMALL /* PDM360NG with small memory */
This makes no sense. If you want to toggle between "small" and "big"
configurations, then please use a single #define which is either set
or not set.
I don't see why this is needed at all. Does not U-Boot auto-detect the
RAM size, so you can auto-adjust all code where needed? If not, then
this should be fixed.
> +/*
> + * DDR Setup - manually set all parameters as there's no SPD etc.
> + */
> +#ifdef CONFIG_PDM360NG_BIG
> +#define CONFIG_SYS_DDR_SIZE 512 /* MB */
> +#elif defined CONFIG_PDM360NG_SMALL
> +#define CONFIG_SYS_DDR_SIZE 128 /* MB */
> +#else
> +#error No memory configuration level defined!
> +#endif
Please use auto-sizing with get_ram_size() instead, so a single
U-Boot image can be used with both configurations.
> +/* DDR Controller Configuration for Micron DDR2 SDRAM MT47H128M8-3
> + *
Incorrect multiline comment format.
And: comment and code seem to differ - the comment explains one
configuration, but the code has 2 ("small" and "big") ?
> +#define CONFIG_SYS_DDRCMD_NOP 0x01380000
> +#define CONFIG_SYS_DDRCMD_PCHG_ALL 0x01100400
> +#define CONFIG_SYS_DDRCMD_EM2 0x01020000 /* EMR2 */
> +#define CONFIG_SYS_DDRCMD_EM3 0x01030000 /* EMR3 */
> +#define CONFIG_SYS_DDRCMD_EN_DLL 0x01010040 /* EMR with 150 ohm ODT todo: verify*/
> +#define CONFIG_SYS_DDRCMD_RES_DLL 0x01000100
> +#define CONFIG_SYS_DDRCMD_RFSH 0x01080000
> +#define CONFIG_SYS_MICRON_INIT_DEV_OP 0x01000432
> +#define CONFIG_SYS_DDRCMD_OCD_DEFAULT 0x010107C0 /* EMR with 150 ohm ODT todo: verify*/
> +#define CONFIG_SYS_DDRCMD_OCD_EXIT 0x01010440 /* EMR new command with 150 ohm ODT todo: verify*/
Lines way too long. Please fix globally.
> + * Serial Port
> + */
> +#define CONFIG_CONS_INDEX 1
> +#undef CONFIG_SERIAL_SOFTWARE_FIFO
Please do not #undef what is not defined anyway. Please remove dead
code globally.
> +#define CONFIG_CMD_ASKENV
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_I2C
> +#define CONFIG_CMD_MII
> +#define CONFIG_CMD_NFS
> +#define CONFIG_CMD_PING
> +#define CONFIG_CMD_REGINFO
> +#define CONFIG_CMD_EEPROM
> +#define CONFIG_CMD_DATE
> +#undef CONFIG_CMD_FUSE
You may want to sort that list.
> +#define CONFIG_POST_COPROC {\
> + "Coprocessors communication test", \
> + "coproc_com", \
> + "This test checks communication with coprocessors.", \
> + POST_RAM | POST_ALWAYS | POST_CRITICAL, \
> + &pdm360ng_coprocessor_post_test, \
> + NULL, \
> + NULL, \
> + CONFIG_SYS_POST_COPROC \
> + }
> +#endif
This does not belong into the board config file.
> diff --git a/include/post.h b/include/post.h
> index 9fcd3ce..d147103 100644
> --- a/include/post.h
> +++ b/include/post.h
> @@ -119,6 +119,7 @@ extern int post_hotkeys_pressed(void);
> #define CONFIG_SYS_POST_BSPEC4 0x00080000
> #define CONFIG_SYS_POST_BSPEC5 0x00100000
> #define CONFIG_SYS_POST_CODEC 0x00200000
> +#define CONFIG_SYS_POST_COPROC 0x00400000
Please split the POST specific code out into a separate commit.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
There's an old proverb that says just about whatever you want it to.
next prev parent reply other threads:[~2010-03-21 19:23 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-16 16:10 [U-Boot] [PATCH v2 0/7] Add support for PDM360NG board Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 1/7] mpc512x: make MEM IO Control configuration a board config option Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 2/7] mpc512x: add multi serial PSC support Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 3/7] mpc5121: add PSC serial communication routines Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 4/7] fdt_support: add partitions fixup in mtd node Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 5/7] mpc5121: add common post_word_load/store code Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 6/7] mpc5121: add support for PDM360NG board Anatolij Gustschin
2010-03-16 16:10 ` [U-Boot] [PATCH v2 7/7] mpc5121: cpu/mpc512x/diu.c: fix warnings Anatolij Gustschin
2010-03-21 19:24 ` Wolfgang Denk
2010-03-21 19:23 ` Wolfgang Denk [this message]
2010-04-14 10:39 ` [U-Boot] [PATCH v2 6/7] mpc5121: add support for PDM360NG board Anatolij Gustschin
2010-04-14 14:21 ` [U-Boot] [PATCH v3 0/3] Add " Anatolij Gustschin
2010-04-14 14:21 ` [U-Boot] [PATCH v3 1/3] mpc5121: determine RAM size using get_ram_size() Anatolij Gustschin
2010-04-14 14:21 ` [U-Boot] [PATCH v3 2/3] mpc5121: add support for PDM360NG board Anatolij Gustschin
2010-04-14 14:21 ` [U-Boot] [PATCH v3 3/3] mpc5121: pdm360ng: add coprocessor POST Anatolij Gustschin
2010-04-14 15:40 ` Wolfgang Denk
2010-04-15 9:18 ` Detlev Zundel
2010-04-15 9:25 ` Anatolij Gustschin
2010-04-15 11:48 ` Wolfgang Denk
2010-04-15 11:46 ` Wolfgang Denk
2010-04-15 10:24 ` Anatolij Gustschin
2010-04-15 11:54 ` Wolfgang Denk
2010-04-14 15:48 ` [U-Boot] [PATCH v3 2/3] mpc5121: add support for PDM360NG board Wolfgang Denk
2010-04-15 12:32 ` Anatolij Gustschin
2010-04-15 12:43 ` Stefan Roese
2010-04-15 15:18 ` Wolfgang Denk
2010-04-14 15:31 ` [U-Boot] [PATCH v3 1/3] mpc5121: determine RAM size using get_ram_size() Wolfgang Denk
2010-04-15 12:20 ` Anatolij Gustschin
2010-03-21 19:09 ` [U-Boot] [PATCH v2 5/7] mpc5121: add common post_word_load/store code Wolfgang Denk
2010-03-21 19:08 ` [U-Boot] [PATCH v2 4/7] fdt_support: add partitions fixup in mtd node Wolfgang Denk
2010-03-21 19:05 ` [U-Boot] [PATCH v2 3/7] mpc5121: add PSC serial communication routines Wolfgang Denk
2010-03-21 19:04 ` [U-Boot] [PATCH v2 2/7] mpc512x: add multi serial PSC support Wolfgang Denk
2010-03-21 19:03 ` [U-Boot] [PATCH v2 1/7] mpc512x: make MEM IO Control configuration a board config option Wolfgang Denk
2010-03-21 19:00 ` [U-Boot] [PATCH v2 0/7] Add support for PDM360NG board Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100321192306.BFE104C022@gemini.denx.de \
--to=wd@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.