[embeded] Port u-boot to mini2440 (2)
Step one -> Port NAND flash driver:
1.Edit /deivers/mtd/nand/s3c2410_nand.c
diff -uNr u-boot-2009.08_0319_ok/drivers/mtd/nand/s3c2410_nand.c u-boot-2009.08_nand/drivers/mtd/nand/s3c2410_nand.c --- u-boot-2009.08_0319_ok/drivers/mtd/nand/s3c2410_nand.c 2017-03-19 15:24:54.000000000 +0800 +++ u-boot-2009.08_nand/drivers/mtd/nand/s3c2410_nand.c 2017-04-25 14:17:10.341918688 +0800 @@ -34,6 +34,8 @@ #define __REGi(x) (*(volatile unsigned int *)(x)) #define NF_BASE 0x4e000000 + +#if 0 #define NFCONF __REGi(NF_BASE + 0x0) #define NFCMD __REGb(NF_BASE + 0x4) #define NFADDR __REGb(NF_BASE + 0x8) @@ -42,7 +44,9 @@ #define NFECC0 __REGb(NF_BASE + 0x14) #define NFECC1 __REGb(NF_BASE + 0x15) #define NFECC2 __REGb(NF_BASE + 0x16) +#endif +#if defined(CONFIG_S3C2410) #define S3C2410_NFCONF_EN (1<<15) #define S3C2410_NFCONF_512BYTE (1<<14) #define S3C2410_NFCONF_4STEP (1<<13) @@ -54,44 +58,64 @@ #define S3C2410_ADDR_NALE 4 #define S3C2410_ADDR_NCLE 8 +#endif + +#if defined(CONFIG_S3C2440) +#define S3C2410_NFCONT_EN (1<<0) +#define S3C2410_NFCONT_INITECC (1<<4) +#define S3C2410_NFCONT_nFCE (1<<1) +#define S3C2410_NFCONT_MAINECCLOCK (1<<5) +#define S3C2410_NFCONF_TACLS(x) ((x)<<12) +#define S3C2410_NFCONF_TWRPH0(x) ((x)<<8) +#define S3C2410_NFCONF_TWRPH1(x) ((x)<<4) + +#define S3C2410_ADDR_NALE 0x08 +#define S3C2410_ADDR_NCLE 0x0c +#endif + +ulong IO_ADDR_W = NF_BASE; static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) { - struct nand_chip *chip = mtd->priv; + //struct nand_chip *chip = mtd->priv; + S3C2410_NAND *nand = S3C2410_GetBase_NAND(); DEBUGN("hwcontrol(): 0x%02x 0x%02x\n", cmd, ctrl); if (ctrl & NAND_CTRL_CHANGE) { - ulong IO_ADDR_W = NF_BASE; + IO_ADDR_W = (ulong)nand; if (!(ctrl & NAND_CLE)) IO_ADDR_W |= S3C2410_ADDR_NCLE; if (!(ctrl & NAND_ALE)) IO_ADDR_W |= S3C2410_ADDR_NALE; - chip->IO_ADDR_W = (void *)IO_ADDR_W; + //chip->IO_ADDR_W = (void *)IO_ADDR_W; if (ctrl & NAND_NCE) - NFCONF &= ~S3C2410_NFCONF_nFCE; + nand->NFCONT &= ~S3C2410_NFCONT_nFCE; else - NFCONF |= S3C2410_NFCONF_nFCE; + nand->NFCONT |= S3C2410_NFCONT_nFCE; } if (cmd != NAND_CMD_NONE) - writeb(cmd, chip->IO_ADDR_W); + writeb(cmd, (void *)IO_ADDR_W); } static int s3c2410_dev_ready(struct mtd_info *mtd) { + S3C2410_NAND *nand = S3C2410_GetBase_NAND(); DEBUGN("dev_ready\n"); - return (NFSTAT & 0x01); + return (nand->NFSTAT & 0x01); } #ifdef CONFIG_S3C2410_NAND_HWECC void s3c2410_nand_enable_hwecc(struct mtd_info *mtd, int mode) { + S3C2410_NAND *nand = S3C2410_GetBase_NAND(); + DEBUGN("s3c2410_nand_enable_hwecc(%p, %d)\n", mtd, mode); - NFCONF |= S3C2410_NFCONF_INITECC; + nand->NFCONT |= S3C2410_NFCONT_INITECC; } static int s3c2410_nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, @@ -124,23 +148,27 @@ u_int32_t cfg; u_int8_t tacls, twrph0, twrph1; S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); + S3C2410_NAND *nand_reg = S3C2410_GetBase_NAND(); DEBUGN("board_nand_init()\n"); clk_power->CLKCON |= (1 << 4); /* initialize hardware */ - twrph0 = 3; twrph1 = 0; tacls = 0; + twrph0 = 4; twrph1 = 2; tacls = 0; - cfg = S3C2410_NFCONF_EN; + cfg = 0; cfg |= S3C2410_NFCONF_TACLS(tacls - 1); cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1); cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1); - NFCONF = cfg; + nand_reg->NFCONF = cfg; + + cfg = (0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(0<<6)|(0<<5)|(1<<4)|(0<<1)|(1<<0); + nand_reg->NFCONT = cfg; /* initialize nand_chip data structure */ - nand->IO_ADDR_R = nand->IO_ADDR_W = (void *)0x4e00000c; + nand->IO_ADDR_R = nand->IO_ADDR_W = (void *)&nand_reg->NFDATA; /* read_buf and write_buf are default */ /* read_byte and write_byte are default */
Step two -> Enable DM9000 driver:
1.Edit /drivers/net/dm9000x.c
diff -uNr u-boot-2009.08_0319_ok/drivers/net/dm9000x.c u-boot-2009.08_nand/drivers/net/dm9000x.c --- u-boot-2009.08_0319_ok/drivers/net/dm9000x.c 2017-03-19 15:24:55.000000000 +0800 +++ u-boot-2009.08_nand/drivers/net/dm9000x.c 2017-04-24 15:21:49.847997780 +0800 @@ -374,9 +374,10 @@ while (!(phy_read(1) & 0x20)) { /* autonegation complete bit */ udelay(1000); i++; - if (i == 10000) { - printf("could not establish link\n"); - return 0; + if (i == 1000) { + // printf("could not establish link\n"); + // return 0; + break; } }
2.Edit /net/nfs.c
diff -uNr u-boot-2009.08_0319_ok/net/nfs.c u-boot-2009.08_nand/net/nfs.c --- u-boot-2009.08_0319_ok/net/nfs.c 2017-03-19 15:24:54.000000000 +0800 +++ u-boot-2009.08_nand/net/nfs.c 2017-04-24 15:22:38.703995872 +0800 @@ -33,7 +33,7 @@ #define HASHES_PER_LINE 65 /* Number of "loading" hashes per line */ #define NFS_RETRY_COUNT 30 -#define NFS_TIMEOUT 2000UL +#define NFS_TIMEOUT (10*2000UL) static int fs_mounted = 0; static unsigned long rpc_id = 0;
3.Solution for issues about timeout:
Read the documents: u-boot: Retry count exceeded;starting again
http://log.anycle.com/skill/254.html
Step three -> Change some config files for mini2440:
1.Edit /include/s3c24x0.h
diff -uNr u-boot-2009.08_0319_ok/include/s3c24x0.h u-boot-2009.08_nand/include/s3c24x0.h --- u-boot-2009.08_0319_ok/include/s3c24x0.h 2017-03-19 15:24:58.000000000 +0800 +++ u-boot-2009.08_nand/include/s3c24x0.h 2017-04-24 16:00:02.819908239 +0800 @@ -143,6 +143,9 @@ S3C24X0_REG32 CLKCON; S3C24X0_REG32 CLKSLOW; S3C24X0_REG32 CLKDIVN; +#if defined(CONFIG_S3C2440) + S3C24X0_REG32 CAMDIVN; +#endif } /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER; @@ -178,6 +181,7 @@ /* NAND FLASH (see S3C2410 manual chapter 6) */ +#if defined(CONFIG_S3C2410) typedef struct { S3C24X0_REG32 NFCONF; S3C24X0_REG32 NFCMD; @@ -186,7 +190,27 @@ S3C24X0_REG32 NFSTAT; S3C24X0_REG32 NFECC; } /*__attribute__((__packed__))*/ S3C2410_NAND; - +#endif +#if defined(CONFIG_S3C2440) +typedef struct { + S3C24X0_REG32 NFCONF; + S3C24X0_REG32 NFCONT; + S3C24X0_REG32 NFCMD; + S3C24X0_REG32 NFADDR; + S3C24X0_REG32 NFDATA; + S3C24X0_REG32 NFMECCD0; + S3C24X0_REG32 NFMECCD1; + S3C24X0_REG32 NFSECCD; + S3C24X0_REG32 NFSTAT; + S3C24X0_REG32 NFESTAT0; + S3C24X0_REG32 NFESTAT1; + S3C24X0_REG32 NFMECC0; + S3C24X0_REG32 NFMECC1; + S3C24X0_REG32 NFSECC; + S3C24X0_REG32 NFSBLK; + S3C24X0_REG32 NFEBLK; +} /*__attribute__((__packed__))*/ S3C2410_NAND; +#endif /* UART (see manual chapter 11) */ typedef struct { @@ -339,8 +363,17 @@ S3C24X0_REG8 OUT_FIFO_CNT2_REG; S3C24X0_REG8 res16[3]; #endif /* __BIG_ENDIAN */ + //S3C24X0_USB_DEV_FIFOS fifo[5]; + //S3C24X0_USB_DEV_DMAS dma[5]; + + S3C24X0_REG32 res17[8]; S3C24X0_USB_DEV_FIFOS fifo[5]; - S3C24X0_USB_DEV_DMAS dma[5]; + S3C24X0_REG32 res18[8]; + S3C24X0_USB_DEV_DMAS ep1; + S3C24X0_USB_DEV_DMAS ep2; + S3C24X0_REG32 res19[8]; + S3C24X0_USB_DEV_DMAS ep3; + S3C24X0_USB_DEV_DMAS ep4; } /*__attribute__((__packed__))*/ S3C24X0_USB_DEVICE; @@ -523,6 +556,12 @@ S3C24X0_REG32 GSTATUS2; S3C24X0_REG32 GSTATUS3; S3C24X0_REG32 GSTATUS4; + + S3C24X0_REG32 res9[3]; + S3C24X0_REG32 MSLCON; + S3C24X0_REG32 GPJCON; + S3C24X0_REG32 GPJDAT; + S3C24X0_REG32 GPJUP; #endif } /*__attribute__((__packed__))*/ S3C24X0_GPIO; @@ -717,6 +756,7 @@ S3C24X0_REG32 SDIDCNT; S3C24X0_REG32 SDIDSTA; S3C24X0_REG32 SDIFSTA; +#if 0 #ifdef __BIG_ENDIAN S3C24X0_REG8 res[3]; S3C24X0_REG8 SDIDAT; @@ -724,7 +764,14 @@ S3C24X0_REG8 SDIDAT; S3C24X0_REG8 res[3]; #endif +#endif +#if defined(CONFIG_S3C2410) + S3C24X0_REG32 SDIDAT; + S3C24X0_REG32 SDIIMSK; +#elif defined(CONFIG_S3C2440) S3C24X0_REG32 SDIIMSK; + S3C24X0_REG32 SDIDAT; +#endif } /*__attribute__((__packed__))*/ S3C2410_SDI;
2.Edit /board/mini2440/mini2440.c
diff -uNr u-boot-2009.08_0319_ok/board/mini2440/mini2440.c u-boot-2009.08_nand/board/mini2440/mini2440.c --- u-boot-2009.08_0319_ok/board/mini2440/mini2440.c 2017-03-19 15:24:51.000000000 +0800 +++ u-boot-2009.08_nand/board/mini2440/mini2440.c 2017-04-24 17:27:18.859703769 +0800 @@ -30,6 +30,7 @@ #include <common.h> #include <s3c2410.h> +#include <video_fb.h> #if defined(CONFIG_CMD_NAND) #include <linux/mtd/nand.h> @@ -43,10 +44,10 @@ #define M_MDIV 0xC3 #define M_PDIV 0x4 #define M_SDIV 0x1 -#elif FCLK_SPEED==1 /* Fout = 202.8MHz */ -#define M_MDIV 0x5c -#define M_PDIV 0x4 -#define M_SDIV 0x0 +#elif FCLK_SPEED==1 /* Fout = 202.8MHz */ /* 405MHz now */ +#define M_MDIV 0x7f +#define M_PDIV 0x2 +#define M_SDIV 0x1 #endif #define USB_CLOCK 1 @@ -56,8 +57,8 @@ #define U_M_PDIV 0x3 #define U_M_SDIV 0x1 #elif USB_CLOCK==1 -#define U_M_MDIV 0x48 -#define U_M_PDIV 0x3 +#define U_M_MDIV 0x38 +#define U_M_PDIV 0x2 #define U_M_SDIV 0x2 #endif @@ -94,12 +95,12 @@ /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; - gpio->GPBCON = 0x00044556; + gpio->GPBCON = 0x00295551; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; - gpio->GPCUP = 0x0000FFFF; + gpio->GPCUP = 0xFFFFFFFF; gpio->GPDCON = 0xAAAAAAAA; - gpio->GPDUP = 0x0000FFFF; + gpio->GPDUP = 0xFFFFFFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; @@ -122,9 +123,56 @@ icache_enable(); dcache_enable(); +#if defined(CONFIG_MINI2440_LED) + gpio->GPBDAT = 0x00000181; +#endif return 0; } +#define MVAL (0) +#define MVAL_USED (0) +#define INVVDEN (1) +#define BSWP (0) +#define HWSWP (1) + +//TFT 240320 +#define LCD_XSIZE_TFT_240320 (240) +#define LCD_YSIZE_TFT_240320 (320) + +//TFT 240320 +#define HOZVAL_TFT_240320 (LCD_XSIZE_TFT_240320-1) +#define LINEVAL_TFT_240320 (LCD_YSIZE_TFT_240320-1) + +//Timing parameter for NEC3.5" +#define VBPD_240320 (3) +#define VFPD_240320 (10) +#define VSPW_240320 (1) + +#define HBPD_240320 (5) +#define HFPD_240320 (2) +#define HSPW_240320_NEC (36) +#define HSPW_240320_TD (23) + +#define CLKVAL_TFT_240320 (3) + +void board_video_init(GraphicDevice *pGD){ + S3C24X0_LCD *const lcd = S3C24X0_GetBase_LCD();//s3c24x0_get_base_lcd(); + S3C2410_NAND *const nand = S3C2410_GetBase_NAND();//s3c2410_get_base_nand(); + + lcd->LCDCON1 = 0x00000378; + lcd->LCDCON2 = (VBPD_240320<<24)|(LINEVAL_TFT_240320<<14)|(VFPD_240320<<6)|(VSPW_240320); + lcd->LCDCON3 = (HBPD_240320<<19)|(HOZVAL_TFT_240320<<8)|(HFPD_240320); + + if((nand->NFCONF)&0x08){ + lcd->LCDCON4 = (MVAL<<8)|(HSPW_240320_TD); + }else{ + lcd->LCDCON4 = (MVAL<<8)|(HSPW_240320_NEC); + } + + lcd->LCDCON5 = 0x00000f09; + lcd->LPCSEL = 0x00000000; +} + int dram_init (void) { gd->bd->bi_dram[0].start = PHYS_SDRAM_1; @@ -133,6 +181,7 @@ return 0; } +#if 0 #if defined(CONFIG_CMD_NAND) extern ulong nand_probe(ulong physadr); @@ -178,3 +227,14 @@ printf ("%4lu MB\n", nand_probe((ulong)nand) >> 20); } #endif + + +#endif +#ifdef CONFIG_CMD_NET +int board_eth_init(bd_t *bis){ + int rc = 0; + rc = dm9000_initialize(bis); + return rc; +} +#endif +
3.Edit a very important config file: /include/configs/mini2440.h
diff -uNr u-boot-2009.08_0319_ok/include/configs/mini2440.h u-boot-2009.08_nand/include/configs/mini2440.h --- u-boot-2009.08_0319_ok/include/configs/mini2440.h 2017-03-19 15:24:58.000000000 +0800 +++ u-boot-2009.08_nand/include/configs/mini2440.h 2017-04-25 14:32:11.961911857 +0800 @@ -46,6 +46,8 @@ #define CONFIG_ARM920T 1 /* This is an ARM920T Core */ #define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2410 SoC */ #define CONFIG_MINI2440 1 /* on a friendly-arm SBC-2410X Board */ +#define CONFIG_MINI2440_LED 1 +#define CONFIG_S3C2410_NAND_SKIP_BAD 1 /* input clock of PLL */ #define CONFIG_SYS_CLK_FREQ 12000000/* the SBC2410X has 12MHz input clock */ @@ -63,9 +65,20 @@ /* * Hardware drivers */ +#if 0 #define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */ #define CS8900_BASE 0x19000300 #define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */ +#endif +#define CONFIG_NET_MULTI 1 +#define CONFIG_NET_RETRY_COUNT 20 +#define CONFIG_DRIVER_DM9000 1 +#define CONFIG_DM9000_BASE 0x20000300 +#define DM9000_IO CONFIG_DM9000_BASE +#define DM9000_DATA (CONFIG_DM9000_BASE + 4) +#define CONFIG_DM9000_USE_16BIT 1 +#define CONFIG_DM9000_NO_SROM 1 +#undef CONFIG_DM9000_DEBUG /* * select serial console configuration @@ -105,17 +118,21 @@ #define CONFIG_CMD_ELF #define CONFIG_CMD_PING +#define CONFIG_CMD_NAND +#define CONFIG_CMD_REGINFO +#define CONFIG_CMD_FAT +#define CONFIG_CMD_JFFS2 +//#define CONFIG_CMD_USB #define CONFIG_BOOTDELAY 3 -#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/nfs " \ - "nfsroot=192.168.0.1:/friendly-arm/rootfs_netserv " \ - "ip=192.168.0.69:192.168.0.1:192.168.0.1:255.255.255.0:debian:eth0:off" +#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0" #define CONFIG_ETHADDR 08:00:3e:26:0a:5b #define CONFIG_NETMASK 255.255.255.0 #define CONFIG_IPADDR 192.168.0.69 -#define CONFIG_SERVERIP 192.168.0.1 +#define CONFIG_SERVERIP 192.168.0.52 +#define CONFIG_OVERWRITE_ETHADDR_ONCE /*#define CONFIG_BOOTFILE "elinos-lart" */ -#define CONFIG_BOOTCOMMAND "dhcp; bootm" +#define CONFIG_BOOTCOMMAND "nand read 30008000 0x80000 300000;bootm" #if defined(CONFIG_CMD_KGDB) #define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */ @@ -127,7 +144,7 @@ * Miscellaneous configurable options */ #define CONFIG_SYS_LONGHELP /* undef to save memory */ -#define CONFIG_SYS_PROMPT "[ ~ljh@GDLC ]# " /* Monitor Command Prompt */ +#define CONFIG_SYS_PROMPT "[ ~nicholas@anycle.com ]# " /* Monitor Command Prompt */ #define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */ #define CONFIG_SYS_MAXARGS 16 /* max number of command args */ @@ -136,7 +153,7 @@ #define CONFIG_SYS_MEMTEST_START 0x30000000 /* memtest works on */ #define CONFIG_SYS_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */ -#define CONFIG_SYS_LOAD_ADDR 0x33000000 /* default load address */ +#define CONFIG_SYS_LOAD_ADDR 0x30008000 /* default load address */ /* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */ /* it to wrap 100 times (total 1562500) to get 1 sec. */ @@ -173,6 +190,7 @@ /* #define CONFIG_AMD_LV400 1 /\* uncomment this if you have a LV400 flash *\/ */ #define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */ +//#define CONFIG_SST_VF1601 1 /* uncomment this if you have a AM29LV160DB flash */ #define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max number of memory banks */ @@ -192,15 +210,54 @@ #define CONFIG_SYS_FLASH_ERASE_TOUT (5*CONFIG_SYS_HZ) /* Timeout for Flash Erase */ #define CONFIG_SYS_FLASH_WRITE_TOUT (5*CONFIG_SYS_HZ) /* Timeout for Flash Write */ -#define CONFIG_ENV_IS_IN_FLASH 1 -#define CONFIG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */ +//#define CONFIG_ENV_IS_IN_FLASH 1 +//#define CONFIG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */ + +#define CONFIG_CMD_EEPROM +#define CONFIG_CMD_I2C + +#define CONFIG_DRIVER_S3C24X0_I2C 1 +#define CONFIG_HARD_I2C 1 + +#define CONFIG_SYS_I2C_SPEED 100000 +#define CONFIG_SYS_I2C_SLAVE 0x7f + +#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 +#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 + +#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW 0x07 +#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4 + +#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10 +#define CONFIG_SYS_EEPROM_PAGE_WRITE_ENABLE + +#define CONFIG_ENV_IS_IN_NAND 1 +#define CONFIG_ENV_OFFSET 0X60000 +#define CONFIG_ENV_SIZE 0x20000 + +#ifdef CONFIG_SST_VF1601 +#define PHYS_FLASH_SIZE 0x00200000 +#define CONFIG_SYS_MAX_FLASH_SECT (32) +#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET) +#endif + /*----------------------------------------------------------------------- * NAND flash settings */ #if defined(CONFIG_CMD_NAND) -#define CONFIG_NAND_S3C2440 +#define CONFIG_NAND_S3C2410 +#define CONFIG_SYS_NAND_BASE 0x4E000000 #define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */ +#define SECTORSIZE 512 +#define SECTORSIZE_2K 2048 +#define NAND_SECTOR_SIZE SECTORSIZE +#define NAND_SECTOR_SIZE_2K SECTORSIZE_2K +#define NAND_BLOCK_MASK 511 +#define NAND_BLOCK_MASK_2K 2047 +#define NAND_MAX_CHIPS 1 +#define CONFIG_MTD_NAND_VERIFY_WRITE +#define CONFIG_SYS_64BIT_VSPRINTF #endif /* CONFIG_CMD_NAND */ #define CONFIG_SETUP_MEMORY_TAGS @@ -212,10 +269,65 @@ #define CONFIG_CMDLINE_EDITING -#ifdef CONFIG_CMDLINE_EDITING -#undef CONFIG_AUTO_COMPLETE -#else +//#ifdef CONFIG_CMDLINE_EDITING +//#undef CONFIG_AUTO_COMPLETE +//#else #define CONFIG_AUTO_COMPLETE +//#endif + +#if 1 +//#define CONFIG_USB_OHCI +//#define CONFIG_USB_STORAGE +#define CONFIG_DOS_PARTITION +#define CONFIG_SYS_DEVICE_DEREGISTER +#define CONFIG_SUPPORT_VFAT +#define LITTLEENDIAN +#endif + +#define CONFIG_JFFS2_NAND 1 +#define CONFIG_JFFS2_DEV "nand0" +#define CONFIG_JFFS2_PART_SIZE 0X480000 +#define CONFIG_JFFS2_PART_OFFSET 0x80000 + +#define CONFIG_JFFS2_CMDLINE 1 +#define MTDIDS_DEFAULT "nand0=nandflash0" +#define MTDPARTS_DEFAULT "mtdparts=nandflash0:384k(bootloader),"\ + "128k(params),"\ + "5m(kernel),"\ + "-(root)" + +#define ENABLE_CMD_LOADB_X 1 +#define ENABLE_CMD_NAND_YAFFS 1 +#define ENABLE_CMD_NAND_YAFFS_SKIPFB 1 + +#if 0 +#define CONFIG_CMD_BMP +#define CONFIG_VIDEO +#define CONFIG_VIDEO_S3C2410 +#define CONFIG_VIDEO_LOGO +#define CONFIG_FB_16BPP_PIXEL_SWAP + +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_VIDEO_BMP_LOGO +#define CONFIG_CFB_CONSOLE +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SPLASH_SCREEN +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (240*320 + 1024 + 100) +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_CMD_UNZIP +#define LCD_VIDEO_ADDR 0x33d00000 + +#define VIDEO_KBD_INIT_FCT 0 +#define VIDEO_TSTC_FCT serial_tstc +#define VIDEO_GETC_FCT serial_getc + +#endif + +#if 0 +#define CONFIG_CMD_MMC +#define CONFIG_MMC 1 +#define CONFIG_MMC_S3C 1 +#define CFG_MMC_BASE 0xff000000 #endif #endif /* __CONFIG_H */
4.Others config file:
diff -uNr u-boot-2009.08_0319_ok/common/serial.c u-boot-2009.08_nand/common/serial.c --- u-boot-2009.08_0319_ok/common/serial.c 2017-03-19 15:24:58.000000000 +0800 +++ u-boot-2009.08_nand/common/serial.c 2017-04-25 09:46:58.722041514 +0800 @@ -59,7 +59,7 @@ #else return &serial0_device; #endif -#elif defined(CONFIG_S3C2410) +#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) #if defined(CONFIG_SERIAL1) return &s3c24xx_serial0_device; #elif defined(CONFIG_SERIAL2) @@ -134,7 +134,7 @@ #if defined (CONFIG_STUART) serial_register(&serial_stuart_device); #endif -#if defined(CONFIG_S3C2410) +#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) serial_register(&s3c24xx_serial0_device); serial_register(&s3c24xx_serial1_device); serial_register(&s3c24xx_serial2_device); diff -uNr u-boot-2009.08_0319_ok/cpu/arm920t/s3c24x0/usb.c u-boot-2009.08_nand/cpu/arm920t/s3c24x0/usb.c --- u-boot-2009.08_0319_ok/cpu/arm920t/s3c24x0/usb.c 2017-03-19 15:24:55.000000000 +0800 +++ u-boot-2009.08_nand/cpu/arm920t/s3c24x0/usb.c 2017-04-24 15:26:52.567985959 +0800 @@ -24,11 +24,11 @@ #include <common.h> #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) -# if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) +# if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) #if defined(CONFIG_S3C2400) # include <s3c2400.h> -#elif defined(CONFIG_S3C2410) +#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) # include <s3c2410.h> #endif @@ -68,5 +68,5 @@ return 0; } -# endif /* defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) */ +# endif /* defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) defined(CONFIG_S3C2440) */ #endif /* defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) */ diff -uNr u-boot-2009.08_0319_ok/cpu/arm920t/s3c24x0/usb_ohci.c u-boot-2009.08_nand/cpu/arm920t/s3c24x0/usb_ohci.c --- u-boot-2009.08_0319_ok/cpu/arm920t/s3c24x0/usb_ohci.c 2017-03-19 15:24:55.000000000 +0800 +++ u-boot-2009.08_nand/cpu/arm920t/s3c24x0/usb_ohci.c 2017-04-25 09:57:27.334036751 +0800 @@ -40,7 +40,7 @@ #if defined(CONFIG_S3C2400) #include <s3c2400.h> -#elif defined(CONFIG_S3C2410) +#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) #include <s3c2410.h> #endif diff -uNr u-boot-2009.08_0319_ok/drivers/i2c/s3c24x0_i2c.c u-boot-2009.08_nand/drivers/i2c/s3c24x0_i2c.c --- u-boot-2009.08_0319_ok/drivers/i2c/s3c24x0_i2c.c 2017-03-19 15:24:55.000000000 +0800 +++ u-boot-2009.08_nand/drivers/i2c/s3c24x0_i2c.c 2017-04-24 15:29:54.219978865 +0800 @@ -29,7 +29,7 @@ #include <common.h> #if defined(CONFIG_S3C2400) #include <s3c2400.h> -#elif defined(CONFIG_S3C2410) +#elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) #include <s3c2410.h> #endif #include <i2c.h> @@ -60,7 +60,7 @@ { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -#ifdef CONFIG_S3C2410 +#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) return (gpio->GPEDAT & 0x8000) >> 15; #endif #ifdef CONFIG_S3C2400 @@ -79,7 +79,7 @@ { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -#ifdef CONFIG_S3C2410 +#if defined( CONFIG_S3C2410 ) || defined(CONFIG_S3C2440) gpio->GPEDAT = (gpio->GPEDAT & ~0x4000) | (x&1) << 14; #endif #ifdef CONFIG_S3C2400 @@ -136,7 +136,7 @@ } if ((status & I2CSTAT_BSY) || GetI2CSDA () == 0) { -#ifdef CONFIG_S3C2410 +#if defined( CONFIG_S3C2410 ) || defined(CONFIG_S3C2440) ulong old_gpecon = gpio->GPECON; #endif #ifdef CONFIG_S3C2400 @@ -144,7 +144,7 @@ #endif /* bus still busy probably by (most) previously interrupted transfer */ -#ifdef CONFIG_S3C2410 +#if defined( CONFIG_S3C2410 ) || defined(CONFIG_S3C2440) /* set I2CSDA and I2CSCL (GPE15, GPE14) to GPIO */ gpio->GPECON = (gpio->GPECON & ~0xF0000000) | 0x10000000; #endif @@ -168,7 +168,7 @@ udelay (1000); /* restore pin functions */ -#ifdef CONFIG_S3C2410 +#if defined( CONFIG_S3C2410 ) || defined(CONFIG_S3C2440) gpio->GPECON = old_gpecon; #endif #ifdef CONFIG_S3C2400 diff -uNr u-boot-2009.08_0319_ok/drivers/usb/host/ohci-hcd.c u-boot-2009.08_nand/drivers/usb/host/ohci-hcd.c --- u-boot-2009.08_0319_ok/drivers/usb/host/ohci-hcd.c 2017-03-19 15:24:55.000000000 +0800 +++ u-boot-2009.08_nand/drivers/usb/host/ohci-hcd.c 2017-04-24 15:31:41.611974672 +0800 @@ -67,6 +67,7 @@ #if defined(CONFIG_ARM920T) || \ defined(CONFIG_S3C2400) || \ defined(CONFIG_S3C2410) || \ + defined(CONFIG_S3C2440) || \ defined(CONFIG_S3C6400) || \ defined(CONFIG_440EP) || \ defined(CONFIG_PCI_OHCI) || \ diff -uNr u-boot-2009.08_0319_ok/include/common.h u-boot-2009.08_nand/include/common.h --- u-boot-2009.08_0319_ok/include/common.h 2017-03-19 15:24:56.000000000 +0800 +++ u-boot-2009.08_nand/include/common.h 2017-04-24 15:33:14.735971035 +0800 @@ -493,7 +493,7 @@ ulong get_OPB_freq (void); ulong get_PCI_freq (void); #endif -#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || \ +#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) || \ defined(CONFIG_LH7A40X) || defined(CONFIG_S3C6400) ulong get_FCLK (void); ulong get_HCLK (void); diff -uNr u-boot-2009.08_0319_ok/include/serial.h u-boot-2009.08_nand/include/serial.h --- u-boot-2009.08_0319_ok/include/serial.h 2017-03-19 15:24:56.000000000 +0800 +++ u-boot-2009.08_nand/include/serial.h 2017-04-24 15:33:59.263969296 +0800 @@ -37,7 +37,7 @@ #endif -#if defined(CONFIG_S3C2410) +#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) extern struct serial_device s3c24xx_serial0_device; extern struct serial_device s3c24xx_serial1_device; extern struct serial_device s3c24xx_serial2_device; diff -uNr u-boot-2009.08_0319_ok/lib_arm/board.c u-boot-2009.08_nand/lib_arm/board.c --- u-boot-2009.08_0319_ok/lib_arm/board.c 2017-03-19 15:24:58.000000000 +0800 +++ u-boot-2009.08_nand/lib_arm/board.c 2017-04-24 16:54:17.135781156 +0800 @@ -172,7 +172,7 @@ printf ("\n\n%s\n\n", version_string); #if defined(CONFIG_MINI2440_LED) - struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio(); + S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();//s3c24x0_get_base_gpio(); gpio->GPBDAT = 0x101; #endif printf("\n\n%s\n\n", version_string); @@ -317,7 +317,7 @@ #endif #if defined(CONFIG_MINI2440_LED) - struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio(); + S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();//s3c24x0_get_base_gpio(); #endif /* Pointer is writable since we allocated a register for it */
标签: embedded
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
- 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
- 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
- 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
- Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
分类
最新评论
- Goonog
i get it now :) - 萧
@Fluzak:The web host... - Fluzak
Nice blog here! Also... - Albertarive
In my opinion you co... - ChesterHep
What does it plan? - ChesterHep
No, opposite. - mojoheadz
Everything is OK!... - Josephmaigh
I just want to say t... - ChesterHep
What good topic - AnthonyBub
Certainly, never it ...
发表评论: