summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-11-13Merge tag 'u-boot-stm32-20231113' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-stm into next Introduce STM32MP2 SoCs family support Add STM32MP257F-EV1 board [trini: Adjust some includes] Signed-off-by: Tom Rini <[email protected]>
2023-11-13stm32mp2: initial supportPatrice Chotard
Add initial support for STM32MP2 SoCs family. SoCs information are available here : https://www.st.com/content/st_com/en/campaigns/microprocessor-stm32mp2.html Migrate all MP1 related code into stm32mp1/ directory Create stm32mp2 directory dedicated for STM32MP2 SoCs. Common code to MP1, MP13 and MP25 is kept into arch/arm/mach-stm32/mach-stm32mp directory : - boot_params.c - bsec - cmd_stm32key - cmd_stm32prog - dram_init.c - syscon.c - ecdsa_romapi.c For STM32MP2, it also : - adds memory region description needed for ARMv8 MMU. - enables early data cache before relocation. During the transition before/after relocation, the MMU, initially setup at the beginning of DDR, must be setup again at a correct address after relocation. This is done in enables_caches() by disabling cache, force arch.tlb_fillptr to NULL which will force the MMU to be setup again but with a new value for gd->arch.tlb_addr. gd->arch.tlb_addr has been updated after relocation in arm_reserve_mmu(). Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13ARM: dts: stm32: Add STM32MP257F Evaluation board supportPatrice Chotard
Add STM32MP257F Evaluation board support. It embeds a STM32MP257FAI SoC, with 4GB of DDR4, TSN switch (2+1 ports), 2*USB typeA, 1*USB2 typeC, SNOR OctoSPI, mini PCIe, STPMIC2 for power distribution ... Sync device tree with kernel v6.6-rc1. Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13pinctrl: pinctrl_stm32: Add stm32mp2 supportPatrice Chotard
Add stm32mp2 compatible. Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13serial: stm32: Fix AARCH64 compilation warningsPatrice Chotard
When building with AARCH64 defconfig, we got warnings, fix them by using registers base address defined as void __iomem * instead of fdt_addr_t. Signed-off-by: Patrice Chotard <[email protected]> Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13stm32mp: bsec: Fix AARCH64 compilation warningsPatrice Chotard
When building with AARCH64 defconfig, we got warnings, fix them. Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13stm32mp: dram_init: Limit DDR usage under 4GB boundary for STM32MPPatrice Chotard
Limit DDR usage under 4GB boundary on STM32MP regardless of memory size declared in device tree. Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13stm32mp: dram_init: Fix AARCH64 compilation warningsPatrick Delaunay
When building with AARCH64 defconfig, we got warnings for debug message - format '%x' expects argument of type 'unsigned int', but argument 3 has type 'size_t' {aka 'long unsigned int'}). - format '%lx' expects argument of type 'long unsigned int', but argument 2 has type 'phys_addr_t' {aka 'long long unsigned int'} Signed-off-by: Patrick Delaunay <[email protected]> Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13stm32mp: dram_init: Get RAM size from DT if no RAM driver foundPatrice Chotard
In case there is no RAM driver retrieve RAM size from DT as fallback. Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13arm: caches: Make DCACHE_DEFAULT_OPTION accessible for ARM64 archPatrice Chotard
This fixes the following compilation error in ARM64: arch/arm/mach-stm32mp/dram_init.c: In function ‘board_get_usable_ram_top’: arch/arm/mach-stm32mp/dram_init.c:59:45: error: ‘DCACHE_DEFAULT_OPTION’ undeclared (first use in this function) 59 | mmu_set_region_dcache_behaviour(reg, size, DCACHE_DEFAULT_OPTION); | ^~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Patrice Chotard <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2023-11-13clk: exynos: Add header guard for clk-pll.hSam Protsenko
The clk-pll.h is going to be included in multiple files soon. Add missing header guard to prevent possible build errors in future. Signed-off-by: Sam Protsenko <[email protected]> Fixes: 166097e87753 ("clk: exynos: add clock driver for Exynos7420 Soc") Reviewed-by: Sean Anderson <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13serial: s5p: Fix clk_get_by_index() error code checkSam Protsenko
clk_get_by_index() returns negative number on error. Assigning it to unsigned int makes the subsequent "ret < 0" check always false, leading in turn to possible unhandled errors. Change 'ret' variable type to signed int so the code checks and handles clk_get_by_index() return code properly. Signed-off-by: Sam Protsenko <[email protected]> Fixes: cf75cdf96ef2 ("serial: s5p: use clock api to get clock rate") Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13exynos: Avoid duplicate reset_cpu with SYSRESET enabledSam Protsenko
The sysreset uclass unconditionally provides a definition of the reset_cpu() function. So does the exynos soc code. Fix the build with SYSRESET enabled by omitting the function from the soc code in that case. The code still needs to be kept around for use in SPL. This commit was inspired by commit 6e19dc84c14b ("sunxi: Avoid duplicate reset_cpu with SYSRESET enabled"). Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Tom Rini <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13watchdog: s5p_wdt: Include missing CPU headerSam Protsenko
s5p watchdog driver calls samsung_get_base_watchdog() function, but its prototype is not included. That might lead to build warnings like this: drivers/watchdog/s5p_wdt.c: In function 'wdt_stop': drivers/watchdog/s5p_wdt.c:16:26: warning: implicit declaration of function 'samsung_get_base_watchdog' [-Wimplicit-function-declaration] 16 | (struct s5p_watchdog *)samsung_get_base_watchdog(); | ^~~~~~~~~~~~~~~~~~~~~~~~~ Include asm/arch/cpu.h to fix that issue. Signed-off-by: Sam Protsenko <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13arm: exynos: Include missing CPU header in gpio.hSam Protsenko
arch/arm/include/asm/arch/gpio.h relies on definitions from cpu.h. Include it explicitly in gpio.h. Otherwise next build error may occur: In file included from ./arch/arm/include/asm/gpio.h:7, from include/cros_ec.h:14, from board/samsung/common/board.c:8: ./arch/arm/include/asm/arch/gpio.h:1357:4: error: 'EXYNOS4_GPIO_PART1_BASE' undeclared here (not in a function); did you mean 'EXYNOS4_GPIO_MAX_PORT'? 1357 | { EXYNOS4_GPIO_PART1_BASE, EXYNOS4_GPIO_MAX_PORT_PART_1 }, | ^~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Sam Protsenko <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13arm: exynos: Include missing CPU header in soc.cSam Protsenko
samsung_get_base_swreset() is called in soc.c, but corresponding header with its prototype is not included. Fix this to avoid possible build errors. Signed-off-by: Sam Protsenko <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2023-11-13mmc: renesas-sdhi: Disable clock after tuning reset when possibleMarek Vasut
Currently the renesas_sdhi_reset_tuning() unconditionally leaves SDHI clock enabled after the tuning reset. This is not always necessary. After the driver performed tuning reset at the end of probe function, or in the unlikely case that tuning failed during regular operation, the SDHI clock can be disabled after the tuning reset. The following set_ios call would reconfigure the clock as needed. In case of regular set_ios call which requires a tuning reset, keep the clock enabled or disabled according to the mmc->clk_disable state. With this in place, the controllers which have not been accessed via block subsystem after boot are left in quiescent state. However, if an MMC device is used e.g. for environment storage, that controller would be accessed during the environment load and left active, including its clock which would still be generated. This is due to the design of the MMC subsystem, which does not deinit a controller after it was started once, the controller is only deinited in case of mmc rescan, or before OS boot. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]> Reviewed-by: Paul Barker <[email protected]> Tested-by: Paul Barker <[email protected]> Reviewed-by: Yoshihiro Shimoda <[email protected]> Tested-by: Thuan Nguyen Hong <[email protected]>
2023-11-12Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sunxiTom Rini
To quote Andre: The first few patches are some easy refactorings and fixes, most of them actually don't change the generated binaries at all. Then there is a defconfig for a new board, for which we just gained the .dts file from the last kernel DT sync. On top there is support for a new PMIC (AXP313), and LPDDR4 support for the Allwinner H616 SoC, both of which are needed to support new devices that appeared lately, especially cheap TV boxes. While those are technically new features, they don't affect existing boards, for instance the LPDDR4 support code is guarded by a new DRAM type Kconfig variable. So the risk for regressions is very slim. Gitlab CI passed, and I booted that briefly on some boards, including an H616 and an H618 one (with LPDDR4).
2023-11-12sunxi: H616: add LPDDR4 DRAM supportMikhail Kalashnikov
The H616 SoC family has support for several types of DRAM: DDR3, LPDDR3, DDR4 and LPDDR4. At the moment, the driver only supports DDR3 and LPDDR3 memory. Let's extend the driver to support the LPDDR4 memory. This type of memory widely used in device with T507(-H) SoC and new orangepi zero3 with H618. The compatibility with T507 is not yet complete, because there is difference in the phy_init array. The LPDDR4-2133 timings correspond to DRAM Rayson RS1G32LO4D2BDS-53BT found on the NOR SPI from the Orangepi Zero 3 4GB. Signed-off-by: Mikhail Kalashnikov <[email protected]> Tested-by: Piotr Oniszczuk <[email protected]> Reviewed-by: Jernej Skrabec <[email protected]> Acked-by: Andre Przywara <[email protected]>
2023-11-12sunxi: H616: DRAM: refactor mctl_phy_configure_odt()Andre Przywara
The original H616 DDR3 ODT configuration code wrote board specific values into a sequence of paired registers. For LPDDR3 support we needed to special-case one group of registers, because for that DRAM type we need to write 0 into the lower register of each pair. That already made the code less readable. LPDDR4 support will make things even messier, so let's refactor that code now: We allow to write different values into the lower and upper half of each pair. The masking is moved into a macro, and use in each write statement. The effect is not as obvious yet, as we don't need the full flexibility at the moment, but the motivation will become clearer with LPDDR4 support. Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Jernej Skrabec <[email protected]> Reviewed-by: Mikhail Kalashnikov <[email protected]>
2023-11-12power: regulator: add AXP313 supportAndre Przywara
The X-Powers AXP313a is a small PMIC with just three buck converters and three LDOs, one of which is actually fixed (so not modelled here). Add the compatible string and the respective regulator ranges to allow drivers to adjust voltages. Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2023-11-12power: pmic: sunxi: add AXP313 SPL driverAndre Przywara
On boards using the AXP313 PMIC, the DRAM rail is often not setup correctly at reset time, so we have to program the PMIC very early in the SPL, before running the DRAM initialisation. Add a simple AXP313 PMIC driver that knows about DCDC2(CPU) and DCDC3(DRAM), so that we can bump up the voltage before the DRAM init. Signed-off-by: Andre Przywara <[email protected]> Acked-by: Jernej Skrabec <[email protected]>
2023-11-12arm: dts: icnova-a20-adb4006: Add board supportLudwig Kormann
Add board support for ICnova A20 SomPi compute module on ICnova ADB4006 development board. Specification: SoM - Processor: Allwinner A20 Cortex-A7 Dual Core at 1GHz - 512MB DDR3 RAM - Fast Ethernet (Phy: Realtek RTL8201CP) ADB4006 - I2C - 2x USB 2.0 - 1x Fast Ethernet port - 1x SATA - 2x buttons (PWRON, Boot) - 2x LEDS - serial console - HDMI - µSD-Card slot - Audio Line-In / Line-Out - GPIO pinheaders https://wiki.in-circuit.de/index.php5?title=ICnova_ADB4006 https://wiki.in-circuit.de/index.php5?title=ICnova_A20_SODIMM devicetree upstreamed with linux 6.5 Signed-off-by: Ludwig Kormann <[email protected]> Reviewed-by: Andre Przywara <[email protected]>
2023-11-12pinctrl: sunxi: Avoid using .bss for SPLSamuel Holland
sunxi platforms put .bss in DRAM, so .bss is not available in SPL before DRAM controller initialization. Therefore, this buffer must be placed in the .data section. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Andre Przywara <[email protected]>
2023-11-12sunxi: mmc: Sort compatible strings numericallySamuel Holland
commit 95168d77d391 ("sunxi: add Allwinner R528/T113 SoC support") added the new entry out of order. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2023-11-12clk: sunxi: Use the right symbol in the MakefileSamuel Holland
CONFIG_ARCH_SUNXI will not be enabled for RISC-V SoCs using this driver. Use the symbol for the driver itself instead. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Andre Przywara <[email protected]>
2023-11-12sunxi: mmc: Move header to the driver directorySamuel Holland
The MMC controller driver is (and ought to be) the only user of these register definitions. Put them in a header next to the driver to remove the dependency on a specific ARM platform's headers. Due to the sunxi_mmc_init() prototype, the file was not renamed. None of the register definitions were changed. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2023-11-12net: sun8i_emac: Drop DM_GPIO checksSamuel Holland
DM_GPIO is always enable in U-Boot proper for ARCH_SUNXI, and this driver is never enabled in SPL, so the condition is always true. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Andre Przywara <[email protected]>
2023-11-12arm: sunxi: Correct warning in board_fit_config_name_matchTom Rini
When building this with clang, we get a warning about having excess parenthesis here, or that we're incorrectly using "==" when we want "=". Correct these by using the common size macro. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]> [Andre: Use SZ_512M as per Simon's suggestion] Signed-off-by: Andre Przywara <[email protected]>
2023-11-12sunxi: board: simplify early PMIC setup conditionsAndre Przywara
So far we have a convoluted #ifdef mesh that guards the early AXP PMIC setup in board.c. That combination of &&, || and negations is very hard to read, maintain and especially to extend. Fortunately we have those same conditions already modelled in the Kconfig file, so they are actually redundant. On top of that the real reason we have those preprocessor guards in the first place is about the symbols that are *conditionally* defined: without #ifdefs the build would break because of them being undefined for many boards. To simplify this, just change the guards to actually look at the symbols needed, so CONFIG_AXP_xxx_VOLT instead of CONFIG_AXPyyy_POWER. This drastically improves the readability of this code, and makes adding PMIC support a pure Kconfig matter. Doing this revealed one bug in Kconfig: there is no axp_set_dcdc4() for the AXP818, even though CONFIG_AXP_DCDC4_VOLT includes that PMIC. Since the AXP818 wasn't included when calling axp_set_dcdc4() in board.c, this wasn't an issue, but becomes one now, so also remove the AXP818 from the DCDC4 Kconfig symbol. Signed-off-by: Andre Przywara <[email protected]>
2023-11-11Merge tag 'doc-2024-01-rc3' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-efi Documentation: * hikey960: update link URLs * j7200_evm: Fix OPTEE platform name * ti: fix style of examples * fix typos
2023-11-11doc: typo 'form' in qfw.rstHeinrich Schuchardt
%s/form/from/ Fixes: d46bee8c2d24 ("doc: qfw man-page") Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-11-11doc: board: ti: k3 docs: Use ::promptNishanth Menon
Use prompt instead of code-block to have copy-paste friendly command documentation. Signed-off-by: Nishanth Menon <[email protected]>
2023-11-11doc: board: ti: Use prompt prompt_style to simplify documentationNishanth Menon
The sphinx-prompt documentation[0] provides examples on how we can use prompt as a parameter to simplify the description. Use the same. While at it, ensure to make all relevant prompts clarified such as gdb prompts. [0] http://sbrunner.github.io/sphinx-prompt/ Signed-off-by: Nishanth Menon <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-11-11doc: build: fix wrongly written targests instead of targetsMilan P. Stanić
Signed-off-by: Milan P. Stanić <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2023-11-11doc: shorten overlong title underlinesHeinrich Schuchardt
Title underlines should match the length of the title. Unfortunately docutils only catches underlines that are too short. Add some missing empty lines after titles. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-11-11doc: ti: j7200_evm: Fix OPTEE platform nameNishanth Menon
k3-j7200 does not exist in upstream OPTEE. Use j721e as the platform name. Using k3-j7200 as OPTEE name results in broken boot due to wrong configuration being picked. Fixes: c727b81d6530 ("doc: board: ti: k3: Reuse build instructions") Signed-off-by: Nishanth Menon <[email protected]>
2023-11-11hikey960: Fix 404 linksDylan Corrales
The build instructions for the hikey960 had some broken links. Update the links to use new vendor URLs. Also change build instructions to reference a different file name. Signed-off-by: Dylan Corrales <[email protected]> Cc: Manivannan Sadhasivam <[email protected]>
2023-11-10Merge patch series "arm: dts: k3-am6: Fix Ethernet/DMA"Tom Rini
To quote the author: Since commit [1], Ethernet is broken on TI AM62 and AM64 platforms. The commit [1] is not the culprit. It just unearths the problem by fixing the error check in k3-udma.c. This issue was silently being ignored earlier due to wrong error check. [NULL instead of FDT_ADDR_T_NONE]. Fix the issue by adding the necessary register spaces for the u-boot K3-UDMA driver for AM62 and AM64 platforms. These properties will eventually make it into the SoC DTSi files [2] after which these can be dropped from k3-*-u-boot.dtsi files. [1] - 5fecea171de3dd ("treewide: use dev_read_addr_*_ptr() where appropriate") [2] - https://lore.kernel.org/linux-arm-kernel/[email protected]/
2023-11-10arm: dts: k3-am642: Update main_bcdma and main_pktdma nodesSiddharth Vadapalli
Update main_bcdma and main_pktdma nodes for native configuration in the absence of DM services. Drop duplicate main_pktdma node in k3-am642-sk-u-boot.dtsi. Reported-by: Nishanth Menon <[email protected]> Signed-off-by: Siddharth Vadapalli <[email protected]> Signed-off-by: Roger Quadros <[email protected]> Reviewed-by: Nishanth Menon <[email protected]>
2023-11-10arm: dts: k3-am625-verdin-wifi-dev-u-boot.dtsi: Fix DMA/EthernetRoger Quadros
Update main_bcdma and main_pktdma nodes for native configuration in the absence of DM services. u-boot k3-udma driver expects these additional register fields else probe will fail. Reported-by: Nishanth Menon <[email protected]> Signed-off-by: Roger Quadros <[email protected]> Reviewed-by: Nishanth Menon <[email protected]> Tested-by: Marcel Ziswiler <[email protected]>
2023-11-10arm: dts: k3-am625-sk-u-boot.dtsi: Update main_bcdma and main_pktdma nodesSiddharth Vadapalli
Update main_bcdma and main_pktdma nodes for native configuration in the absence of DM services. Reported-by: Nishanth Menon <[email protected]> Signed-off-by: Siddharth Vadapalli <[email protected]> Signed-off-by: Roger Quadros <[email protected]> Reviewed-by: Nishanth Menon <[email protected]>
2023-11-10Merge branch '2023-11-10-improve-semihosting-armv6' into nextTom Rini
To quote the author: This series has a few fixes for semihosting on ARMv6 and older CPUs. The first two patches address problems regarding the stack pointer and link register. U-Boot runs in supervisor mode, so taking a software interrupt will clobber sp/lr. I think we really should run in system mode, since it has separate sp/lr registers. To quote ARM DDI 0100I: > The remaining mode is System mode, which is not entered by any > exception and has exactly the same registers available as User mode. > However, it is a privileged mode and is therefore not subject to the > User mode restrictions. It is intended for use by operating system > tasks that need access to system resources, but wish to avoid using > the additional registers associated with the exception modes. Avoiding > such use ensures that the task state is not corrupted by the > occurrence of any exception. However, the processor mode has been supervisor for such a long time (since relocation got introduced) that I would rather not touch it.
2023-11-10arm: semihosting: Support semihosting fallback on 32-bit ARMSean Anderson
Add support for a semihosting fallback on 32-bit ARM. The assembly is lightly adapted from the irq return code, except there is no offset since lr already points to the correct instruction. The C side is mostly like ARM64, except we have fewer cases to deal with. Signed-off-by: Sean Anderson <[email protected]>
2023-11-10arm: semihosting: Fix returning from traps on ARMv6 and lowerSean Anderson
U-Boot runs in supervisor mode. On ARMv6 and lower, software interrupts are taken in supervisor mode. When entering an interrupt, the link register is set to the address of the next instruction. However, if we are already in supervisor mode, this clobbers the link register. The debugger can't help us, since by the time it notices we've taken a software interrupt, the link register is already gone. Work around this by moving the return address to another register. Signed-off-by: Sean Anderson <[email protected]>
2023-11-10arm: Fix software interrupt handlerSean Anderson
When we take a software interrupt, we are already in supervisor mode. get_bad_stack assumes we are not in supervisor mode so it can clobber the stack pointer. This causes us to have an invalid stack once that macro finishes. Revert back to the get_bad_stack_swi macro which was previously removed. Fixes: 41623c91b09 ("arm: move exception handling out of start.S files") Signed-off-by: Sean Anderson <[email protected]>
2023-11-10Merge tag 'u-boot-stm32-20231110' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-stm _ Fix compilation issue when SYS_DCACHE_OFF and/or SYS_DCACHE_SYS are enabled _ Fix issue following DT sync with kernel 6.3 for stm32mp15xx-ev1 and DHSOM SoM _ Enable TCP, IPv6, wget on DH STM32MP15 DHSOM _ Limit u-boot.itb size to 0x160000 bytes on DH STM32MP15 DHSOM _ Read auth stats and boot_partition from tamp
2023-11-10Merge branch '2023-11-10-assorted-fixes'Tom Rini
- Fix some issues Coverity has reported, update MAINTAINERS file, another bootstd fix, typo fix in error message, gitignore fix and update TI's URL in many places.
2023-11-10tree-wide: Replace http:// link with https:// link for ti.comNishanth Menon
Replace instances of http://www.ti.com with https://www.ti.com Signed-off-by: Nishanth Menon <[email protected]>
2023-11-10boot: Fix syntax in fdt_overlay_apply_verbose() error messageHugo Villeneuve
Remove superfluous "did". Signed-off-by: Hugo Villeneuve <[email protected]>