mirror of
git://projects.qi-hardware.com/xburst-tools.git
synced 2024-11-26 02:10:16 +02:00
Code cleanup
This commit is contained in:
parent
8c36acee57
commit
0bf753e06a
32
ingenic.c
32
ingenic.c
@ -180,7 +180,7 @@ void ingenic_close(void *hndl) {
|
||||
int ingenic_rebuild(void *hndl) {
|
||||
HANDLE;
|
||||
|
||||
handle->cfg.cpu_id = 0x4750; //CPUID(handle->type);
|
||||
handle->cfg.cpu_id = CPUID(handle->type);
|
||||
|
||||
CFGOPT("EXTCLK", ext_clk, v <= 27 && v >= 12);
|
||||
CFGOPT("CPUSPEED", cpu_speed, (v % 12) == 0);
|
||||
@ -197,10 +197,8 @@ int ingenic_rebuild(void *hndl) {
|
||||
CFGOPT("SDRAM_COLADDR", col_addr, 1);
|
||||
CFGOPT("SDRAM_ISMOBILE", is_mobile, v == 0 || v == 1);
|
||||
CFGOPT("SDRAM_ISBUSSHARE", is_busshare, v == 0 || v == 1);
|
||||
CFGOPT("DEBUGOPS", debug_ops, 1);
|
||||
CFGOPT("PINNUM", pin_num, 1);
|
||||
CFGOPT("START", start, 1);
|
||||
CFGOPT("SIZE", size, 1);
|
||||
|
||||
memset(&handle->cfg.debug, 0, sizeof(ingenic_stage1_debug_t));
|
||||
|
||||
handle->total_sdram_size = (uint32_t)
|
||||
(2 << (handle->cfg.row_addr + handle->cfg.col_addr - 1)) * 2
|
||||
@ -220,6 +218,24 @@ static int ingenic_address(void *usb, uint32_t base) {
|
||||
return usbdev_vendor(usb, USBDEV_TODEV, VR_SET_DATA_ADDRESS, (base >> 16), base & 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
int ingenic_stage1_debugop(void *hndl, const char *filename, uint32_t op, uint32_t pin, uint32_t base, uint32_t size) {
|
||||
HANDLE;
|
||||
|
||||
handle->cfg.debug.debug_ops = op;
|
||||
handle->cfg.debug.pin_num = pin;
|
||||
handle->cfg.debug.start = base;
|
||||
handle->cfg.debug.size = size;
|
||||
|
||||
debug(LEVEL_DEBUG, "Debug configuration dump:\n");
|
||||
hexdump(&handle->cfg, sizeof(firmware_config_t));
|
||||
|
||||
int ret = ingenic_loadstage(handle, INGENIC_STAGE1, filename);
|
||||
|
||||
memset(&handle->cfg.debug, 0, sizeof(ingenic_stage1_debug_t));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ingenic_loadstage(void *hndl, int id, const char *file) {
|
||||
HANDLE;
|
||||
|
||||
@ -253,11 +269,8 @@ int ingenic_loadstage(void *hndl, int id, const char *file) {
|
||||
|
||||
FILE *fd = fopen(file, "rb");
|
||||
|
||||
if(fd == NULL) {
|
||||
debug(LEVEL_ERROR, "Ingenic: cannot load file `%s'\n", file);
|
||||
|
||||
if(fd == NULL)
|
||||
return -1;
|
||||
}
|
||||
|
||||
fseek(fd, 0, SEEK_END);
|
||||
int size = ftell(fd);
|
||||
@ -307,3 +320,4 @@ int ingenic_loadstage(void *hndl, int id, const char *file) {
|
||||
|
||||
return ingenic_redetect(hndl);
|
||||
}
|
||||
|
||||
|
22
ingenic.h
22
ingenic.h
@ -31,6 +31,7 @@ int ingenic_type(void *hndl);
|
||||
|
||||
int ingenic_rebuild(void *hndl);
|
||||
int ingenic_loadstage(void *hndl, int id, const char *filename);
|
||||
int ingenic_stage1_debugop(void *device, const char *filename, uint32_t op, uint32_t pin, uint32_t base, uint32_t size);
|
||||
|
||||
#define CMDSET_SPL 1
|
||||
#define CMDSET_USBBOOT 2
|
||||
@ -38,14 +39,23 @@ int ingenic_loadstage(void *hndl, int id, const char *filename);
|
||||
#define INGENIC_STAGE1 1
|
||||
#define INGENIC_STAGE2 2
|
||||
|
||||
#define SPL_DEBUG_MEMTEST "1"
|
||||
#define SPL_DEBUG_GPIO_SET "2"
|
||||
#define SPL_DEBUG_GPIO_CLEAR "3"
|
||||
#define STAGE1_DEBUG_BOOT 0
|
||||
#define STAGE1_DEBUG_MEMTEST 1
|
||||
#define STAGE1_DEBUG_GPIO_SET 2
|
||||
#define STAGE1_DEBUG_GPIO_CLEAR 3
|
||||
|
||||
#define STAGE1_BASE 0x2000
|
||||
#define STAGE2_CODESIZE 0x400000
|
||||
#define SDRAM_BASE 0x80000000
|
||||
|
||||
typedef struct {
|
||||
/* debug args */
|
||||
uint8_t debug_ops;
|
||||
uint8_t pin_num;
|
||||
uint32_t start;
|
||||
uint32_t size;
|
||||
} ingenic_stage1_debug_t;
|
||||
|
||||
typedef struct {
|
||||
/* CPU ID */
|
||||
uint32_t cpu_id;
|
||||
@ -65,11 +75,7 @@ typedef struct {
|
||||
uint8_t is_mobile;
|
||||
uint8_t is_busshare;
|
||||
|
||||
/* debug args */
|
||||
uint8_t debug_ops;
|
||||
uint8_t pin_num;
|
||||
uint32_t start;
|
||||
uint32_t size;
|
||||
ingenic_stage1_debug_t debug;
|
||||
} __attribute__((packed)) firmware_config_t;
|
||||
|
||||
#endif
|
||||
|
@ -31,11 +31,4 @@ set NAND_BCHBIT 8 # Specify the hardware BCH algorithm for 4750 (4|8)
|
||||
set NAND_WPPIN 0 # Specify the write protect pin number
|
||||
set NAND_BLOCKPERCHIP 4096 # Specify the block number per chip,0 means ignore
|
||||
|
||||
# DEBUG
|
||||
set DEBUGOPS 0
|
||||
set PINNUM 0
|
||||
set START 0
|
||||
set SIZE 0
|
||||
|
||||
|
||||
rebuildcfg
|
||||
|
11
shell.c
11
shell.c
@ -304,7 +304,7 @@ static int builtin_source(int argc, char *argv[]) {
|
||||
int ret = shell_source(argv[1]);
|
||||
|
||||
if(ret == -1) {
|
||||
printf("Error while sourcing file %s\n", argv[1]);
|
||||
fprintf(stderr, "Error while sourcing file %s: %s\n", argv[1], strerror(errno));
|
||||
}
|
||||
|
||||
shell_exit = 0;
|
||||
@ -320,14 +320,9 @@ static int builtin_echo(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
for(int i = 1; i < argc; i++) {
|
||||
printf("%s", argv[i]);
|
||||
fputs(argv[i], stdout);
|
||||
|
||||
if(i < argc - 1) {
|
||||
printf(" ");
|
||||
|
||||
} else {
|
||||
printf("\n");
|
||||
}
|
||||
putchar((i < argc - 1) ? ' ' : '\n');
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
48
spl_cmdset.c
48
spl_cmdset.c
@ -36,14 +36,19 @@ const shell_command_t spl_cmdset[] = {
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
static int spl_load_stage1() {
|
||||
static int spl_stage1_op(uint32_t op, uint32_t pin, uint32_t base, uint32_t size) {
|
||||
if(cfg_getenv("STAGE1_FILE") == NULL) {
|
||||
printf("Variable STAGE1_FILE is not set\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ingenic_loadstage(shell_device(), INGENIC_STAGE1, cfg_getenv("STAGE1_FILE"));
|
||||
int ret = ingenic_stage1_debugop(shell_device(), cfg_getenv("STAGE1_FILE"), op, pin, base, size);
|
||||
|
||||
if(ret == -1)
|
||||
perror("ingenic_stage1_debugop");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int spl_memtest(int argc, char *argv[]) {
|
||||
@ -51,7 +56,7 @@ static int spl_memtest(int argc, char *argv[]) {
|
||||
printf("Usage: %s [BASE <SIZE>]\n", argv[0]);
|
||||
}
|
||||
|
||||
return spl_load_stage1(); // TODO
|
||||
return spl_stage1_op(STAGE1_DEBUG_BOOT, 0, 0, 0); // TODO
|
||||
}
|
||||
|
||||
static int spl_gpio(int argc, char *argv[]) {
|
||||
@ -62,30 +67,7 @@ static int spl_gpio(int argc, char *argv[]) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *old_debugops = strdup(cfg_getenv("DEBUGOPS")),
|
||||
*old_pinnum = strdup(cfg_getenv("PINNUM"));
|
||||
|
||||
cfg_setenv("DEBUGOPS", (!strcmp(argv[2], "1")) ?
|
||||
SPL_DEBUG_GPIO_SET : SPL_DEBUG_GPIO_CLEAR);
|
||||
cfg_setenv("PINNUM", argv[1]);
|
||||
|
||||
int ret = 0;
|
||||
|
||||
ret = shell_execute("rebuildcfg");
|
||||
|
||||
if(ret == -1)
|
||||
goto finally;
|
||||
|
||||
ret = spl_load_stage1();
|
||||
|
||||
finally:
|
||||
cfg_setenv("DEBUGOPS", old_debugops);
|
||||
cfg_setenv("PINNUM", old_pinnum);
|
||||
|
||||
free(old_debugops);
|
||||
free(old_pinnum);
|
||||
|
||||
return ret;
|
||||
return spl_stage1_op(!strcmp(argv[2], "1") ? STAGE1_DEBUG_GPIO_SET : STAGE1_DEBUG_GPIO_CLEAR, atoi(argv[1]), 0, 0);
|
||||
}
|
||||
|
||||
static int spl_boot(int argc, char *argv[]) {
|
||||
@ -93,9 +75,7 @@ static int spl_boot(int argc, char *argv[]) {
|
||||
printf("Usage: %s\n", argv[0]);
|
||||
}
|
||||
|
||||
int ret;
|
||||
|
||||
ret = spl_load_stage1();
|
||||
int ret = spl_stage1_op(STAGE1_DEBUG_BOOT, 0, 0, 0);
|
||||
|
||||
if(ret == -1)
|
||||
return -1;
|
||||
@ -106,5 +86,11 @@ static int spl_boot(int argc, char *argv[]) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ingenic_loadstage(shell_device(), INGENIC_STAGE2, cfg_getenv("STAGE2_FILE"));
|
||||
ret = ingenic_loadstage(shell_device(), INGENIC_STAGE2, cfg_getenv("STAGE2_FILE"));
|
||||
|
||||
if(ret == -1)
|
||||
perror("ingenic_loadstage");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user