diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | arch/arm/dts/imx6sx-udoo-neo-basic-u-boot.dtsi | 17 | ||||
-rw-r--r-- | arch/arm/dts/k3-j721e-sk-u-boot.dtsi | 8 | ||||
-rw-r--r-- | common/cli_getch.c | 5 | ||||
-rw-r--r-- | common/cli_readline.c | 3 | ||||
-rw-r--r-- | doc/develop/ci_testing.rst | 6 | ||||
-rw-r--r-- | doc/develop/release_cycle.rst | 27 | ||||
-rw-r--r-- | doc/develop/statistics/u-boot-stats-v2023.04.rst | 767 | ||||
-rw-r--r-- | drivers/ram/rockchip/sdram_rk3399.c | 2 | ||||
-rw-r--r-- | drivers/scsi/Kconfig | 2 | ||||
-rw-r--r-- | drivers/sysreset/sysreset_gpio.c | 7 | ||||
-rw-r--r-- | include/cli.h | 4 | ||||
-rw-r--r-- | include/configs/imx8mn_bsh_smm_s2.h | 2 | ||||
-rw-r--r-- | include/efi_api.h | 1 | ||||
-rw-r--r-- | lib/efi_loader/efi_device_path.c | 23 | ||||
-rw-r--r-- | test/common/Makefile | 1 | ||||
-rw-r--r-- | test/common/cread.c | 93 | ||||
-rw-r--r-- | tools/buildman/toolchain.py | 2 |
18 files changed, 930 insertions, 42 deletions
@@ -3,7 +3,7 @@ VERSION = 2023 PATCHLEVEL = 04 SUBLEVEL = -EXTRAVERSION = -rc5 +EXTRAVERSION = NAME = # *DOCUMENTATION* diff --git a/arch/arm/dts/imx6sx-udoo-neo-basic-u-boot.dtsi b/arch/arm/dts/imx6sx-udoo-neo-basic-u-boot.dtsi new file mode 100644 index 00000000000..be755e125b5 --- /dev/null +++ b/arch/arm/dts/imx6sx-udoo-neo-basic-u-boot.dtsi @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ + +&soc { + u-boot,dm-pre-reloc; +}; + +&aips1 { + u-boot,dm-pre-reloc; +}; + +&pinctrl_uart1 { + u-boot,dm-pre-reloc; +}; + +&uart1 { + u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/dts/k3-j721e-sk-u-boot.dtsi b/arch/arm/dts/k3-j721e-sk-u-boot.dtsi index 0949caa1296..31f979f3bb8 100644 --- a/arch/arm/dts/k3-j721e-sk-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-sk-u-boot.dtsi @@ -33,7 +33,7 @@ &cbass_main{ bootph-pre-ram; - main_navss { + main_navss: bus@30000000 { bootph-pre-ram; }; }; @@ -49,7 +49,7 @@ bootph-pre-ram; }; - mcu-navss { + mcu_navss: bus@28380000 { bootph-pre-ram; ringacc@2b800000 { @@ -237,6 +237,10 @@ bootph-pre-ram; }; +&hbmc { + status = "disabled"; +}; + &ospi0 { bootph-pre-ram; diff --git a/common/cli_getch.c b/common/cli_getch.c index 87c23edcf4b..61d4cb261b8 100644 --- a/common/cli_getch.c +++ b/common/cli_getch.c @@ -129,7 +129,7 @@ static int cli_ch_esc(struct cli_ch_state *cch, int ichar, *actp = act; - return act == ESC_CONVERTED ? ichar : 0; + return ichar; } int cli_ch_process(struct cli_ch_state *cch, int ichar) @@ -145,6 +145,7 @@ int cli_ch_process(struct cli_ch_state *cch, int ichar) return cch->esc_save[cch->emit_upto++]; cch->emit_upto = 0; cch->emitting = false; + cch->esc_len = 0; } return 0; } else if (ichar == -ETIMEDOUT) { @@ -185,7 +186,7 @@ int cli_ch_process(struct cli_ch_state *cch, int ichar) cch->esc_save[cch->esc_len++] = ichar; ichar = cch->esc_save[cch->emit_upto++]; cch->emitting = true; - break; + return ichar; case ESC_CONVERTED: /* valid escape sequence, return the resulting char */ cch->esc_len = 0; diff --git a/common/cli_readline.c b/common/cli_readline.c index 709e9c3d38b..e83743e90c9 100644 --- a/common/cli_readline.c +++ b/common/cli_readline.c @@ -284,10 +284,9 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, } ichar = getcmd_getch(); + ichar = cli_ch_process(cch, ichar); } - ichar = cli_ch_process(cch, ichar); - /* ichar=0x0 when error occurs in U-Boot getc */ if (!ichar) continue; diff --git a/doc/develop/ci_testing.rst b/doc/develop/ci_testing.rst index b9a9a516c1e..ffaacedc3d8 100644 --- a/doc/develop/ci_testing.rst +++ b/doc/develop/ci_testing.rst @@ -50,6 +50,12 @@ runners you are able to provide. While it is intended to be able to run this pipeline on the free public instances provided at https://gitlab.com/ a problem with our squashfs tests currently prevents this. +To push to Gitlab without triggering a pipeline use: + +.. code-block:: bash + + git push -o ci.skip + Docker container ---------------- diff --git a/doc/develop/release_cycle.rst b/doc/develop/release_cycle.rst index ea584cef21a..7d63cf483cd 100644 --- a/doc/develop/release_cycle.rst +++ b/doc/develop/release_cycle.rst @@ -48,13 +48,14 @@ Examples:: Current Status -------------- -* U-Boot v2023.01 was released on Mon 09 January 2023. +* U-Boot v2023.04 was released on Mon 03 April 2023. -* The Merge Window for the next release (v2023.04) is **closed**. +* The Merge Window for the next release (v2023.07) is **open** until the -rc1 + release on Mon 24 April 2023. -* The next branch is now **open**. +* The next branch is now **closed**. -* Release "v2023.04" is scheduled for 03 April 2023. +* Release "v2023.07" is scheduled for 03 July 2023. Future Releases --------------- @@ -62,29 +63,29 @@ Future Releases .. The following commented out dates are for when release candidates are planned to be tagged. -For the next scheduled release, release candidates were made on:: +.. For the next scheduled release, release candidates were made on:: -* U-Boot v2023.04-rc1 was released on Mon 30 January 2023. +.. * U-Boot v2023.07-rc1 was released on Mon 24 April 2023. -* U-Boot v2023.04-rc2 was released on Mon 13 February 2023. +.. * U-Boot v2023.07-rc2 was released on Mon 08 May 2023. -* U-Boot v2023.04-rc3 was released on Mon 27 February 2023. +.. * U-Boot v2023.07-rc3 was released on Mon 22 May 2023. -* U-Boot v2023.04-rc4 was released on Mon 13 March 2023. +.. * U-Boot v2023.07-rc4 was released on Mon 05 June 2023. -* U-Boot v2023.04-rc5 was released on Mon 27 March 2023. +.. * U-Boot v2023.07-rc5 was released on Mon 19 June 2023. Please note that the following dates are planned only and may be deviated from as needed. -* "v2023.04": end of MW = Mon, Jan 30, 2022; release = Mon, Apr 03, 2023 - * "v2023.07": end of MW = Mon, Apr 24, 2023; release = Mon, Jul 03, 2023 * "v2023.10": end of MW = Mon, Jul 24, 2023; release = Mon, Oct 02, 2023 * "v2024.01": end of MW = Mon, Oct 23, 2023; release = Mon, Jan 08, 2024 +* "v2024.04": end of MW = Mon, Jan 29, 2024; release = Tue, Apr 02, 2024 + Previous Releases ----------------- @@ -92,6 +93,8 @@ Note: these statistics are generated by our fork of `gitdm <https://source.denx.de/u-boot/gitdm>`_, which was originally created by Jonathan Corbet. +* :doc:`statistics/u-boot-stats-v2023.04` which was released on 03 April 2023. + * :doc:`statistics/u-boot-stats-v2023.01` which was released on 09 January 2023. * :doc:`statistics/u-boot-stats-v2022.10` which was released on 03 October 2022. diff --git a/doc/develop/statistics/u-boot-stats-v2023.04.rst b/doc/develop/statistics/u-boot-stats-v2023.04.rst new file mode 100644 index 00000000000..57f2efc30e3 --- /dev/null +++ b/doc/develop/statistics/u-boot-stats-v2023.04.rst @@ -0,0 +1,767 @@ +:orphan: + +Release Statistics for U-Boot v2023.04 +====================================== + +* Processed 1691 changesets from 157 developers + +* 29 employers found + +* A total of 174471 lines added, 78380 removed (delta 96091) + +.. table:: Developers with the most changesets + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 381 (22.5%) + Tom Rini 333 (19.7%) + Marek Vasut 101 (6.0%) + Heinrich Schuchardt 70 (4.1%) + Jagan Teki 53 (3.1%) + Jonas Karlman 36 (2.1%) + Patrick Delaunay 35 (2.1%) + Hai Pham 21 (1.2%) + Michal Simek 20 (1.2%) + Maxim Cournoyer 20 (1.2%) + Svyatoslav Ryhel 17 (1.0%) + Sean Anderson 15 (0.9%) + Fabio Estevam 14 (0.8%) + Pali Rohár 14 (0.8%) + Sumit Garg 14 (0.8%) + Bryan Brattlof 14 (0.8%) + Sinthu Raja 13 (0.8%) + Andre Przywara 13 (0.8%) + Heiko Schocher 13 (0.8%) + Yu Chien Peter Lin 12 (0.7%) + Tim Harvey 12 (0.7%) + Peng Fan 12 (0.7%) + Tony Dinh 11 (0.7%) + Angelo Dureghello 11 (0.7%) + Masahisa Kojima 11 (0.7%) + Quentin Schulz 11 (0.7%) + Roger Quadros 11 (0.7%) + Marcel Ziswiler 11 (0.7%) + Holger Brunck 10 (0.6%) + Mark Kettenis 10 (0.6%) + Sergiu Moga 10 (0.6%) + Nikhil M Jain 9 (0.5%) + Jim Liu 9 (0.5%) + Christophe Leroy 9 (0.5%) + Balamanikandan Gunasundar 9 (0.5%) + Dario Binacchi 8 (0.5%) + Samuel Holland 8 (0.5%) + Frieder Schrempf 8 (0.5%) + Mikhail Ilin 8 (0.5%) + Sjoerd Simons 7 (0.4%) + Neil Armstrong 7 (0.4%) + Eugen Hristev 7 (0.4%) + Chris Morgan 7 (0.4%) + Dzmitry Sankouski 7 (0.4%) + Ioana Ciornei 7 (0.4%) + Ilias Apalodimas 6 (0.4%) + Peter Robinson 6 (0.4%) + Paweł Anikiel 6 (0.4%) + Andrejs Cainikovs 6 (0.4%) + Rob Herring 6 (0.4%) + John Keeping 5 (0.3%) + Mihai Sain 5 (0.3%) + Rick Chen 5 (0.3%) + Sergei Antonov 5 (0.3%) + Ashok Reddy Soma 5 (0.3%) + Algapally Santosh Sagar 5 (0.3%) + Dhruva Gole 5 (0.3%) + Brandon Maier 5 (0.3%) + Alexey Romanov 5 (0.3%) + Vasily Khoruzhick 4 (0.2%) + Manoj Sai 4 (0.2%) + Jan Kiszka 4 (0.2%) + Ovidiu Panait 4 (0.2%) + Takahiro Kuwano 4 (0.2%) + Enric Balletbo i Serra 4 (0.2%) + Fabrice Gasnier 4 (0.2%) + Victor Lim 4 (0.2%) + Stefan Bosch 4 (0.2%) + Vincent Stehlé 3 (0.2%) + Tam Nguyen 3 (0.2%) + Leo Yu-Chi Liang 3 (0.2%) + Mattijs Korpershoek 3 (0.2%) + Ye Li 3 (0.2%) + Oleksandr Suvorov 3 (0.2%) + Max Krummenacher 3 (0.2%) + Andrew Davis 3 (0.2%) + Michael Walle 3 (0.2%) + Andreas Kemnade 3 (0.2%) + Kshitiz Varshney 3 (0.2%) + Dai Okamura 3 (0.2%) + Stefan Roese 2 (0.1%) + Vincent Fazio 2 (0.1%) + Kamlesh Gurudasani 2 (0.1%) + Johan Jonker 2 (0.1%) + Antoine Mazeas 2 (0.1%) + Christopher Obbard 2 (0.1%) + Akash Gajjar 2 (0.1%) + Ilko Iliev 2 (0.1%) + Qu Wenruo 2 (0.1%) + Etienne Carriere 2 (0.1%) + Thomas Fitzsimmons 2 (0.1%) + Pei Yue Ho 2 (0.1%) + Ryan Chen 2 (0.1%) + Adam Ford 2 (0.1%) + Philippe Schenker 2 (0.1%) + Linus Walleij 2 (0.1%) + Sean Edmond 2 (0.1%) + Nikita Shubin 2 (0.1%) + Ying-Chun Liu (PaulLiu) 2 (0.1%) + Loic Poulain 2 (0.1%) + Pengfei Fan 2 (0.1%) + Jernej Skrabec 2 (0.1%) + Neha Malcom Francis 2 (0.1%) + Harald Seiler 2 (0.1%) + Shenlin Liang 2 (0.1%) + Martyn Welch 2 (0.1%) + Harini Katakam 2 (0.1%) + Marc Kleine-Budde 2 (0.1%) + David Sebek 1 (0.1%) + Jonathan Liu 1 (0.1%) + Vignesh Raghavendra 1 (0.1%) + Sebastian Andrzej Siewior 1 (0.1%) + annsai01 1 (0.1%) + Peter Geis 1 (0.1%) + Ralph Siemsen 1 (0.1%) + Robert Marko 1 (0.1%) + Michal Suchanek 1 (0.1%) + Jaehoon Chung 1 (0.1%) + Christian Kohlschütter 1 (0.1%) + Ramin Khonsari 1 (0.1%) + Maxim Schwalm 1 (0.1%) + Venkatesh Yadav Abbarapu 1 (0.1%) + Ivan Khoronzhuk 1 (0.1%) + Ulf Samuelsson 1 (0.1%) + Jade Lovelace 1 (0.1%) + Michael Trimarchi 1 (0.1%) + Matwey V. Kornilov 1 (0.1%) + KaDiWa 1 (0.1%) + Christian Marangi 1 (0.1%) + Ehsan Mohandesi 1 (0.1%) + Aurelien Jarno 1 (0.1%) + Mario Kicherer 1 (0.1%) + Arnaud Ferraris 1 (0.1%) + Detlev Casanova 1 (0.1%) + Igor Opaniuk 1 (0.1%) + Massimo Pegorer 1 (0.1%) + Kunihiko Hayashi 1 (0.1%) + Joost van Zwieten 1 (0.1%) + Jorge Ramirez-Ortiz 1 (0.1%) + Jay Buddhabhatti 1 (0.1%) + Andrey Dolnikov 1 (0.1%) + chenzhipeng 1 (0.1%) + Olivier Moysan 1 (0.1%) + Ville Skyttä 1 (0.1%) + David Oberhollenzer 1 (0.1%) + Haijun Qin 1 (0.1%) + Neal Frager 1 (0.1%) + Luca Ceresoli 1 (0.1%) + Viacheslav Bocharov 1 (0.1%) + Yuepeng Xing 1 (0.1%) + Cristian Birsan 1 (0.1%) + Lokanathan, Raaj 1 (0.1%) + Christian Gmeiner 1 (0.1%) + Daniel Golle 1 (0.1%) + Manuel Traut 1 (0.1%) + Ben Dooks 1 (0.1%) + Kasper Revsbech 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most changed lines + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Bryan Brattlof 38811 (18.1%) + Tom Rini 36464 (17.0%) + Simon Glass 30090 (14.0%) + Jagan Teki 23918 (11.1%) + Marek Vasut 14720 (6.9%) + Brandon Maier 13759 (6.4%) + Tony Dinh 7399 (3.4%) + Balamanikandan Gunasundar 4239 (2.0%) + Jim Liu 4106 (1.9%) + Fabio Estevam 3264 (1.5%) + Christophe Leroy 2145 (1.0%) + Neil Armstrong 2020 (0.9%) + Nikhil M Jain 1681 (0.8%) + Sumit Garg 1671 (0.8%) + Tim Harvey 1524 (0.7%) + Jonas Karlman 1439 (0.7%) + Roger Quadros 1431 (0.7%) + Quentin Schulz 1296 (0.6%) + Heinrich Schuchardt 1277 (0.6%) + Michal Simek 1274 (0.6%) + Svyatoslav Ryhel 1259 (0.6%) + Akash Gajjar 1057 (0.5%) + Mark Kettenis 1042 (0.5%) + Sinthu Raja 967 (0.5%) + Holger Brunck 966 (0.5%) + Chris Morgan 965 (0.4%) + Peter Robinson 919 (0.4%) + Luca Ceresoli 860 (0.4%) + Hai Pham 712 (0.3%) + Andre Przywara 702 (0.3%) + Kunihiko Hayashi 695 (0.3%) + Dario Binacchi 690 (0.3%) + Patrick Delaunay 668 (0.3%) + Samuel Holland 568 (0.3%) + Dhruva Gole 527 (0.2%) + Ryan Chen 504 (0.2%) + Sergei Antonov 464 (0.2%) + Sean Anderson 439 (0.2%) + Ashok Reddy Soma 399 (0.2%) + Masahisa Kojima 391 (0.2%) + Sergiu Moga 382 (0.2%) + Maxim Cournoyer 380 (0.2%) + Massimo Pegorer 353 (0.2%) + Linus Walleij 317 (0.1%) + Eugen Hristev 295 (0.1%) + Alexey Romanov 285 (0.1%) + Yu Chien Peter Lin 267 (0.1%) + Stefan Bosch 260 (0.1%) + Dzmitry Sankouski 257 (0.1%) + Heiko Schocher 221 (0.1%) + Enric Balletbo i Serra 214 (0.1%) + Kshitiz Varshney 211 (0.1%) + Thomas Fitzsimmons 205 (0.1%) + Mihai Sain 191 (0.1%) + Angelo Dureghello 167 (0.1%) + Adam Ford 162 (0.1%) + Marcel Ziswiler 160 (0.1%) + Mattijs Korpershoek 154 (0.1%) + Etienne Carriere 154 (0.1%) + Leo Yu-Chi Liang 135 (0.1%) + Ramin Khonsari 131 (0.1%) + Pali Rohár 127 (0.1%) + Olivier Moysan 116 (0.1%) + Vincent Fazio 106 (0.0%) + Fabrice Gasnier 98 (0.0%) + Max Krummenacher 80 (0.0%) + Takahiro Kuwano 76 (0.0%) + Victor Lim 73 (0.0%) + Frieder Schrempf 72 (0.0%) + Manoj Sai 70 (0.0%) + Andrew Davis 70 (0.0%) + Mikhail Ilin 69 (0.0%) + Dai Okamura 65 (0.0%) + Tam Nguyen 63 (0.0%) + Peng Fan 61 (0.0%) + Sjoerd Simons 61 (0.0%) + Cristian Birsan 59 (0.0%) + Antoine Mazeas 51 (0.0%) + Rick Chen 49 (0.0%) + Paweł Anikiel 47 (0.0%) + Andreas Kemnade 45 (0.0%) + Jan Kiszka 43 (0.0%) + Andrejs Cainikovs 41 (0.0%) + Michael Trimarchi 41 (0.0%) + Rob Herring 40 (0.0%) + Martyn Welch 36 (0.0%) + Stefan Roese 35 (0.0%) + Neha Malcom Francis 35 (0.0%) + Algapally Santosh Sagar 34 (0.0%) + Jernej Skrabec 34 (0.0%) + Maxim Schwalm 30 (0.0%) + Qu Wenruo 29 (0.0%) + Loic Poulain 29 (0.0%) + Ioana Ciornei 28 (0.0%) + Christian Kohlschütter 28 (0.0%) + Michael Walle 23 (0.0%) + Vasily Khoruzhick 22 (0.0%) + Pei Yue Ho 22 (0.0%) + Vincent Stehlé 19 (0.0%) + Venkatesh Yadav Abbarapu 19 (0.0%) + Pengfei Fan 16 (0.0%) + Harald Seiler 16 (0.0%) + Ville Skyttä 16 (0.0%) + Sean Edmond 14 (0.0%) + Harini Katakam 14 (0.0%) + Robert Marko 14 (0.0%) + John Keeping 13 (0.0%) + Ovidiu Panait 13 (0.0%) + Kamlesh Gurudasani 13 (0.0%) + Nikita Shubin 13 (0.0%) + Marc Kleine-Budde 13 (0.0%) + Detlev Casanova 13 (0.0%) + David Oberhollenzer 11 (0.0%) + Ilias Apalodimas 10 (0.0%) + Mario Kicherer 10 (0.0%) + Yuepeng Xing 10 (0.0%) + Jaehoon Chung 9 (0.0%) + KaDiWa 9 (0.0%) + Oleksandr Suvorov 8 (0.0%) + Christian Gmeiner 8 (0.0%) + Ye Li 7 (0.0%) + Christopher Obbard 7 (0.0%) + Ying-Chun Liu (PaulLiu) 7 (0.0%) + Johan Jonker 6 (0.0%) + Jonathan Liu 6 (0.0%) + Andrey Dolnikov 6 (0.0%) + Daniel Golle 6 (0.0%) + Philippe Schenker 5 (0.0%) + Michal Suchanek 5 (0.0%) + Ivan Khoronzhuk 5 (0.0%) + Ilko Iliev 4 (0.0%) + Manuel Traut 4 (0.0%) + Shenlin Liang 3 (0.0%) + annsai01 3 (0.0%) + Ulf Samuelsson 3 (0.0%) + Matwey V. Kornilov 3 (0.0%) + Jay Buddhabhatti 3 (0.0%) + chenzhipeng 3 (0.0%) + Ben Dooks 3 (0.0%) + Peter Geis 2 (0.0%) + Ralph Siemsen 2 (0.0%) + Christian Marangi 2 (0.0%) + Jorge Ramirez-Ortiz 2 (0.0%) + David Sebek 1 (0.0%) + Vignesh Raghavendra 1 (0.0%) + Sebastian Andrzej Siewior 1 (0.0%) + Jade Lovelace 1 (0.0%) + Ehsan Mohandesi 1 (0.0%) + Aurelien Jarno 1 (0.0%) + Arnaud Ferraris 1 (0.0%) + Igor Opaniuk 1 (0.0%) + Joost van Zwieten 1 (0.0%) + Haijun Qin 1 (0.0%) + Neal Frager 1 (0.0%) + Viacheslav Bocharov 1 (0.0%) + Lokanathan, Raaj 1 (0.0%) + Kasper Revsbech 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most lines removed + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Tom Rini 18089 (23.1%) + Simon Glass 5998 (7.7%) + Luca Ceresoli 860 (1.1%) + Holger Brunck 532 (0.7%) + Leo Yu-Chi Liang 90 (0.1%) + Mattijs Korpershoek 83 (0.1%) + Andrew Davis 43 (0.1%) + Pali Rohár 28 (0.0%) + Maxim Schwalm 27 (0.0%) + Dai Okamura 12 (0.0%) + Michael Walle 12 (0.0%) + Ovidiu Panait 10 (0.0%) + Peng Fan 7 (0.0%) + Ioana Ciornei 6 (0.0%) + Michal Suchanek 4 (0.0%) + Rob Herring 3 (0.0%) + Johan Jonker 3 (0.0%) + Ying-Chun Liu (PaulLiu) 2 (0.0%) + Ilko Iliev 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most signoffs (total 215) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Francesco Dolcini 21 (9.8%) + Marek Vasut 21 (9.8%) + Tom 19 (8.8%) + Michal Simek 19 (8.8%) + Michael Trimarchi 8 (3.7%) + Dario Binacchi 8 (3.7%) + Neil Armstrong 8 (3.7%) + Hai Pham 7 (3.3%) + Kever Yang 6 (2.8%) + Tom Rini 5 (2.3%) + YouMin Chen 5 (2.3%) + Jianqun Xu 4 (1.9%) + Elaine Zhang 4 (1.9%) + Mike Worsfold 4 (1.9%) + Manoj Sai 4 (1.9%) + Marcel Ziswiler 4 (1.9%) + Ashok Reddy Soma 4 (1.9%) + Peter Robinson 4 (1.9%) + Peng Fan 3 (1.4%) + Andre Przywara 3 (1.4%) + Heinrich Schuchardt 3 (1.4%) + Vignesh Raghavendra 2 (0.9%) + Joseph Chen 2 (0.9%) + Finley Xiao 2 (0.9%) + Suniel Mahesh 2 (0.9%) + FUKAUMI Naoki 2 (0.9%) + Judith Mendez 2 (0.9%) + Robert Hancock 2 (0.9%) + Peter Geis 2 (0.9%) + Andrejs Cainikovs 2 (0.9%) + Samuel Holland 2 (0.9%) + Jonas Karlman 2 (0.9%) + Jagan Teki 2 (0.9%) + Simon Glass 1 (0.5%) + Mattijs Korpershoek 1 (0.5%) + Pali Rohár 1 (0.5%) + Michal Suchanek 1 (0.5%) + Anand Gadiyar 1 (0.5%) + Angelo Durgehello 1 (0.5%) + Nam Nguyen 1 (0.5%) + Steven Liu 1 (0.5%) + Sebastian Reichel 1 (0.5%) + Yifeng Zhao 1 (0.5%) + Ren Jianing 1 (0.5%) + Vladimir Oltean 1 (0.5%) + Jonas Schwöbel 1 (0.5%) + Shawn Guo 1 (0.5%) + Jason Zhu 1 (0.5%) + Jon Lin 1 (0.5%) + Sugar Zhang 1 (0.5%) + Valentine Barshak 1 (0.5%) + Jit Loon Lim 1 (0.5%) + Philippe Schenker 1 (0.5%) + Ilias Apalodimas 1 (0.5%) + Sjoerd Simons 1 (0.5%) + Tam Nguyen 1 (0.5%) + Ramin Khonsari 1 (0.5%) + Sergiu Moga 1 (0.5%) + Svyatoslav Ryhel 1 (0.5%) + Quentin Schulz 1 (0.5%) + ==================================== ===== + + +.. table:: Developers with the most reviews (total 767) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 225 (29.3%) + Kever Yang 112 (14.6%) + Fabio Estevam 49 (6.4%) + Tom Rini 33 (4.3%) + Patrice Chotard 33 (4.3%) + Marek Vasut 27 (3.5%) + Ramon Fried 22 (2.9%) + Stefan Roese 17 (2.2%) + Ilias Apalodimas 16 (2.1%) + Leo Yu-Chi Liang 15 (2.0%) + Rick Chen 15 (2.0%) + Heinrich Schuchardt 14 (1.8%) + Jagan Teki 14 (1.8%) + Patrick Delaunay 14 (1.8%) + Mattijs Korpershoek 13 (1.7%) + Jaehoon Chung 13 (1.7%) + Samuel Holland 12 (1.6%) + Heiko Schocher 9 (1.2%) + Neil Armstrong 8 (1.0%) + Vladimir Oltean 7 (0.9%) + Sean Anderson 7 (0.9%) + Bin Meng 6 (0.8%) + FRANJOU Stephane 6 (0.8%) + Claudiu Beznea 6 (0.8%) + Michael Trimarchi 5 (0.7%) + Peng Fan 5 (0.7%) + Jens Wiklander 5 (0.7%) + Yu Chien Peter Lin 4 (0.5%) + Andre Przywara 3 (0.4%) + Pali Rohár 3 (0.4%) + Viacheslav Mitrofanov 3 (0.4%) + Ye Li 3 (0.4%) + Dhruva Gole 3 (0.4%) + Marcel Ziswiler 2 (0.3%) + Oleksandr Suvorov 2 (0.3%) + Wei Liang Lim 2 (0.3%) + Eng Lee Teh 2 (0.3%) + Minkyu Kang 2 (0.3%) + Tudor Ambarus 2 (0.3%) + Philipp Tomsich 2 (0.3%) + Etienne Carriere 2 (0.3%) + Masahisa Kojima 2 (0.3%) + Eugen Hristev 2 (0.3%) + Francesco Dolcini 1 (0.1%) + Michal Simek 1 (0.1%) + Jonas Karlman 1 (0.1%) + Nishanth Menon 1 (0.1%) + Siddharth Vadapalli 1 (0.1%) + Matthias Brugger 1 (0.1%) + Chia-Wei Wang 1 (0.1%) + Huang Jianan 1 (0.1%) + Oliver Graute 1 (0.1%) + Pratyush Yadav 1 (0.1%) + Soeren Moch 1 (0.1%) + Sunil V L 1 (0.1%) + Miquel Raynal 1 (0.1%) + Hector Palacios 1 (0.1%) + Derald Woods 1 (0.1%) + Nick Desaulniers 1 (0.1%) + Frieder Schrempf 1 (0.1%) + Adam Ford 1 (0.1%) + Sumit Garg 1 (0.1%) + Christophe Leroy 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most test credits (total 78) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Svyatoslav Ryhel 12 (15.4%) + Andreas Westman Dorcsak 11 (14.1%) + Thierry Reding 9 (11.5%) + Robert Eckelmann 8 (10.3%) + Samuel Holland 6 (7.7%) + Vagrant Cascadian 3 (3.8%) + Jagan Teki 2 (2.6%) + Eugen Hristev 2 (2.6%) + Jonas Schwöbel 2 (2.6%) + Quentin Schulz 2 (2.6%) + Agneli 2 (2.6%) + Lothar Waßmann 2 (2.6%) + Simon Glass 1 (1.3%) + Fabio Estevam 1 (1.3%) + Ilias Apalodimas 1 (1.3%) + Rick Chen 1 (1.3%) + Patrick Delaunay 1 (1.3%) + Mattijs Korpershoek 1 (1.3%) + Andre Przywara 1 (1.3%) + Dhruva Gole 1 (1.3%) + Jonas Karlman 1 (1.3%) + Suniel Mahesh 1 (1.3%) + Sjoerd Simons 1 (1.3%) + Matwey V. Kornilov 1 (1.3%) + Anand Moon 1 (1.3%) + Vaishnav Achath 1 (1.3%) + Karsten Merker 1 (1.3%) + Sean Nyekjaer 1 (1.3%) + Mihai Sain 1 (1.3%) + ==================================== ===== + + +.. table:: Developers who gave the most tested-by credits (total 78) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Svyatoslav Ryhel 41 (52.6%) + Andre Przywara 6 (7.7%) + Tom Rini 5 (6.4%) + Simon Glass 4 (5.1%) + Jonas Karlman 3 (3.8%) + Loic Poulain 3 (3.8%) + Ramin Khonsari 2 (2.6%) + Jagan Teki 1 (1.3%) + Patrick Delaunay 1 (1.3%) + Dhruva Gole 1 (1.3%) + Sjoerd Simons 1 (1.3%) + Michael Trimarchi 1 (1.3%) + Etienne Carriere 1 (1.3%) + Peter Geis 1 (1.3%) + Sergiu Moga 1 (1.3%) + Maxim Schwalm 1 (1.3%) + Kasper Revsbech 1 (1.3%) + Neha Malcom Francis 1 (1.3%) + Fabrice Gasnier 1 (1.3%) + Maxim Cournoyer 1 (1.3%) + Sergei Antonov 1 (1.3%) + ==================================== ===== + + +.. table:: Developers with the most report credits (total 22) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Heinrich Schuchardt 3 (13.6%) + Ilias Apalodimas 2 (9.1%) + Patrick Delaunay 1 (4.5%) + Sjoerd Simons 1 (4.5%) + Samuel Holland 1 (4.5%) + Quentin Schulz 1 (4.5%) + Karsten Merker 1 (4.5%) + Marek Vasut 1 (4.5%) + Francesco Dolcini 1 (4.5%) + Nishanth Menon 1 (4.5%) + Oliver Graute 1 (4.5%) + Anand Gadiyar 1 (4.5%) + Philippe Schenker 1 (4.5%) + Andreas Schwab 1 (4.5%) + Stefan Herbrechtsmeier 1 (4.5%) + Carlos Rafael Giani 1 (4.5%) + Dave Jones 1 (4.5%) + Serge Bazanski 1 (4.5%) + Sam Winchenbach 1 (4.5%) + ==================================== ===== + + +.. table:: Developers who gave the most report credits (total 22) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 6 (27.3%) + Tom Rini 5 (22.7%) + Heinrich Schuchardt 3 (13.6%) + Qu Wenruo 2 (9.1%) + Ilias Apalodimas 1 (4.5%) + Maxim Cournoyer 1 (4.5%) + Fabio Estevam 1 (4.5%) + Vignesh Raghavendra 1 (4.5%) + Harald Seiler 1 (4.5%) + Sinthu Raja 1 (4.5%) + ==================================== ===== + + +.. table:: Top changeset contributors by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 524 (31.0%) + Google, Inc. 381 (22.5%) + Konsulko Group 333 (19.7%) + DENX Software Engineering 72 (4.3%) + Texas Instruments 49 (2.9%) + Linaro 47 (2.8%) + Edgeble AI Technologies Pvt. Ltd. 46 (2.7%) + ST Microelectronics 40 (2.4%) + AMD 34 (2.0%) + NXP 25 (1.5%) + Renesas Electronics 24 (1.4%) + Toradex 24 (1.4%) + Amarula Solutions 20 (1.2%) + Collabora Ltd. 20 (1.2%) + ARM 17 (1.0%) + Semihalf Embedded Systems 6 (0.4%) + Red Hat 4 (0.2%) + Siemens 4 (0.2%) + Socionext Inc. 4 (0.2%) + BayLibre SAS 3 (0.2%) + SUSE 3 (0.2%) + Pengutronix 2 (0.1%) + Ronetix 2 (0.1%) + Extreme Engineering Solutions 2 (0.1%) + Bootlin 1 (0.1%) + Intel 1 (0.1%) + linutronix 1 (0.1%) + Samsung 1 (0.1%) + Xilinx 1 (0.1%) + ==================================== ===== + + +.. table:: Top lines changed by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 64681 (30.1%) + Texas Instruments 42105 (19.6%) + Konsulko Group 36464 (17.0%) + Google, Inc. 30090 (14.0%) + Edgeble AI Technologies Pvt. Ltd. 23070 (10.7%) + Linaro 4601 (2.1%) + DENX Software Engineering 4582 (2.1%) + AMD 1741 (0.8%) + Amarula Solutions 1649 (0.8%) + ST Microelectronics 882 (0.4%) + Bootlin 860 (0.4%) + Renesas Electronics 775 (0.4%) + Socionext Inc. 760 (0.4%) + ARM 724 (0.3%) + Collabora Ltd. 413 (0.2%) + NXP 307 (0.1%) + Toradex 290 (0.1%) + Red Hat 214 (0.1%) + BayLibre SAS 154 (0.1%) + Extreme Engineering Solutions 106 (0.0%) + Semihalf Embedded Systems 47 (0.0%) + Siemens 43 (0.0%) + SUSE 34 (0.0%) + Pengutronix 13 (0.0%) + Samsung 9 (0.0%) + Ronetix 4 (0.0%) + Xilinx 3 (0.0%) + Intel 1 (0.0%) + linutronix 1 (0.0%) + ==================================== ===== + + +.. table:: Employers with the most signoffs (total 215) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 48 (22.3%) + Rockchip 29 (13.5%) + Toradex 28 (13.0%) + Amarula Solutions 24 (11.2%) + AMD 23 (10.7%) + NVidia 19 (8.8%) + Linaro 9 (4.2%) + Renesas Electronics 9 (4.2%) + Texas Instruments 5 (2.3%) + Konsulko Group 5 (2.3%) + NXP 4 (1.9%) + ARM 3 (1.4%) + Canonical 3 (1.4%) + Collabora Ltd. 2 (0.9%) + Google, Inc. 1 (0.5%) + BayLibre SAS 1 (0.5%) + SUSE 1 (0.5%) + Intel 1 (0.5%) + ==================================== ===== + + +.. table:: Employers with the most hackers (total 160) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 86 (53.8%) + Linaro 9 (5.6%) + Texas Instruments 8 (5.0%) + AMD 6 (3.8%) + Collabora Ltd. 6 (3.8%) + Toradex 5 (3.1%) + DENX Software Engineering 5 (3.1%) + Amarula Solutions 4 (2.5%) + NXP 4 (2.5%) + ARM 3 (1.9%) + ST Microelectronics 3 (1.9%) + Renesas Electronics 2 (1.2%) + SUSE 2 (1.2%) + Socionext Inc. 2 (1.2%) + Konsulko Group 1 (0.6%) + Google, Inc. 1 (0.6%) + BayLibre SAS 1 (0.6%) + Intel 1 (0.6%) + Edgeble AI Technologies Pvt. Ltd. 1 (0.6%) + Bootlin 1 (0.6%) + Red Hat 1 (0.6%) + Extreme Engineering Solutions 1 (0.6%) + Semihalf Embedded Systems 1 (0.6%) + Siemens 1 (0.6%) + Pengutronix 1 (0.6%) + Samsung 1 (0.6%) + Ronetix 1 (0.6%) + Xilinx 1 (0.6%) + linutronix 1 (0.6%) + ==================================== ===== + diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c index b1fea04e84a..963a05c244a 100644 --- a/drivers/ram/rockchip/sdram_rk3399.c +++ b/drivers/ram/rockchip/sdram_rk3399.c @@ -2954,7 +2954,7 @@ static int sdram_init(struct dram_info *dram, params->ch[ch].cap_info.rank = rank; } -#if defined(CONFIG_RAM_RK3399_LPDDR4) +#if defined(CONFIG_RAM_ROCKCHIP_LPDDR4) /* LPDDR4 needs to be trained at 400MHz */ lpddr4_set_rate(dram, params, 0); params->base.ddr_freq = dfs_cfgs_lpddr4[0].base.ddr_freq / MHz; diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index ad484ce8e88..a8014129d33 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -26,7 +26,7 @@ config SCSI_AHCI_PLAT This is deprecated. An AHCI driver should be provided instead. config SYS_SCSI_MAX_SCSI_ID - int "Maximum supporedt SCSI ID" + int "Maximum supported SCSI ID" default 1 help Sets the maximum number of SCSI IDs to scan when looking for devices. diff --git a/drivers/sysreset/sysreset_gpio.c b/drivers/sysreset/sysreset_gpio.c index dfca10ccc8e..de42b593542 100644 --- a/drivers/sysreset/sysreset_gpio.c +++ b/drivers/sysreset/sysreset_gpio.c @@ -17,6 +17,7 @@ struct gpio_reboot_priv { static int gpio_reboot_request(struct udevice *dev, enum sysreset_t type) { struct gpio_reboot_priv *priv = dev_get_priv(dev); + int ret; /* * When debug log is enabled please make sure that chars won't end up @@ -26,7 +27,11 @@ static int gpio_reboot_request(struct udevice *dev, enum sysreset_t type) debug("GPIO reset\n"); /* Writing 1 respects polarity (active high/low) based on gpio->flags */ - return dm_gpio_set_value(&priv->gpio, 1); + ret = dm_gpio_set_value(&priv->gpio, 1); + if (ret < 0) + return ret; + + return -EINPROGRESS; } static struct sysreset_ops gpio_reboot_ops = { diff --git a/include/cli.h b/include/cli.h index c777c90313f..094a6602d70 100644 --- a/include/cli.h +++ b/include/cli.h @@ -98,8 +98,8 @@ int cli_readline(const char *const prompt); * * @prompt: Prompt to display * @buffer: Place to put the line that is entered - * @timeout: Timeout in milliseconds, 0 if none - * Return: command line length excluding terminator, or -ve on error: of the + * @timeout: Timeout in seconds, 0 if none + * Return: command line length excluding terminator, or -ve on error: if the * timeout is exceeded (either CONFIG_BOOT_RETRY_TIME or the timeout * parameter), then -2 is returned. If a break is detected (Ctrl-C) then * -1 is returned. diff --git a/include/configs/imx8mn_bsh_smm_s2.h b/include/configs/imx8mn_bsh_smm_s2.h index e97b8e871d2..deeed9c2f58 100644 --- a/include/configs/imx8mn_bsh_smm_s2.h +++ b/include/configs/imx8mn_bsh_smm_s2.h @@ -14,7 +14,7 @@ #include <config_distro_bootcmd.h> #define NANDARGS \ - "nandargs=setenv bootargs console=${console} " \ + "nandargs=setenv bootargs " \ "${optargs} " \ "mtdparts=${mtdparts} " \ "root=${nandroot} " \ diff --git a/include/efi_api.h b/include/efi_api.h index c4512eeb862..dc6e5ce236c 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -604,6 +604,7 @@ struct efi_device_path_acpi_path { # define DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR 0x0b # define DEVICE_PATH_SUB_TYPE_MSG_UART 0x0e # define DEVICE_PATH_SUB_TYPE_MSG_USB_CLASS 0x0f +# define DEVICE_PATH_SUB_TYPE_MSG_USB_WWI 0x10 # define DEVICE_PATH_SUB_TYPE_MSG_SATA 0x12 # define DEVICE_PATH_SUB_TYPE_MSG_NVME 0x17 # define DEVICE_PATH_SUB_TYPE_MSG_URI 0x18 diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index d5cc4958304..ea097839dbe 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -110,17 +110,13 @@ int efi_dp_match(const struct efi_device_path *a, /** * efi_dp_shorten() - shorten device-path * - * We can have device paths that start with a USB WWID or a USB Class node, - * and a few other cases which don't encode the full device path with bus - * hierarchy: + * When creating a short boot option we want to use a device-path that is + * independent of the location where the block device is plugged in. * - * * MESSAGING:USB_WWID - * * MESSAGING:USB_CLASS - * * MEDIA:FILE_PATH - * * MEDIA:HARD_DRIVE - * * MESSAGING:URI + * UsbWwi() nodes contain a serial number, hard drive paths a partition + * UUID. Both should be unique. * - * See UEFI spec (section 3.1.2, about short-form device-paths) + * See UEFI spec, section 3.1.2 for "short-form device path". * * @dp: original device-path * @Return: shortened device-path or NULL @@ -128,12 +124,7 @@ int efi_dp_match(const struct efi_device_path *a, struct efi_device_path *efi_dp_shorten(struct efi_device_path *dp) { while (dp) { - /* - * TODO: Add MESSAGING:USB_WWID and MESSAGING:URI.. - * in practice fallback.efi just uses MEDIA:HARD_DRIVE - * so not sure when we would see these other cases. - */ - if (EFI_DP_TYPE(dp, MESSAGING_DEVICE, MSG_USB) || + if (EFI_DP_TYPE(dp, MESSAGING_DEVICE, MSG_USB_WWI) || EFI_DP_TYPE(dp, MEDIA_DEVICE, HARD_DRIVE_PATH) || EFI_DP_TYPE(dp, MEDIA_DEVICE, FILE_PATH)) return dp; @@ -735,7 +726,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev) #endif #if defined(CONFIG_USB) case UCLASS_MASS_STORAGE: { - struct blk_desc *desc = desc = dev_get_uclass_plat(dev); + struct blk_desc *desc = dev_get_uclass_plat(dev); struct efi_device_path_controller *dp = dp_fill(buf, dev->parent); diff --git a/test/common/Makefile b/test/common/Makefile index cc918f64e54..a5ab10f6f69 100644 --- a/test/common/Makefile +++ b/test/common/Makefile @@ -3,3 +3,4 @@ obj-y += cmd_ut_common.o obj-$(CONFIG_AUTOBOOT) += test_autoboot.o obj-$(CONFIG_CYCLIC) += cyclic.o obj-$(CONFIG_EVENT) += event.o +obj-y += cread.o diff --git a/test/common/cread.c b/test/common/cread.c new file mode 100644 index 00000000000..2fdd29a265f --- /dev/null +++ b/test/common/cread.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2023 Google LLC + */ + +#include <common.h> +#include <cli.h> +#include <test/common.h> +#include <test/test.h> +#include <test/ut.h> + +static int cli_ch_test(struct unit_test_state *uts) +{ + struct cli_ch_state s_cch, *cch = &s_cch; + + cli_ch_init(cch); + + /* should be nothing to return at first */ + ut_asserteq(0, cli_ch_process(cch, 0)); + + /* check normal entry */ + ut_asserteq('a', cli_ch_process(cch, 'a')); + ut_asserteq('b', cli_ch_process(cch, 'b')); + ut_asserteq('c', cli_ch_process(cch, 'c')); + ut_asserteq(0, cli_ch_process(cch, 0)); + + /* send an invalid escape sequence */ + ut_asserteq(0, cli_ch_process(cch, '\e')); + ut_asserteq(0, cli_ch_process(cch, '[')); + + /* + * with the next char it sees that the sequence is invalid, so starts + * emitting it + */ + ut_asserteq('\e', cli_ch_process(cch, 'X')); + + /* now we set 0 bytes to empty the buffer */ + ut_asserteq('[', cli_ch_process(cch, 0)); + ut_asserteq('X', cli_ch_process(cch, 0)); + ut_asserteq(0, cli_ch_process(cch, 0)); + + /* things are normal again */ + ut_asserteq('a', cli_ch_process(cch, 'a')); + ut_asserteq(0, cli_ch_process(cch, 0)); + + return 0; +} +COMMON_TEST(cli_ch_test, 0); + +static int cread_test(struct unit_test_state *uts) +{ + int duration; + ulong start; + char buf[10]; + + /* + * useful for debugging + * + * gd->flags &= ~GD_FLG_RECORD; + * print_buffer(0, buf, 1, 7, 0); + */ + + console_record_reset_enable(); + + /* simple input */ + *buf = '\0'; + ut_asserteq(4, console_in_puts("abc\n")); + ut_asserteq(3, cli_readline_into_buffer("-> ", buf, 1)); + ut_asserteq_str("abc", buf); + + /* try an escape sequence (cursor left after the 'c') */ + *buf = '\0'; + ut_asserteq(8, console_in_puts("abc\e[Dx\n")); + ut_asserteq(4, cli_readline_into_buffer("-> ", buf, 1)); + ut_asserteq_str("abxc", buf); + + /* invalid escape sequence */ + *buf = '\0'; + ut_asserteq(8, console_in_puts("abc\e[Xx\n")); + ut_asserteq(7, cli_readline_into_buffer("-> ", buf, 1)); + ut_asserteq_str("abc\e[Xx", buf); + + /* check timeout, should be between 1000 and 1050ms */ + start = get_timer(0); + *buf = '\0'; + ut_asserteq(-2, cli_readline_into_buffer("-> ", buf, 1)); + duration = get_timer(start) - 1000; + ut_assert(duration >= 0); + ut_assert(duration < 50); + + return 0; +} +COMMON_TEST(cread_test, 0); diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index 241e8e69307..0ecd8458b91 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -421,7 +421,7 @@ class Toolchains: Returns: Resolved string - >>> bsettings.Setup() + >>> bsettings.Setup(None) >>> tcs = Toolchains() >>> tcs.Add('fred', False) >>> var_dict = {'oblique' : 'OBLIQUE', 'first' : 'fi${second}rst', \ |