2009-04-29 10:25:12 +03:00
|
|
|
/*
|
|
|
|
* "Ingenic flash tool" - flash the Ingenic CPU via USB
|
|
|
|
*
|
|
|
|
* (C) Copyright 2009
|
|
|
|
* Author: Marek Lindner <lindner_marek@yahoo.de>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* version 3 as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* 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., 51 Franklin Street, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
2009-04-30 20:26:14 +03:00
|
|
|
#ifndef __USB_BOOT_DEFINES_H__
|
|
|
|
#define __USB_BOOT_DEFINES_H__
|
2009-04-27 11:15:27 +03:00
|
|
|
|
|
|
|
/* #define dprintf(x...) printf(x) */
|
|
|
|
#define SDRAM_SIZE ( 16 * 1024 * 1024 )
|
|
|
|
#define CODE_SIZE ( 4 * 1024 * 1024 )
|
|
|
|
/* #define START_ADDR ( 0x80000000 + SDRAM_SIZE - CODE_SIZE ) */
|
|
|
|
|
|
|
|
#define NAND_MAX_BLK_NUM 10000000 /* ((Hand.nand_pn / Hand.nand_ppb) + 1) */
|
|
|
|
#define NAND_MAX_PAGE_NUM 1073740824 /*Hand.nand_pn */
|
|
|
|
#define NAND_SECTION_NUM 23
|
|
|
|
#define MAX_TRANSFER_SIZE 0x100000
|
|
|
|
#define MAX_LOAD_SIZE 0x3000
|
|
|
|
#define NAND_MAX_BYTE_NUM (Hand.nand_pn * Hand.nand_ps)
|
|
|
|
#define IOCTL_INBUF_SIZE 512
|
|
|
|
#define IOCTL_OUTBUF_SIZE 512
|
|
|
|
#define MAX_DEV_NUM 16
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum CPUTYPE {
|
2009-04-27 11:15:27 +03:00
|
|
|
JZ4740,
|
|
|
|
JZ4750,
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum USB_Boot_State {
|
2009-04-27 11:15:27 +03:00
|
|
|
DISCONNECT,
|
|
|
|
CONNECT,
|
|
|
|
BOOT,
|
|
|
|
UNBOOT
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum OPTION {
|
2009-04-27 11:15:27 +03:00
|
|
|
OOB_ECC,
|
|
|
|
OOB_NO_ECC,
|
|
|
|
NO_OOB,
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum NOR_OPS_TYPE {
|
2009-04-27 11:15:27 +03:00
|
|
|
NOR_INIT = 0,
|
|
|
|
NOR_QUERY,
|
|
|
|
NOR_WRITE,
|
|
|
|
NOR_ERASE_CHIP,
|
|
|
|
NOR_ERASE_SECTOR
|
|
|
|
};
|
|
|
|
|
|
|
|
enum NOR_FLASH_TYPE
|
|
|
|
{
|
|
|
|
NOR_AM29 = 0,
|
|
|
|
NOR_SST28,
|
|
|
|
NOR_SST39x16,
|
|
|
|
NOR_SST39x8
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum NAND_OPS_TYPE {
|
2009-04-27 11:15:27 +03:00
|
|
|
NAND_QUERY = 0,
|
|
|
|
NAND_INIT,
|
|
|
|
NAND_MARK_BAD,
|
|
|
|
NAND_READ_OOB,
|
|
|
|
NAND_READ_RAW,
|
|
|
|
NAND_ERASE,
|
|
|
|
NAND_READ,
|
|
|
|
NAND_PROGRAM,
|
|
|
|
NAND_READ_TO_RAM
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum SDRAM_OPS_TYPE {
|
2009-04-27 11:15:27 +03:00
|
|
|
SDRAM_LOAD,
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
enum DATA_STRUCTURE_OB {
|
2009-04-27 11:15:27 +03:00
|
|
|
DS_flash_info ,
|
|
|
|
DS_hand
|
|
|
|
};
|
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
struct fw_args_t {
|
2009-04-27 11:15:27 +03:00
|
|
|
/* CPU ID */
|
|
|
|
unsigned int cpu_id;
|
2009-04-29 10:25:12 +03:00
|
|
|
|
2009-04-27 11:15:27 +03:00
|
|
|
/* PLL args */
|
|
|
|
unsigned char ext_clk;
|
|
|
|
unsigned char cpu_speed;
|
|
|
|
unsigned char phm_div;
|
|
|
|
unsigned char use_uart;
|
|
|
|
unsigned int boudrate;
|
|
|
|
|
|
|
|
/* SDRAM args */
|
|
|
|
unsigned char bus_width;
|
|
|
|
unsigned char bank_num;
|
|
|
|
unsigned char row_addr;
|
|
|
|
unsigned char col_addr;
|
|
|
|
unsigned char is_mobile;
|
|
|
|
unsigned char is_busshare;
|
|
|
|
|
|
|
|
/* debug args */
|
|
|
|
unsigned char debug_ops;
|
|
|
|
unsigned char pin_num;
|
|
|
|
unsigned int start;
|
|
|
|
unsigned int size;
|
|
|
|
|
|
|
|
/* for align */
|
|
|
|
/* unsigned char align1; */
|
|
|
|
/* unsigned char align2; */
|
2009-04-29 10:25:12 +03:00
|
|
|
} __attribute__((packed));
|
2009-04-27 11:15:27 +03:00
|
|
|
|
2009-04-30 20:26:14 +03:00
|
|
|
struct hand_t {
|
2009-04-27 11:15:27 +03:00
|
|
|
|
|
|
|
/* nand flash info */
|
|
|
|
int pt; /* cpu type */
|
2009-04-30 20:26:14 +03:00
|
|
|
unsigned int nand_bw; /* bus width */
|
|
|
|
unsigned int nand_rc; /* row cycle */
|
|
|
|
unsigned int nand_ps; /* page size */
|
|
|
|
unsigned int nand_ppb; /* page number per block */
|
|
|
|
unsigned int nand_force_erase;
|
|
|
|
unsigned int nand_pn; /* page number in total */
|
|
|
|
unsigned int nand_os; /* oob size */
|
|
|
|
unsigned int nand_eccpos;
|
|
|
|
unsigned int nand_bbpage;
|
|
|
|
unsigned int nand_bbpos;
|
|
|
|
unsigned int nand_plane;
|
|
|
|
unsigned int nand_bchbit;
|
|
|
|
unsigned int nand_wppin;
|
|
|
|
unsigned int nand_bpc; /* block number per chip */
|
2009-04-27 11:15:27 +03:00
|
|
|
|
2009-04-29 10:25:12 +03:00
|
|
|
struct fw_args_t fw_args;
|
|
|
|
} __attribute__((packed));
|
|
|
|
|
2009-04-29 14:20:02 +03:00
|
|
|
struct nand_in_t {
|
2009-04-29 10:25:12 +03:00
|
|
|
unsigned char dev;
|
|
|
|
unsigned char max_chip;
|
|
|
|
unsigned char *buf;
|
|
|
|
unsigned char *cs_map;
|
|
|
|
unsigned int start;
|
|
|
|
unsigned int length;
|
|
|
|
unsigned int option;
|
|
|
|
|
|
|
|
int (* check) (unsigned char *,unsigned char *,unsigned int);
|
|
|
|
};
|
2009-04-27 11:15:27 +03:00
|
|
|
|
2009-04-29 14:20:02 +03:00
|
|
|
struct nand_out_t {
|
2009-04-29 10:25:12 +03:00
|
|
|
unsigned char *status;
|
|
|
|
};
|
|
|
|
|
2009-04-29 14:20:02 +03:00
|
|
|
struct sdram_in_t {
|
2009-04-29 10:25:12 +03:00
|
|
|
unsigned char dev;
|
|
|
|
unsigned char *buf;
|
|
|
|
unsigned int start;
|
|
|
|
unsigned int length;
|
|
|
|
unsigned int option;
|
|
|
|
};
|
2009-04-27 11:15:27 +03:00
|
|
|
|
2009-04-30 20:26:14 +03:00
|
|
|
#endif /* __USB_BOOT_DEFINES_H__ */
|