This is an automated email from Gerrit.

Spencer Oliver ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/2334

-- gerrit

commit 12e60a669086c26cd0faaf31cd40875d388a3ce8
Author: Spencer Oliver <[email protected]>
Date:   Mon Oct 6 23:08:36 2014 +0100

    hla: add ability to change adapter speed (if supported)
    
    The is taken directly from the existing adapter speed code and then
    passed to the hla interface.
    
    Only change is that we need to cache the requested speed setting, as the
    hla interface may not be ready when the first adapter_khz is called.
    
    Change-Id: I2fa6807d5f0bd3f0365cf178bd10a230c39415a7
    Signed-off-by: Spencer Oliver <[email protected]>

diff --git a/src/jtag/hla/hla_interface.c b/src/jtag/hla/hla_interface.c
index ce914ea..a5b21b7 100644
--- a/src/jtag/hla/hla_interface.c
+++ b/src/jtag/hla/hla_interface.c
@@ -37,7 +37,7 @@
 
 #include <target/target.h>
 
-static struct hl_interface_s hl_if = { {0, 0, 0, 0, 0, HL_TRANSPORT_UNKNOWN, 
false, NULL, 0}, 0, 0 };
+static struct hl_interface_s hl_if = { {0, 0, 0, 0, 0, HL_TRANSPORT_UNKNOWN, 
false, NULL, 0, -1}, 0, 0 };
 
 int hl_interface_open(enum hl_transports tr)
 {
@@ -145,21 +145,38 @@ int hl_interface_init_reset(void)
        return ERROR_OK;
 }
 
-static int dummy_khz(int khz, int *jtag_speed)
+static int hl_interface_khz(int khz, int *jtag_speed)
 {
-       *jtag_speed = khz;
-       return ERROR_OK;
+       if (hl_if.layout->api->khz == NULL) {
+               *jtag_speed = khz;
+               return ERROR_OK;
+       }
+
+       return hl_if.layout->api->khz(khz, jtag_speed);
 }
 
-static int dummy_speed_div(int speed, int *khz)
+static int hl_interface_speed_div(int speed, int *khz)
 {
-       *khz = speed;
-       return ERROR_OK;
+       if (hl_if.layout->api->speed_div == NULL) {
+               *khz = speed;
+               return ERROR_OK;
+       }
+
+       return hl_if.layout->api->speed_div(speed, khz);
 }
 
-static int dummy_speed(int speed)
+static int hl_interface_speed(int speed)
 {
-       return ERROR_OK;
+       if (hl_if.layout->api->speed == NULL)
+               return ERROR_OK;
+
+       if (hl_if.handle == NULL) {
+               /* pass speed as initial param as interface not open yet */
+               hl_if.param.initial_interface_speed = speed;
+               return ERROR_OK;
+       }
+
+       return hl_if.layout->api->speed(hl_if.handle, speed);
 }
 
 int hl_interface_override_target(const char **targetname)
@@ -337,7 +354,7 @@ struct jtag_interface hl_interface = {
        .init = hl_interface_init,
        .quit = hl_interface_quit,
        .execute_queue = hl_interface_execute_queue,
-       .speed = &dummy_speed,
-       .khz = &dummy_khz,
-       .speed_div = &dummy_speed_div,
+       .speed = &hl_interface_speed,
+       .khz = &hl_interface_khz,
+       .speed_div = &hl_interface_speed_div,
 };
diff --git a/src/jtag/hla/hla_interface.h b/src/jtag/hla/hla_interface.h
index cb961bd..aac1be3 100644
--- a/src/jtag/hla/hla_interface.h
+++ b/src/jtag/hla/hla_interface.h
@@ -50,6 +50,8 @@ struct hl_interface_param_s {
        FILE *trace_f;
        /** Trace module source clock rate */
        uint32_t trace_source_hz;
+       /** Initial interface clock clock speed */
+       int initial_interface_speed;
 };
 
 struct hl_interface_s {
diff --git a/src/jtag/hla/hla_layout.h b/src/jtag/hla/hla_layout.h
index df93cb6..f1265c8 100644
--- a/src/jtag/hla/hla_layout.h
+++ b/src/jtag/hla/hla_layout.h
@@ -78,6 +78,12 @@ struct hl_layout_api_s {
        /** */
        int (*custom_command) (void *handle, const char *command);
        /** */
+       int (*speed)(void *handle, int speed);
+       /** */
+       int (*khz)(int khz, int *jtag_speed);
+       /** */
+       int (*speed_div)(int speed, int *khz);
+       /** */
        enum target_state (*state) (void *fd);
 };
 

-- 

------------------------------------------------------------------------------
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to