)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"38338fab82f1f58f4118d438bad36639b9e6222f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3d2a12bd_51a2b86f","updated":"2026-03-31 08:15:46.000000000","message":"Thanks for this patch, nice hack!\nPlease run checkpatch script locally, as the patch does not pass the automatic test.\nI have not reviewed it yet, but I have some comment below.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"c13b2a614d3e24ac0740635fdd97e03ab2af6634","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7bf95d03_fd945c9b","updated":"2026-04-14 09:08:25.000000000","message":"Hi Richard,\n\nThank you for finding this rather interesting part and for working on the driver for it!","commit_id":"ec13494cfd1ba59dd844ff3228669a1302f6d449"}],"configure.ac":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":127,"context_line":"m4_define([USB1_ADAPTERS],"},{"line_number":128,"context_line":"\t[[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],"},{"line_number":129,"context_line":"\t[[ftdi_cjtag], [cJTAG (OScan1, JScan3) tunneled thru MPSSE], [FTDI_CJTAG]],"},{"line_number":130,"context_line":"\t[[ch347], [CH347 based devices], [CH347]],"},{"line_number":131,"context_line":"\t[[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],"},{"line_number":132,"context_line":"\t[[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],"},{"line_number":133,"context_line":"\t[[ulink], [Keil ULINK JTAG Programmer], [ULINK]],"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"08100626_6daa2a26","line":130,"updated":"2026-04-04 22:16:04.000000000","message":"Here the simpler change is to add one line in this list\n`[[usb3813spi], [USB3813 hub SPI driver], [USB3813SPI]],`\nand nothing more needs to be added in `configure.ac`","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":127,"context_line":"m4_define([USB1_ADAPTERS],"},{"line_number":128,"context_line":"\t[[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],"},{"line_number":129,"context_line":"\t[[ftdi_cjtag], [cJTAG (OScan1, JScan3) tunneled thru MPSSE], [FTDI_CJTAG]],"},{"line_number":130,"context_line":"\t[[ch347], [CH347 based devices], [CH347]],"},{"line_number":131,"context_line":"\t[[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],"},{"line_number":132,"context_line":"\t[[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],"},{"line_number":133,"context_line":"\t[[ulink], [Keil ULINK JTAG Programmer], [ULINK]],"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"c9153f5c_eca6ae8f","line":130,"in_reply_to":"08100626_6daa2a26","updated":"2026-04-07 14:36:55.000000000","message":"Done","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":true,"context_lines":[{"line_number":142,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":143,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":144,"context_line":"\t[[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]],"},{"line_number":145,"context_line":"  [[cmsis_dap_v2], [CMSIS-DAP v2 compliant dongle (USB bulk)], [CMSIS_DAP_USB]],"},{"line_number":146,"context_line":"\t[[usb3813spi], [USB3813 hub SPI driver], [USB3813SPI]]])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"# Please keep cmsis_dap_v2 the last in USB1_ADAPTERS"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"c025a18d_6ec7fa3d","line":145,"updated":"2026-04-07 17:05:12.000000000","message":"Your editor has changed the indentation of this line. Please fix it.","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"34a85979a3cb595bb5d0fada8f6d474bf5716785","unresolved":false,"context_lines":[{"line_number":142,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":143,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":144,"context_line":"\t[[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]],"},{"line_number":145,"context_line":"  [[cmsis_dap_v2], [CMSIS-DAP v2 compliant dongle (USB bulk)], [CMSIS_DAP_USB]],"},{"line_number":146,"context_line":"\t[[usb3813spi], [USB3813 hub SPI driver], [USB3813SPI]]])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"# Please keep cmsis_dap_v2 the last in USB1_ADAPTERS"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"6b1d26aa_ba5f6188","line":145,"in_reply_to":"c025a18d_6ec7fa3d","updated":"2026-04-08 20:31:17.000000000","message":"Done","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"}],"contrib/60-openocd.rules":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":195,"context_line":"ATTRS{idVendor}\u003d\u003d\"1514\", ATTRS{idProduct}\u003d\u003d\"200a\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"# Microchip USB3813 hub adapter"},{"line_number":198,"context_line":"ATTRS{idVendor}\u003d\u003d\"0424\", ATTRS{idProduct}\u003d\u003d\"3813\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":199,"context_line":"ATTRS{idVendor}\u003d\u003d\"0424\", ATTRS{idProduct}\u003d\u003d\"2530\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"# OSBDM"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"fabcce31_d0d3872c","line":198,"updated":"2026-04-04 22:16:04.000000000","message":"please keep the file in order by vendor id, and then product id\nThe above vendor ID 1514 is the old one from Actel, acquired by Microchip in 2018","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":195,"context_line":"ATTRS{idVendor}\u003d\u003d\"1514\", ATTRS{idProduct}\u003d\u003d\"200a\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"# Microchip USB3813 hub adapter"},{"line_number":198,"context_line":"ATTRS{idVendor}\u003d\u003d\"0424\", ATTRS{idProduct}\u003d\u003d\"3813\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":199,"context_line":"ATTRS{idVendor}\u003d\u003d\"0424\", ATTRS{idProduct}\u003d\u003d\"2530\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"# OSBDM"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"c3bcc3b2_fc01daf9","line":198,"in_reply_to":"fabcce31_d0d3872c","updated":"2026-04-07 14:36:55.000000000","message":"Done","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"38338fab82f1f58f4118d438bad36639b9e6222f","unresolved":true,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"1e65c12d_a924f763","line":3664,"updated":"2026-03-31 08:15:46.000000000","message":"In the code I read that modes 1 and 3 are supported, not 0.\n\nReading the SWD spec and time diagram in ARM IHI 0031, \nSWD requires data is shifted out on rising SWCLK, sampled on falling SWCLK.\nThis looks more mode 1.\nAre you sure SWD works with mode 3 (that it\u0027s also the default!)?","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"c5e2a8c3cc915641f0516899ff259712d9b9bef8","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"8f420d2c_7a520868","line":3664,"in_reply_to":"1e65c12d_a924f763","updated":"2026-04-02 17:39:20.000000000","message":"Thanks for finding this. The hardware only supports mode 0 and 3 and the code is wrong. This is corrected in the latest commit.\n\nWe have been debating this in the office for a while now. We\u0027ve found that mode 3 works best and we think we understand why.\nIn IHI0031H_debug_interface_v5_2_architecture_specification.pdf B4.3.1 Line interface (Page 118) we found the following text:\n\n\u003e When the target samples SWDIO, sampling is performed on the rising edge of SWCLK. When the target drives SWDIO, or stops driving it, signal changes are performed on the rising edge of SWCLK.\n\nWe think this means the sampling edge changes when the host or target is driving:\n\u003e Target: Samples rising edge\nHost: Samples falling edge\n\nMode 3 (clock idle high, sampling rising edge) is correct for the target but incorrect for the host but we suspect it always works because the host drives the clock and when the host drives the clock, there is a delay for the clock signal to propagate to the target and for the target to act on it. This means at the point that the host samples, the data is actually still correct.\n\nSince SPI can\u0027t change where it samples, we think this means that out of the options that are available to us, mode 3 is the best choice.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"b1c904a4_1ac53c54","line":3664,"in_reply_to":"8f420d2c_7a520868","updated":"2026-04-04 22:16:04.000000000","message":"It makes sense.\nI don\u0027t know the impact of clock idle high of mode 3. Probably no impact apart adding one delay at each transfer. But with clock at 30 or 60 MHz, this is not relevant.\nWhat about mode 0, supported by the command `usb3813spi mode0` ? Does it work too? If it doesn\u0027t work for SWD, maybe the command can be dropped from this driver.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"ce8128ca_d3bb832a","line":3664,"in_reply_to":"b1c904a4_1ac53c54","updated":"2026-04-07 14:36:55.000000000","message":"`usb3813spi mode0` does work. I felt similarly about the clock idling high with `usb3813spi mode3` maybe causing issues with some parts so I felt that it\u0027s worth leaving support for both even though `usb3813spi mode3` is closer to the SWD spec.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"34a85979a3cb595bb5d0fada8f6d474bf5716785","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"dfb6fa9d_ecdd6869","line":3664,"in_reply_to":"be37551f_4fd9a0ef","updated":"2026-04-08 20:31:17.000000000","message":"Done","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":true,"context_lines":[{"line_number":3661,"context_line":"@end deffn"},{"line_number":3662,"context_line":""},{"line_number":3663,"context_line":"@deffn {Config Command} {usb3813spi mode} mode"},{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"be37551f_4fd9a0ef","line":3664,"in_reply_to":"ce8128ca_d3bb832a","updated":"2026-04-07 17:05:12.000000000","message":"Surprised! but maybe again a corner case that could offer more flexibility, depending on the circuit.\nOk to keep the command there, but would be good to add few words to explain that mode 3 is the closest to SWD spec, but mode 0 looks functional too.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"38338fab82f1f58f4118d438bad36639b9e6222f","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"d9c5109d_ae966a55","line":3667,"updated":"2026-03-31 08:15:46.000000000","message":"What is the advantage/need of reducing the queue?","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"c13b2a614d3e24ac0740635fdd97e03ab2af6634","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"75a1b5ce_589bb747","line":3667,"in_reply_to":"123980d2_fab88beb","updated":"2026-04-14 09:08:25.000000000","message":"\u003e When the RT595 is in deep sleep, it operates very slowly and requests WAITs very frequently. Because queueing is packing lots of SWD requests together into a single transaction, queuing isn\u0027t able to handle these waits correctly.\n\nArm ADI is designed specifically to allow queueing (to accomodate high latency debug interfaces) and WAIT handling should work properly with any queue length, first introduced here http://openocd.zylin.com/3166 . You\u0027re already using `swd_ack_to_error_code` https://review.openocd.org/c/openocd/+/9554/13/src/jtag/drivers/usb3813spi.c#608 so it should propogate to upper layers nicely and the missed operations get replayed. No other driver needs manual queue length modification so there must be something really special with this one, or it\u0027s a bug to fix.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"c6b000eb_4165f3d3","line":3667,"in_reply_to":"461d0eb2_ebd64ada","updated":"2026-04-07 17:05:12.000000000","message":"I think this should be mentioned in the documentation, suggesting it as a workaround in case of issues.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"a686b950b39464ace094caef516de6fd88d537e3","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"eb8dfc4e_39f9a6fe","line":3667,"in_reply_to":"75a1b5ce_589bb747","updated":"2026-04-14 10:30:50.000000000","message":"Hm, it looks like WAIT handling was never fully implemented for SWD but then I wonder how come people are using other adapters without complaints. stlink and cmsis-dap just handle retries on their firmware level but jlink users would face this issue I\u0027d guess? Sorry, kind of confused here, I just assumed it was implemented by now.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"34a85979a3cb595bb5d0fada8f6d474bf5716785","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"123980d2_fab88beb","line":3667,"in_reply_to":"c6b000eb_4165f3d3","updated":"2026-04-08 20:31:17.000000000","message":"Done","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"461d0eb2_ebd64ada","line":3667,"in_reply_to":"cd872e01_4acd9b82","updated":"2026-04-07 14:36:55.000000000","message":"When the RT595 is in deep sleep, it operates very slowly and requests WAITs very frequently. Because queueing is packing lots of SWD requests together into a single transaction, queuing isn\u0027t able to handle these waits correctly.\n\nSetting queue_entries to 1 allows for queueing to essentially be disabled.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"c5e2a8c3cc915641f0516899ff259712d9b9bef8","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"effa5551_2a4969ad","line":3667,"in_reply_to":"d9c5109d_ae966a55","updated":"2026-04-02 17:39:20.000000000","message":"USB3813 only has a 256 byte transmit buffer so we can only send 256/8 (6 bytes SWD data, 2 bytes worst case delay clocks)\u003d32 SWD packets at a time.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"cc462dc4bcf73c618c575b8ab8e1f1c5f5fbe6e3","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"30a3ab2d_8ae61b0c","line":3667,"in_reply_to":"eb8dfc4e_39f9a6fe","updated":"2026-04-14 10:39:46.000000000","message":"Actually not handling WAIT **is** an issue with J-Link adapters and the current workaround is to reduce the speed, unfortunately.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":3664,"context_line":"Specifies the SPI mode (0 or 3, default 3)."},{"line_number":3665,"context_line":"@end deffn"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@deffn {Config Command} {usb3813spi queue_entries} entries"},{"line_number":3668,"context_line":"Specifies the maximum number of SWD transactions to queue (default 32, max 32)."},{"line_number":3669,"context_line":"@end deffn"},{"line_number":3670,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"cd872e01_4acd9b82","line":3667,"in_reply_to":"effa5551_2a4969ad","updated":"2026-04-04 22:16:04.000000000","message":"But why an OpenOCD user would need to decrease it below 32?","commit_id":"283569ee737f4110d7c48af9640f091850d06669"}],"src/jtag/drivers/usb3813spi.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"38338fab82f1f58f4118d438bad36639b9e6222f","unresolved":true,"context_lines":[{"line_number":212,"context_line":"static uint16_t spi_vid \u003d 0x0424;"},{"line_number":213,"context_line":"static uint16_t spi_pid \u003d 0x2530;"},{"line_number":214,"context_line":"static uint16_t hub_vid \u003d 0x0424;"},{"line_number":215,"context_line":"static uint16_t hub_pid \u003d 0x3813;"},{"line_number":216,"context_line":"static uint32_t spi_mode \u003d 3;"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"struct queue_info {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"47713928_78e3eebf","line":215,"updated":"2026-03-31 08:15:46.000000000","message":"I think you need to add these VID:PID in the file\ncontrib/60-openocd.rules\nand install it, otherwise you would be forced to run OpenOCD as root to access to the USB device\nPlease add the needed lines to that file.","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"c5e2a8c3cc915641f0516899ff259712d9b9bef8","unresolved":false,"context_lines":[{"line_number":212,"context_line":"static uint16_t spi_vid \u003d 0x0424;"},{"line_number":213,"context_line":"static uint16_t spi_pid \u003d 0x2530;"},{"line_number":214,"context_line":"static uint16_t hub_vid \u003d 0x0424;"},{"line_number":215,"context_line":"static uint16_t hub_pid \u003d 0x3813;"},{"line_number":216,"context_line":"static uint32_t spi_mode \u003d 3;"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"struct queue_info {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7d1facb3_dcddb00f","line":215,"in_reply_to":"47713928_78e3eebf","updated":"2026-04-02 17:39:20.000000000","message":"Thanks!","commit_id":"283569ee737f4110d7c48af9640f091850d06669"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":18,"context_line":" * The Microchip USB3813 is originally an SMSC part. It\u0027s very poorly"},{"line_number":19,"context_line":" * documented, seemingly intentionally. Original SMSC documentation contains"},{"line_number":20,"context_line":" * more information than Microchip documentation. Most of the SMSC"},{"line_number":21,"context_line":" * documentation is no longer online."},{"line_number":22,"context_line":" *"},{"line_number":23,"context_line":" * Here are the documents and code that was used to create this driver:"},{"line_number":24,"context_line":" * 1. USB3813: USB 2.0 Hi-Speed 3-Port Hub Controller Optimized for Portable Applications"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ea31d866_9a8d6927","line":21,"updated":"2026-04-04 22:16:04.000000000","message":"Maybe you can try asking Microchip directly.\nMe, I don\u0027t feel comfortable asking Microchip for un-official docs, but only because my employer is one of their competitors.","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":false,"context_lines":[{"line_number":18,"context_line":" * The Microchip USB3813 is originally an SMSC part. It\u0027s very poorly"},{"line_number":19,"context_line":" * documented, seemingly intentionally. Original SMSC documentation contains"},{"line_number":20,"context_line":" * more information than Microchip documentation. Most of the SMSC"},{"line_number":21,"context_line":" * documentation is no longer online."},{"line_number":22,"context_line":" *"},{"line_number":23,"context_line":" * Here are the documents and code that was used to create this driver:"},{"line_number":24,"context_line":" * 1. USB3813: USB 2.0 Hi-Speed 3-Port Hub Controller Optimized for Portable Applications"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"3884faec_5bcb0594","line":21,"in_reply_to":"743e9797_b3dd94fe","updated":"2026-04-07 17:05:12.000000000","message":"Usual bureaucracy of big corporations!","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":true,"context_lines":[{"line_number":18,"context_line":" * The Microchip USB3813 is originally an SMSC part. It\u0027s very poorly"},{"line_number":19,"context_line":" * documented, seemingly intentionally. Original SMSC documentation contains"},{"line_number":20,"context_line":" * more information than Microchip documentation. Most of the SMSC"},{"line_number":21,"context_line":" * documentation is no longer online."},{"line_number":22,"context_line":" *"},{"line_number":23,"context_line":" * Here are the documents and code that was used to create this driver:"},{"line_number":24,"context_line":" * 1. USB3813: USB 2.0 Hi-Speed 3-Port Hub Controller Optimized for Portable Applications"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"743e9797_b3dd94fe","line":21,"in_reply_to":"ea31d866_9a8d6927","updated":"2026-04-07 14:36:55.000000000","message":"I\u0027ve opened a ticket with Microchip. Their response so far:\n\n\u003e I will go ahead and put in an internal request to the product owner requesting that information, and I will let you know what I am able to find out! I ask for your patience in the meantime.","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":46,"context_line":" *"},{"line_number":47,"context_line":" * Other Microchip hubs will likely need modification to REG_SPI_BASE."},{"line_number":48,"context_line":" *"},{"line_number":49,"context_line":" * The SPI bus appears to only be able operate at 30 or 60 MHz and is selectable"},{"line_number":50,"context_line":" * exclusively with strap resistors. The SEC1210 documentation discusses a"},{"line_number":51,"context_line":" * divisor that would provide a lot of flexibility but it\u0027s unknown if and where"},{"line_number":52,"context_line":" * it\u0027s present in USB3813."}],"source_content_type":"text/x-csrc","patch_set":6,"id":"692ced3a_aabc5494","line":49,"updated":"2026-04-04 22:16:04.000000000","message":"typo? \"able `to` operate\" ?","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":46,"context_line":" *"},{"line_number":47,"context_line":" * Other Microchip hubs will likely need modification to REG_SPI_BASE."},{"line_number":48,"context_line":" *"},{"line_number":49,"context_line":" * The SPI bus appears to only be able operate at 30 or 60 MHz and is selectable"},{"line_number":50,"context_line":" * exclusively with strap resistors. The SEC1210 documentation discusses a"},{"line_number":51,"context_line":" * divisor that would provide a lot of flexibility but it\u0027s unknown if and where"},{"line_number":52,"context_line":" * it\u0027s present in USB3813."}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a5a104c0_15e42292","line":49,"in_reply_to":"692ced3a_aabc5494","updated":"2026-04-07 14:36:55.000000000","message":"Done","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":52,"context_line":" * it\u0027s present in USB3813."},{"line_number":53,"context_line":" */"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"/* Uncomment to log SPI exchanges (very verbose, slows things down a lot)"},{"line_number":56,"context_line":" *"},{"line_number":57,"context_line":" * A quick note on interpreting SPI exchange messages:"},{"line_number":58,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"88535af2_56f65a43","line":55,"updated":"2026-04-04 22:16:04.000000000","message":"Instead of using the macro LOG_SPI_EXCHANGE to enable the verbose log through `LOG_OUTPUT()`, why not using `LOG_DEBUG_IO()` directly whitout any `#if`?","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":52,"context_line":" * it\u0027s present in USB3813."},{"line_number":53,"context_line":" */"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"/* Uncomment to log SPI exchanges (very verbose, slows things down a lot)"},{"line_number":56,"context_line":" *"},{"line_number":57,"context_line":" * A quick note on interpreting SPI exchange messages:"},{"line_number":58,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"0542f992_efbdbf34","line":55,"in_reply_to":"88535af2_56f65a43","updated":"2026-04-07 14:36:55.000000000","message":"The MOSI resistor ensures that what is transmitted must be received. When the TX and RX packets are printed right next to each other, it makes it easy to diagnose signal integrity errors. If the packets are broken apart by line feeds, the results become impossible to interpret. \n\nI\u0027d like to be able to use `LOG_DEBUG_IO()` but `LOG_OUTPUT()` and `LOG_USER_N()` are the only macros that don\u0027t contain a linefeed and I need to be able to make a line an arbitrary amount of characters long.\n\nAs an alternative I could add another macro in log.h if you like.","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":true,"context_lines":[{"line_number":272,"context_line":"\t\t\t\tLOG_OUTPUT(\"%.2\" PRIx8 \" \", tx_flip_buf[i]);"},{"line_number":273,"context_line":"\t\t}"},{"line_number":274,"context_line":"\t\tLOG_OUTPUT(\"\\n\");"},{"line_number":275,"context_line":"#endif // LOG_SPI_EXCHANGE"},{"line_number":276,"context_line":"\t} else {"},{"line_number":277,"context_line":"\t\tmemset(tx_flip_buf, 0, len);"},{"line_number":278,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e74eb6b3_844c89ad","line":275,"updated":"2026-04-07 17:05:12.000000000","message":"To drop the `#if`, this can be rewritten as:\n```\nif (len !\u003d 0) {\n    char hex[2 * len + 1];\n    hexify(hex, tx_flip_buf, len, 2 * len + 1);\n    LOG_DEBUG_IO(\" tx_buf\u003d%s\", hex);\n}\n```\nWe would miss the space separator between the bytes, but not a dramatic issue for a debug message.\nEventually, to skip this block when it would not be printed (since we already have the condition:\n`if (len !\u003d0 \u0026\u0026 LOG_LEVEL_IS(LOG_LVL_DEBUG_IO)) {`","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"252bf6d6e8c226c2e862092aa41fc4eda3098711","unresolved":false,"context_lines":[{"line_number":272,"context_line":"\t\t\t\tLOG_OUTPUT(\"%.2\" PRIx8 \" \", tx_flip_buf[i]);"},{"line_number":273,"context_line":"\t\t}"},{"line_number":274,"context_line":"\t\tLOG_OUTPUT(\"\\n\");"},{"line_number":275,"context_line":"#endif // LOG_SPI_EXCHANGE"},{"line_number":276,"context_line":"\t} else {"},{"line_number":277,"context_line":"\t\tmemset(tx_flip_buf, 0, len);"},{"line_number":278,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"36867b26_d898cfac","line":275,"in_reply_to":"10720bcc_5cef39d1","updated":"2026-04-14 08:22:35.000000000","message":"My last suggestion for using (rewritten fully):\n```\nif (len !\u003d0 \u0026\u0026 LOG_LEVEL_IS(LOG_LVL_DEBUG_IO)) {\n    char hex[2 * len + 1];\n    hexify(hex, tx_flip_buf, len, 2 * len + 1);\n    LOG_DEBUG_IO(\" tx_buf\u003d%s\", hex);\n}\n```\nthat skips running `hexify` when not needed.\n\nThe new `LOG_CUSTOM_LEVEL_N` uses `LOG_OUTPUT` that does not print the debugging header (if I checked correctly). This prevent the multiple header in the line,  but also skips the header completely.\nI was thinking about dropping `LOG_USER_N` sometime in the future, now we have a new one.\n\nI understand your concern about the space separator between bytes. Probably we need to add a new helper, e.g.:\n```\n/**\n * Convert binary data into a string of hexadecimal pairs with byte separator.\n *\n * @param[out] hex Buffer to store string of hexadecimal pairs. The buffer size\n *                 must be at least @p length.\n * @param[in] bin Buffer with binary data to convert into hexadecimal pairs.\n * @param[in] count Number of bytes to convert.\n * @param[in] length Maximum number of characters, including null-terminator,\n *                   to store into @p hex.\n * @param[in] sep Separator character between bytes.\n *\n * @returns The length of the converted string excluding null-terminator.\n */\nsize_t hexify_sep(char *hex, const uint8_t *bin, size_t count, size_t length,\n        char sep)\n{\n        if (!length--)\n                return 0;\n\n        size_t j \u003d 0;\n        for (size_t i \u003d 0; i \u003c count; i++) {\n                if (i) {\n                        if (!length--)\n                                break;\n                        hex[j++] \u003d sep;\n                }\n\n                if (!length--)\n                        break;\n                hex[j++] \u003d hex_digits[bin[i] \u003e\u003e 4];\n\n                if (!length--)\n                        break;\n                hex[j++] \u003d hex_digits[bin[i] \u0026 0xf];\n        }\n\n        hex[j++] \u003d 0;\n\n        return j;\n}\n\n```\nand then the code would become\n```\nif (len !\u003d0 \u0026\u0026 LOG_LEVEL_IS(LOG_LVL_DEBUG_IO)) {\n    char hex[3 * len];\n    hexify_sep(hex, tx_flip_buf, len, 3 * len, \u0027 \u0027);\n    LOG_DEBUG_IO(\" tx_buf\u003d%s\", hex);\n}\n```","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"366223f8c3cbd30e02e3728127d2e67d57636197","unresolved":false,"context_lines":[{"line_number":272,"context_line":"\t\t\t\tLOG_OUTPUT(\"%.2\" PRIx8 \" \", tx_flip_buf[i]);"},{"line_number":273,"context_line":"\t\t}"},{"line_number":274,"context_line":"\t\tLOG_OUTPUT(\"\\n\");"},{"line_number":275,"context_line":"#endif // LOG_SPI_EXCHANGE"},{"line_number":276,"context_line":"\t} else {"},{"line_number":277,"context_line":"\t\tmemset(tx_flip_buf, 0, len);"},{"line_number":278,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"10720bcc_5cef39d1","line":275,"in_reply_to":"26832865_b8b4033f","updated":"2026-04-10 18:07:25.000000000","message":"I decided to add support in log.h (https://review.openocd.org/c/openocd/+/9575). Let me know what you think.","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"36cc43db71157771ef2019f323b001c6feb6023f","unresolved":true,"context_lines":[{"line_number":272,"context_line":"\t\t\t\tLOG_OUTPUT(\"%.2\" PRIx8 \" \", tx_flip_buf[i]);"},{"line_number":273,"context_line":"\t\t}"},{"line_number":274,"context_line":"\t\tLOG_OUTPUT(\"\\n\");"},{"line_number":275,"context_line":"#endif // LOG_SPI_EXCHANGE"},{"line_number":276,"context_line":"\t} else {"},{"line_number":277,"context_line":"\t\tmemset(tx_flip_buf, 0, len);"},{"line_number":278,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"bf9753f6_6027849d","line":275,"in_reply_to":"36867b26_d898cfac","updated":"2026-04-14 08:34:16.000000000","message":"My bad!\nI didn\u0027t noticed you have copied also this log part from linuxspidev.\nI should not ask you to run all these modifications, sorry!\nIf you prefer, I accept that you return to your original version using the `#if`, and I will take it!\nBut if you agree to something similar to the `hexify_sep` above for both drivers, that would be probably nicer.","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"34a85979a3cb595bb5d0fada8f6d474bf5716785","unresolved":true,"context_lines":[{"line_number":272,"context_line":"\t\t\t\tLOG_OUTPUT(\"%.2\" PRIx8 \" \", tx_flip_buf[i]);"},{"line_number":273,"context_line":"\t\t}"},{"line_number":274,"context_line":"\t\tLOG_OUTPUT(\"\\n\");"},{"line_number":275,"context_line":"#endif // LOG_SPI_EXCHANGE"},{"line_number":276,"context_line":"\t} else {"},{"line_number":277,"context_line":"\t\tmemset(tx_flip_buf, 0, len);"},{"line_number":278,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"26832865_b8b4033f","line":275,"in_reply_to":"e74eb6b3_844c89ad","updated":"2026-04-08 20:31:17.000000000","message":"I started to implement this but became concerned that we are still running hexify regardless of the debug state. With lots of data, are we concerned about this needless operation for typical workloads?\n\nAlso I\u0027m interested in using sprintf here because I think the space is very helpful as the first packet is always from the host and the second byte is mostly from the target. Any concerns about sprintf here?","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"e55513af94854f193ec9609470950f168a25d736","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t\t\treturn;"},{"line_number":311,"context_line":"\t\t}"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"#ifdef LOG_SPI_EXCHANGE"},{"line_number":314,"context_line":"\t\tif (len !\u003d 0) {"},{"line_number":315,"context_line":"\t\t\tLOG_OUTPUT(\" rx_buf\u003d\");"},{"line_number":316,"context_line":"\t\t\tfor (unsigned int i \u003d 0; i \u003c len; i++)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"771260c5_b6cf01e5","line":313,"updated":"2026-04-07 17:05:12.000000000","message":"Same here!","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"366223f8c3cbd30e02e3728127d2e67d57636197","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\t\t\treturn;"},{"line_number":311,"context_line":"\t\t}"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"#ifdef LOG_SPI_EXCHANGE"},{"line_number":314,"context_line":"\t\tif (len !\u003d 0) {"},{"line_number":315,"context_line":"\t\t\tLOG_OUTPUT(\" rx_buf\u003d\");"},{"line_number":316,"context_line":"\t\t\tfor (unsigned int i \u003d 0; i \u003c len; i++)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"91b85aea_01c1aa9b","line":313,"in_reply_to":"771260c5_b6cf01e5","updated":"2026-04-10 18:07:25.000000000","message":"Done","commit_id":"19e844cd2dfa3d533de36d8eeb1c4fd40bcb7df8"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"389900b964c004dbc7e5d5aa660ccc557e77103d","unresolved":true,"context_lines":[{"line_number":764,"context_line":"\tCOMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], spi_mode);"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"\tif (spi_mode !\u003d 0 \u0026\u0026 spi_mode !\u003d 3) {"},{"line_number":767,"context_line":"\t\tLOG_INFO(\"spi_mode %u not supported. Setting spi_mode to 3.\", spi_mode);"},{"line_number":768,"context_line":"\t\tspi_mode \u003d 3;"},{"line_number":769,"context_line":"\t}"},{"line_number":770,"context_line":"\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"42593a30_c7cc0360","line":767,"updated":"2026-04-16 08:16:08.000000000","message":"Return `ERROR_COMMAND_ARGUMENT_INVALID` rather than \"fixing\" the SPI mode. If an option is invalid, it should not be accepted; clearly, the user wanted something that isn\u0027t supported.","commit_id":"ec13494cfd1ba59dd844ff3228669a1302f6d449"}],"src/jtag/interface.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":396,"context_line":"extern struct adapter_driver kitprog_adapter_driver;"},{"line_number":397,"context_line":"extern struct adapter_driver linuxgpiod_adapter_driver;"},{"line_number":398,"context_line":"extern struct adapter_driver linuxspidev_adapter_driver;"},{"line_number":399,"context_line":"extern struct adapter_driver usb3813spi_adapter_driver;"},{"line_number":400,"context_line":"extern struct adapter_driver opendous_adapter_driver;"},{"line_number":401,"context_line":"extern struct adapter_driver openjtag_adapter_driver;"},{"line_number":402,"context_line":"extern struct adapter_driver osbdm_adapter_driver;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"35352483_97fa8c90","line":399,"updated":"2026-04-04 22:16:04.000000000","message":"please keep the list in alphabetic order, as reported on top","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":396,"context_line":"extern struct adapter_driver kitprog_adapter_driver;"},{"line_number":397,"context_line":"extern struct adapter_driver linuxgpiod_adapter_driver;"},{"line_number":398,"context_line":"extern struct adapter_driver linuxspidev_adapter_driver;"},{"line_number":399,"context_line":"extern struct adapter_driver usb3813spi_adapter_driver;"},{"line_number":400,"context_line":"extern struct adapter_driver opendous_adapter_driver;"},{"line_number":401,"context_line":"extern struct adapter_driver openjtag_adapter_driver;"},{"line_number":402,"context_line":"extern struct adapter_driver osbdm_adapter_driver;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"d86ca644_b2db1d57","line":399,"in_reply_to":"35352483_97fa8c90","updated":"2026-04-07 14:36:55.000000000","message":"Done","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"}],"src/jtag/interfaces.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dbd19e4092362cb54bda63980001a25dccf560c7","unresolved":true,"context_lines":[{"line_number":110,"context_line":"#if BUILD_LINUXSPIDEV \u003d\u003d 1"},{"line_number":111,"context_line":"\t\t\u0026linuxspidev_adapter_driver,"},{"line_number":112,"context_line":"#endif"},{"line_number":113,"context_line":"#if BUILD_USB3813SPI \u003d\u003d 1"},{"line_number":114,"context_line":"\t\t\u0026usb3813spi_adapter_driver,"},{"line_number":115,"context_line":"#endif"},{"line_number":116,"context_line":"#if BUILD_OPENDOUS \u003d\u003d 1"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"34113723_1ff7a5ad","line":113,"updated":"2026-04-04 22:16:04.000000000","message":"Keep the list in alphabetic order","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"},{"author":{"_account_id":1002347,"name":"Richard Pasek","email":"rpasek@google.com","username":"rpasek"},"change_message_id":"3f395209b0366602b9abdc47b9e475efe1c87d01","unresolved":false,"context_lines":[{"line_number":110,"context_line":"#if BUILD_LINUXSPIDEV \u003d\u003d 1"},{"line_number":111,"context_line":"\t\t\u0026linuxspidev_adapter_driver,"},{"line_number":112,"context_line":"#endif"},{"line_number":113,"context_line":"#if BUILD_USB3813SPI \u003d\u003d 1"},{"line_number":114,"context_line":"\t\t\u0026usb3813spi_adapter_driver,"},{"line_number":115,"context_line":"#endif"},{"line_number":116,"context_line":"#if BUILD_OPENDOUS \u003d\u003d 1"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"2db11cc2_95248c41","line":113,"in_reply_to":"34113723_1ff7a5ad","updated":"2026-04-07 14:36:55.000000000","message":"Done","commit_id":"2d0e3ff3fab3e42502d22e10e84189de6741d912"}]}
