diff options
-rw-r--r-- | src/pld/pld.c | 68 | ||||
-rw-r--r-- | src/pld/virtex2.c | 47 | ||||
-rw-r--r-- | src/pld/xilinx_bit.c | 39 |
3 files changed, 77 insertions, 77 deletions
diff --git a/src/pld/pld.c b/src/pld/pld.c index 6da105b3..391fb761 100644 --- a/src/pld/pld.c +++ b/src/pld/pld.c @@ -30,18 +30,21 @@ */ extern pld_driver_t virtex2_pld; -pld_driver_t *pld_drivers[] = +static pld_driver_t *pld_drivers[] = { &virtex2_pld, NULL, }; -pld_device_t *pld_devices; +static pld_device_t *pld_devices; static command_t *pld_cmd; -int handle_pld_devices_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_pld_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_pld_devices_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc); +static int handle_pld_device_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc); +static int handle_pld_load_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc); int pld_init(struct command_context_s *cmd_ctx) { @@ -52,7 +55,7 @@ int pld_init(struct command_context_s *cmd_ctx) register_command(cmd_ctx, pld_cmd, "load", handle_pld_load_command, COMMAND_EXEC, "load configuration <file> into programmable logic device"); } - + return ERROR_OK; } @@ -68,47 +71,48 @@ pld_device_t *get_pld_device_by_num(int num) return p; } } - + return NULL; } /* pld device <driver> [driver_options ...] */ -int handle_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_pld_device_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) { int i; int found = 0; - + if (argc < 1) { - LOG_WARNING("incomplete 'pld bank' configuration"); + LOG_WARNING("incomplete 'pld device' command"); return ERROR_OK; } - + for (i = 0; pld_drivers[i]; i++) { if (strcmp(args[0], pld_drivers[i]->name) == 0) { pld_device_t *p, *c; - + /* register pld specific commands */ if (pld_drivers[i]->register_commands(cmd_ctx) != ERROR_OK) { LOG_ERROR("couldn't register '%s' commands", args[0]); exit(-1); } - + c = malloc(sizeof(pld_device_t)); c->driver = pld_drivers[i]; c->next = NULL; - + if (pld_drivers[i]->pld_device_command(cmd_ctx, cmd, args, argc, c) != ERROR_OK) { LOG_ERROR("'%s' driver rejected pld device", args[0]); free(c); return ERROR_OK; } - + /* put pld device in linked list */ if (pld_devices) { @@ -121,61 +125,63 @@ int handle_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char { pld_devices = c; } - + found = 1; } } - + /* no matching pld driver found */ if (!found) { LOG_ERROR("pld driver '%s' not found", args[0]); exit(-1); } - + return ERROR_OK; } -int handle_pld_devices_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_pld_devices_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) { pld_device_t *p; int i = 0; - + if (!pld_devices) { command_print(cmd_ctx, "no pld devices configured"); return ERROR_OK; } - + for (p = pld_devices; p; p = p->next) { command_print(cmd_ctx, "#%i: %s", i++, p->driver->name); } - + return ERROR_OK; } -int handle_pld_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_pld_load_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) { int retval; struct timeval start, end, duration; pld_device_t *p; - + gettimeofday(&start, NULL); - + if (argc < 2) { command_print(cmd_ctx, "usage: pld load <device#> <file>"); return ERROR_OK; } - + p = get_pld_device_by_num(strtoul(args[0], NULL, 0)); if (!p) { command_print(cmd_ctx, "pld device '#%s' is out of bounds", args[0]); return ERROR_OK; } - + if ((retval = p->driver->load(p, args[1])) != ERROR_OK) { command_print(cmd_ctx, "failed loading file %s to pld device %lu", @@ -186,22 +192,22 @@ int handle_pld_load_command(struct command_context_s *cmd_ctx, char *cmd, char * } else { - gettimeofday(&end, NULL); + gettimeofday(&end, NULL); timeval_subtract(&duration, &end, &start); command_print(cmd_ctx, "loaded file %s to pld device %lu in %jis %jius", args[1], strtoul(args[0], NULL, 0), (intmax_t)duration.tv_sec, (intmax_t)duration.tv_usec); } - + return ERROR_OK; } int pld_register_commands(struct command_context_s *cmd_ctx) { pld_cmd = register_command(cmd_ctx, NULL, "pld", NULL, COMMAND_ANY, "programmable logic device commands"); - + register_command(cmd_ctx, pld_cmd, "device", handle_pld_device_command, COMMAND_CONFIG, NULL); - + return ERROR_OK; } diff --git a/src/pld/virtex2.c b/src/pld/virtex2.c index 821699ac..6af83beb 100644 --- a/src/pld/virtex2.c +++ b/src/pld/virtex2.c @@ -26,9 +26,9 @@ #include "pld.h" -int virtex2_register_commands(struct command_context_s *cmd_ctx); -int virtex2_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct pld_device_s *pld_device); -int virtex2_load(struct pld_device_s *pld_device, char *filename); +static int virtex2_register_commands(struct command_context_s *cmd_ctx); +static int virtex2_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct pld_device_s *pld_device); +static int virtex2_load(struct pld_device_s *pld_device, char *filename); pld_driver_t virtex2_pld = { @@ -38,9 +38,9 @@ pld_driver_t virtex2_pld = .load = virtex2_load, }; -int virtex2_set_instr(jtag_tap_t *tap, u32 new_instr) +static int virtex2_set_instr(jtag_tap_t *tap, u32 new_instr) { - if (tap==NULL) + if (tap == NULL) return ERROR_FAIL; if (buf_get_u32(tap->cur_instr, 0, tap->ir_length) != new_instr) @@ -51,13 +51,8 @@ int virtex2_set_instr(jtag_tap_t *tap, u32 new_instr) field.num_bits = tap->ir_length; field.out_value = calloc(CEIL(field.num_bits, 8), 1); buf_set_u32(field.out_value, 0, field.num_bits, new_instr); - field.in_value = NULL; - - - - jtag_add_ir_scan(1, &field, jtag_set_end_state(TAP_IDLE)); free(field.out_value); @@ -66,7 +61,8 @@ int virtex2_set_instr(jtag_tap_t *tap, u32 new_instr) return ERROR_OK; } -int virtex2_send_32(struct pld_device_s *pld_device, int num_words, u32 *words) +static int virtex2_send_32(struct pld_device_s *pld_device, + int num_words, u32 *words) { virtex2_pld_device_t *virtex2_info = pld_device->driver_priv; scan_field_t scan_field; @@ -94,10 +90,11 @@ int virtex2_send_32(struct pld_device_s *pld_device, int num_words, u32 *words) static __inline__ void virtexflip32(u8 *in) { - *((u32 *)in)=flip_u32(le_to_h_u32(in), 32); + *((u32 *)in) = flip_u32(le_to_h_u32(in), 32); } -int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *words) +static int virtex2_receive_32(struct pld_device_s *pld_device, + int num_words, u32 *words) { virtex2_pld_device_t *virtex2_info = pld_device->driver_priv; scan_field_t scan_field; @@ -112,7 +109,7 @@ int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *word while (num_words--) { scan_field.in_value = (u8 *)words; - + jtag_add_dr_scan(1, &scan_field, jtag_set_end_state(TAP_DRPAUSE)); jtag_add_callback(virtexflip32, (u8 *)words); @@ -123,7 +120,7 @@ int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *word return ERROR_OK; } -int virtex2_read_stat(struct pld_device_s *pld_device, u32 *status) +static int virtex2_read_stat(struct pld_device_s *pld_device, u32 *status) { u32 data[5]; @@ -145,23 +142,17 @@ int virtex2_read_stat(struct pld_device_s *pld_device, u32 *status) return ERROR_OK; } -int virtex2_load(struct pld_device_s *pld_device, char *filename) +static int virtex2_load(struct pld_device_s *pld_device, char *filename) { virtex2_pld_device_t *virtex2_info = pld_device->driver_priv; xilinx_bit_file_t bit_file; int retval; unsigned int i; - scan_field_t field; field.tap = virtex2_info->tap; - field.in_value = NULL; - - - - if ((retval = xilinx_read_bit_file(&bit_file, filename)) != ERROR_OK) return retval; @@ -197,7 +188,8 @@ int virtex2_load(struct pld_device_s *pld_device, char *filename) return ERROR_OK; } -int virtex2_handle_read_stat_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int virtex2_handle_read_stat_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) { pld_device_t *device; virtex2_pld_device_t *virtex2_info; @@ -225,7 +217,7 @@ int virtex2_handle_read_stat_command(struct command_context_s *cmd_ctx, char *cm return ERROR_OK; } -int virtex2_register_commands(struct command_context_s *cmd_ctx) +static int virtex2_register_commands(struct command_context_s *cmd_ctx) { command_t *virtex2_cmd = register_command(cmd_ctx, NULL, "virtex2", NULL, COMMAND_ANY, "virtex2 specific commands"); @@ -235,7 +227,8 @@ int virtex2_register_commands(struct command_context_s *cmd_ctx) return ERROR_OK; } -int virtex2_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct pld_device_s *pld_device) +static int virtex2_pld_device_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc, struct pld_device_s *pld_device) { jtag_tap_t *tap; @@ -247,8 +240,8 @@ int virtex2_pld_device_command(struct command_context_s *cmd_ctx, char *cmd, cha return ERROR_PLD_DEVICE_INVALID; } - tap = jtag_tap_by_string( args[1] ); - if( tap == NULL ){ + tap = jtag_tap_by_string(args[1]); + if (tap == NULL) { command_print( cmd_ctx, "Tap: %s does not exist", args[1] ); return ERROR_OK; } diff --git a/src/pld/xilinx_bit.c b/src/pld/xilinx_bit.c index ef3c1e65..e647a9c5 100644 --- a/src/pld/xilinx_bit.c +++ b/src/pld/xilinx_bit.c @@ -28,13 +28,14 @@ #include <sys/stat.h> -int read_section(FILE *input_file, int length_size, char section, u32 *buffer_length, u8 **buffer) +static int read_section(FILE *input_file, int length_size, char section, + u32 *buffer_length, u8 **buffer) { u8 length_buffer[4]; int length; char section_char; int read_count; - + if ((length_size != 2) && (length_size != 4)) { LOG_ERROR("BUG: length_size neither 2 nor 4"); @@ -45,7 +46,7 @@ int read_section(FILE *input_file, int length_size, char section, u32 *buffer_le { return ERROR_PLD_FILE_LOAD_FAILED; } - + if (section_char != section) { return ERROR_PLD_FILE_LOAD_FAILED; @@ -55,22 +56,22 @@ int read_section(FILE *input_file, int length_size, char section, u32 *buffer_le { return ERROR_PLD_FILE_LOAD_FAILED; } - + if (length_size == 4) length = be_to_h_u32(length_buffer); else /* (length_size == 2) */ length = be_to_h_u16(length_buffer); - + if (buffer_length) *buffer_length = length; - + *buffer = malloc(length); - + if ((read_count = fread(*buffer, 1, length, input_file)) != length) { return ERROR_PLD_FILE_LOAD_FAILED; } - + return ERROR_OK; } @@ -79,10 +80,10 @@ int xilinx_read_bit_file(xilinx_bit_file_t *bit_file, char *filename) FILE *input_file; struct stat input_stat; int read_count; - + if (!filename || !bit_file) return ERROR_INVALID_ARGUMENTS; - + if (stat(filename, &input_stat) == -1) { LOG_ERROR("couldn't stat() %s: %s", filename, strerror(errno)); @@ -94,30 +95,30 @@ int xilinx_read_bit_file(xilinx_bit_file_t *bit_file, char *filename) LOG_ERROR("%s is a directory", filename); return ERROR_PLD_FILE_LOAD_FAILED; } - + if (input_stat.st_size == 0){ LOG_ERROR("Empty file %s", filename); return ERROR_PLD_FILE_LOAD_FAILED; } - + if (!(input_file = fopen(filename, "rb"))) { LOG_ERROR("couldn't open %s: %s", filename, strerror(errno)); return ERROR_PLD_FILE_LOAD_FAILED; } - + if ((read_count = fread(bit_file->unknown_header, 1, 13, input_file)) != 13) { LOG_ERROR("couldn't read unknown_header from file '%s'", filename); return ERROR_PLD_FILE_LOAD_FAILED; } - + if (read_section(input_file, 2, 'a', NULL, &bit_file->source_file) != ERROR_OK) return ERROR_PLD_FILE_LOAD_FAILED; - + if (read_section(input_file, 2, 'b', NULL, &bit_file->part_name) != ERROR_OK) return ERROR_PLD_FILE_LOAD_FAILED; - + if (read_section(input_file, 2, 'c', NULL, &bit_file->date) != ERROR_OK) return ERROR_PLD_FILE_LOAD_FAILED; @@ -126,11 +127,11 @@ int xilinx_read_bit_file(xilinx_bit_file_t *bit_file, char *filename) if (read_section(input_file, 4, 'e', &bit_file->length, &bit_file->data) != ERROR_OK) return ERROR_PLD_FILE_LOAD_FAILED; - + LOG_DEBUG("bit_file: %s %s %s,%s %i", bit_file->source_file, bit_file->part_name, bit_file->date, bit_file->time, bit_file->length); - + fclose(input_file); - + return ERROR_OK; } |