This is an automated email from Gerrit.

"J. Neuschäfer <j.neuschae...@gmx.net>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8191

-- gerrit

commit 2c9004b08ca82e0a8ade337318232168041772da
Author: J. Neuschäfer <j.neuschae...@gmx.net>
Date:   Sat Mar 30 13:18:43 2024 +0100

    remote_bitbang: Change sleep commands to Zz to avoid conflict with SWD
    
    It was noticed that the remote_bitbang protocol has a design issue:
    SWD and sleep commands cannot be implemented at the same time, because
    they overlap:
    
     - SWD uses d,e,f,g for setting pin state
     - sleep uses d,D for microsecond and millisecond sleep, respectively
    
    This has previously been reported by Marek Vrbka[1], but it wasn't fixed.
    
    This commit does the following to resolve the issue:
    
     - Change the sleep commands to 'Z' for 1 ms, 'z' for 1 µs
     - Document that 'D' and 'd' as deprecated aliases
     - Switch the remote_bitbang driver in OpenOCD to 'Z' and 'z'
    
    Unfortunately that's a breaking change, because existing adapter-side
    implementations of the protocol will have to implement the new commands
    to keep working with future versions of OpenOCD. Fortunately, the
    remote sleep commands haven't been part of an OpenOCD release yet,
    which should limit the breakage somewhat.
    
    [1]: 
https://sourceforge.net/p/openocd/mailman/openocd-devel/thread/670d28d2-75a1-45ec-afe5-541415701d7a%40codasip.com/
    
    Fixes: e8e09b1b5 ("remote_bitbang: add use_remote_sleep option to send 
delays to remote")
    Change-Id: I04d2790a33bff9d47eb7f69b3275fd9a271625ae
    Signed-off-by: J. Neuschäfer <j.neuschae...@gmx.net>

diff --git a/doc/manual/jtag/drivers/remote_bitbang.txt 
b/doc/manual/jtag/drivers/remote_bitbang.txt
index 94d6038163..8316cb0dd5 100644
--- a/doc/manual/jtag/drivers/remote_bitbang.txt
+++ b/doc/manual/jtag/drivers/remote_bitbang.txt
@@ -77,7 +77,12 @@ The read responses are encoded in ASCII as either digit 0 or 
1.
 If the use_remote_sleep option is set to 'yes', two additional requests may
 be sent:
 
-       D - Sleep for 1 millisecond
-       d - Sleep for 1 microsecond
+       Z - Sleep for 1 millisecond
+       z - Sleep for 1 microsecond
+
+NOTE: Previously these were specified as 'D' and 'd', which conflicts with the
+"SWD write 0 0" command defined above. Adapters that implement Dd for remote
+sleep must be updated to work with Zz.
+
 
  */
diff --git a/src/jtag/drivers/remote_bitbang.c 
b/src/jtag/drivers/remote_bitbang.c
index c97b6b6abe..53d2151fdc 100644
--- a/src/jtag/drivers/remote_bitbang.c
+++ b/src/jtag/drivers/remote_bitbang.c
@@ -230,13 +230,13 @@ static int remote_bitbang_sleep(unsigned int microseconds)
        unsigned int us = microseconds % 1000;
 
        for (unsigned int i = 0; i < ms; i++) {
-               tmp = remote_bitbang_queue('D', NO_FLUSH);
+               tmp = remote_bitbang_queue('Z', NO_FLUSH);
                if (tmp != ERROR_OK)
                        return tmp;
        }
 
        for (unsigned int i = 0; i < us; i++) {
-               tmp = remote_bitbang_queue('d', NO_FLUSH);
+               tmp = remote_bitbang_queue('z', NO_FLUSH);
                if (tmp != ERROR_OK)
                        return tmp;
        }

-- 

Reply via email to