X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Forion_nand.c;h=77a03f2752334a62a1a26c60978cfc4d4eb1a42a;hb=a93b404161dc42f8dee805c8f95bc4974aded9cb;hp=6e88f82a4d3c2a0c42e897e1155e95f331f8c801;hpb=266c423bbdea4e09c6b1f6cd216f872f8e3ef3f8;p=openocd.git diff --git a/src/flash/orion_nand.c b/src/flash/orion_nand.c index 6e88f82a4d..77a03f2752 100644 --- a/src/flash/orion_nand.c +++ b/src/flash/orion_nand.c @@ -30,16 +30,16 @@ #include "armv4_5.h" -typedef struct orion_nand_controller_s +struct orion_nand_controller { - struct target_s *target; + struct target *target; struct arm_nand_data io; uint32_t cmd; uint32_t addr; uint32_t data; -} orion_nand_controller_t; +}; #define CHECK_HALTED \ do { \ @@ -49,91 +49,84 @@ typedef struct orion_nand_controller_s } \ } while (0) -static int orion_nand_command(struct nand_device_s *device, uint8_t command) +static int orion_nand_command(struct nand_device *nand, uint8_t command) { - orion_nand_controller_t *hw = device->controller_priv; - target_t *target = hw->target; + struct orion_nand_controller *hw = nand->controller_priv; + struct target *target = hw->target; CHECK_HALTED; target_write_u8(target, hw->cmd, command); return ERROR_OK; } -static int orion_nand_address(struct nand_device_s *device, uint8_t address) +static int orion_nand_address(struct nand_device *nand, uint8_t address) { - orion_nand_controller_t *hw = device->controller_priv; - target_t *target = hw->target; + struct orion_nand_controller *hw = nand->controller_priv; + struct target *target = hw->target; CHECK_HALTED; target_write_u8(target, hw->addr, address); return ERROR_OK; } -static int orion_nand_read(struct nand_device_s *device, void *data) +static int orion_nand_read(struct nand_device *nand, void *data) { - orion_nand_controller_t *hw = device->controller_priv; - target_t *target = hw->target; + struct orion_nand_controller *hw = nand->controller_priv; + struct target *target = hw->target; CHECK_HALTED; target_read_u8(target, hw->data, data); return ERROR_OK; } -static int orion_nand_write(struct nand_device_s *device, uint16_t data) +static int orion_nand_write(struct nand_device *nand, uint16_t data) { - orion_nand_controller_t *hw = device->controller_priv; - target_t *target = hw->target; + struct orion_nand_controller *hw = nand->controller_priv; + struct target *target = hw->target; CHECK_HALTED; target_write_u8(target, hw->data, data); return ERROR_OK; } -static int orion_nand_slow_block_write(struct nand_device_s *device, uint8_t *data, int size) +static int orion_nand_slow_block_write(struct nand_device *nand, uint8_t *data, int size) { while (size--) - orion_nand_write(device, *data++); + orion_nand_write(nand, *data++); return ERROR_OK; } -static int orion_nand_fast_block_write(struct nand_device_s *device, uint8_t *data, int size) +static int orion_nand_fast_block_write(struct nand_device *nand, uint8_t *data, int size) { - orion_nand_controller_t *hw = device->controller_priv; + struct orion_nand_controller *hw = nand->controller_priv; int retval; - hw->io.chunk_size = device->page_size; + hw->io.chunk_size = nand->page_size; retval = arm_nandwrite(&hw->io, data, size); if (retval == ERROR_NAND_NO_BUFFER) - retval = orion_nand_slow_block_write(device, data, size); + retval = orion_nand_slow_block_write(nand, data, size); return retval; } -static int orion_nand_reset(struct nand_device_s *device) +static int orion_nand_reset(struct nand_device *nand) { - return orion_nand_command(device, NAND_CMD_RESET); + return orion_nand_command(nand, NAND_CMD_RESET); } -static int orion_nand_controller_ready(struct nand_device_s *device, int timeout) +static int orion_nand_controller_ready(struct nand_device *nand, int timeout) { return 1; } -static int orion_nand_register_commands(struct command_context_s *cmd_ctx) -{ - return ERROR_OK; -} - -int orion_nand_device_command(struct command_context_s *cmd_ctx, char *cmd, - char **args, int argc, - struct nand_device_s *device) +NAND_DEVICE_COMMAND_HANDLER(orion_nand_device_command) { - orion_nand_controller_t *hw; + struct orion_nand_controller *hw; uint32_t base; uint8_t ale, cle; - if (argc != 3) { + if (CMD_ARGC != 3) { LOG_ERROR("arguments must be: \n"); return ERROR_NAND_DEVICE_INVALID; } @@ -144,15 +137,15 @@ int orion_nand_device_command(struct command_context_s *cmd_ctx, char *cmd, return ERROR_NAND_DEVICE_INVALID; } - device->controller_priv = hw; - hw->target = get_target(args[1]); + nand->controller_priv = hw; + hw->target = get_target(CMD_ARGV[1]); if (!hw->target) { - LOG_ERROR("target '%s' not defined", args[1]); + LOG_ERROR("target '%s' not defined", CMD_ARGV[1]); free(hw); return ERROR_NAND_DEVICE_INVALID; } - COMMAND_PARSE_NUMBER(u32, args[2], base); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], base); cle = 0; ale = 1; @@ -166,12 +159,12 @@ int orion_nand_device_command(struct command_context_s *cmd_ctx, char *cmd, return ERROR_OK; } -static int orion_nand_init(struct nand_device_s *device) +static int orion_nand_init(struct nand_device *nand) { return ERROR_OK; } -nand_flash_controller_t orion_nand_controller = +struct nand_flash_controller orion_nand_controller = { .name = "orion", .command = orion_nand_command, @@ -182,7 +175,6 @@ nand_flash_controller_t orion_nand_controller = .reset = orion_nand_reset, .controller_ready = orion_nand_controller_ready, .nand_device_command = orion_nand_device_command, - .register_commands = orion_nand_register_commands, .init = orion_nand_init, };