)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"910095cdeea7278306d5c4a1dde0b810a4553cdd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"42f1f0a5_d9706d37","updated":"2024-11-03 11:27:25.000000000","message":"I am a bit nervous that we are setting global pointer bitbang_interface to point to a structure full of pointers, and then we change a pointer inside afterwards, so I wrote this patch.\n\nI have a question though: the existing code decides between bcm2835gpio_swd_write_fast and bcm2835gpio_swd_write_generic only if ( transport_is_swd() ).\n\nPreviously, bcm2835gpio_swd_write_generic was always the default for field swd_write, and now the default is NULL if the transport is not SWD. Is that still OK?\n\nI am guessing that, if the transport is not SWD, then the SWD GPIOs will not have been initialised, so calling swd_write is not safe. In this case, I wonder whether we should be setting all SWD-related pointers (swd_write, swdio_read and swdio_drive) to NULL, just in case.","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"438b22aa85e4bcc8ce0f3d5e33a757d7be921254","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"da9a88d2_f62f4439","in_reply_to":"42f1f0a5_d9706d37","updated":"2024-11-04 13:56:15.000000000","message":"Done","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"07ca42b66ebabf0b3ceee72d625b36de19648cbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a091b785_a68a1097","updated":"2025-01-12 21:02:23.000000000","message":"I have implemented the suggested way.","commit_id":"72ece18ed3e5bc8f8955eafadea0b3aedf4b9db5"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"0330b2672f3241ca264fbfb8e266223aceddf8b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6fe98bee_210b887b","updated":"2025-02-16 18:35:16.000000000","message":"Is there any reason why this patch hasn\u0027t been merged with the last batch?","commit_id":"72ece18ed3e5bc8f8955eafadea0b3aedf4b9db5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1719d89720300d2985b646c68692dd189be686cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"905645fd_cc2e1ca0","updated":"2025-03-10 08:24:18.000000000","message":"Thanks","commit_id":"72ece18ed3e5bc8f8955eafadea0b3aedf4b9db5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1719d89720300d2985b646c68692dd189be686cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b8c7c1d8_86714613","in_reply_to":"6fe98bee_210b887b","updated":"2025-03-10 08:24:18.000000000","message":"The only reason is that I have lost it in my inbox. Sorry for that","commit_id":"72ece18ed3e5bc8f8955eafadea0b3aedf4b9db5"}],"src/jtag/drivers/bcm2835gpio.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ded65d02434bfc07b6188c1e8c2e690bfc3fa497","unresolved":true,"context_lines":[{"line_number":432,"context_line":"\t.write \u003d bcm2835gpio_write,"},{"line_number":433,"context_line":"\t.swdio_read \u003d bcm2835_swdio_read,"},{"line_number":434,"context_line":"\t.swdio_drive \u003d bcm2835_swdio_drive,"},{"line_number":435,"context_line":"\t.swd_write \u003d NULL,  // Set during initialisation if using SWD."},{"line_number":436,"context_line":"\t.blink \u003d bcm2835gpio_blink,"},{"line_number":437,"context_line":"};"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"eec83559_6dff50a6","line":435,"updated":"2024-11-04 13:51:01.000000000","message":"With my comments in patch https://review.openocd.org/c/openocd/+/8535\nit could be simpler to define here two const struct, one using `bcm2835gpio_swd_write_fast` and the other using `bcm2835gpio_swd_write_generic`.\nIn the init function below, use a local variable pointing to the generic case, and in the SWD case switch to the fast mode, when possible. Then at the end of the function calling the new API to finally assign the pointer","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"4ef3ea6ed20865b7458e3ae28056dbb8773c7f4a","unresolved":true,"context_lines":[{"line_number":432,"context_line":"\t.write \u003d bcm2835gpio_write,"},{"line_number":433,"context_line":"\t.swdio_read \u003d bcm2835_swdio_read,"},{"line_number":434,"context_line":"\t.swdio_drive \u003d bcm2835_swdio_drive,"},{"line_number":435,"context_line":"\t.swd_write \u003d NULL,  // Set during initialisation if using SWD."},{"line_number":436,"context_line":"\t.blink \u003d bcm2835gpio_blink,"},{"line_number":437,"context_line":"};"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b3344e63_e8a1bead","line":435,"in_reply_to":"34eaaf7e_e6347449","updated":"2024-11-04 20:49:17.000000000","message":"The new version of this patch will only compile once patch 8535 has been merged, so I\u0027ll wait until then.","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"07ca42b66ebabf0b3ceee72d625b36de19648cbd","unresolved":false,"context_lines":[{"line_number":432,"context_line":"\t.write \u003d bcm2835gpio_write,"},{"line_number":433,"context_line":"\t.swdio_read \u003d bcm2835_swdio_read,"},{"line_number":434,"context_line":"\t.swdio_drive \u003d bcm2835_swdio_drive,"},{"line_number":435,"context_line":"\t.swd_write \u003d NULL,  // Set during initialisation if using SWD."},{"line_number":436,"context_line":"\t.blink \u003d bcm2835gpio_blink,"},{"line_number":437,"context_line":"};"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b57cdf04_42e9a717","line":435,"in_reply_to":"b3344e63_e8a1bead","updated":"2025-01-12 21:02:23.000000000","message":"Done","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"},{"author":{"_account_id":1000438,"name":"R. Diez","email":"rdiez-2006@rd10.de","username":"rdiez"},"change_message_id":"438b22aa85e4bcc8ce0f3d5e33a757d7be921254","unresolved":true,"context_lines":[{"line_number":432,"context_line":"\t.write \u003d bcm2835gpio_write,"},{"line_number":433,"context_line":"\t.swdio_read \u003d bcm2835_swdio_read,"},{"line_number":434,"context_line":"\t.swdio_drive \u003d bcm2835_swdio_drive,"},{"line_number":435,"context_line":"\t.swd_write \u003d NULL,  // Set during initialisation if using SWD."},{"line_number":436,"context_line":"\t.blink \u003d bcm2835gpio_blink,"},{"line_number":437,"context_line":"};"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"34eaaf7e_e6347449","line":435,"in_reply_to":"eec83559_6dff50a6","updated":"2024-11-04 13:56:15.000000000","message":"That is a suboptimal solution, but there is just one place where this happens, and just 2 different structures are necessary, so that would be fine (today).\n\nI\u0027ll rework this patch when I find some spare time.","commit_id":"bc900af0c4ab0811a83425b09a7eb0b1e00d47f1"}]}
