)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"42f076fe_f66d1cc8","updated":"2021-11-23 10:13:35.000000000","message":"Thanks for the patch.\nWhen you send to gerrit a new version, take care to use the same Change-Id in the commit message, so gerrit will put the new patch as an updated version of the previous patch.\nThis will keep the patch history in gerrit and avoids to go to abandon old patches.","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"024a6f7f_165bcdcf","updated":"2021-11-23 13:11:51.000000000","message":"Hello Antonio,\n\nthank you so much for your feedback. I incorporated all the suggestions you made.\n\nBest, Lazlo","commit_id":"4b7c23a00dee38bca58c3313e530828f0e6a31ed"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"d2cdf0b36154729c31f9486603bbecbcc77a7fc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"905794f3_fd4416b7","updated":"2021-11-23 15:54:43.000000000","message":"Not tested yet, but looks ok. Thanks for the effort!","commit_id":"4b7c23a00dee38bca58c3313e530828f0e6a31ed"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"62d61652da60c0490254eb86e814d1758faa4ff3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8ac73bb9_ebd0df20","updated":"2021-11-23 16:14:26.000000000","message":"Tested, ooops one problem!","commit_id":"4b7c23a00dee38bca58c3313e530828f0e6a31ed"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"50119ee573495c5c77066c61e0e0db367ed3055c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0ffdeee2_f2bb1239","updated":"2021-11-24 09:57:57.000000000","message":"Fixed the issue with closing chips.","commit_id":"b356f19e3ee891326b60573ea5386d50a43946a7"},{"author":{"_account_id":1001943,"name":"Laszlo Sitzer","email":"laszlo.sitzer@native-instruments.de"},"change_message_id":"b026ff3a8ac8e2513812843e90d2c137f043c42d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d537c9df_dd3d27fd","updated":"2021-12-07 09:51:54.000000000","message":"Hey there!\nI wanted to check if there is anything on my side I should do to make this patch progress.\n\nBest,\n\nLazlo","commit_id":"b356f19e3ee891326b60573ea5386d50a43946a7"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"94a7cc3ba1c2f25c4d2c481d74b510a514bad83f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8bcf9789_3f218197","in_reply_to":"d537c9df_dd3d27fd","updated":"2021-12-07 09:58:00.000000000","message":"I\u0027m planning to merge it next weekend, in nobody adds further comments/reviews.","commit_id":"b356f19e3ee891326b60573ea5386d50a43946a7"}],"src/jtag/drivers/linuxgpiod.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":true,"context_lines":[{"line_number":371,"context_line":"\t\t\tgoto out_error;"},{"line_number":372,"context_line":"\t\t}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"\t\tgpiod_tdo \u003d helper_get_input_line(\"tdo\", gpiod_chip_tdo, tdo_gpio);"},{"line_number":375,"context_line":"\t\tif (!gpiod_tdo)"},{"line_number":376,"context_line":"\t\t\tgoto out_error;"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b63e5820_310d3605","line":374,"updated":"2021-11-23 10:13:35.000000000","message":"here you use variable gpiod_chip_tdo, but ...","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[{"line_number":371,"context_line":"\t\t\tgoto out_error;"},{"line_number":372,"context_line":"\t\t}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"\t\tgpiod_tdo \u003d helper_get_input_line(\"tdo\", gpiod_chip_tdo, tdo_gpio);"},{"line_number":375,"context_line":"\t\tif (!gpiod_tdo)"},{"line_number":376,"context_line":"\t\t\tgoto out_error;"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a5341d4b_d7c0d048","line":374,"in_reply_to":"b63e5820_310d3605","updated":"2021-11-23 13:11:51.000000000","message":"Thank you for pointing this out. I must have mixed up while moving parts of my changes. Fixed it now.","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":true,"context_lines":[{"line_number":387,"context_line":"\t\tif (!gpiod_tms)"},{"line_number":388,"context_line":"\t\t\tgoto out_error;"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"\t\tgpiod_chip_tdo \u003d gpiod_chip_open_by_number(tdo_gpiochip);"},{"line_number":391,"context_line":"\t\tif (!gpiod_chip_tdo) {"},{"line_number":392,"context_line":"\t\t\tLOG_ERROR(\"Cannot open LinuxGPIOD tdo_gpiochip %d\", tdo_gpiochip);"},{"line_number":393,"context_line":"\t\t\tgoto out_error;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"31bf508e_944672e8","line":390,"updated":"2021-11-23 10:13:35.000000000","message":"... the variable is set here!\nI think the chip should be \"open\" before opening the line","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[{"line_number":387,"context_line":"\t\tif (!gpiod_tms)"},{"line_number":388,"context_line":"\t\t\tgoto out_error;"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"\t\tgpiod_chip_tdo \u003d gpiod_chip_open_by_number(tdo_gpiochip);"},{"line_number":391,"context_line":"\t\tif (!gpiod_chip_tdo) {"},{"line_number":392,"context_line":"\t\t\tLOG_ERROR(\"Cannot open LinuxGPIOD tdo_gpiochip %d\", tdo_gpiochip);"},{"line_number":393,"context_line":"\t\t\tgoto out_error;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"94f74298_209b2e16","line":390,"in_reply_to":"31bf508e_944672e8","updated":"2021-11-23 13:11:51.000000000","message":"Fixed","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":true,"context_lines":[{"line_number":513,"context_line":"\t\tCOMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tck_gpiochip);"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"\tcommand_print(CMD, \"LinuxGPIOD num: tck \u003d %d, chip \u003d %d\", tck_gpio, tck_gpiochip);"},{"line_number":516,"context_line":"\treturn ERROR_OK;"},{"line_number":517,"context_line":"}"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tms)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a8d406c7_91374591","line":516,"updated":"2021-11-23 10:13:35.000000000","message":"I think the chip should precede the gpio line.\nint i \u003d 0;\nif (ARGC \u003e 2)\n  return ERROR_COMMAND_SYNTAX_ERROR;\nif (ARGC \u003d\u003d 2) {\n  COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tck_gpiochip);\n  i \u003d 1;\n}\nif (ARGC \u003e 0)\n  COMMAND_PARSE_NUMBER(int, CMD_ARGV[i], tck_gpio);\ncommand_print...\n\nTo avoid repeating 9 times the same code, consider using a single helper:\nCOMMAND_HELPER(linuxgpio_helper_gpionum, const char *name, int *chip, int *line)\n{\n  int i \u003d 0;\n  if (ARGC \u003e 2)\n    return ERROR_COMMAND_SYNTAX_ERROR;\n  if (ARGC \u003d\u003d 2) {\n    COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], *chip);\n    i \u003d 1;\n  }\n  if (ARGC \u003e 0)\n    COMMAND_PARSE_NUMBER(int, CMD_ARGV[i], *line);\n  command_print(CMD, \"LinuxGPIOD %s: chip \u003d %d, num \u003d %d\", name, *chip, *line);\n  return ERROR_OK;\n}\n\nthen you can simply have\nCOMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tck)\n{\n  return CALL_COMMAND_HANDLER(linuxgpio_helper_gpionum, \"tck\", \u0026tck_gpiochip, \u0026tck_gpio);\n}","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[{"line_number":513,"context_line":"\t\tCOMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tck_gpiochip);"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"\tcommand_print(CMD, \"LinuxGPIOD num: tck \u003d %d, chip \u003d %d\", tck_gpio, tck_gpiochip);"},{"line_number":516,"context_line":"\treturn ERROR_OK;"},{"line_number":517,"context_line":"}"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tms)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"15036b88_cbcf053f","line":516,"in_reply_to":"a8d406c7_91374591","updated":"2021-11-23 13:11:51.000000000","message":"Good point! Fixed.","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":true,"context_lines":[{"line_number":651,"context_line":"\t\t.name \u003d \"tck_num\","},{"line_number":652,"context_line":"\t\t.handler \u003d linuxgpiod_handle_jtag_gpionum_tck,"},{"line_number":653,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":654,"context_line":"\t\t.help \u003d \"gpio number for tck (optionally followed by gpio chip number).\","},{"line_number":655,"context_line":"\t\t.usage \u003d \"tck\","},{"line_number":656,"context_line":"\t},"},{"line_number":657,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c9c471de_bcd59310","line":654,"updated":"2021-11-23 10:13:35.000000000","message":"simply \"gpio chip number (optional) and gpio number for tck\"","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[{"line_number":651,"context_line":"\t\t.name \u003d \"tck_num\","},{"line_number":652,"context_line":"\t\t.handler \u003d linuxgpiod_handle_jtag_gpionum_tck,"},{"line_number":653,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":654,"context_line":"\t\t.help \u003d \"gpio number for tck (optionally followed by gpio chip number).\","},{"line_number":655,"context_line":"\t\t.usage \u003d \"tck\","},{"line_number":656,"context_line":"\t},"},{"line_number":657,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9cec118f_dbc79849","line":654,"in_reply_to":"c9c471de_bcd59310","updated":"2021-11-23 13:11:51.000000000","message":"Fixed","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"35fb2d36873b0fed13eb7e04fec91c96e666e9a9","unresolved":true,"context_lines":[{"line_number":652,"context_line":"\t\t.handler \u003d linuxgpiod_handle_jtag_gpionum_tck,"},{"line_number":653,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":654,"context_line":"\t\t.help \u003d \"gpio number for tck (optionally followed by gpio chip number).\","},{"line_number":655,"context_line":"\t\t.usage \u003d \"tck\","},{"line_number":656,"context_line":"\t},"},{"line_number":657,"context_line":"\t{"},{"line_number":658,"context_line":"\t\t.name \u003d \"tms_num\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c7029ffb_fd427652","line":655,"updated":"2021-11-23 10:13:35.000000000","message":"this has to be changed too: \"[chip] tck\"","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"9b60a8abc3a57062ab82efa0d115cf578b8ae145","unresolved":false,"context_lines":[{"line_number":652,"context_line":"\t\t.handler \u003d linuxgpiod_handle_jtag_gpionum_tck,"},{"line_number":653,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":654,"context_line":"\t\t.help \u003d \"gpio number for tck (optionally followed by gpio chip number).\","},{"line_number":655,"context_line":"\t\t.usage \u003d \"tck\","},{"line_number":656,"context_line":"\t},"},{"line_number":657,"context_line":"\t{"},{"line_number":658,"context_line":"\t\t.name \u003d \"tms_num\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"4719f752_331d8a7a","line":655,"in_reply_to":"c7029ffb_fd427652","updated":"2021-11-23 13:11:51.000000000","message":"Fixed","commit_id":"5eb9474d592674a33177a1191041794afe327dd2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"62d61652da60c0490254eb86e814d1758faa4ff3","unresolved":true,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"\tgpiod_chip_close(gpiod_chip_led);"},{"line_number":295,"context_line":"\tgpiod_chip_close(gpiod_chip_srst);"},{"line_number":296,"context_line":"\tgpiod_chip_close(gpiod_chip_swdio);"},{"line_number":297,"context_line":"\tgpiod_chip_close(gpiod_chip_swclk);"},{"line_number":298,"context_line":"\tgpiod_chip_close(gpiod_chip_trst);"},{"line_number":299,"context_line":"\tgpiod_chip_close(gpiod_chip_tms);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"40b33c79_9d77f99a","line":296,"updated":"2021-11-23 16:14:26.000000000","message":"I get segmentation fault, here, if I use JTAG, with libgpiod 1.6.2\nThe problem is that, using jtag, gpiod_chip_swdio is NULL.\nProbably this version of libgpiod doesn\u0027t check if the argument is NULL.\nEach of these needs:\nif (gpiod_chip_XX)\n   gpiod_chip_close(gpiod_chip_XX);\nOr, extend the helper_release() to also release the chip if not NULL.","commit_id":"4b7c23a00dee38bca58c3313e530828f0e6a31ed"},{"author":{"_account_id":1001936,"name":"Laszlo Sitzer","display_name":"lazlo","email":"dlsitzer@gmail.com","username":"Lazlo"},"change_message_id":"50119ee573495c5c77066c61e0e0db367ed3055c","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"\tgpiod_chip_close(gpiod_chip_led);"},{"line_number":295,"context_line":"\tgpiod_chip_close(gpiod_chip_srst);"},{"line_number":296,"context_line":"\tgpiod_chip_close(gpiod_chip_swdio);"},{"line_number":297,"context_line":"\tgpiod_chip_close(gpiod_chip_swclk);"},{"line_number":298,"context_line":"\tgpiod_chip_close(gpiod_chip_trst);"},{"line_number":299,"context_line":"\tgpiod_chip_close(gpiod_chip_tms);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"9cdebfa2_17523eee","line":296,"in_reply_to":"40b33c79_9d77f99a","updated":"2021-11-24 09:57:57.000000000","message":"Fixed. I added a condition to check for !\u003d NULL before calling close.","commit_id":"4b7c23a00dee38bca58c3313e530828f0e6a31ed"}]}
