Improve JTAG reset, speed, and khz handlers to use parse_uint helper.
[fw/openocd] / src / jtag / at91rm9200.c
index d532e3e7434ca666c9089966ea9703cdb30fac54..d0d1644875a2a613a76def6808ec945b7670b469 100644 (file)
 #include "config.h"
 #endif
 
-#include "log.h"
-#include "jtag.h"
+#include "interface.h"
 #include "bitbang.h"
 
-/* system includes */
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
 #include <sys/mman.h>
-#include <unistd.h>
-#include <fcntl.h>
+
 
 /* AT91RM9200 */
 #define AT91C_BASE_SYS (0xfffff000)
@@ -101,14 +95,14 @@ struct device_t
        u32 SRST_MASK;  /* SRST bitmask */
 };
 
-struct device_t devices[] =
+static struct device_t devices[] =
 {
        { "rea_ecr", PIOD, P27, PIOA, NC, PIOD, P23, PIOD, P24, PIOD, P26, PIOC, P5 },
-       { NULL, 0 }
+       { .name = NULL },
 };
 
 /* configuration */
-char* at91rm9200_device;
+static char* at91rm9200_device;
 
 /* interface variables
  */
@@ -119,14 +113,14 @@ static u32* pio_base;
 
 /* low level command set
  */
-int at91rm9200_read(void);
-void at91rm9200_write(int tck, int tms, int tdi);
-void at91rm9200_reset(int trst, int srst);
+static int at91rm9200_read(void);
+static void at91rm9200_write(int tck, int tms, int tdi);
+static void at91rm9200_reset(int trst, int srst);
 
-int at91rm9200_speed(int speed);
-int at91rm9200_register_commands(struct command_context_s *cmd_ctx);
-int at91rm9200_init(void);
-int at91rm9200_quit(void);
+static int at91rm9200_speed(int speed);
+static int at91rm9200_register_commands(struct command_context_s *cmd_ctx);
+static int at91rm9200_init(void);
+static int at91rm9200_quit(void);
 
 jtag_interface_t at91rm9200_interface =
 {
@@ -134,27 +128,26 @@ jtag_interface_t at91rm9200_interface =
 
        .execute_queue = bitbang_execute_queue,
 
-       .support_pathmove = 0,
-
        .speed = at91rm9200_speed,
        .register_commands = at91rm9200_register_commands,
        .init = at91rm9200_init,
        .quit = at91rm9200_quit,
 };
 
-bitbang_interface_t at91rm9200_bitbang =
+static bitbang_interface_t at91rm9200_bitbang =
 {
        .read = at91rm9200_read,
        .write = at91rm9200_write,
-       .reset = at91rm9200_reset
+       .reset = at91rm9200_reset,
+       .blink = 0
 };
 
-int at91rm9200_read(void)
+static int at91rm9200_read(void)
 {
        return (pio_base[device->TDO_PIO + PIO_PDSR] & device->TDO_MASK) != 0;
 }
 
-void at91rm9200_write(int tck, int tms, int tdi)
+static void at91rm9200_write(int tck, int tms, int tdi)
 {
        if (tck)
                pio_base[device->TCK_PIO + PIO_SODR] = device->TCK_MASK;
@@ -173,7 +166,7 @@ void at91rm9200_write(int tck, int tms, int tdi)
 }
 
 /* (1) assert or (0) deassert reset lines */
-void at91rm9200_reset(int trst, int srst)
+static void at91rm9200_reset(int trst, int srst)
 {
        if (trst == 0)
                pio_base[device->TRST_PIO + PIO_SODR] = device->TRST_MASK;
@@ -186,13 +179,13 @@ void at91rm9200_reset(int trst, int srst)
                pio_base[device->SRST_PIO + PIO_CODR] = device->SRST_MASK;
 }
 
-int at91rm9200_speed(int speed)
+static int at91rm9200_speed(int speed)
 {
 
        return ERROR_OK;
 }
 
-int at91rm9200_handle_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+static int at91rm9200_handle_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        if (argc == 0)
                return ERROR_OK;
@@ -207,14 +200,14 @@ int at91rm9200_handle_device_command(struct command_context_s *cmd_ctx, char *cm
        return ERROR_OK;
 }
 
-int at91rm9200_register_commands(struct command_context_s *cmd_ctx)
+static int at91rm9200_register_commands(struct command_context_s *cmd_ctx)
 {
        register_command(cmd_ctx, NULL, "at91rm9200_device", at91rm9200_handle_device_command,
                COMMAND_CONFIG, NULL);
        return ERROR_OK;
 }
 
-int at91rm9200_init(void)
+static int at91rm9200_init(void)
 {
        struct device_t *cur_device;
 
@@ -223,7 +216,7 @@ int at91rm9200_init(void)
        if (at91rm9200_device == NULL || at91rm9200_device[0] == 0)
        {
                at91rm9200_device = "rea_ecr";
-               WARNING("No at91rm9200 device specified, using default 'rea_ecr'");
+               LOG_WARNING("No at91rm9200 device specified, using default 'rea_ecr'");
        }
 
        while (cur_device->name)
@@ -238,7 +231,7 @@ int at91rm9200_init(void)
 
        if (!device)
        {
-               ERROR("No matching device found for %s", at91rm9200_device);
+               LOG_ERROR("No matching device found for %s", at91rm9200_device);
                return ERROR_JTAG_INIT_FAILED;
        }
 
@@ -285,7 +278,7 @@ int at91rm9200_init(void)
        return ERROR_OK;
 }
 
-int at91rm9200_quit(void)
+static int at91rm9200_quit(void)
 {
 
        return ERROR_OK;