ARM NAND I/O read function.
[openocd.git] / src / jtag / ft2232.c
index 3e7dd2a2d6d877e5319b03a4779eb126f1dae7cb..29b6389ced29d94a6fe7962f0feafb374a2b608a 100644 (file)
@@ -721,7 +721,7 @@ static int ft2232_send_and_recv(struct jtag_command* first, struct jtag_command*
                        if (type != SCAN_OUT)
                        {
                                scan_size = jtag_scan_size(cmd->cmd.scan);
-                               buffer    = calloc(CEIL(scan_size, 8), 1);
+                               buffer    = calloc(DIV_ROUND_UP(scan_size, 8), 1);
                                ft2232_read_scan(type, buffer, scan_size);
                                if (jtag_read_buffer(buffer, cmd->cmd.scan) != ERROR_OK)
                                        retval = ERROR_JTAG_QUEUE_FAILED;
@@ -962,7 +962,7 @@ static int ft2232_large_scan(struct scan_command* cmd, enum scan_type type, uint
        int bits_left = scan_size;
        int cur_byte  = 0;
        int last_bit;
-       uint8_t* receive_buffer  = malloc(CEIL(scan_size, 8));
+       uint8_t* receive_buffer  = malloc(DIV_ROUND_UP(scan_size, 8));
        uint8_t* receive_pointer = receive_buffer;
        uint32_t bytes_written;
        uint32_t bytes_read;
@@ -1182,7 +1182,7 @@ static int ft2232_predict_scan_out(int scan_size, enum scan_type type)
        if (type == SCAN_IN)    /* only from device to host */
        {
                /* complete bytes */
-               predicted_size += CEIL(num_bytes, 65536) * 3;
+               predicted_size += DIV_ROUND_UP(num_bytes, 65536) * 3;
 
                /* remaining bits - 1 (up to 7) */
                predicted_size += ((scan_size - 1) % 8) ? 2 : 0;
@@ -1190,7 +1190,7 @@ static int ft2232_predict_scan_out(int scan_size, enum scan_type type)
        else    /* host to device, or bidirectional */
        {
                /* complete bytes */
-               predicted_size += num_bytes + CEIL(num_bytes, 65536) * 3;
+               predicted_size += num_bytes + DIV_ROUND_UP(num_bytes, 65536) * 3;
 
                /* remaining bits -1 (up to 7) */
                predicted_size += ((scan_size - 1) % 8) ? 3 : 0;
@@ -1206,7 +1206,7 @@ static int ft2232_predict_scan_in(int scan_size, enum scan_type type)
        if (type != SCAN_OUT)
        {
                /* complete bytes */
-               predicted_size += (CEIL(scan_size, 8) > 1) ? (CEIL(scan_size, 8) - 1) : 0;
+               predicted_size += (DIV_ROUND_UP(scan_size, 8) > 1) ? (DIV_ROUND_UP(scan_size, 8) - 1) : 0;
 
                /* remaining bits - 1 */
                predicted_size += ((scan_size - 1) % 8) ? 1 : 0;
@@ -1506,7 +1506,7 @@ static int ft2232_execute_runtest(struct jtag_command *cmd)
        predicted_size = 0;
        if (tap_get_state() != TAP_IDLE)
                predicted_size += 3;
-       predicted_size += 3 * CEIL(cmd->cmd.runtest->num_cycles, 7);
+       predicted_size += 3 * DIV_ROUND_UP(cmd->cmd.runtest->num_cycles, 7);
        if (cmd->cmd.runtest->end_state != TAP_IDLE)
                predicted_size += 3;
        if (tap_get_end_state() != TAP_IDLE)
@@ -1605,7 +1605,7 @@ static int ft2232_execute_pathmove(struct jtag_command *cmd)
                        tap_state_name(path[num_states-1]));
 
        /* only send the maximum buffer size that FT2232C can handle */
-       predicted_size = 3 * CEIL(num_states, 7);
+       predicted_size = 3 * DIV_ROUND_UP(num_states, 7);
        if (ft2232_buffer_size + predicted_size + 1 > FT2232_BUFFER_SIZE)
        {
                if (ft2232_send_and_recv(first_unsent, cmd) != ERROR_OK)
@@ -1713,13 +1713,13 @@ static int ft2232_execute_sleep(struct jtag_command *cmd)
        int retval;
        retval = ERROR_OK;
 
-       DEBUG_JTAG_IO("sleep %i", cmd->cmd.sleep->us);
+       DEBUG_JTAG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
 
        if (ft2232_send_and_recv(first_unsent, cmd) != ERROR_OK)
                                retval = ERROR_JTAG_QUEUE_FAILED;
        first_unsent = cmd->next;
        jtag_sleep(cmd->cmd.sleep->us);
-       DEBUG_JTAG_IO("sleep %i usec while in %s",
+       DEBUG_JTAG_IO("sleep %" PRIi32 " usec while in %s",
                        cmd->cmd.sleep->us,
                        tap_state_name(tap_get_state()));
        return retval;
@@ -1949,7 +1949,7 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor
        {
                static const char* type_str[] =
                        {"BM", "AM", "100AX", "UNKNOWN", "2232C", "232R", "2232H", "4232H"};
-               unsigned no_of_known_types = sizeof(type_str) / sizeof(type_str[0]) - 1;
+               unsigned no_of_known_types = ARRAY_SIZE(type_str) - 1;
                unsigned type_index = ((unsigned)ftdi_device <= no_of_known_types)
                        ? ftdi_device : FT_DEVICE_UNKNOWN;
                LOG_INFO("device: %lu \"%s\"", ftdi_device, type_str[type_index]);
@@ -2034,7 +2034,7 @@ static int ft2232_init_libftdi(uint16_t vid, uint16_t pid, int more, int* try_mo
        ftdi_device = ftdic.type;
        static const char* type_str[] =
                {"AM", "BM", "2232C", "R", "2232H", "4232H", "Unknown"};
-       unsigned no_of_known_types = sizeof(type_str) / sizeof(type_str[0]) - 1;
+       unsigned no_of_known_types = ARRAY_SIZE(type_str) - 1;
        unsigned type_index = ((unsigned)ftdi_device < no_of_known_types)
                ? ftdi_device : no_of_known_types;
        LOG_DEBUG("FTDI chip type: %i \"%s\"", (int)ftdi_device, type_str[type_index]);
@@ -2801,9 +2801,9 @@ COMMAND_HANDLER(ft2232_handle_device_desc_command)
 {
        char *cp;
        char buf[200];
-       if (argc == 1)
+       if (CMD_ARGC == 1)
        {
-               ft2232_device_desc = strdup(args[0]);
+               ft2232_device_desc = strdup(CMD_ARGV[0]);
                cp = strchr(ft2232_device_desc, 0);
                /* under Win32, the FTD2XX driver appends an "A" to the end
                 * of the description, this examines the given desc
@@ -2833,9 +2833,9 @@ COMMAND_HANDLER(ft2232_handle_device_desc_command)
 
 COMMAND_HANDLER(ft2232_handle_serial_command)
 {
-       if (argc == 1)
+       if (CMD_ARGC == 1)
        {
-               ft2232_serial = strdup(args[0]);
+               ft2232_serial = strdup(CMD_ARGV[0]);
        }
        else
        {
@@ -2847,37 +2847,37 @@ COMMAND_HANDLER(ft2232_handle_serial_command)
 
 COMMAND_HANDLER(ft2232_handle_layout_command)
 {
-       if (argc == 0)
+       if (CMD_ARGC == 0)
                return ERROR_OK;
 
-       ft2232_layout = malloc(strlen(args[0]) + 1);
-       strcpy(ft2232_layout, args[0]);
+       ft2232_layout = malloc(strlen(CMD_ARGV[0]) + 1);
+       strcpy(ft2232_layout, CMD_ARGV[0]);
 
        return ERROR_OK;
 }
 
 COMMAND_HANDLER(ft2232_handle_vid_pid_command)
 {
-       if (argc > MAX_USB_IDS * 2)
+       if (CMD_ARGC > MAX_USB_IDS * 2)
        {
                LOG_WARNING("ignoring extra IDs in ft2232_vid_pid "
                                        "(maximum is %d pairs)", MAX_USB_IDS);
-               argc = MAX_USB_IDS * 2;
+               CMD_ARGC = MAX_USB_IDS * 2;
        }
-       if (argc < 2 || (argc & 1))
+       if (CMD_ARGC < 2 || (CMD_ARGC & 1))
        {
                LOG_WARNING("incomplete ft2232_vid_pid configuration directive");
-               if (argc < 2)
+               if (CMD_ARGC < 2)
                        return ERROR_COMMAND_SYNTAX_ERROR;
                /* remove the incomplete trailing id */
-               argc -= 1;
+               CMD_ARGC -= 1;
        }
 
        unsigned i;
-       for (i = 0; i < argc; i += 2)
+       for (i = 0; i < CMD_ARGC; i += 2)
        {
-               COMMAND_PARSE_NUMBER(u16, args[i], ft2232_vid[i >> 1]);
-               COMMAND_PARSE_NUMBER(u16, args[i + 1], ft2232_pid[i >> 1]);
+               COMMAND_PARSE_NUMBER(u16, CMD_ARGV[i], ft2232_vid[i >> 1]);
+               COMMAND_PARSE_NUMBER(u16, CMD_ARGV[i + 1], ft2232_pid[i >> 1]);
        }
 
        /*
@@ -2891,9 +2891,9 @@ COMMAND_HANDLER(ft2232_handle_vid_pid_command)
 
 COMMAND_HANDLER(ft2232_handle_latency_command)
 {
-       if (argc == 1)
+       if (CMD_ARGC == 1)
        {
-               ft2232_latency = atoi(args[0]);
+               ft2232_latency = atoi(CMD_ARGV[0]);
        }
        else
        {
@@ -3969,32 +3969,49 @@ static void ktlink_blink(void)
        buffer_write(high_direction);
 }
 
-static int ft2232_register_commands(struct command_context_s* cmd_ctx)
-{
-       register_command(cmd_ctx, NULL, "ft2232_device_desc",
-                       ft2232_handle_device_desc_command, COMMAND_CONFIG,
-                       "the USB device description of the FTDI FT2232 device");
-       register_command(cmd_ctx, NULL, "ft2232_serial",
-                       ft2232_handle_serial_command, COMMAND_CONFIG,
-                       "the serial number of the FTDI FT2232 device");
-       register_command(cmd_ctx, NULL, "ft2232_layout",
-                       ft2232_handle_layout_command, COMMAND_CONFIG,
-                       "the layout of the FT2232 GPIO signals used "
-                       "to control output-enables and reset signals");
-       register_command(cmd_ctx, NULL, "ft2232_vid_pid",
-                       ft2232_handle_vid_pid_command, COMMAND_CONFIG,
-                       "the vendor ID and product ID of the FTDI FT2232 device");
-       register_command(cmd_ctx, NULL, "ft2232_latency",
-                       ft2232_handle_latency_command, COMMAND_CONFIG,
-                       "set the FT2232 latency timer to a new value");
-
-       return ERROR_OK;
-}
-
+static const struct command_registration ft2232_command_handlers[] = {
+       {
+               .name = "ft2232_device_desc",
+               .handler = &ft2232_handle_device_desc_command,
+               .mode = COMMAND_CONFIG,
+               .help = "set the USB device description of the FTDI FT2232 device",
+               .usage = "<description>",
+       },
+       {
+               .name = "ft2232_serial",
+               .handler = &ft2232_handle_serial_command,
+               .mode = COMMAND_CONFIG,
+               .help = "set the serial number of the FTDI FT2232 device",
+               .usage = "<serial#>",
+       },
+       {
+               .name = "ft2232_layout",
+               .handler = &ft2232_handle_layout_command,
+               .mode = COMMAND_CONFIG,
+               .help = "set the layout of the FT2232 GPIO signals used "
+                       "to control output-enables and reset signals",
+               .usage = "<layout>",
+       },
+       {
+               .name = "ft2232_vid_pid",
+               .handler = &ft2232_handle_vid_pid_command,
+               .mode = COMMAND_CONFIG,
+               .help = "the vendor ID and product ID of the FTDI FT2232 device",
+               .usage = "<vid> <pid> [...]",
+       },
+       {
+               .name = "ft2232_latency",
+               .handler = &ft2232_handle_latency_command,
+               .mode = COMMAND_CONFIG,
+               .help = "set the FT2232 latency timer to a new value",
+               .usage = "<vid> <pid> [...]",
+       },
+       COMMAND_REGISTRATION_DONE
+};
 
 struct jtag_interface ft2232_interface = {
                .name = "ft2232",
-               .register_commands = &ft2232_register_commands,
+               .commands = ft2232_command_handlers,
                .init = &ft2232_init,
                .quit = &ft2232_quit,
                .speed = &ft2232_speed,

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)