X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fflash%2Fnand%2Flpc3180.c;h=9d8cbae176bd379891b0aa58f2ed6d0b8b8e2398;hb=2a34cc8eb6a8431ecebad1279d19ce919978a778;hp=93d00d5c8415db91e0287c2cb079f56499a4e9d7;hpb=3e51d893ed3d1273b5487e05196f00fe3d14773d;p=fw%2Fopenocd diff --git a/src/flash/nand/lpc3180.c b/src/flash/nand/lpc3180.c index 93d00d5c8..9d8cbae17 100644 --- a/src/flash/nand/lpc3180.c +++ b/src/flash/nand/lpc3180.c @@ -45,15 +45,7 @@ NAND_DEVICE_COMMAND_HANDLER(lpc3180_nand_device_command) { if (CMD_ARGC < 3) { - LOG_WARNING("incomplete 'lpc3180' nand flash configuration"); - return ERROR_FLASH_BANK_INVALID; - } - - struct target *target = get_target(CMD_ARGV[1]); - if (NULL == target) - { - LOG_ERROR("target '%s' not defined", CMD_ARGV[1]); - return ERROR_NAND_DEVICE_INVALID; + return ERROR_COMMAND_SYNTAX_ERROR; } uint32_t osc_freq; @@ -63,7 +55,6 @@ NAND_DEVICE_COMMAND_HANDLER(lpc3180_nand_device_command) lpc3180_info = malloc(sizeof(struct lpc3180_nand_controller)); nand->controller_priv = lpc3180_info; - lpc3180_info->target = target; lpc3180_info->osc_freq = osc_freq; if ((lpc3180_info->osc_freq < 1000) || (lpc3180_info->osc_freq > 20000)) @@ -106,9 +97,10 @@ static int lpc3180_pll(int fclkin, uint32_t pll_ctrl) return (m / (2 * p)) * (fclkin / n); } -static float lpc3180_cycle_time(struct lpc3180_nand_controller *lpc3180_info) +static float lpc3180_cycle_time(struct nand_device *nand) { - struct target *target = lpc3180_info->target; + struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; + struct target *target = nand->target; uint32_t sysclk_ctrl, pwr_ctrl, hclkdiv_ctrl, hclkpll_ctrl; int sysclk; int hclk; @@ -159,7 +151,7 @@ static float lpc3180_cycle_time(struct lpc3180_nand_controller *lpc3180_info) static int lpc3180_init(struct nand_device *nand) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; int bus_width = nand->bus_width ? : 8; int address_cycles = nand->address_cycles ? : 3; int page_size = nand->page_size ? : 512; @@ -234,7 +226,7 @@ static int lpc3180_init(struct nand_device *nand) target_write_u32(target, 0x200b8030, mlc_icr_value); /* calculate NAND controller timings */ - cycle = lpc3180_cycle_time(lpc3180_info); + cycle = lpc3180_cycle_time(nand); twp = ((40 / cycle) + 1); twh = ((20 / cycle) + 1); @@ -280,7 +272,7 @@ static int lpc3180_init(struct nand_device *nand) /* calculate NAND controller timings */ - cycle = lpc3180_cycle_time(lpc3180_info); + cycle = lpc3180_cycle_time(nand); r_setup = w_setup = 0; r_hold = w_hold = 10 / cycle; @@ -301,7 +293,7 @@ static int lpc3180_init(struct nand_device *nand) static int lpc3180_reset(struct nand_device *nand) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -343,7 +335,7 @@ static int lpc3180_reset(struct nand_device *nand) static int lpc3180_command(struct nand_device *nand, uint8_t command) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -373,7 +365,7 @@ static int lpc3180_command(struct nand_device *nand, uint8_t command) static int lpc3180_address(struct nand_device *nand, uint8_t address) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -403,7 +395,7 @@ static int lpc3180_address(struct nand_device *nand, uint8_t address) static int lpc3180_write_data(struct nand_device *nand, uint16_t data) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -433,7 +425,7 @@ static int lpc3180_write_data(struct nand_device *nand, uint16_t data) static int lpc3180_read_data(struct nand_device *nand, void *data) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -495,7 +487,7 @@ static int lpc3180_read_data(struct nand_device *nand, void *data) static int lpc3180_write_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; int retval; uint8_t status; uint8_t *page_buffer; @@ -831,7 +823,7 @@ static int lpc3180_write_page(struct nand_device *nand, uint32_t page, uint8_t * static int lpc3180_read_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; uint8_t *page_buffer; if (target->state != TARGET_HALTED) @@ -1119,9 +1111,9 @@ static int lpc3180_read_page(struct nand_device *nand, uint32_t page, uint8_t *d target_read_memory(target, target_mem_base+SPARE_OFFS, 4, 16, ecc_flash_buffer); target_read_memory(target, target_mem_base+ECC_OFFS, 4, 8, ecc_hw_buffer); for(i=0;icontroller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -1194,7 +1186,7 @@ static int lpc3180_controller_ready(struct nand_device *nand, int timeout) static int lpc3180_nand_ready(struct nand_device *nand, int timeout) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -1242,7 +1234,7 @@ static int lpc3180_nand_ready(struct nand_device *nand, int timeout) static int lpc3180_tc_ready(struct nand_device *nand, int timeout) { struct lpc3180_nand_controller *lpc3180_info = nand->controller_priv; - struct target *target = lpc3180_info->target; + struct target *target = nand->target; if (target->state != TARGET_HALTED) { @@ -1324,7 +1316,7 @@ COMMAND_HANDLER(handle_lpc3180_select_command) if (lpc3180_info->selected_controller == LPC3180_MLC_CONTROLLER) command_print(CMD_CTX, "%s controller selected", selected[lpc3180_info->selected_controller]); else{ - command_print(CMD_CTX, lpc3180_info->is_bulk?"%s controller selected bulk mode is avaliable":"%s controller selected bulk mode is not avaliable", selected[lpc3180_info->selected_controller]); + command_print(CMD_CTX, lpc3180_info->is_bulk?"%s controller selected bulk mode is available":"%s controller selected bulk mode is not available", selected[lpc3180_info->selected_controller]); } @@ -1363,6 +1355,5 @@ struct nand_flash_controller lpc3180_nand_controller = { .read_data = lpc3180_read_data, .write_page = lpc3180_write_page, .read_page = lpc3180_read_page, - .controller_ready = lpc3180_controller_ready, .nand_ready = lpc3180_nand_ready, };