Change return value on error.
[fw/openocd] / src / flash / nand / lpc3180.c
index 93d00d5c8415db91e0287c2cb079f56499a4e9d7..9d8cbae176bd379891b0aa58f2ed6d0b8b8e2398 100644 (file)
@@ -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;i<idx;i++){
-                        if( (0x00ffffff&*(uint32_t *)(ecc_hw_buffer+i*8)) != (0x00ffffff&*(uint32_t *)(ecc_flash_buffer+8+i*16)) )
+                        if( (0x00ffffff&*(uint32_t *)(void *)(ecc_hw_buffer+i*8)) != (0x00ffffff&*(uint32_t *)(void *)(ecc_flash_buffer+8+i*16)) )
                             LOG_WARNING("ECC mismatch at 256 bytes size block= %d at page= 0x%" PRIx32,i*2+1,page);
-                        if( (0x00ffffff&*(uint32_t *)(ecc_hw_buffer+4+i*8)) != (0x00ffffff&*(uint32_t *)(ecc_flash_buffer+12+i*16)) )
+                        if( (0x00ffffff&*(uint32_t *)(void *)(ecc_hw_buffer+4+i*8)) != (0x00ffffff&*(uint32_t *)(void *)(ecc_flash_buffer+12+i*16)) )
                             LOG_WARNING("ECC mismatch at 256 bytes size block= %d at page= 0x%" PRIx32,i*2+2,page);
                     }                
                 }
@@ -1146,7 +1138,7 @@ static int lpc3180_read_page(struct nand_device *nand, uint32_t page, uint8_t *d
 static int lpc3180_controller_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)
        {
@@ -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,
 };