Updates for "socrates" board
Subsystems (2)
cover Updates for "socrates" board
The following series of patches contain updates for the "socrates" board.
Note: most patches are 85xx stuff, but there are also some NAND patches.
0001-Socrates-Fixed-PCI-bus-frequency-report.patch 0002-Socrates-config-file-cleanup.patch 0003-Added-the-upmconfig-function-for-85xx.patch 0004-Socrates-Added-FPGA-mapping.-LAWs-and-TLBs-cleanup.patch 0005-Socrates-added-missed-file-with-UPMA-configuration.patch 0006-NAND-Added-support-for-128-bit-OOB-adapted.patch 0007-Socrates-NAND-support-added.-Changed-the-U-Boot-bas.patch 0008-Socrates-Added-FPGA-base-address-update-in-FDT.patch
Best regards,
Wolfgang Denk
Signature · 5 lines
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 A meeting is an event at which the minutes are kept and the hours are lost.
PATCH 1/8 Socrates: Fixed PCI bus frequency report.
From: Sergei Poselenov <[email protected]>
--- board/socrates/socrates.c | 15 +++++++++++++-- include/configs/socrates.h | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-)
board/socrates/socrates.c +13 -2
@@ -35,6 +35,7 @@#include <flash.h> #include <libfdt.h> #include <fdt_support.h> +#include <asm/io.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -45,6 +46,9 @@ ulong flash_get_size (ulong base, int banknum);int checkboard (void ) { +volatile ccsr_gur_t *gur = (void *)(CFG_MPC85xx_GUTS_ADDR); +char *src; +int f;char *s =getenv ("serial#" );puts ("Board: Socrates" );
@@ -55,8 +59,15 @@ int checkboard (void)putc ('\n' );#ifdef CONFIG_PCI -printf ("PCI1: 32 bit, %d MHz (compiled)\n" , -CONFIG_SYS_CLK_FREQ /1000000 ); +/* Check the PCI_clk_sel bit */ +if (in_be32 (&gur->porpllsr) & (1 <<15 )) { + src ="SYSCLK" ; + f =CONFIG_SYS_CLK_FREQ ; + }else { + src ="PCI_CLK" ; + f =CONFIG_PCI_CLK_FREQ ; + } +printf ("PCI1: 32 bit, %d MHz (%s)\n" , f/1000000 , src);#else printf ("PCI1: disabled\n" );#endif
include/configs/socrates.h +2 -1
@@ -227,7 +227,8 @@*/ #define CFG_PCI_PHYS 0x80000000/* 1G PCI TLB */ - +/* PCI is clocked by the external source@33 MHz */ +#define CONFIG_PCI_CLK_FREQ 33000000#define CFG_PCI1_MEM_BASE 0x80000000#define CFG_PCI1_MEM_PHYS CFG_PCI1_MEM_BASE#define CFG_PCI1_MEM_SIZE 0x20000000/* 512M */
Signature · 1 line
1.5.4.2
PATCH 2/8 Socrates: config file cleanup.
From: Sergei Poselenov <[email protected]>
--- include/configs/socrates.h | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)
include/configs/socrates.h +3 -9
@@ -238,13 +238,7 @@#if defined(CONFIG_PCI )#define CONFIG_PCI_PNP /* do pci plug-and-play */ - -#define CONFIG_EEPRO100 -#undef CONFIG_TULIP - -#define CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */ -#define CFG_PCI_SUBSYS_VENDORID 0x1057/* Motorola */ - +#undef CONFIG_PCI_SCAN_SHOW/* show pci devices on startup */ #endif /* CONFIG_PCI */
@@ -390,10 +384,10 @@"tftp ${fdt_addr_r} ${fdt_file}; " \"run nfsargs addip addcons;" \"bootm ${kernel_addr_r} - ${fdt_addr_r}\0" \ -"fdt_file=$hostname/socrates.dtb\0" \ +"fdt_file=$hostname/socrates.dtb\0" \"fdt_addr_r=B00000\0" \"fdt_addr=FC1E0000\0" \ -"rootpath=/opt/eldk/ppc_85xx\0" \ +"rootpath=/opt/eldk/ppc_85xxDP\0" \"kernel_addr=FC000000\0" \"kernel_addr_r=200000\0" \"ramdisk_addr=FC200000\0" \
Signature · 1 line
1.5.4.2
PATCH 3/8 Added the upmconfig() function for 85xx.
From: Sergei Poselenov <[email protected]>
--- cpu/mpc85xx/cpu.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ include/mpc85xx.h | 4 +++ 2 files changed, 71 insertions(+), 0 deletions(-)
cpu/mpc85xx/cpu.c +67 -0
@@ -29,6 +29,7 @@#include <watchdog.h> #include <command.h> #include <asm/cache.h> +#include <asm/io.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -279,3 +280,69 @@ int dma_xfer(void *dest, uint count, void *src) {return dma_check (); }#endif + +/* +* Configures a UPM. Currently, the loop fields in MxMR (RLF, WLF and TLF) +* are hardcoded as "1"."size" is the number or entries, not a sizeof. +*/ +void upmconfig (uint upm,uint * table,uint size) +{ +int i, mdr, mad, old_mad =0 ; +volatile u32 *mxmr; +volatile ccsr_lbc_t *lbc = (void *)(CFG_MPC85xx_LBC_ADDR); +int loopval =0x00004440 ; +volatile u32 *brp,*orp; +volatile u8 * dummy; +int upmmask; + +switch (upm) { +case UPMA : + mxmr = &lbc->mamr; + upmmask = BRx_MS_UPMA; +break ; +case UPMB : + mxmr = &lbc->mbmr; + upmmask = BRx_MS_UPMB; +break ; +case UPMC : + mxmr = &lbc->mcmr; + upmmask = BRx_MS_UPMC; +break ; +default : +printf ("%s: Bad UPM index %d to configure\n" , __FUNCTION__, upm); +hang (); + } + +/* Find the address for the dummy write transaction */ +for (brp = &lbc->br0, orp = &lbc->or0, i =0 ; i <8 ; + i++, brp +=2 , orp +=2 ) { + +/* Look for a valid BR with selected UPM */ +if ((in_be32 (brp) & (BRx_V | upmmask)) == (BRx_V | upmmask)) { + dummy = (volatile u8 *)(in_be32 (brp) & BRx_BA_MSK); +break ; + } + } + +if (i ==8 ) { +printf ("Error: %s() could not find matching BR\n" , __FUNCTION__); +hang (); + } + +for (i =0 ; i < size; i++) { +/* 1 */ +out_be32 (mxmr, loopval |0x10000000 | i);/* OP_WRITE */ +/* 2 */ +out_be32 (&lbc->mdr, table[i]); +/* 3 */ + mdr =in_be32 (&lbc->mdr); +/* 4 */ + *(volatile u8 *)dummy =0 ; +/* 5 */ +do { + mad =in_be32 (mxmr) &0x3f ; + }while (mad <= old_mad && !(!mad && i == (size-1 ))); + old_mad = mad; + } +out_be32 (mxmr, loopval);/* OP_NORMAL */ +}
include/mpc85xx.h +4 -0
@@ -29,6 +29,10 @@/* * Local Bus Controller - memory controller registers */ +#define UPMA 0 +#define UPMB 1 +#define UPMC 2 +#define BRx_V 0x00000001/* Bank Valid */ #define BRx_MS_GPCM 0x00000000/* G.P.C.M. Machine Select */ #define BRx_MS_SDRAM 0x00000000/* SDRAM Machine Select */
Signature · 1 line
1.5.4.2
PATCH 4/8 Socrates: Added FPGA mapping. LAWs and TLBs cleanup.
From: Sergei Poselenov <[email protected]>
--- board/socrates/law.c | 15 ++++++++------- board/socrates/socrates.c | 8 +++++++- board/socrates/tlb.c | 25 ++++++++----------------- include/configs/socrates.h | 9 ++++----- 4 files changed, 27 insertions(+), 30 deletions(-)
board/socrates/law.c +8 -7
@@ -33,13 +33,12 @@/* * LAW(Local Access Window) configuration: * -* 0x0000_0000 0x7fff_ffff DDR 2G +* 0x0000_0000 0x2fff_ffff DDR 512M * 0x8000_0000 0x9fff_ffff PCI1 MEM 512M -* 0xc000_0000 0xdfff_ffff RapidIO 512M -* 0xe000_0000 0xe000_ffff CCSR 1M +* 0xc000_0000 0xc00f_ffff FPGA 1M +* 0xe000_0000 0xe00f_ffff CCSR 1M (mapped by CCSRBAR) * 0xe200_0000 0xe2ff_ffff PCI1 IO 16M -* 0xf800_0000 0xf80f_ffff BCSR 1M -* 0xfe00_0000 0xffff_ffff FLASH (boot bank) 32M +* 0xfc00_0000 0xffff_ffff FLASH 64M * * Notes: * CCSRBAR and L2-as-SRAM don't need a configured Local Access Window.
@@ -49,9 +48,11 @@struct law_entry law_table[] = {SET_LAW_ENTRY (1 ,CFG_DDR_SDRAM_BASE ,LAW_SIZE_512M ,LAW_TRGT_IF_DDR ),SET_LAW_ENTRY (2 ,CFG_PCI1_MEM_PHYS ,LAW_SIZE_512M ,LAW_TRGT_IF_PCI ), -SET_LAW_ENTRY (3 ,CFG_LBC_FLASH_BASE ,LAW_SIZE_128M ,LAW_TRGT_IF_LBC ), +SET_LAW_ENTRY (3 ,CFG_LBC_FLASH_BASE ,LAW_SIZE_64M ,LAW_TRGT_IF_LBC ),SET_LAW_ENTRY (4 ,CFG_PCI1_IO_PHYS ,LAW_SIZE_16M ,LAW_TRGT_IF_PCI ), -SET_LAW_ENTRY (5 ,CFG_RIO_MEM_BASE ,LAWAR_SIZE_512M ,LAW_TRGT_IF_RIO ), +#if defined(CFG_FPGA_BASE) +SET_LAW_ENTRY (5 ,CFG_FPGA_BASE ,LAWAR_SIZE_1M ,LAW_TRGT_IF_LBC ), +#endif };int num_law_entries =ARRAY_SIZE (law_table);
board/socrates/socrates.c +7 -1
@@ -37,6 +37,9 @@#include <fdt_support.h> #include <asm/io.h> +#if defined(CFG_FPGA_BASE ) +#include "upm_table.h" +#endif DECLARE_GLOBAL_DATA_PTR ;extern flash_info_t flash_info[];/* FLASH chips info */
@@ -76,7 +79,10 @@ int checkboard (void)* Initialize local bus. */ local_bus_init (); - +#if defined(CFG_FPGA_BASE ) +/* Init UPMA for FPGA access */ +upmconfig (UPMA , (uint *)UPMTableA,sizeof (UPMTableA)/sizeof (int )); +#endif return 0 ; }
board/socrates/tlb.c +8 -17
@@ -46,16 +46,13 @@ struct fsl_e_tlb_entry tlb_table[] = {/* -* TLB 0, 1: 128M Non-cacheable, guarded -* 0xf8000000 128M FLASH +* TLB 0: 64M Non-cacheable, guarded +* 0xfc000000 64M FLASH * Out of reset this entry is only 4K. */ SET_TLB_ENTRY (1 ,CFG_FLASH_BASE ,CFG_FLASH_BASE ,MAS3_SX |MAS3_SW |MAS3_SR ,MAS2_I |MAS2_G , 0, 1, BOOKE_PAGESZ_64M, 1), -SET_TLB_ENTRY (1 ,CFG_FLASH_BASE +0x4000000 ,CFG_FLASH_BASE +0x4000000 , -MAS3_SX |MAS3_SW |MAS3_SR ,MAS2_I |MAS2_G , - 0, 0, BOOKE_PAGESZ_64M, 1),/* * TLB 2: 256M Non-cacheable, guarded
@@ -73,21 +70,15 @@ struct fsl_e_tlb_entry tlb_table[] = { MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 0, 3, BOOKE_PAGESZ_256M, 1), +#if defined(CFG_FPGA_BASE )/* -* TLB 4: 256M Non-cacheable, guarded -* 0xc0000000 256M Rapid IO MEM First half -*/ -SET_TLB_ENTRY (1 ,CFG_RIO_MEM_BASE ,CFG_RIO_MEM_BASE , -MAS3_SX |MAS3_SW |MAS3_SR ,MAS2_I |MAS2_G , -0 ,4 ,BOOKE_PAGESZ_256M ,1 ), - -/* -* TLB 5: 256M Non-cacheable, guarded -* 0xd0000000 256M Rapid IO MEM Second half +* TLB 4: 1M Non-cacheable, guarded +* 0xc0000000 1M FPGA and NAND */ -SET_TLB_ENTRY (1 ,CFG_RIO_MEM_BASE +0x10000000 ,CFG_RIO_MEM_BASE +0x10000000 , + SET_TLB_ENTRY(1, CFG_FPGA_BASE, CFG_FPGA_BASE, MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, - 0, 5, BOOKE_PAGESZ_256M, 1), + 0, 4, BOOKE_PAGESZ_1M, 1), +#endif /* * TLB 6: 64M Non-cacheable, guarded
include/configs/socrates.h +4 -5
@@ -216,11 +216,6 @@#define CFG_EEPROM_PAGE_WRITE_ENABLE /* necessary for the LM75 chip */ #define CFG_EEPROM_PAGE_WRITE_BITS 4 -/* RapidIO MMU */ -#define CFG_RIO_MEM_BASE 0xc0000000/* base address */ -#define CFG_RIO_MEM_PHYS CFG_RIO_MEM_BASE -#define CFG_RIO_MEM_SIZE 0x20000000/* 128M */ -/* * General PCI * Memory space is mapped 1-1.
@@ -414,4 +409,8 @@#define CONFIG_DOS_PARTITION 1#define CONFIG_USB_STORAGE 1 +/* FPGA and NAND */ +#define CFG_FPGA_BASE 0xc0000000 +#define CFG_BR3_PRELIM 0xc0001881/* UPMA, 32-bit */ +#define CFG_OR3_PRELIM 0xfff00000/* 1 MB */ #endif /* __CONFIG_H */
Signature · 1 line
1.5.4.2
PATCH 5/8 Socrates: added missed file with UPMA configuration data.
From: Sergei Poselenov <[email protected]>
--- board/socrates/upm_table.h | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) create mode 100644 board/socrates/upm_table.h
board/socrates/upm_table.h new file +55 -0
@@ -0,0 +1,55 @@ +/* +* (C) Copyright 2008 +* Sergei Poselenov, Emcraft Systems, sposelenov at emcraft.com. +* +* Copyright 2004, 2007 Freescale Semiconductor, Inc. +* (C) Copyright 2003 Motorola Inc. +* Xianghua Xiao, (X.Xiao at motorola.com) +* +* (C) Copyright 2000 +* Wolfgang Denk, DENX Software Engineering, wd at 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 +*/ + +#ifndef __UPM_TABLE_H +#define __UPM_TABLE_H + +/* UPM Table Configuration Code for FPGA access */ +static const unsigned int UPMTableA[] = +{ +0x00fcfc00 ,0x00fcfc00 ,0x00fcfc00 ,0x00fcfc00 ,//Words 0 to 3 +0x00fcfc00 ,0x00fcfc00 ,0x00fcfc00 ,0x00fcfc05 ,//Words 4 to 7 +0x00fcfc00 ,0x00fcfc00 ,0x00fcfc04 ,0x00fcfc04 ,//Words 8 to 11 +0x00fcfc04 ,0x00fcfc04 ,0x00fcfc04 ,0x00fcfc04 ,//Words 12 to 15 +0x00fcfc04 ,0x00fcfc04 ,0x00fcfc00 ,0xfffffc00 ,//Words 16 to 19 +0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,0xfffffc01 ,//Words 20 to 23 +0x0ffffc00 ,0x0ffffc00 ,0x0ffffc00 ,0x00f3fc04 ,//Words 24 to 27 +0x0ffffc00 ,0xfffffc01 ,0xfffffc00 ,0xfffffc01 ,//Words 28 to 31 +0x0ffffc00 ,0x00f3fc04 ,0x00f3fc04 ,0x00f3fc04 ,//Words 32 to 35 +0x00f3fc04 ,0x00f3fc04 ,0x00f3fc04 ,0x00f3fc04 ,//Words 36 to 39 +0x00f3fc04 ,0x0ffffc00 ,0xfffffc00 ,0xfffffc00 ,//Words 40 to 43 +0xfffffc01 ,0xfffffc00 ,0xfffffc00 ,0xfffffc01 ,//Words 44 to 47 +0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,//Words 48 to 51 +0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,//Words 52 to 55 +0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,0xfffffc01 ,//Words 56 to 59 +0xfffffc00 ,0xfffffc00 ,0xfffffc00 ,0xfffffc01 //Words 60 to 63 +}; + +#endif
Signature · 1 line
1.5.4.2
PATCH 6/8 NAND: Added support for 128-bit OOB, adapted
From: Sergei Poselenov <[email protected]>
--- drivers/mtd/nand/nand_base.c | 46 ++++++++++++++++++++++++++++++----------- include/linux/mtd/mtd-abi.h | 2 +- 2 files changed, 34 insertions(+), 14 deletions(-)
drivers/mtd/nand/nand_base.c +33 -13
@@ -113,18 +113,22 @@ static struct nand_oobinfo nand_oob_64 = { .oobfree = { {2, 38} } }; -/* This is used for padding purposes in nand_write_oob */ -static u_char ffchars[] = { -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , -0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff , +static struct nand_oobinfo nand_oob_128 = { + .useecc =MTD_NANDECC_AUTOPLACE , + .eccbytes =48 , + .eccpos = { +80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 , +88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 , +96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 , +104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 , +112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 , +120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 }, + .oobfree = { {2 ,78 } } }; +/* This is used for padding purposes in nand_write_oob */ +static u_char *ffchars; +/* * NAND low-level MTD interface functions */
@@ -193,6 +197,10 @@ static void nand_release_device (struct mtd_info *mtd) {struct nand_chip *this = mtd->priv; this->select_chip (mtd,-1 );/* De-select the NAND device */ +if (ffchars) { +kfree (ffchars); + ffchars =NULL ; + } }#endif
@@ -891,7 +899,7 @@ static int nand_write_page (struct mtd_info *mtd, struct nand_chip *this, int pa u_char *oob_buf, struct nand_oobinfo *oobsel, int cached) { int i, status; -u_char ecc_code[32 ]; +u_char ecc_code[NAND_MAX_OOBSIZE ];int eccmode = oobsel->useecc ? this->eccmode :NAND_ECC_NONE ;uint *oob_config = oobsel->eccpos;int datidx =0 , eccidx =0 , eccsteps = this->eccsteps;
@@ -1112,8 +1120,8 @@ static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,int read =0 , oob =0 , ecc_status =0 , ecc_failed =0 ;struct nand_chip *this = mtd->priv;u_char *data_poi, *oob_data = oob_buf; -u_char ecc_calc[32 ]; -u_char ecc_code[32 ]; +u_char ecc_calc[NAND_MAX_OOBSIZE ]; +u_char ecc_code[NAND_MAX_OOBSIZE ];int eccmode, eccsteps;unsigned *oob_config;int datidx;
@@ -1811,6 +1819,15 @@ static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *if (NAND_MUST_PAD (this)) {/* Write out desired data */ this->cmdfunc (mtd,NAND_CMD_SEQIN , mtd->oobblock, page & this->pagemask); +if (!ffchars) { +if (!(ffchars =kmalloc (mtd->oobsize,GFP_KERNEL ))) { +DEBUG (MTD_DEBUG_LEVEL0 ,"nand_write_oob: " +"No memory for padding array, need %d bytes" , mtd->oobsize); + ret = -ENOMEM ; + goto out; + } +memset (ffchars,0xff , mtd->oobsize); + }/* prepad 0xff for partial programming */ this->write_buf (mtd, ffchars, column);/* write data */
@@ -2479,6 +2496,9 @@ int nand_scan (struct mtd_info *mtd, int maxchips)case 64 : this->autooob = &nand_oob_64;break ; +case 128 : + this->autooob = &nand_oob_128; +break ;default :printk (KERN_WARNING "No oob scheme defined for oobsize %d\n" , mtd->oobsize);
include/linux/mtd/mtd-abi.h +1 -1
@@ -93,7 +93,7 @@ struct nand_oobinfo {uint32_t useecc;uint32_t eccbytes;uint32_t oobfree[8 ][2 ]; - uint32_t eccpos[32]; + uint32_t eccpos[48]; };#endif /* __MTD_ABI_H__ */
Signature · 1 line
1.5.4.2
PATCH 7/8 Socrates: NAND support added. Changed the U-Boot base address and
From: Sergei Poselenov <[email protected]>
--- board/socrates/Makefile | 2 +- board/socrates/config.mk | 3 +- board/socrates/nand.c | 218 ++++++++++++++++++++++++++++++++++++++++++++ include/configs/socrates.h | 8 ++- 4 files changed, 227 insertions(+), 4 deletions(-) create mode 100644 board/socrates/nand.c
board/socrates/Makefile +1 -1
@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a # -COBJS := $(BOARD).o law.o tlb.o sdram.o +COBJS := $(BOARD).o law.o tlb.o sdram.o nand.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
board/socrates/config.mk +1 -2
@@ -25,6 +25,5 @@ # # socrates board # default CCARBAR is at 0xff700000 -# assume U-Boot is less than 256k # -TEXT_BASE = 0xfffc0000 +TEXT_BASE = 0xfffa0000
board/socrates/nand.c new file +218 -0
218 lines not on this page · raw message
include/configs/socrates.h +7 -1
@@ -165,7 +165,7 @@#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET#define CFG_MONITOR_LEN (256 * 1024)/* Reserve 256kB for Mon*/ -#define CFG_MALLOC_LEN (128 * 1024)/* Reserved for malloc */ +#define CFG_MALLOC_LEN (256 * 1024)/* Reserved for malloc */ /* Serial Port */
@@ -413,4 +413,10 @@#define CFG_FPGA_BASE 0xc0000000#define CFG_BR3_PRELIM 0xc0001881/* UPMA, 32-bit */ #define CFG_OR3_PRELIM 0xfff00000/* 1 MB */ + +#define CFG_NAND_BASE (CFG_FPGA_BASE + 0x70) +#define CFG_MAX_NAND_DEVICE 1 +#define NAND_MAX_CHIPS 1 +#define CONFIG_CMD_NAND +#endif /* __CONFIG_H */
Signature · 1 line
1.5.4.2
PATCH 8/8 Socrates: Added FPGA base address update in FDT.
From: Sergei Poselenov <[email protected]>
--- board/socrates/socrates.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
board/socrates/socrates.c +10 -0
@@ -224,5 +224,15 @@ ft_board_setup(void *blob, bd_t *bd)if (rc)printf ("Unable to update property NOR mapping, err=%s\n" ,fdt_strerror (rc)); + +#if defined (CFG_FPGA_BASE ) +memset (val,0 ,sizeof (val)); + val[0 ] =CFG_FPGA_BASE ; + rc =fdt_find_and_setprop (blob,"/localbus/fpga" ,"virtual-reg" , + val,sizeof (val),1 ); +if (rc) +printf ("Unable to update property \"fpga\", err=%s\n" , +fdt_strerror (rc)); +#endif }#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
Signature · 1 line
1.5.4.2
PATCH 7/8 Socrates: NAND support added. Changed the U-Boot base address and
In reply to Wolfgang DenkHi
Quoted 63 lines · Wolfgang Denk
From: Sergei Poselenov <[email protected]>
Signed-off-by Sergei Poselenov <[email protected]>--- board/socrates/Makefile | 2 +- board/socrates/config.mk | 3 +- board/socrates/nand.c | 218 ++++++++++++++++++++++++++++++++++++++++++++ include/configs/socrates.h | 8 ++- 4 files changed, 227 insertions(+), 4 deletions(-) create mode 100644 board/socrates/nand.cboard/socrates/Makefile +1
-1@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a # -COBJS := $(BOARD).o law.o tlb.o sdram.o +COBJS := $(BOARD).o law.o tlb.o sdram.o nand.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))board/socrates/config.mk +1
-2@@ -25,6 +25,5 @@ # # socrates board # default CCARBAR is at 0xff700000 -# assume U-Boot is less than 256k # -TEXT_BASE = 0xfffc0000 +TEXT_BASE = 0xfffa0000board/socrates/nand.c new file +21
-0@@ -0,0 +1,218 @@ +/* +* (C) Copyright 2008 +* Sergei Poselenov, Emcraft Systems, sposelenov at emcraft.com. +* +* 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
board/socrates/nand.c line 31
Quoted 10 lines
board/socrates/nand.c new file +10
-0+*/ + +#include <common.h> + +#if defined(CFG_NAND_BASE ) +#include <nand.h> +#include <asm/errno.h> +#include <asm/io.h> + +int state;
Can that variable be made static?
Regards, Magnus
PATCH 7/8 Socrates: NAND support added. Changed the U-Boot base address and
Hello,
Quoted 8 lines
board/socrates/nand.c line 31
Quoted 3 lines
board/socrates/nand.c new file +3
-0+#include <asm/io.h> + +int state;Can that variable be made static?
Regards, Magnus
Yes, it can.
Wolfgang, what is the best way to handle this? Should I re-do the patch?
Regards,
Sergei
PATCH 7/8 Socrates: NAND support added. Changed the U-Boot base address and
Quoted 8 lines · Sergei Poselenov
Hello,
Quoted 6 lines
board/socrates/nand.c line 31
Quoted 3 lines
board/socrates/nand.c new file +3
-0+#include <asm/io.h> + +int state;Can that variable be made static?
Quoted 7 lines
Quoted 2 lines
Regards, Magnus
Yes, it can.
Wolfgang, what is the best way to handle this? Should I re-do the patch?
I have made the change in my tree.
Andy