[U-Boot-Users] [Patch]New board support : lite_dw

Dear Mr. Wolfgang,
Before sending the patch,I need to consult with you a couple of points.First is the new board name.I prefer to give a new name,lite_dw.Actually,it is DW version of RPXlite board but have three differences with CW version,which was ported by Yoo. Jonghoon.
Board CPU SDRAM FLASH CW[u-boot] MPC850 16MB 4MB DW[On my hand] MPC823e 64MB 16MB
So the possible name could be RPXlite_DW or lite_dw.In Linux kernel tree,it can be found as RPXlite_DW.But I add some new features for this board,a software development platform of EmbeddedPlanet Co.
Secondly,I'd like to support the following features on this board for the moment. 1. LCD panel support; 2. 64MHz/48MHz system clock options; 3. ENV_IS_IN_FLASH/ENV_IS_IN_NVRAM;
Any suggestion?
Best regards,
Sam
_________________________________________________________ Do You Yahoo!? 惠普TT游戏剧,玩游戏,中大奖! http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.co...

Dear Sam,
in message 20040503155816.12658.qmail@web15203.mail.bjs.yahoo.com you wrote:
Before sending the patch,I need to consult with you a couple of points.First is the new board name.I prefer to give a new name,lite_dw.Actually,it is DW version
Sorry, but there are too mane "lite" boards already. We need a more distinctive name.
So the possible name could be RPXlite_DW or lite_dw.In Linux kernel tree,it can be found as RPXlite_DW.But I
If the Linux kernel tree uses RPXlite_DW, then this is what we should use, too. I think it is a very good idea to use the same name when- ever possible.
Secondly,I'd like to support the following features on this board for the moment.
- LCD panel support;
This can be done as two build targets, like the TQM823L_config and TQM823L_LCD_config.
- 64MHz/48MHz system clock options;
If possible, make it automatically detect the clock frequency and auto-adjust. Your users will praise you if the same binary image works on both configurations.
- ENV_IS_IN_FLASH/ENV_IS_IN_NVRAM;
Either make it a different build targets, or select a standard configuration and let the user decide to modify the board config file.
Best regards,
Wolfgang Denk

Wolfgang Denk wd@denx.de wrote:
If the Linux kernel tree uses RPXlite_DW, then this is what we should use, too. I think it is a very good idea to use the same name when- ever possible.
OK. I choose the name,RPXlite_DW, for this board.
Secondly,I'd like to support the following features on this board for the moment.
- LCD panel support;
This can be done as two build targets, like the TQM823L_config and TQM823L_LCD_config.
OK.I did it.
- 64MHz/48MHz system clock options;
If possible, make it automatically detect the clock frequency and auto-adjust. Your users will praise you if the same binary image works on both configurations.
This is really a challenge for me.I meant to build two targets for it and did.How to make it?Usually we set PLPRCR in <board.h> to choose system clock for board init.It seems that it's programmers to decide the value according to CPU max frequency and oscillator's frequency on the board.Any clue with it?
- ENV_IS_IN_FLASH/ENV_IS_IN_NVRAM;
Either make it a different build targets, or select a standard configuration and let the user decide to modify the board config file.
I really want to make the second possible.Did u-boot command do this job?
Best regards,
Sam
_________________________________________________________ Do You Yahoo!? 惠普TT游戏剧,玩游戏,中大奖! http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.co...

Dear Sam,
sorry for the delay.
In message 20040504010903.79934.qmail@web15212.mail.bjs.yahoo.com you wrote:
- 64MHz/48MHz system clock options;
If possible, make it automatically detect the clock frequency and auto-adjust. Your users will praise you if the same binary image works on both configurations.
This is really a challenge for me.I meant to build two targets for it and did.How to make it?Usually we set PLPRCR in <board.h> to choose system clock for board init.It seems that it's programmers to decide the value according to CPU max frequency and oscillator's frequency on the board.Any clue with it?
How do you you initialize your HRCW? Again, you can check the TQM8xxL boards to see how to deal with differing clock configurations; you can even allow the user to adjust the clock frequency using the "cpuclk" environment variable.
- ENV_IS_IN_FLASH/ENV_IS_IN_NVRAM;
Either make it a different build targets, or select a standard configuration and let the user decide to modify the board config file.
I really want to make the second possible.Did u-boot command do this job?
I recommend to provide a default configuration which uses environment in flash; you provide the second option (environment in NVRAM) commented out ("# if 0" or so) in the config file, so the user can enable it if he likes so.
Best regards,
Wolfgang Denk

Dear Mr. Wolfgang,
Following is my patch for the new board,RPXlite_DW. I send part of the patch for check.For the sake of no access CVS,I did the patch against u-boot-1.1.1.As for some docs like README,Makefile,I try to use web browser of u-boot to make the patch against CVS.Is it OK?Pls check!
Best regards,
Sam
diff -purN u-boot-1.1.1/board/RPXlite_dw/Makefile u-boot-1.1.1-send/board/RPXlite_dw/Makefile --- u-boot-1.1.1/board/RPXlite_dw/Makefile Thu Jan 1 08:00:00 1970 +++ u-boot-1.1.1-send/board/RPXlite_dw/Makefile Mon May 3 19:46:19 2004 @@ -0,0 +1,40 @@ +# +# (C) Copyright 2004 +# 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 = lib$(BOARD).a + +OBJS = $(BOARD).o flash.o + +$(LIB): .depend $(OBJS) + $(AR) crv $@ $(OBJS) + +######################################################################### + +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) + $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff -purN u-boot-1.1.1/board/RPXlite_dw/RPXlite_dw.c u-boot-1.1.1-send/board/RPXlite_dw/RPXlite_dw.c --- u-boot-1.1.1/board/RPXlite_dw/RPXlite_dw.c Thu Jan 1 08:00:00 1970 +++ u-boot-1.1.1-send/board/RPXlite_dw/RPXlite_dw.c Tue May 4 22:01:44 2004 @@ -0,0 +1,189 @@ +/* + * (C) Copyright 2004 + * Sam Song, IEMC. SHU, samsongshu@yahoo.com.cn + * + * 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 + */ + +/* + * Sam Song + * U-Boot port on RPXlite DW board : RPXlite_DW or LITE_DW + * Tested on working at 64MHz(CPU)/32MHz(BUS),48MHz/24MHz + * with 64MB, 2 SDRAM Micron chips,MT48LC16M16A2-75. + */ + +#include <common.h> +#include <mpc8xx.h> + +/* ------------------------------------------------------------------------- */ + +static long int dram_size (long int, long int *, long int); + +/* ------------------------------------------------------------------------- */ + +#define _NOT_USED_ 0xFFFFCC25 + +const uint sdram_table[] = +{ + /* + * Single Read. (Offset 00h in UPMA RAM) + */ + 0x0F03CC04, 0x00ACCC24, 0x1FF74C20, /* last */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, + + /* + * Burst Read. (Offset 08h in UPMA RAM) + */ + 0x0F03CC04, 0x00ACCC24, 0x00FFCC20, 0x00FFCC20, + 0x01FFCC20, 0x1FF74C20, /* last */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, + + /* + * Single Write. (Offset 18h in UPMA RAM) + */ + 0x0F03CC02, 0x00AC0C24, 0x1FF74C25, /* last */ + _NOT_USED_, _NOT_USED_, 0x0FA00C34,0x0FFFCC35, + _NOT_USED_, + + /* + * Burst Write. (Offset 20h in UPMA RAM) + */ + 0x0F03CC00, 0x00AC0C20, 0x00FFFC20, 0x00FFFC22, + 0x01FFFC24, 0x1FF74C25, /* last */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, + + /* + * Refresh. (Offset 30h in UPMA RAM) + */ + 0x0FF0CC24, 0xFFFFCC24, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, 0xEFFB8C34, 0x0FF74C34, + 0x0FFACCB4, 0x0FF5CC34, 0x0FFFCC34, 0x0FFFCCB4, + /* INIT sequence RAM WORDS + * SDRAM Initialization (offset 0x36 in UPMA RAM) + * The above definition uses the remaining space + * to establish an initialization sequence, + * which is executed by a RUN command. + * The sequence is COMMAND INHIBIT(NOP),Precharge, + * Load Mode Register,NOP,Auto Refresh. + * **[Sam]** + */ + + /* + * Exception. (Offset 3Ch in UPMA RAM) + */ + 0x0FEA8C34, 0x1FB54C34, 0xFFFFCC34, _NOT_USED_ +}; + +/* + * Check Board Identity: + */ + +int checkboard (void) +{ + puts ("Board: RPXlite_DW\n") ; + return (0) ; +} + +/* ------------------------------------------------------------------------- */ + +long int initdram (int board_type) +{ + volatile immap_t *immap = (immap_t *)CFG_IMMR; + volatile memctl8xx_t *memctl = &immap->im_memctl; + long int size9; + + upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint)); + + /* Refresh clock prescalar */ + memctl->memc_mptpr = CFG_MPTPR ; + + memctl->memc_mar = 0x00000088; + + /* Map controller banks 1 to the SDRAM bank */ + memctl->memc_or1 = CFG_OR1_PRELIM; + memctl->memc_br1 = CFG_BR1_PRELIM; + + memctl->memc_mamr = CFG_MAMR_9COL & (~(MAMR_PTAE)); /* no refresh yet */ + /*Disable Periodic timer A. */ + + udelay(200); + + /* perform SDRAM initializsation sequence */ + + memctl->memc_mcr = 0x80002236; /* SDRAM bank 0 - refresh twice */ + + udelay(1); + + memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */ + + /*Enable Periodic timer A */ + + udelay (1000); + + /* Check Bank 0 Memory Size + * try 9 column mode + */ + + size9 = dram_size (CFG_MAMR_9COL, (ulong *)SDRAM_BASE_PRELIM, SDRAM_MAX_SIZE); + + /* + * Final mapping: + */ + + memctl->memc_or1 = ((-size9) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM; + + udelay (1000); + + return (size9); +} + +void rpxlite_init (void) +{ + /* Enable NVRAM */ + *((uchar *) BCSR0) |= BCSR0_ENNVRAM; +} + +/* ------------------------------------------------------------------------- */ + +/* + * Check memory range for valid RAM. A simple memory test determines + * the actually available RAM size between addresses `base' and + * `base + maxsize'. Some (not all) hardware errors are detected: + * - short between address lines + * - short between data lines + */ + + + +static long int dram_size (long int mamr_value, long int *base, + long int maxsize) +{ + volatile immap_t *immap = (immap_t *) CFG_IMMR; + volatile memctl8xx_t *memctl = &immap->im_memctl; + + memctl->memc_mamr = mamr_value; + + return (get_ram_size (base, maxsize)); + +}
_________________________________________________________ Do You Yahoo!? 嫌邮箱太小?雅虎电邮自助扩容! http://cn.rd.yahoo.com/mail_cn/tag/10m/*http://cn.mail.yahoo.com/event/10m.h...

In message 20040504152314.10492.qmail@web15208.mail.bjs.yahoo.com you wrote:
Following is my patch for the new board,RPXlite_DW. I send part of the patch for check.For the sake of no access CVS,I did the patch against u-boot-1.1.1.As for some docs like README,Makefile,I try to use web browser of u-boot to make the patch against CVS.Is it OK?Pls check!
Sorry, your mailer wrapped the lines and broke the patch.
Also, please make sure to adhere to the Coding Standards (see README) - i. e. no trailing white space, please.
Please resubmit.
Best regards,
Wolfgang Denk
participants (2)
-
Sam Song
-
Wolfgang Denk