Re: [PATCH v1 1/1] usb: host: tegra: implement dts based xcvr setup

2023-08-19 Thread Marek Vasut
On 8/19/23 17:06, Svyatoslav Ryhel wrote: Some devices (like ASUS TF201) may not have fuse based xcvr setup which will result in not working USB line. To fix this situation allow xcvr setup to be performed from device tree values if nvidia,xcvr-setup-use-fuses is not defined. Tested-by:

[PULL] u-boot-sh/master

2023-08-19 Thread Marek Vasut
The following changes since commit a5899cc69a99379f01e8e2f9f98e0e09b24f1656: Merge https://source.denx.de/u-boot/custodians/u-boot-watchdog (2023-08-10 11:40:09 -0400) are available in the Git repository at: https://source.denx.de/u-boot/custodians/u-boot-sh.git master for you to fetch

[PATCH] bootstd: Adjust the default bootmeth order

2023-08-19 Thread Simon Glass
The existing distro scripts check extlinux and scripts before EFI. Adjust the default ordering to do the same, to avoid breaking existing flows. Add some documentation, mentioning that this order will likely change in future. Signed-off-by: Simon Glass Reported-by: Da Xue ---

[PATCH v3 18/19] x86: doc: Split out manual booting into its own file

2023-08-19 Thread Simon Glass
Move this out of the main file since for simple users it is easier to rely on standard boot. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch doc/arch/x86/index.rst | 1 + doc/arch/x86/manual_boot.rst | 276 +++

[PATCH v3 19/19] x86: doc: coreboot: Mention 64-bit Linux distros

2023-08-19 Thread Simon Glass
Add a little more detail as to why coreboot64 is preferred for booting Linux distros. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch doc/board/coreboot/coreboot.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/board/coreboot/coreboot.rst

[PATCH v3 17/19] x86: doc: Update summaries and add links

2023-08-19 Thread Simon Glass
Refresh the summary information so it is more up-to-date. Add links to the coreboot and slimbootloader docs. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch doc/arch/x86/x86.rst | 17 ++--- 1 file changed, 10 insertions(+), 7 deletions(-) diff

[PATCH v3 16/19] x86: doc: Move into its own directory

2023-08-19 Thread Simon Glass
There is enough material that it makes sense to split this up into several files. Create an x86/ directory for this purpose. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch doc/arch/index.rst | 2 +- doc/arch/x86/index.rst | 11 +++

[PATCH v3 15/19] x86: coreboot: Record the position of the SMBIOS tables

2023-08-19 Thread Simon Glass
Make a note of where coreboot installed the SMBIOS tables so that we can pass this on to EFI. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch arch/x86/lib/coreboot/cb_sysinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git

[PATCH v3 12/19] x86: smbios: Add a Kconfig indicating SMBIOS-table presence

2023-08-19 Thread Simon Glass
When booted from coreboot, U-Boot does not build the SMBIOS tables, but it should still pass them on to the OS. Add a new option which indicates whether SMBIOS tables are present, however they were built. Flip the ordering so that the dependency is listed first, which is less confusing. Adjust

[PATCH v3 14/19] efi: x86: Use the installed SMBIOS tables

2023-08-19 Thread Simon Glass
U-Boot sets up the SMBIOS tables during startup. Rather than creating a new set, install the existing ones. Rely on the ACPI table's memory-map record to cover the tables. Tidy up the installation-condition code while we are here. Signed-off-by: Simon Glass --- Changes in v3: - Use log_debug()

[PATCH v3 13/19] x86: Record the position of the SMBIOS tables

2023-08-19 Thread Simon Glass
Remember where these end up so that we can pass this information on to the EFI layer. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Add new patch arch/sandbox/include/asm/global_data.h | 1 + arch/x86/include/asm/global_data.h | 1 + arch/x86/lib/tables.c

[PATCH v3 11/19] efi: x86: Correct the condition for installing ACPI tables

2023-08-19 Thread Simon Glass
It is not always the case that U-Boot builds the ACPI tables itself. For example, when booting from coreboot, the ACPI tables are built by coreboot. Correct the Makefile condition so that U-Boot can pass on tables built by a previous firmware stage. Tidy up the installation-condition code while

[PATCH v3 10/19] x86: coreboot: Enable VIDEO_COPY

2023-08-19 Thread Simon Glass
At least on modern machines the write-back mechanism for the frame buffer is quite slow when scrolling, since it must read the entire frame buffer and write it back. Enable the VIDEO_COPY feature to resolve this problem. Signed-off-by: Simon Glass --- (no changes since v1)

[PATCH v3 09/19] x86: coreboot: Align options between coreboot and coreboot64

2023-08-19 Thread Simon Glass
These two builds are similar but have some different options for not good reason. Line them up to be as similar as possible. Signed-off-by: Simon Glass --- (no changes since v2) Changes in v2: - Update the malloc size too configs/coreboot64_defconfig | 7 +++ configs/coreboot_defconfig

[PATCH v3 08/19] x86: coreboot: Drop USB init on startup

2023-08-19 Thread Simon Glass
This is very annoying as it is quite slow on many machines. Also, U-Boot has an existing 'preboot' mechanism to enable this feature if desired. Drop this code so that it is possible to choose whether to init USB or not. Signed-off-by: Simon Glass --- (no changes since v1)

[PATCH v3 07/19] x86: coreboot: Enable CONFIG_SYS_NS16550_MEM32

2023-08-19 Thread Simon Glass
The debug UART on modern machines uses a 32-bit wide transfer. Without this, setting debug output causes a hang or no output. It is not obvious (when enabling CONFIG_DEBUG_UART) that this is needed. Enable 32-bit access to avoid this trap. Signed-off-by: Simon Glass --- (no changes since v1)

[PATCH v3 06/19] x86: coreboot: Look for DBG2 UART in SPL too

2023-08-19 Thread Simon Glass
If coreboot does not set up sysinfo for the UART, SPL currently hangs. Use the DBG2 teechnique there as well. This allows coreboot64 to boot from coreboot even if the console info is missing from sysinfo Signed-off-by: Simon Glass --- (no changes since v1) configs/coreboot64_defconfig | 1 +

[PATCH v3 05/19] x86: Allow APCI in SPL

2023-08-19 Thread Simon Glass
This is needed so we can find the DBG2 table provided by coreboot. Add a Kconfig so it can be enabled. Signed-off-by: Simon Glass --- (no changes since v1) lib/Kconfig | 8 1 file changed, 8 insertions(+) diff --git a/lib/Kconfig b/lib/Kconfig index 07e61de5b641..a9dca5f52b5a 100644

[PATCH v3 04/19] x86: Set the CPU vendor in SPL

2023-08-19 Thread Simon Glass
We don't read this information in 64-bit mode, since we don't have the macros for doing it. Set it to Intel by default. This allows the TSC timer to work correctly. Signed-off-by: Simon Glass --- (no changes since v1) arch/x86/cpu/x86_64/cpu.c | 7 +++ 1 file changed, 7 insertions(+)

[PATCH v3 03/19] x86: coreboot: Rearrange arch_cpu_init()

2023-08-19 Thread Simon Glass
Init errors in SPL are currently ignored by this function. Change the code to init the CPU, reporting an error if something is wrong. After that, look for the coreboot table. Signed-off-by: Simon Glass --- (no changes since v1) arch/x86/cpu/coreboot/coreboot.c | 12 +--- 1 file

[PATCH v3 02/19] x86: coreboot: Enable standard boot

2023-08-19 Thread Simon Glass
Enable bootstd options and provide instructions on how to boot a linux distro using coreboot. Signed-off-by: Simon Glass --- (no changes since v1) configs/coreboot64_defconfig| 14 ++ configs/coreboot_defconfig | 1 + doc/board/coreboot/coreboot.rst | 16 ++--

[PATCH v3 01/19] x86: coreboot: Add IDE and SATA

2023-08-19 Thread Simon Glass
Add these options to permit access to more disk types. Add some documentation as well. Signed-off-by: Simon Glass --- (no changes since v1) configs/coreboot64_defconfig| 1 + configs/coreboot_defconfig | 9 + doc/board/coreboot/coreboot.rst | 20 3

[PATCH v3 00/19] x86: efi: Fixes and improvements for coreboot

2023-08-19 Thread Simon Glass
This little series fixes various bugs and annoyances in coreboot and coreboot64. With this both coreboot and coreboot64 start up and work reasonably well on Brya (x86 Chromebook) and U-Boot can boot common Linux distros. - Make coreboot64 debug UART start reliably - Avoid the long USB-init delay

Re: FIT Image not working in U-Boot

2023-08-19 Thread Simon Glass
Hi Freddie, On Fri, 18 Aug 2023 at 09:10, Freddie wrote: > > > On Thu, Aug 17, 2023 at 4:55 PM Freddie wrote: >> >> >> >> On Thu, 17 Aug 2023 at 16:51, Simon Glass wrote: >>> >>> Hi Freddie, >>> >>> On Thu, 17 Aug 2023 at 09:02, Freddie wrote: >>> > >>> > >>> > >>> > On Thu, Aug 17, 2023 at

Re: [PATCH v2 1/2] dm: event: add EVT_DM_POST_INIT_R event type

2023-08-19 Thread Simon Glass
On Thu, 17 Aug 2023 at 23:26, Chanho Park wrote: > > This patch introduces EVT_DM_POST_INIT_R event type for handling hooks > after relocation. > > Fixes: 55171aedda88 ("dm: Emit the arch_cpu_init_dm() even only before > relocation") > Suggested-by: Simon Glass > Cc: Bin Meng > Signed-off-by:

Re: [PATCH v3 09/12] usb: cdns3: Handle otg mode as peripheral

2023-08-19 Thread Roger Quadros
On 19/08/2023 15:20, Marek Vasut wrote: > On 8/19/23 09:00, Roger Quadros wrote: >> +Peter & Pawel. >> >> On 19/08/2023 02:47, Marek Vasut wrote: >>> On 8/18/23 21:26, Roger Quadros wrote: On 18/08/2023 21:48, Tom Rini wrote: > On Thu, Aug 17, 2023 at 11:15:17AM +0300, Roger

[PATCH v1 1/1] mmc: tegra: get default-tap and default-trim from device tree

2023-08-19 Thread Svyatoslav Ryhel
Default-tap and default-trim values are used for eMMC setup mostly on T114+ devices. As for now, those values are hardcoded for T210 and ignored for all other Tegra generations. Fix this by passing tap and trim values from dts. Tested-by: Svyatoslav Ryhel # ASUS TF701T Signed-off-by: Svyatoslav

[PATCH v1 0/1] tegra_mmc: get tap and trim from dts

2023-08-19 Thread Svyatoslav Ryhel
Default-tap and default-trim values are used for eMMC setup mostly on T114+ devices. As for now, those values are hardcoded for T210 and ignored for all other Tegra generations. Fix this by passing tap and trim values from dts. This commit will cause regression on T210 (emmc may not work), fix is

[PATCH v1 1/1] usb: host: tegra: implement dts based xcvr setup

2023-08-19 Thread Svyatoslav Ryhel
Some devices (like ASUS TF201) may not have fuse based xcvr setup which will result in not working USB line. To fix this situation allow xcvr setup to be performed from device tree values if nvidia,xcvr-setup-use-fuses is not defined. Tested-by: Svyatoslav Ryhel # ASUS TF201 Signed-off-by:

[PATCH v1 0/1] tegra-usb: support dts based xcvr setup

2023-08-19 Thread Svyatoslav Ryhel
This patch makes tegra usb driver a bit more flexible by passing xcvr setup values from device tree. In most cases default setup of USB works perfectly fine, but for some devices (like ASUS TF201) fuses used for xcvr setup are quite different which brakes some usb lines (in TF201 case dock USB

[PATCH] ARM: rmobile: Clean up rmobile_cpuinfo_idx()

2023-08-19 Thread Marek Vasut
Clean the function up a bit further. Return immediatelly on match and return ARRAY_SIZE() - 1 on failure. Add proper comment in that case. Signed-off-by: Marek Vasut --- Cc: Biju Das Cc: Paul Barker --- arch/arm/mach-rmobile/cpu_info.c | 9 + 1 file changed, 5 insertions(+), 4

Re: [PATCH] arm: rmobile: Fix off-by-one error in cpuinfo

2023-08-19 Thread Marek Vasut
On 8/18/23 15:17, Paul Barker wrote: In rmobile_cpuinfo_idx() there is an off-by-one error in accessing the rmobile_cpuinfo array. At the end of the loop, i is equal to the array size, i.e. rmobile_cpuinfo[i] accesses one entry past the end of the array. The last entry in the array is a

[PATCH 17/17] board: usb: Replace legacy usb_gadget_handle_interrupts()

2023-08-19 Thread Marek Vasut
The usb_gadget_handle_interrupts() is no longer used anywhere, replace the remaining uses with dm_usb_gadget_handle_interrupts() which takes udevice as a parameter. Some of the UDC drivers currently ignore the index parameter altogether, those also ignore the udevice and have to be reworked.

[PATCH 16/17] dm: usb: udc: Drop legacy udevice handler functions

2023-08-19 Thread Marek Vasut
Remove legacy functions limited by the dev_array array, those are no longer used anywhere, all the code uses plain udevice based access now. The usb_gadget_handle_interrupts() is doing udevice look up until all call sites use dm_usb_gadget_handle_interrupts(). Signed-off-by: Marek Vasut --- Cc:

[PATCH 15/17] usb: gadget: ether: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 14/17] usb: gadget: acm: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 13/17] thordown: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 12/17] sdp: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 11/17] spl: sdp: Detach the controller on error

2023-08-19 Thread Marek Vasut
In case anything errors out during the SDP transfer, detach the controller instead of bailing out right away. This way, the controller can be reattached on next attempt. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski

[PATCH 10/17] dfu: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 09/17] dfu: Detach the controller on error

2023-08-19 Thread Marek Vasut
In case anything errors out during the DFU registration, detach the controller instead of bailing out right away. This way, the controller can be reattached on next attempt. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski

[PATCH 08/17] cmd: ums: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 07/17] cmd: thordown: Reorder variable declaration

2023-08-19 Thread Marek Vasut
Move the variable declaration around to improve code readability. No functional change. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc: Patrice Chotard

[PATCH 06/17] cmd: sdp: Reorder variable declaration

2023-08-19 Thread Marek Vasut
Move the variable declaration around to improve code readability. No functional change. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc: Patrice Chotard

[PATCH 05/17] cmd: rockusb: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 04/17] cmd: fastboot: Use plain udevice for UDC controller interaction

2023-08-19 Thread Marek Vasut
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc:

[PATCH 03/17] configs: sandbox: Enable DM_USB_GADGET

2023-08-19 Thread Marek Vasut
Switch sandbox to DM_USB_GADGET, DM is the future. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc: Eddie Cai Cc: Kever Yang Cc: Lukasz Majewski Cc: Miquel Raynal Cc: Mattijs Korpershoek Cc: Nishanth Menon Cc: Patrice Chotard Cc: Patrick Delaunay Cc: Philipp

[PATCH 02/17] usb: sandbox: Add DM_USB_GADGET support

2023-08-19 Thread Marek Vasut
Remove local usb_gadget_register_driver()/usb_gadget_unregister_driver() implementation which is implemented in udc-core.c instead if DM_USB_GADGET is enabled. Add no-op dm_usb_gadget_handle_interrupts() implementation. Signed-off-by: Marek Vasut --- Cc: Angus Ainslie Cc: Dmitrii Merkurev Cc:

[PATCH 01/17] dm: usb: udc: Factor out plain udevice handler functions

2023-08-19 Thread Marek Vasut
Pull the functionality of UDC uclass that operates on plain udevice and does not use this dev_array array into separate functions and expose those functions, so that as much code as possible can be switched over to these functions and the dev_array can be dropped. Signed-off-by: Marek Vasut ---

Re: [RESEND PATCH v3 0/3] rpi: Convert to standard boot

2023-08-19 Thread Peter Robinson
On Wed, Aug 16, 2023 at 4:08 PM Simon Glass wrote: > > Hi Matthias, Peter, > > On Thu, 27 Jul 2023 at 15:54, Simon Glass wrote: > > > > This series moves Raspberry Pi boards over to use standard boot. > > > > It also moves rpi over to use a text-based environment. Unfortunately it > > is not

[PATCH 2/2] risc-v: implement DBCN based debug console

2023-08-19 Thread Heinrich Schuchardt
Use the DBCN SBI extension to implement a debug console. Make it the default for S-mode RISC-V. Signed-off-by: Heinrich Schuchardt --- drivers/serial/Kconfig | 3 ++- drivers/serial/serial_sbi.c | 19 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git

[PATCH 1/2] risc-v: implement DBCN write byte

2023-08-19 Thread Heinrich Schuchardt
The DBCN extension provides a Console Write Byte call. Implement function sbi_dbcn_write_byte to invoke it. Signed-off-by: Heinrich Schuchardt --- arch/riscv/include/asm/sbi.h | 1 + arch/riscv/lib/sbi.c | 16 2 files changed, 17 insertions(+) diff --git

[PATCH 0/2] risc-v: implement DBCN based debug console

2023-08-19 Thread Heinrich Schuchardt
Currently we only offer an SBI based debug UART for SBI v0.1. With OpenSBI 1.3 the Debug Console Extension (DBCN) has become available. This allows us to implement a debug UART in a device independent manor. Heinrich Schuchardt (2): risc-v: implement DBCN write byte risc-v: implement DBCN

Re: [PATCH v3 09/12] usb: cdns3: Handle otg mode as peripheral

2023-08-19 Thread Marek Vasut
On 8/19/23 09:00, Roger Quadros wrote: +Peter & Pawel. On 19/08/2023 02:47, Marek Vasut wrote: On 8/18/23 21:26, Roger Quadros wrote: On 18/08/2023 21:48, Tom Rini wrote: On Thu, Aug 17, 2023 at 11:15:17AM +0300, Roger Quadros wrote: Hi Tom, On 14/08/2023 20:17, Tom Rini wrote: On Thu,

Re: [PATCH v2 2/2] riscv: cpu: make riscv_cpu_probe to EVT_DM_POST_INIT_R callback

2023-08-19 Thread Milan P . Stanić
It works. On Fri, 2023-08-18 at 14:11, Chanho Park wrote: > Since the Patch 55171aedda88, VisionFive2 booting has been broken [1]. > VisionFive2 board requires to enable CONFIG_TIMER_EARLY but booting went > to panic from initr_dm_devices due to lack of a timer device. > > - Error logs >

Re: [PATCH v2 1/2] dm: event: add EVT_DM_POST_INIT_R event type

2023-08-19 Thread Milan P . Stanić
It works. On Fri, 2023-08-18 at 14:11, Chanho Park wrote: > This patch introduces EVT_DM_POST_INIT_R event type for handling hooks > after relocation. > > Fixes: 55171aedda88 ("dm: Emit the arch_cpu_init_dm() even only before > relocation") > Suggested-by: Simon Glass > Cc: Bin Meng >

Re: [PATCH v3 09/12] usb: cdns3: Handle otg mode as peripheral

2023-08-19 Thread Roger Quadros
+Peter & Pawel. On 19/08/2023 02:47, Marek Vasut wrote: > On 8/18/23 21:26, Roger Quadros wrote: >> >> >> On 18/08/2023 21:48, Tom Rini wrote: >>> On Thu, Aug 17, 2023 at 11:15:17AM +0300, Roger Quadros wrote: Hi Tom, On 14/08/2023 20:17, Tom Rini wrote: > On Thu, Jul 13, 2023