[PATCH 30/52] expo: Line up all menu objects

2025-03-19 Thread Simon Glass
At present labels are lined up vertically. Do the same with keys and descriptions, since it looks nicer. Signed-off-by: Simon Glass --- boot/scene_menu.c | 22 ++ test/boot/expo.c | 30 ++ 2 files changed, 44 insertions(+), 8 deletions(-) diff -

Re: [PATCH] clk/qcom: sdm845: add missing USB3 clocks

2025-03-19 Thread Neil Armstrong
(GCC_CFG_NOC_USB3_SEC_AXI_CLK, 0x05030, 0x0001), GATE_CLK(GCC_QUPV3_WRAP0_S0_CLK,0x5200c, 0x0400), GATE_CLK(GCC_QUPV3_WRAP0_S1_CLK,0x5200c, 0x0800), --- base-commit: 69fb899133b6c374eff11b13482371bec6898a01 change-id: 20250319-sdm845-usb

Re: [PATCH V3 01/10] clk: imx6q: Properly handle imx6qp ECSPI clk_sels

2025-03-19 Thread Adam Ford
On Wed, Mar 19, 2025 at 11:15 AM Fabio Estevam wrote: > > On Tue, Mar 18, 2025 at 8:42 PM Adam Ford wrote: > > > + if (of_machine_is_compatible("fsl,imx6qp") > > Missing closing parenthesis. > > > - clk_dm(IMX6QDL_CLK_ECSPI_ROOT, > > - imx_clk_divider("ecspi_root", "pll3_

Re: [PATCH 2/3] efi_loader: binary_run: register an initrd

2025-03-19 Thread Adriano Córdova
Understood, thanks! v2 sent. Best, Adriano El mié, 19 mar 2025 a las 12:30, Ilias Apalodimas (< ilias.apalodi...@linaro.org>) escribió: > On Wed, 19 Mar 2025 at 15:02, Adriano Córdova wrote: > > > > Hi Ilias, > > > > Ok, I will change that in a v2. > > Ok i'll have a look at that > > > As a que

Re: [PATCH V3 01/10] clk: imx6q: Properly handle imx6qp ECSPI clk_sels

2025-03-19 Thread Fabio Estevam
On Wed, Mar 19, 2025 at 1:39 PM Adam Ford wrote: > Sorry about all the noise. > > I think I forgot to type 'git add' before the "git commit --amend" so > the fix didn't get applied, but because the same file was shown in the > commit message, it looked like the fix was in place. I'll have to > c

[PATCH v1] board: verdin-am62: remove spl_perform_fixups

2025-03-19 Thread Stefan Eichenberger
From: Stefan Eichenberger spl_perform_fixups is redundant in the current implementation. SPLs call dram_init during spl_enable_cache in arch/arm/mach-k3/common.c. In U-Boot, dram_init and dram_init_banksize are automatically called in init_sequence_f. Therefore, SPLs and U-Boot always determine t

[PATCH 1/3] arm: mach-k3: Remove undefined Kconfig symbols BOARD and SPL_BOARD

2025-03-19 Thread Andrew Davis
These are not defined nor used, they seem to be leftover or a typo, remove them. Signed-off-by: Andrew Davis --- arch/arm/mach-k3/am62ax/Kconfig | 2 -- arch/arm/mach-k3/am64x/Kconfig | 2 -- 2 files changed, 4 deletions(-) diff --git a/arch/arm/mach-k3/am62ax/Kconfig b/arch/arm/mach-k3/am62ax

[PATCH 3/3] arm: mach-k3: Make K3_LOAD_SYSFW and SYS_K3_SPL_ATF default enabled

2025-03-19 Thread Andrew Davis
These two symbols are always selected by default for R5 builds. These symbols already depend on R5 builds, so make it default at their definition to remove select/imply at each board target site. Signed-off-by: Andrew Davis --- arch/arm/mach-k3/am62ax/Kconfig | 4 arch/arm/mach-k3/am62p

[PATCH v1 00/11] Amlogic: ADNL and Optimus protocols support

2025-03-19 Thread Arseniy Krasnov
This patchset adds support of two Amlogic firmware burning protocols: ADNL and Optimus. Each protocol is supported on the following SoC: axg, g12a, g12b, sm1 - Optimus. a1, s4, a5, c1, c2, c3, sc2, t3, t7, p1 - ADNL. Both work in fastboot manner, but significant feature is that they are supported

[PATCH v1 01/11] arch: arm: meson: sm: add commands to reboot device in different modes

2025-03-19 Thread Arseniy Krasnov
From: Vladimir Mitrofanov There are several commands to reboot device in specific mode (cold, normal, etc.), these commands helps to enter flashing mode and set boot source device: 1) MESON_SMC_CMD_BL1_FIRST_BOOT_SRC_SET This command tells BL1 that it must load BL2 from USB data path. It is

[PATCH v1 04/11] usb: gadget: amlogic: common code for Amlogic flashing commands

2025-03-19 Thread Arseniy Krasnov
Amlogic has Optimus and ADNL protocols to update firmware image. Both are operatable by special commands and such commands use same approaches, so let's implement such code before implementing both protocols. Signed-off-by: Arseniy Krasnov --- cmd/meson/gadget.c | 183 +++

[PATCH 3/3] arm: dts: am335x: Add nodes for lcdc, panel and backlight

2025-03-19 Thread Sukrut Bellary
For AM335x EVM[1], enable nodes required to enable the support for LCD and PWM backlight. This is required for the splash screen support. [1] AM335x EVM - https://www.ti.com/tool/TMDXEVM3358 Signed-off-by: Sukrut Bellary --- arch/arm/dts/am335x-evm.dts | 15 ++- 1 file changed, 14 i

[PATCH 1/3] pwm: ti: am33xx: Enable Auxiliary PWM using eCAP

2025-03-19 Thread Sukrut Bellary
In am33xx SOC[1], enhanced capture (eCAP) supports auxiliary PWM (APWM). This series adds the PWM driver support for the APWM feature for eCAP on AM33xx. eCAP HW also supports the capture mode. Currently, this driver only supports APWM. This is based on the Linux kernel driver -> drivers/pwm/pwm-

Re: [PATCH 0/3] Add initrd support to bootm EFI payloads

2025-03-19 Thread Ilias Apalodimas
On Wed, 19 Mar 2025 at 14:12, Adriano Córdova wrote: > > > > El mié, 19 mar 2025 a las 5:48, Ilias Apalodimas > () escribió: >> >> Hi Adriano, >> >> On Tue, 18 Mar 2025 at 15:23, Adriano Cordova wrote: >> > >> > Next boot stages can acces an initrd via a handle with a specific device >> > path a

Re: [PATCH v2] spi: cadence_ospi: Add device reset via OSPI controller

2025-03-19 Thread Michal Simek
On 3/11/25 05:13, Venkatesh Yadav Abbarapu wrote: Add support for flash device reset via OSPI controller instead of using GPIO, as OSPI IP has device reset feature on Versal Gen2 platform. Also add compatible string for Versal Gen2 platform. Signed-off-by: Venkatesh Yadav Abbarapu --- Change

Re: [PATCH 0/3] Add initrd support to bootm EFI payloads

2025-03-19 Thread Adriano Córdova
El mié, 19 mar 2025 a las 5:48, Ilias Apalodimas (< ilias.apalodi...@linaro.org>) escribió: > Hi Adriano, > > On Tue, 18 Mar 2025 at 15:23, Adriano Cordova wrote: > > > > Next boot stages can acces an initrd via a handle with a specific device > > path and an EFI_LOAD_FILE2_PROTOCOL installed on

Re: [PATCH 6/6] lib: Provide a signed version of simple_itoa()

2025-03-19 Thread Heinrich Schuchardt
Am 19. März 2025 12:59:08 MEZ schrieb Simon Glass : >In some cases we want to show a signed value to the user without needing >to use the full printf() implementation. Add a new version of the >simple_itoa() function to handle this. Where will this be used? Why can't printf be used? Why would this

[PATCH] arm64: zynqmp: Use CONFIG_SPL_FS_LOAD_PAYLOAD_NAME in binman

2025-03-19 Thread Michal Simek
u-boot.itb name is coming via CONFIG_SPL_FS_LOAD_PAYLOAD_NAME and it's change will affect SD boot mode that's why start to use it. Signed-off-by: Michal Simek --- arch/arm/dts/zynqmp-binman-som.dts | 11 ++- arch/arm/dts/zynqmp-binman.dts | 8 2 files changed, 10 insertion

Re: [PATCH 6/6] lib: Provide a signed version of simple_itoa()

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 03:04:00PM +, Simon Glass wrote: > Hi Tom, > > On Wed, 19 Mar 2025 at 15:20, Tom Rini wrote: > > > > On Wed, Mar 19, 2025 at 01:12:30PM +0100, Heinrich Schuchardt wrote: > > > Am 19. März 2025 12:59:08 MEZ schrieb Simon Glass : > > > >In some cases we want to show a si

Re: [PATCH 3/6] test: Add a test for strim()

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 03:04:16PM +, Simon Glass wrote: > Hi Tom, > > On Wed, 19 Mar 2025 at 15:24, Tom Rini wrote: > > > > On Wed, Mar 19, 2025 at 12:59:05PM +0100, Simon Glass wrote: > > > > > This function trims whitespace from the start and end of a string. Add a > > > test for it. > > >

Re: [PATCH v5 38/46] boot: Consider non-bootable partitions

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 03:03:49PM +, Simon Glass wrote: > Hi Tom, > > On Tue, 18 Mar 2025 at 16:53, Tom Rini wrote: > > > > On Tue, Mar 18, 2025 at 03:24:02PM +, Simon Glass wrote: > > > Hi Tom, > > > > > > On Tue, 18 Mar 2025 at 15:04, Tom Rini wrote: > > > > > > > > On Sat, Mar 15, 20

[PATCH] clk/qcom: sdm845: add missing USB3 clocks

2025-03-19 Thread Sam Day
, 0x0001), GATE_CLK(GCC_QUPV3_WRAP0_S0_CLK,0x5200c, 0x0400), GATE_CLK(GCC_QUPV3_WRAP0_S1_CLK,0x5200c, 0x0800), --- base-commit: 69fb899133b6c374eff11b13482371bec6898a01 change-id: 20250319-sdm845-usb-clocks-9b794fd89522 Best regards, -- Sam

Re: [PATCH] log: Add helpers for calling log_msg_ret() et al

2025-03-19 Thread Quentin Schulz
Hi Simon On 3/19/25 4:03 PM, Simon Glass wrote: Hi Quentin, On Wed, 19 Mar 2025 at 13:04, Quentin Schulz wrote: Hi Simon, On 3/19/25 12:49 PM, Simon Glass wrote: Logging of function return-values is used very frequently in U-Boot now. Add a few helper macros to make it less verbose to use.

[PATCH 35/52] expo: Check the screen contents after rendering

2025-03-19 Thread Simon Glass
Make sure that the screen contents are as expected when a scene has been rendered. Signed-off-by: Simon Glass --- test/boot/expo.c | 4 1 file changed, 4 insertions(+) diff --git a/test/boot/expo.c b/test/boot/expo.c index a50e9f721de..ba60267f00c 100644 --- a/test/boot/expo.c +++ b/test/

[PATCH 01/52] video: Make white-on-black a video-device property

2025-03-19 Thread Simon Glass
The CONFIG_WHITE_ON_BLACK setting is hard-coded at build-time. It is useful to be able to control this when showing menus. Create a property to hold this information, using the CONFIG as the initial value. Signed-off-by: Simon Glass --- boot/expo.c | 2 +- boot/scene.c

Re: [PATCH 1/5] cmd: fuse: Remove custom string functions

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 02:17:10PM +0530, Harsha Vardhan V M wrote: > Remove custom string functions and replace them with normal string > functions. Remove the custom strtou32 and replace it with > simple_strtoul. > > Signed-off-by: Harsha Vardhan V M Reviewed-by: Tom Rini -- Tom signatur

[PATCH 33/52] expo: Tidy up scene_txt_render()

2025-03-19 Thread Simon Glass
Add an early return if there is no string. Move all declarations to the top of the function. Signed-off-by: Simon Glass --- boot/scene.c | 46 ++ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/boot/scene.c b/boot/scene.c index 1e68c17

Re: [PATCH 3/6] test: Add a test for strim()

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 12:59:05PM +0100, Simon Glass wrote: > This function trims whitespace from the start and end of a string. Add a > test for it. > > Signed-off-by: Simon Glass > --- > > test/lib/string.c | 31 +++ > 1 file changed, 31 insertions(+) This got m

[PATCH 46/52] expo: Drop the render from expo_poll()

2025-03-19 Thread Simon Glass
Within tests it is useful to be able to control rendering of the expo. Drop the automatic call to expo_render() within expo_poll() and adjust its callers to handle this instead. Signed-off-by: Simon Glass --- boot/cedit.c | 1 + boot/expo.c| 2 -- cmd/bootflow.c | 1 + include/expo.h | 9

[PATCH 48/52] expo: Improve the visual appearance of the menu

2025-03-19 Thread Simon Glass
The menu is currently quite basic. Make use of some recently added features in expo, to: - Show proper prompts - Highlight the current item - Centre text - Use multi-line text instead of two independent lines - Put a box around the items Signed-off-by: Simon Glass --- boot/bootflow_internal.h

[PATCH 44/52] expo: Support highlighting menu items

2025-03-19 Thread Simon Glass
Expo normally uses a pointer to show the current item. Add support for highlighting as well, since this makes it easier for the user to see the current item. Signed-off-by: Simon Glass --- boot/cedit.c | 1 + boot/scene.c | 31 +-- boot/scene_menu.c | 14 +

[PATCH 38/52] expo: Implement a box

2025-03-19 Thread Simon Glass
It is useful to be able to draw a box around elements in the menu. Add support for an unfilled box with a selectable thickness. Note that there is no support for selecting the colour for any expo objects yet. Signed-off-by: Simon Glass --- boot/cedit.c | 5 + boot/scene.c

[PATCH 37/52] expo: Support white-on-black in the theme

2025-03-19 Thread Simon Glass
Allow this setting to be controlled from the theme. Signed-off-by: Simon Glass --- boot/expo.c | 4 1 file changed, 4 insertions(+) diff --git a/boot/expo.c b/boot/expo.c index a0be1404f1c..4e855f60d84 100644 --- a/boot/expo.c +++ b/boot/expo.c @@ -277,6 +277,7 @@ int expo_apply_theme(str

[PATCH 42/52] expo: Drop the gap between groups of menu items

2025-03-19 Thread Simon Glass
The gap is intended to separate options which are on different bootdevs, but most of the time there is only one. So drop this gap. Keep the code around in case it becomes useful to have it in the style, or based on some other mechanism. Signed-off-by: Simon Glass --- boot/bootflow_menu.c | 3 +

[PATCH 47/52] expo: Provide a way to position things relative to display

2025-03-19 Thread Simon Glass
It is often necessary to centre objects within the display area. Add a special position value to indicate this. Signed-off-by: Simon Glass --- boot/scene.c | 5 + include/expo.h | 6 ++ 2 files changed, 11 insertions(+) diff --git a/boot/scene.c b/boot/scene.c index 02494fff603..7acd

[PATCH 49/52] expo: Update bootflow_menu_poll() to return a sequence ID

2025-03-19 Thread Simon Glass
Rather than returning a bootflow, return the index of the bootflow. This will allow callers to do their own translation to bootflows or some other data structure. Also return a special code when the user tries to move the pointer, so that the caller can cancel the boot-menu timeout, if this is in

[PATCH 50/52] expo: Split setting up the menu from adding items

2025-03-19 Thread Simon Glass
Some callers may wish to add items later as they are discovered. Split the setup code into its own function, to permit this. Signed-off-by: Simon Glass --- boot/bootflow_menu.c | 24 ++-- include/bootflow.h | 15 +++ 2 files changed, 37 insertions(+), 2 deletio

Re: [PATCH v5 38/46] boot: Consider non-bootable partitions

2025-03-19 Thread Simon Glass
Hi Tom, On Tue, 18 Mar 2025 at 16:53, Tom Rini wrote: > > On Tue, Mar 18, 2025 at 03:24:02PM +, Simon Glass wrote: > > Hi Tom, > > > > On Tue, 18 Mar 2025 at 15:04, Tom Rini wrote: > > > > > > On Sat, Mar 15, 2025 at 02:25:58PM +, Simon Glass wrote: > > > > > > > Any 'bootable' flag in a

[PATCH 52/52] expo: Drop the special theme code for bootflow_menu

2025-03-19 Thread Simon Glass
The expo now has all that is needed to apply a suitable theme, so drop this unnecessary code. Any further tweaks can be added to the generic expo code. Signed-off-by: Simon Glass --- boot/bootflow_menu.c | 43 --- test/boot/bootflow.c | 2 +- 2 files cha

Re: [PATCH] log: Add helpers for calling log_msg_ret() et al

2025-03-19 Thread Simon Glass
Hi Quentin, On Wed, 19 Mar 2025 at 13:04, Quentin Schulz wrote: > > Hi Simon, > > On 3/19/25 12:49 PM, Simon Glass wrote: > > Logging of function return-values is used very frequently in U-Boot now. > > Add a few helper macros to make it less verbose to use. > > > > It turns out that the log_ret(

Re: [PATCH 00/52] expo: Various features and improvements

2025-03-19 Thread Tom Rini
On Wed, Mar 19, 2025 at 03:54:05PM +0100, Simon Glass wrote: > This series collects together some new features for expo to make it more > useful for boot menus: > > - measurement and display of multi-line text objects > - internal alignment for objects (e.g. centred text) > - editable strings in

[PATCH 51/52] expo: Set up menu fully in bootflow_menu_start()

2025-03-19 Thread Simon Glass
Apply the theme, calculate dimensions, highlight the menu and arrange the scene correctly, so that everything is ready to go when the expo is rendered. Signed-off-by: Simon Glass --- boot/bootflow_menu.c | 18 ++ 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/boo

Re: [PATCH v4 10/14] dm: usb: move bus initialization into new static function usb_init_bus()

2025-03-19 Thread Simon Glass
Hi Jerome, On Wed, 19 Mar 2025 at 11:44, Jerome Forissier wrote: > > Hello Marek, > > On 3/18/25 13:20, Marek Vasut wrote: > > On 3/18/25 11:46 AM, Jerome Forissier wrote: > >> To prepare for the introduction of threads in the USB initialization > >> sequence, move code out of usb_init() into a n

Re: [PATCH 6/6] lib: Provide a signed version of simple_itoa()

2025-03-19 Thread Simon Glass
Hi Heinrich, On Wed, 19 Mar 2025 at 13:12, Heinrich Schuchardt wrote: > > Am 19. März 2025 12:59:08 MEZ schrieb Simon Glass : > >In some cases we want to show a signed value to the user without needing > >to use the full printf() implementation. Add a new version of the > >simple_itoa() function

[PATCH 10/52] test: video: Export the video-checking functions

2025-03-19 Thread Simon Glass
We want to check the display contents in expo tests, so move the two needed functions to a new header file. Rename them to have a video_ prefix. Signed-off-by: Simon Glass --- include/test/video.h | 45 +++ test/dm/video.c | 179 ++- 2 file

[PATCH 24/52] expo: Rename scene_dim to scene_obj_bbox

2025-03-19 Thread Simon Glass
At present we assume that each object is a simple box and that it fills the whole box. This is quite limiting for text objects, which we may want to centre within the box. We need a position within the box where drawing starts. Rename the scene_dim struct to indicate that it is a bounding box. S

Re: [PATCH 6/6] lib: Provide a signed version of simple_itoa()

2025-03-19 Thread Simon Glass
Hi Tom, On Wed, 19 Mar 2025 at 15:20, Tom Rini wrote: > > On Wed, Mar 19, 2025 at 01:12:30PM +0100, Heinrich Schuchardt wrote: > > Am 19. März 2025 12:59:08 MEZ schrieb Simon Glass : > > >In some cases we want to show a signed value to the user without needing > > >to use the full printf() implem

[PATCH 04/52] video: Begin support for measuring multiple lines of text

2025-03-19 Thread Simon Glass
Update the vidconsole API so that measure() can measure multiple lines of text. This will make it easier to implement multi-line fields in expo. Tidy up the function comments while we are here. Signed-off-by: Simon Glass --- boot/scene.c | 2 +- drivers/video/console_true

Re: [PATCH] log: Add helpers for calling log_msg_ret() et al

2025-03-19 Thread Quentin Schulz
Hi Simon, On 3/19/25 12:49 PM, Simon Glass wrote: Logging of function return-values is used very frequently in U-Boot now. Add a few helper macros to make it less verbose to use. It turns out that the log_ret() variants are not so useful, since it is not obviously where the error is coming from

[PATCH 34/52] expo: Allow strings to be editable

2025-03-19 Thread Simon Glass
In some cases dynamic text is needed, e.g. for a menu countdown. Add a function which handles this, allowing the caller to take control of the text that is shown on each render. Signed-off-by: Simon Glass --- boot/expo.c | 21 + include/expo.h | 17 +

[PATCH] configs: Remove duplicated bootcmd 'mmc dev ${mmcdev}'

2025-03-19 Thread Aristo Chen
The 'mmc dev ${mmcdev}' is defined twice, so remove the duplicated one Signed-off-by: Aristo Chen --- configs/mx6sxsabreauto_defconfig | 2 +- configs/mx6ul_14x14_evk_defconfig | 2 +- configs/mx6ul_9x9_evk_defconfig | 2 +- configs/mx6ull_14x14_evk_defconfig|

[PATCH v2 0/2] Change DRAM message and add RAM doc

2025-03-19 Thread Neha Malcom Francis
This short series is an ongoing effort to make RAM utilization clearer for easier debugging and understanding of code. Intention is for users to quickly be able to identify the CONFIGs needed to modify for their RAM usecase. Neha Malcom Francis (2): board_f: Modify DRAM message doc: memory: Ad

[PATCH v2 1/2] board_f: Modify DRAM message

2025-03-19 Thread Neha Malcom Francis
The message "DRAM: 2 GiB (effective 32 GiB)" can be a little confusing, modify the message s/effective/total to make it more evident. Signed-off-by: Neha Malcom Francis --- common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/board_f.c b/common/board_f.c i

[PATCH] arm: dts: k3: Remove leftover file after OF_UPSTREAM

2025-03-19 Thread Andrew Davis
The file k3-am62a7.dtsi is part of upstream DT and should have been removed when migrating to OF_UPSTREAM but must have been missed. Do this here. Signed-off-by: Andrew Davis --- arch/arm/dts/k3-am62a7.dtsi | 104 1 file changed, 104 deletions(-) delete mode

[PATCH 22/52] expo: Split bootflow_menu_new() into two pieces

2025-03-19 Thread Simon Glass
Split the iteration piece of this function into bootflow_menu_add_all() so that it is possible for the caller to be in control of adding items to the menu. Move the expo_destroy() call into the caller. Signed-off-by: Simon Glass --- boot/bootflow_menu.c | 31 +++ in

[PATCH 32/52] expo: Move text-rendering into its own function

2025-03-19 Thread Simon Glass
The code to render text is quite long, so put it in its own function. Signed-off-by: Simon Glass --- boot/scene.c | 95 +--- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/boot/scene.c b/boot/scene.c index bf56f4341aa..1e68c17c386

Re: [PATCH V3 01/10] clk: imx6q: Properly handle imx6qp ECSPI clk_sels

2025-03-19 Thread Fabio Estevam
On Tue, Mar 18, 2025 at 8:42 PM Adam Ford wrote: > + if (of_machine_is_compatible("fsl,imx6qp") Missing closing parenthesis. > - clk_dm(IMX6QDL_CLK_ECSPI_ROOT, > - imx_clk_divider("ecspi_root", "pll3_60m", base + 0x38, 19, 6)); > + if (of_machine_is_compatible("fs

[PATCH] arm: mach-k3: j721e: Split out J7200 SoC support from J721e

2025-03-19 Thread Andrew Davis
Currently in j721e_init.c we check which firewalls to remove using the board configuration (e.g CONFIG_TARGET_J721E_R5_EVM). We do this as J721e and J7200 have different IP and firewalls but use the same SoC definition (SOC_K3_J721E) even though they are different SoCs. The idea was they would be

<    1   2