Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162914772
D43319.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
44 KB
Referenced Files
None
Subscribers
None
D43319.diff
View Options
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/Makefile b/sysutils/u-boot-olimex-am3352-som-evb/Makefile
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/Makefile
@@ -0,0 +1,12 @@
+MASTERDIR= ${.CURDIR}/../u-boot-master
+
+MODEL= olimex-am3352-som
+BOARD_CONFIG= am335x_evm_defconfig
+FAMILY= omap
+
+CONFIG_FRAGMENT= ${.CURDIR}/files/bbb_fragment
+FRAGMENT_NAME= bbb_fragment
+
+EXTRA_PATCHES?= ${.CURDIR}/files/
+
+.include "${MASTERDIR}/Makefile"
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/bbb_fragment b/sysutils/u-boot-olimex-am3352-som-evb/files/bbb_fragment
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/bbb_fragment
@@ -0,0 +1,15 @@
+CONFIG_DEFAULT_DEVICE_TREE="am335x-olimex-som-evb"
+CONFIG_OF_LIST="am335x-olimex-som-evb"
+CONFIG_API=y
+CONFIG_ARMV7_NONSEC=n
+CONFIG_CMD_CACHE=y
+CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; setenv boot_targets mmc0; run distro_bootcmd"
+CONFIG_MTD=n
+CONFIG_MTD_RAW_NAND=n
+CONFIG_SPL_NAND_SUPPORT=n
+CONFIG_CMD_NAND=n
+CONFIG_DFU_NAND=n
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
+CONFIG_LOGLEVEL=6
+CONFIG_SYS_CONSOLE_INFO_QUIET=n
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_Makefile b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_Makefile
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_Makefile
@@ -0,0 +1,16 @@
+--- arch/arm/dts/Makefile.orig 2023-10-02 16:39:59.000000000 +0200
++++ arch/arm/dts/Makefile 2023-12-29 00:03:14.849352000 +0100
+@@ -479,7 +479,12 @@
+ am335x-base0033.dtb \
+ am335x-guardian.dtb \
+ am335x-wega-rdk.dtb \
+- am335x-regor-rdk.dtb
++ am335x-regor-rdk.dtb \
++ am335x-olimex-som.dtb \
++ am335x-olimex-som-nand.dtb \
++ am335x-olimex-som-evb.dtb \
++ am335x-olimex-som-evb-nand.dtb
++
+ dtb-$(CONFIG_AM43XX) += am437x-gp-evm.dtb am437x-sk-evm.dtb \
+ am43x-epos-evm.dtb \
+ am437x-idk-evm.dtb \
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex.dtsi b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex.dtsi
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex.dtsi
@@ -0,0 +1,106 @@
+--- arch/arm/dts/am335x-olimex.dtsi.orig 2023-12-30 21:45:37.099176000 +0100
++++ arch/arm/dts/am335x-olimex.dtsi 2024-01-04 20:27:18.704936000 +0100
+@@ -0,0 +1,103 @@
++/*
++ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include "am33xx.dtsi"
++
++/ {
++ chosen {
++ stdout-path = &uart0;
++ tick-timer = &timer2;
++ };
++
++ leds {
++ pinctrl-names = "default";
++ pinctrl-0 = <&usr_led_pins_default>;
++
++ compatible = "gpio-leds";
++
++ led@0 {
++ label = "olimex-som:green:led1";
++ gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
++ linux,default-trigger = "heartbeat";
++ default-state = "off";
++ };
++ };
++
++ memory {
++ device_type = "memory";
++ reg = <0x80000000 0x20000000>; /* 512 MB */
++ };
++
++ dummy_reg: regulator@0 {
++ compatible = "regulator-fixed";
++ regulator-name = "dummy_regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ };
++
++ vdd_bl: regulator@0 {
++ compatible = "regulator-fixed";
++ regulator-name = "pwm_backlight_regulator";
++ gpio = <&gpio3 19 0>;
++ enable-active-high;
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ };
++};
++
++&aes {
++ status = "okay";
++};
++
++&am33xx_pinmux {
++
++ mmc1_pins_default: mmc1_pins_default {
++ pinctrl-single,pins = <
++ 0x100 ( PIN_INPUT | MUX_MODE0 ) /* (G17) mmc0_clk.mmc0_clk */
++ 0x104 ( PIN_INPUT | MUX_MODE0 ) /* (G18) mmc0_cmd.mmc0_cmd */
++ 0xfc ( PIN_INPUT | MUX_MODE0 ) /* (G16) mmc0_dat0.mmc0_dat0 */
++ 0xf8 ( PIN_INPUT | MUX_MODE0 ) /* (G15) mmc0_dat1.mmc0_dat1 */
++ 0xf4 ( PIN_INPUT | MUX_MODE0 ) /* (F18) mmc0_dat2.mmc0_dat2 */
++ 0xf0 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (F17) mmc0_dat3.mmc0_dat3 */
++ 0x160 ( PIN_INPUT | MUX_MODE7 ) /* (C15) spi0_cs1.mmc0_sdcd */
++ >;
++ };
++
++ uart0_pins_default: uart0_pins_default {
++ pinctrl-single,pins = <
++ 0x170 ( PIN_INPUT | MUX_MODE0 ) /* (E15) uart0_rxd.uart0_rxd */
++ 0x174 ( PIN_OUTPUT | MUX_MODE0 ) /* (E16) uart0_txd.uart0_txd */
++ >;
++ };
++
++ usr_led_pins_default: usr_led_pins_default {
++ pinctrl-single,pins = <
++ 0x1a0 ( PIN_OUTPUT | MUX_MODE7 ) /* (B12) mcasp0_aclkr.gpio3[18] */
++ >;
++ };
++};
++
++&mmc1 {
++ status = "okay";
++ bus-width = <0x4>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&mmc1_pins_default>;
++ cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
++ /* cd-inverted; */
++ vmmc-supply = <&dummy_reg>;
++};
++
++&sham {
++ status = "okay";
++};
++
++&uart0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart0_pins_default>;
++ status = "okay";
++};
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som.dts b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som.dts
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som.dts
@@ -0,0 +1,18 @@
+--- arch/arm/dts/am335x-olimex-som.dts.orig 2023-12-30 21:45:37.100247000 +0100
++++ arch/arm/dts/am335x-olimex-som.dts 2024-01-04 20:27:18.704719000 +0100
+@@ -0,0 +1,15 @@
++/*
++ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++/dts-v1/;
++
++#include "am335x-olimex.dtsi"
++
++/ {
++ model = "OLIMEX AM335x-SOM";
++ compatible = "olimex,am335x_som", "ti,am33xx";
++};
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb.dts b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb.dts
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb.dts
@@ -0,0 +1,415 @@
+--- arch/arm/dts/am335x-olimex-som-evb.dts.orig 2024-01-04 20:45:54.887596000 +0100
++++ arch/arm/dts/am335x-olimex-som-evb.dts 2024-01-04 20:47:56.986944000 +0100
+@@ -0,0 +1,412 @@
++/*
++ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++/dts-v1/;
++
++#include "am335x-olimex.dtsi"
++
++/ {
++ model = "OLIMEX AM335x-SOM-EVB";
++ compatible = "olimex,am335x_som_evb", "ti,am33xx";
++
++ backlight: backlight {
++ compatible = "pwm-backlight";
++ pwms = <&ecap0 0 50000 1>;
++ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
++ default-brightness-level = <8>;
++ power-supply = <&vdd_bl>;
++ };
++
++ leds {
++ pinctrl-names = "default";
++ pinctrl-0 = <&evb_leds_pins_default>;
++
++ compatible = "gpio-leds";
++
++ led@1 {
++ label = "olimex-evb:red:led2";
++ gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
++ linux,default-trigger = "mmc0";
++ default-state = "off";
++ };
++
++ led@2 {
++ label = "olimex-evb:yellow:led3";
++ gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
++ linux,default-trigger = "cpu0";
++ default-state = "off";
++ };
++
++ };
++
++ panel {
++ compatible = "ti,tilcdc,panel";
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&lcd_pins_default>;
++
++ panel-info {
++ ac-bias = <255>;
++ ac-bias-intrpt = <0>;
++ dma-burst-sz = <16>;
++ bpp = <16>;
++ fdd = <0x80>;
++ sync-edge = <0>;
++ sync-ctrl = <1>;
++ raster-order = <0>;
++ fifo-th = <0>;
++ };
++
++ display-timings {
++ native-mode = <&timing3>;
++
++ timing0: 480x272 {
++ clock-frequency = <9000000>;
++ hactive = <480>;
++ vactive = <272>;
++ hfront-porch = <525>;
++ hback-porch = <8>;
++ vfront-porch = <576>;
++ vback-porch = <8>;
++ hsync-len = <30>;
++ vsync-len = <5>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ pixelclk-active = <1>;
++ };
++
++ timing1: 800x480 {
++ clock-frequency = <33000000>;
++ hactive = <800>;
++ vactive = <480>;
++ hfront-porch = <209>;
++ hback-porch = <16>;
++ vfront-porch = <22>;
++ vback-porch = <22>;
++ hsync-len = <30>;
++ vsync-len = <1>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ pixelclk-active = <1>;
++ };
++
++ timing2: 800x600 {
++ clock-frequency = <40000000>;
++ hactive = <800>;
++ vactive = <600>;
++ hfront-porch = <44>;
++ hback-porch = <88>;
++ vfront-porch = <5>;
++ vback-porch = <19>;
++ hsync-len = <128>;
++ vsync-len = <4>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ pixelclk-active = <1>;
++ };
++
++ timing3: 1024x600 {
++ clock-frequency = <45000000>;
++ hactive = <1024>;
++ vactive = <600>;
++ hfront-porch = <16>;
++ hback-porch = <150>;
++ vfront-porch = <2>;
++ vback-porch = <21>;
++ hsync-len = <10>;
++ vsync-len = <2>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ pixelclk-active = <1>;
++ };
++ };
++ };
++};
++
++&am33xx_pinmux{
++ backlight_pins_default: backlight_pins_default {
++ pinctrl-single,pins = <
++ 0x164 ( PIN_OUTPUT | MUX_MODE0 ) /* (C18) eCAP0_in_PWM0_out.eCAP0_in_PWM0_out */
++ >;
++ };
++
++ dcan0_pins_default: dcan0_pins_default {
++ pinctrl-single,pins = <
++ 0x17c ( PIN_INPUT | MUX_MODE2 ) /* (D17) uart1_rtsn.dcan0_rx */
++ 0x178 ( PIN_OUTPUT | MUX_MODE2 ) /* (D18) uart1_ctsn.dcan0_tx */
++ >;
++ };
++
++ evb_leds_pins_default: evb_leds_pins_default {
++ pinctrl-single,pins = <
++ 0x1a8 ( PIN_OUTPUT | MUX_MODE7 ) /* (D13) mcasp0_axr1.gpio3[20] */
++ 0x1ac ( PIN_OUTPUT | MUX_MODE7 ) /* (A14) mcasp0_ahclkx.gpio3[21] */
++ >;
++ };
++
++ i2c0_pins_default: i2c0_pins_default {
++ pinctrl-single,pins = <
++ 0x18c ( PIN_INPUT | MUX_MODE0 ) /* (C16) I2C0_SCL.I2C0_SCL */
++ 0x188 ( PIN_INPUT | MUX_MODE0 ) /* (C17) I2C0_SDA.I2C0_SDA */
++ >;
++ };
++
++ mdio_pins_default: mdio_pins_default {
++ pinctrl-single,pins = <
++ 0x14c ( PIN_OUTPUT | MUX_MODE0 ) /* (M18) mdio_clk.mdio_clk */
++ 0x148 ( PIN_INPUT | MUX_MODE0 ) /* (M17) mdio_data.mdio_data */
++ >;
++ };
++
++ lcd_pins_default: lcd_pins_default {
++ pinctrl-single,pins = <
++ 0xe0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U5) lcd_vsync.lcd_vsync */
++ 0xe4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R5) lcd_hsync.lcd_hsync */
++ 0xe8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V5) lcd_pclk.lcd_pclk */
++ 0xec ( PIN_OUTPUT | MUX_MODE0 ) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */
++ 0xa0 ( PIN_OUTPUT | MUX_MODE0 ) /* (R1) lcd_data0.lcd_data0 */
++ 0xa4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R2) lcd_data1.lcd_data1 */
++ 0xa8 ( PIN_OUTPUT | MUX_MODE0 ) /* (R3) lcd_data2.lcd_data2 */
++ 0xac ( PIN_OUTPUT | MUX_MODE0 ) /* (R4) lcd_data3.lcd_data3 */
++ 0xb0 ( PIN_OUTPUT | MUX_MODE0 ) /* (T1) lcd_data4.lcd_data4 */
++ 0xb4 ( PIN_OUTPUT | MUX_MODE0 ) /* (T2) lcd_data5.lcd_data5 */
++ 0xb8 ( PIN_OUTPUT | MUX_MODE0 ) /* (T3) lcd_data6.lcd_data6 */
++ 0xbc ( PIN_OUTPUT | MUX_MODE0 ) /* (T4) lcd_data7.lcd_data7 */
++ 0xc0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U1) lcd_data8.lcd_data8 */
++ 0xc4 ( PIN_OUTPUT | MUX_MODE0 ) /* (U2) lcd_data9.lcd_data9 */
++ 0xc8 ( PIN_OUTPUT | MUX_MODE0 ) /* (U3) lcd_data10.lcd_data10 */
++ 0xcc ( PIN_OUTPUT | MUX_MODE0 ) /* (U4) lcd_data11.lcd_data11 */
++ 0xd0 ( PIN_OUTPUT | MUX_MODE0 ) /* (V2) lcd_data12.lcd_data12 */
++ 0xd4 ( PIN_OUTPUT | MUX_MODE0 ) /* (V3) lcd_data13.lcd_data13 */
++ 0xd8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V4) lcd_data14.lcd_data14 */
++ 0xdc ( PIN_OUTPUT | MUX_MODE0 ) /* (T5) lcd_data15.lcd_data15 */
++ 0x3c ( PIN_OUTPUT | MUX_MODE1 ) /* (U13) gpmc_ad15.lcd_data16 */
++ 0x38 ( PIN_OUTPUT | MUX_MODE1 ) /* (V13) gpmc_ad14.lcd_data17 */
++ 0x34 ( PIN_OUTPUT | MUX_MODE1 ) /* (R12) gpmc_ad13.lcd_data18 */
++ 0x30 ( PIN_OUTPUT | MUX_MODE1 ) /* (T12) gpmc_ad12.lcd_data19 */
++ 0x2c ( PIN_OUTPUT | MUX_MODE1 ) /* (U12) gpmc_ad11.lcd_data20 */
++ 0x28 ( PIN_OUTPUT | MUX_MODE1 ) /* (T11) gpmc_ad10.lcd_data21 */
++ 0x24 ( PIN_OUTPUT | MUX_MODE1 ) /* (T10) gpmc_ad9.lcd_data22 */
++ 0x20 ( PIN_OUTPUT | MUX_MODE1 ) /* (U10) gpmc_ad8.lcd_data23 */
++ >;
++ };
++
++ phy1_pins_default: phy1_pins_default {
++ pinctrl-single,pins = <
++ 0x108 ( PIN_INPUT | MUX_MODE0 ) /* (H16) gmii1_col.gmii1_col */
++ 0x10c ( PIN_INPUT | MUX_MODE0 ) /* (H17) gmii1_crs.gmii1_crs */
++ 0x110 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (J15) gmii1_rxer.gmii1_rxer */
++ 0x114 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (J16) gmii1_txen.gmii1_txen */
++ 0x118 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (J17) gmii1_rxdv.gmii1_rxdv */
++ 0x12c ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (K18) gmii1_txclk.gmii1_txclk */
++ 0x130 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L18) gmii1_rxclk.gmii1_rxclk */
++ 0x128 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K17) gmii1_txd0.gmii1_txd0 */
++ 0x124 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K16) gmii1_txd1.gmii1_txd1 */
++ 0x120 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K15) gmii1_txd2.gmii1_txd2 */
++ 0x11c ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (J18) gmii1_txd3.gmii1_txd3 */
++ 0x140 ( PIN_INPUT | MUX_MODE0 ) /* (M16) gmii1_rxd0.gmii1_rxd0 */
++ 0x13c ( PIN_INPUT | MUX_MODE0 ) /* (L15) gmii1_rxd1.gmii1_rxd1 */
++ 0x138 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L16) gmii1_rxd2.gmii1_rxd2 */
++ 0x134 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L17) gmii1_rxd3.gmii1_rxd3 */
++ >;
++ };
++
++ phy2_pins_default: phy2_pins_default {
++ pinctrl-single,pins = <
++ 0x78 ( PIN_INPUT | MUX_MODE1 ) /* (U18) gpmc_be1n.gmii2_col */
++ 0x70 ( PIN_INPUT | MUX_MODE1 ) /* (T17) gpmc_wait0.gmii2_crs */
++ 0x74 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (U17) gpmc_wpn.gmii2_rxer */
++ 0x40 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (R13) gpmc_a0.gmii2_txen */
++ 0x44 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (V14) gpmc_a1.gmii2_rxdv */
++ 0x58 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (U15) gpmc_a6.gmii2_txclk */
++ 0x5c ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (T15) gpmc_a7.gmii2_rxclk */
++ 0x54 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (V15) gpmc_a5.gmii2_txd0 */
++ 0x50 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (R14) gpmc_a4.gmii2_txd1 */
++ 0x4c ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (T14) gpmc_a3.gmii2_txd2 */
++ 0x48 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (U14) gpmc_a2.gmii2_txd3 */
++ 0x6c ( PIN_INPUT | MUX_MODE1 ) /* (V17) gpmc_a11.gmii2_rxd0 */
++ 0x68 ( PIN_INPUT | MUX_MODE1 ) /* (T16) gpmc_a10.gmii2_rxd1 */
++ 0x64 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (U16) gpmc_a9.gmii2_rxd2 */
++ 0x60 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (V16) gpmc_a8.gmii2_rxd3 */
++ >;
++ };
++
++ spi0_pins_default: spi0_pins_default {
++ pinctrl-single,pins = <
++ 0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
++ 0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
++ 0x158 ( PIN_OUTPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
++ 0x15c ( PIN_OUTPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
++ >;
++ };
++
++ spi1_pins_default: spi1_pins_default {
++ pinctrl-single,pins = <
++ 0x190 ( PIN_INPUT | MUX_MODE3 ) /* (A13) mcasp0_aclkx.spi1_sclk */
++ 0x194 ( PIN_INPUT | MUX_MODE3 ) /* (B13) mcasp0_fsx.spi1_d0 */
++ 0x198 ( PIN_OUTPUT | MUX_MODE3 ) /* (D12) mcasp0_axr0.spi1_d1 */
++ 0x19c ( PIN_OUTPUT | MUX_MODE3 ) /* (C12) mcasp0_ahclkr.spi1_cs0 */
++ >;
++ };
++
++ uart1_pins_default: uart1_pins_default {
++ pinctrl-single,pins = <
++ 0x180 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (D16) uart1_rxd.uart1_rxd */
++ 0x184 ( PIN_OUTPUT | MUX_MODE0 ) /* (D15) uart1_txd.uart1_txd */
++ >;
++ };
++
++ uart4_pins_default: uart4_pins_default {
++ pinctrl-single,pins = <
++ 0x168 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (E18) uart0_ctsn.uart4_rxd */
++ 0x16c ( PIN_OUTPUT | MUX_MODE1 ) /* (E17) uart0_rtsn.uart4_txd */
++ >;
++ };
++
++ usb0_pins_default: usb0_pins_default {
++ pinctrl-single,pins = <
++ 0x21c ( PIN_OUTPUT | MUX_MODE0 ) /* (F16) USB0_DRVVBUS.USB0_DRVVBUS */
++ >;
++ };
++};
++
++&cppi41dma {
++ status = "okay";
++};
++
++&cpsw_emac0 {
++ status = "okay";
++ phy_id = <&davinci_mdio>, <0>;
++ phy-mode = "mii";
++ dual_emac_res_vlan = <1>;
++};
++
++&cpsw_emac1 {
++ status = "okay";
++ phy_id = <&davinci_mdio>, <1>;
++ phy-mode = "mii";
++ dual_emac_res_vlan = <2>;
++};
++
++&davinci_mdio {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&mdio_pins_default>;
++};
++
++&dcan0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&dcan0_pins_default>;
++ status = "okay";
++};
++
++&epwmss0 {
++ status = "okay";
++ ecap0: pwm@100 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&backlight_pins_default>;
++ };
++};
++
++&i2c0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c0_pins_default>;
++ status = "okay";
++};
++
++&lcdc {
++ status = "okay";
++ blue-and-red-wiring = "crossed";
++};
++
++&mac {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&phy1_pins_default>,<&phy2_pins_default>;
++ dual_emac = <1>;
++};
++
++&spi0 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi0_pins_default>;
++
++ spidev@0 {
++ spi-max-frequency = <24000000>;
++ reg = <0>;
++ compatible = "linux,spidev";
++ };
++};
++
++&spi1 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi1_pins_default>;
++
++ spidev@0 {
++ spi-max-frequency = <24000000>;
++ reg = <0>;
++ compatible = "linux,spidev";
++ };
++};
++
++&tscadc {
++ status = "okay";
++ tsc {
++ ti,wires = <4>;
++ ti,x-plate-resistance = <200>;
++ ti,coordinate-readouts = <5>;
++ ti,wire-config = <0x00 0x11 0x22 0x33>;
++ freebsd,x-inverted;
++ };
++ adc {
++ ti,adc-channels = <0 1 2 3>;
++ };
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart1_pins_default>;
++ status = "okay";
++};
++
++&uart4 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart4_pins_default>;
++ status = "okay";
++};
++
++&usb {
++ status = "okay";
++};
++
++&usb_ctrl_mod {
++ status = "okay";
++};
++
++&usb0_phy {
++ status = "okay";
++};
++
++&usb0 {
++ status = "okay";
++ dr_mode = "peripheral";
++};
++
++&usb1_phy {
++ status = "okay";
++};
++
++&usb1 {
++ status = "okay";
++ dr_mode = "host";
++};
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb_nand.dts b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb_nand.dts
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_evb_nand.dts
@@ -0,0 +1,383 @@
+--- arch/arm/dts/am335x-olimex-som-evb-nand.dts.orig 2024-01-04 20:45:54.889546000 +0100
++++ arch/arm/dts/am335x-olimex-som-evb-nand.dts 2024-01-04 20:47:56.986902000 +0100
+@@ -0,0 +1,380 @@
++/*
++ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++#include "am335x-olimex-som-nand.dts"
++
++/ {
++ model = "OLIMEX AM335x-SOM-EVB-NAND";
++ compatible = "olimex,am335x_som_evb_nand", "ti,am33xx";
++
++ backlight: backlight {
++ compatible = "pwm-backlight";
++ pwms = <&ehrpwm0 0 50000 1>;
++ brightness-levels = <0 51 53 56 62 75 101 152 255>;
++ default-brightness-level = <8>;
++ power-supply = <&vdd_bl>;
++ };
++
++ leds {
++ pinctrl-names = "default";
++ pinctrl-0 = <&evb_leds_pins_default>;
++
++ compatible = "gpio-leds";
++
++ led@1 {
++ label = "olimex-evb:red:led2";
++ gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
++ linux,default-trigger = "mmc0";
++ default-state = "off";
++ };
++
++ led@2 {
++ label = "olimex-evb:yellow:led3";
++ gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
++ linux,default-trigger = "cpu0";
++ default-state = "off";
++ };
++
++ };
++
++ panel {
++ compatible = "ti,tilcdc,panel";
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&lcd_pins_default>;
++
++ panel-info {
++ ac-bias = <255>;
++ ac-bias-intrpt = <0>;
++ dma-burst-sz = <16>;
++ bpp = <16>;
++ fdd = <0x80>;
++ sync-edge = <0>;
++ sync-ctrl = <1>;
++ raster-order = <0>;
++ fifo-th = <0>;
++ };
++
++ display-timings {
++ native-mode = <&timing3>;
++
++ timing0: 480x272 {
++ clock-frequency = <9000000>;
++ hactive = <480>;
++ vactive = <272>;
++ hfront-porch = <525>;
++ hback-porch = <8>;
++ vfront-porch = <576>;
++ vback-porch = <8>;
++ hsync-len = <30>;
++ vsync-len = <5>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ puxelclk-active = <1>;
++ };
++
++ timing1: 800x480 {
++ clock-frequency = <33000000>;
++ hactive = <800>;
++ vactive = <480>;
++ hfront-porch = <209>;
++ hback-porch = <16>;
++ vfront-porch = <22>;
++ vback-porch = <22>;
++ hsync-len = <30>;
++ vsync-len = <1>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ puxelclk-active = <1>;
++ };
++
++ timing2: 800x600 {
++ clock-frequency = <40000000>;
++ hactive = <800>;
++ vactive = <600>;
++ hfront-porch = <44>;
++ hback-porch = <88>;
++ vfront-porch = <5>;
++ vback-porch = <19>;
++ hsync-len = <128>;
++ vsync-len = <4>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ puxelclk-active = <1>;
++ };
++
++ timing3: 1024x600 {
++ clock-frequency = <45000000>;
++ hactive = <1024>;
++ vactive = <600>;
++ hfront-porch = <16>;
++ hback-porch = <150>;
++ vfront-porch = <2>;
++ vback-porch = <21>;
++ hsync-len = <10>;
++ vsync-len = <2>;
++ hsync-active = <0>;
++ vsync-active = <0>;
++ de-active = <1>;
++ puxelclk-active = <1>;
++ };
++ };
++ };
++};
++
++&am33xx_pinmux{
++ backlight_pins_default: backlight_pins_default {
++ pinctrl-single,pins = <
++ 0x164 ( PIN_OUTPUT | MUX_MODE0 ) /* (C18) eCAP0_in_PWM0_out.eCAP0_in_PWM0_out */
++ >;
++ };
++
++ dcan0_pins_default: dcan0_pins_default {
++ pinctrl-single,pins = <
++ 0x17c ( PIN_INPUT | MUX_MODE2 ) /* (D17) uart1_rtsn.dcan0_rx */
++ 0x178 ( PIN_OUTPUT | MUX_MODE2 ) /* (D18) uart1_ctsn.dcan0_tx */
++ >;
++ };
++
++ evb_leds_pins_default: evb_leds_pins_default {
++ pinctrl-single,pins = <
++ 0x1a8 ( PIN_OUTPUT | MUX_MODE7 ) /* (D13) mcasp0_axr1.gpio3[20] */
++ 0x1ac ( PIN_OUTPUT | MUX_MODE7 ) /* (A14) mcasp0_ahclkx.gpio3[21] */
++ >;
++ };
++
++ i2c0_pins_default: i2c0_pins_default {
++ pinctrl-single,pins = <
++ 0x18c ( PIN_INPUT | MUX_MODE0 ) /* (C16) I2C0_SCL.I2C0_SCL */
++ 0x188 ( PIN_INPUT | MUX_MODE0 ) /* (C17) I2C0_SDA.I2C0_SDA */
++ >;
++ };
++
++ mdio_pins_default: mdio_pins_default {
++ pinctrl-single,pins = <
++ 0x14c ( PIN_OUTPUT | MUX_MODE0 ) /* (M18) mdio_clk.mdio_clk */
++ 0x148 ( PIN_INPUT | MUX_MODE0 ) /* (M17) mdio_data.mdio_data */
++ >;
++ };
++
++ lcd_pins_default: lcd_pins_default {
++ pinctrl-single,pins = <
++ 0xe0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U5) lcd_vsync.lcd_vsync */
++ 0xe4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R5) lcd_hsync.lcd_hsync */
++ 0xe8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V5) lcd_pclk.lcd_pclk */
++ 0xec ( PIN_OUTPUT | MUX_MODE0 ) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */
++ 0xa0 ( PIN_OUTPUT | MUX_MODE0 ) /* (R1) lcd_data0.lcd_data0 */
++ 0xa4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R2) lcd_data1.lcd_data1 */
++ 0xa8 ( PIN_OUTPUT | MUX_MODE0 ) /* (R3) lcd_data2.lcd_data2 */
++ 0xac ( PIN_OUTPUT | MUX_MODE0 ) /* (R4) lcd_data3.lcd_data3 */
++ 0xb0 ( PIN_OUTPUT | MUX_MODE0 ) /* (T1) lcd_data4.lcd_data4 */
++ 0xb4 ( PIN_OUTPUT | MUX_MODE0 ) /* (T2) lcd_data5.lcd_data5 */
++ 0xb8 ( PIN_OUTPUT | MUX_MODE0 ) /* (T3) lcd_data6.lcd_data6 */
++ 0xbc ( PIN_OUTPUT | MUX_MODE0 ) /* (T4) lcd_data7.lcd_data7 */
++ 0xc0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U1) lcd_data8.lcd_data8 */
++ 0xc4 ( PIN_OUTPUT | MUX_MODE0 ) /* (U2) lcd_data9.lcd_data9 */
++ 0xc8 ( PIN_OUTPUT | MUX_MODE0 ) /* (U3) lcd_data10.lcd_data10 */
++ 0xcc ( PIN_OUTPUT | MUX_MODE0 ) /* (U4) lcd_data11.lcd_data11 */
++ 0xd0 ( PIN_OUTPUT | MUX_MODE0 ) /* (V2) lcd_data12.lcd_data12 */
++ 0xd4 ( PIN_OUTPUT | MUX_MODE0 ) /* (V3) lcd_data13.lcd_data13 */
++ 0xd8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V4) lcd_data14.lcd_data14 */
++ 0xdc ( PIN_OUTPUT | MUX_MODE0 ) /* (T5) lcd_data15.lcd_data15 */
++ 0x3c ( PIN_OUTPUT | MUX_MODE1 ) /* (U13) gpmc_ad15.lcd_data16 */
++ 0x38 ( PIN_OUTPUT | MUX_MODE1 ) /* (V13) gpmc_ad14.lcd_data17 */
++ 0x34 ( PIN_OUTPUT | MUX_MODE1 ) /* (R12) gpmc_ad13.lcd_data18 */
++ 0x30 ( PIN_OUTPUT | MUX_MODE1 ) /* (T12) gpmc_ad12.lcd_data19 */
++ 0x2c ( PIN_OUTPUT | MUX_MODE1 ) /* (U12) gpmc_ad11.lcd_data20 */
++ 0x28 ( PIN_OUTPUT | MUX_MODE1 ) /* (T11) gpmc_ad10.lcd_data21 */
++ 0x24 ( PIN_OUTPUT | MUX_MODE1 ) /* (T10) gpmc_ad9.lcd_data22 */
++ 0x20 ( PIN_OUTPUT | MUX_MODE1 ) /* (U10) gpmc_ad8.lcd_data23 */
++ >;
++ };
++
++ phy1_pins_default: phy1_pins_default {
++ pinctrl-single,pins = <
++ 0x108 ( PIN_INPUT | MUX_MODE0 ) /* (H16) gmii1_col.gmii1_col */
++ 0x10c ( PIN_INPUT | MUX_MODE0 ) /* (H17) gmii1_crs.gmii1_crs */
++ 0x110 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (J15) gmii1_rxer.gmii1_rxer */
++ 0x114 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (J16) gmii1_txen.gmii1_txen */
++ 0x118 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (J17) gmii1_rxdv.gmii1_rxdv */
++ 0x12c ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (K18) gmii1_txclk.gmii1_txclk */
++ 0x130 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L18) gmii1_rxclk.gmii1_rxclk */
++ 0x128 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K17) gmii1_txd0.gmii1_txd0 */
++ 0x124 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K16) gmii1_txd1.gmii1_txd1 */
++ 0x120 ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (K15) gmii1_txd2.gmii1_txd2 */
++ 0x11c ( PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (J18) gmii1_txd3.gmii1_txd3 */
++ 0x140 ( PIN_INPUT | MUX_MODE0 ) /* (M16) gmii1_rxd0.gmii1_rxd0 */
++ 0x13c ( PIN_INPUT | MUX_MODE0 ) /* (L15) gmii1_rxd1.gmii1_rxd1 */
++ 0x138 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L16) gmii1_rxd2.gmii1_rxd2 */
++ 0x134 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (L17) gmii1_rxd3.gmii1_rxd3 */
++ >;
++ };
++
++ spi0_pins_default: spi0_pins_default {
++ pinctrl-single,pins = <
++ 0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
++ 0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
++ 0x158 ( PIN_OUTPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
++ 0x15c ( PIN_OUTPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
++ >;
++ };
++
++ spi1_pins_default: spi1_pins_default {
++ pinctrl-single,pins = <
++ 0x190 ( PIN_INPUT | MUX_MODE3 ) /* (A13) mcasp0_aclkx.spi1_sclk */
++ 0x194 ( PIN_INPUT | MUX_MODE3 ) /* (B13) mcasp0_fsx.spi1_d0 */
++ 0x198 ( PIN_OUTPUT | MUX_MODE3 ) /* (D12) mcasp0_axr0.spi1_d1 */
++ 0x19c ( PIN_OUTPUT | MUX_MODE3 ) /* (C12) mcasp0_ahclkr.spi1_cs0 */
++ >;
++ };
++
++ uart1_pins_default: uart1_pins_default {
++ pinctrl-single,pins = <
++ 0x180 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (D16) uart1_rxd.uart1_rxd */
++ 0x184 ( PIN_OUTPUT | MUX_MODE0 ) /* (D15) uart1_txd.uart1_txd */
++ >;
++ };
++
++ uart4_pins_default: uart4_pins_default {
++ pinctrl-single,pins = <
++ 0x168 ( PIN_INPUT_PULLUP | MUX_MODE1 ) /* (E18) uart0_ctsn.uart4_rxd */
++ 0x16c ( PIN_OUTPUT | MUX_MODE1 ) /* (E17) uart0_rtsn.uart4_txd */
++ >;
++ };
++
++ usb0_pins_default: usb0_pins_default {
++ pinctrl-single,pins = <
++ 0x21c ( PIN_OUTPUT | MUX_MODE0 ) /* (F16) USB0_DRVVBUS.USB0_DRVVBUS */
++ >;
++ };
++};
++
++&cppi41dma {
++ status = "okay";
++};
++
++&cpsw_emac0 {
++ status = "okay";
++ phy_id = <&davinci_mdio>, <0>;
++ phy-mode = "mii";
++};
++
++&davinci_mdio {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&mdio_pins_default>;
++};
++
++&dcan0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&dcan0_pins_default>;
++ status = "okay";
++};
++
++&epwmss0 {
++ status = "okay";
++ ehrpwm0: pwm@200 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&backlight_pins_default>;
++ };
++};
++
++&i2c0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c0_pins_default>;
++ status = "okay";
++};
++
++&lcdc {
++ status = "okay";
++};
++
++&mac {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&phy1_pins_default>;
++};
++
++&spi0 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi0_pins_default>;
++
++ spidev@0 {
++ spi-max-frequency = <24000000>;
++ reg = <0>;
++ compatible = "linux,spidev";
++ };
++};
++
++&spi1 {
++ status = "okay";
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi1_pins_default>;
++
++ spidev@0 {
++ spi-max-frequency = <24000000>;
++ reg = <0>;
++ compatible = "linux,spidev";
++ };
++};
++
++&tscadc {
++ status = "okay";
++ tsc {
++ ti,wires = <4>;
++ ti,x-plate-resistance = <200>;
++ ti,coordinate-readouts = <5>;
++ ti,wire-config = <0x00 0x11 0x22 0x33>;
++ freebsd,x-inverted;
++ };
++ adc {
++ ti,adc-channels = <0 1 2 3>;
++ };
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart1_pins_default>;
++ status = "okay";
++};
++
++&uart4 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart4_pins_default>;
++ status = "okay";
++};
++
++&usb {
++ status = "okay";
++};
++
++&usb_ctrl_mod {
++ status = "okay";
++};
++
++&usb0_phy {
++ status = "okay";
++};
++
++&usb0 {
++ status = "okay";
++ dr_mode = "peripheral";
++};
++
++&usb1_phy {
++ status = "okay";
++};
++
++&usb1 {
++ status = "okay";
++ dr_mode = "host";
++};
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_nand.dts b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_nand.dts
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-arch_arm_dts_am335x_olimex_som_nand.dts
@@ -0,0 +1,130 @@
+--- arch/arm/dts/am335x-olimex-som-nand.dts.orig 2023-12-30 21:45:37.104305000 +0100
++++ arch/arm/dts/am335x-olimex-som-nand.dts 2024-01-04 20:27:18.704504000 +0100
+@@ -0,0 +1,127 @@
++/*
++ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++/dts-v1/;
++
++#include "am335x-olimex.dtsi"
++#include <dt-bindings/interrupt-controller/irq.h>
++
++/ {
++ model = "OLIMEX AM335x-SOM-NAND";
++ compatible = "olimex,am335x_som_nand", "ti,am33xx";
++};
++
++&am33xx_pinmux {
++
++ nandflash_pins_default: nandflash_pins_default {
++ pinctrl-single,pins = <
++ 0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */
++ 0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */
++ 0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */
++ 0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */
++ 0x10 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */
++ 0x14 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */
++ 0x18 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */
++ 0x1c (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */
++ 0x70 (PIN_INPUT | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */
++ 0x7c (PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */
++ 0x90 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */
++ 0x94 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */
++ 0x98 (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */
++ 0x9c (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */
++ >;
++ };
++};
++
++&gpmc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&nandflash_pins_default>;
++ ranges = <0 0 0x08000000 0x20000000>;
++ status = "okay";
++
++ nand@0,0 {
++ compatible = "ti,omap2-nand";
++ reg = <0 0 4>;
++ interrupt-parent = <&gpmc>;
++ interrupts = <0 IRQ_TYPE_NONE>, <1 IRQ_TYPE_NONE>;
++ rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>;
++ nand-bus-width = <8>;
++ ti,nand-ecc-opt = "bch8";
++ ti,nand-xfer-type = "polled";
++
++ gpmc,device-nand = "true";
++ gpmc,device-width = <1>;
++ gpmc,sync-clk-ps = <0>;
++ gpmc,cs-on-ns = <0>;
++ gpmc,cs-rd-off-ns = <44>;
++ gpmc,cs-wr-off-ns = <44>;
++ gpmc,adv-on-ns = <6>;
++ gpmc,adv-rd-off-ns = <34>;
++ gpmc,adv-wr-off-ns = <44>;
++ gpmc,we-on-ns = <0>;
++ gpmc,we-off-ns = <40>;
++ gpmc,oe-on-ns = <0>;
++ gpmc,oe-off-ns = <54>;
++ gpmc,access-ns = <64>;
++ gpmc,rd-cycle-ns = <82>;
++ gpmc,wr-cycle-ns = <82>;
++ gpmc,bus-turnaround-ns = <0>;
++ gpmc,cycle2cycle-delay-ns = <0>;
++ gpmc,clk-activation-ns = <0>;
++ gpmc,wr-access-ns = <40>;
++ gpmc,wr-data-mux-bus-ns = <0>;
++
++ #address-cells = <1>;
++ #size-cells = <1>;
++ ti,elm-id = <&elm>;
++
++ partition@0 {
++ label = "NAND.SPL";
++ reg = <0x00000000 0x000020000>;
++ };
++ partition@1 {
++ label = "NAND.SPL.backup1";
++ reg = <0x00020000 0x00020000>;
++ };
++ partition@2 {
++ label = "NAND.SPL.backup2";
++ reg = <0x00040000 0x00020000>;
++ };
++ partition@3 {
++ label = "NAND.SPL.backup3";
++ reg = <0x00060000 0x00020000>;
++ };
++ partition@4 {
++ label = "NAND.u-boot-spl-os";
++ reg = <0x00080000 0x00040000>;
++ };
++ partition@5 {
++ label = "NAND.u-boot";
++ reg = <0x000C0000 0x00100000>;
++ };
++ partition@6 {
++ label = "NAND.u-boot-env";
++ reg = <0x001C0000 0x00020000>;
++ };
++ partition@7 {
++ label = "NAND.u-boot-env.backup1";
++ reg = <0x001E0000 0x00020000>;
++ };
++ partition@8 {
++ label = "NAND.kernel";
++ reg = <0x00200000 0x00800000>;
++ };
++ partition@9 {
++ label = "NAND.file-system";
++ reg = <0x00A00000 0x1F600000>;
++ };
++ };
++};
++
++&elm {
++ status = "okay";
++};
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.h b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.h
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.h
@@ -0,0 +1,11 @@
+--- board/ti/am335x/board.h.org 2023-12-26 21:26:29.714008000 +0100
++++ board/ti/am335x/board.h 2023-12-26 21:32:46.357844000 +0100
+@@ -30,7 +30,7 @@
+
+ static inline int board_is_bone_lt(void)
+ {
+- return board_ti_is("A335BNLT");
++ return 1; //board_ti_is("A335BNLT");
+ }
+
+ static inline int board_is_pb(void)
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.c b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.c
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_board.c
@@ -0,0 +1,57 @@
+--- board/ti/am335x/board.c.org 2023-12-26 06:55:56.153864000 +0100
++++ board/ti/am335x/board.c 2023-12-26 22:10:59.625922000 +0100
+@@ -283,6 +283,7 @@
+
+ static u8 bone_not_connected_to_ac_power(void)
+ {
++#if 0
+ if (board_is_bone()) {
+ uchar pmic_status_reg;
+ if (tps65217_reg_read(TPS65217_STATUS,
+@@ -293,6 +294,7 @@
+ return 1;
+ }
+ }
++#endif
+ return 0;
+ }
+
+@@ -327,7 +329,7 @@
+
+ static void scale_vcores_bone(int freq)
+ {
+- int usb_cur_lim, mpu_vdd;
++// int usb_cur_lim, mpu_vdd;
+
+ /*
+ * Only perform PMIC configurations if board rev > A1
+@@ -354,6 +356,7 @@
+ if (board_is_pb() || board_is_bone_lt())
+ freq = MPUPLL_M_1000;
+
++#if 0
+ switch (freq) {
+ case MPUPLL_M_1000:
+ mpu_vdd = TPS65217_DCDC_VOLT_SEL_1325MV;
+@@ -418,10 +421,12 @@
+ TPS65217_LDO_VOLTAGE_OUT_3_3,
+ TPS65217_LDO_MASK))
+ puts("tps65217_reg_write failure\n");
++#endif
+ }
+
+ void scale_vcores_generic(int freq)
+ {
++#if 0
+ int sil_rev, mpu_vdd;
+
+ /*
+@@ -449,6 +454,8 @@
+ /* Second, update the CORE voltage. */
+ if (tps65910_voltage_update(CORE, TPS65910_OP_REG_SEL_1_1_0))
+ return;
++#endif
++ return;
+
+ }
+
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_mux.c b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_mux.c
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-board_ti_am335x_mux.c
@@ -0,0 +1,115 @@
+--- board/ti/am335x/mux.c.orig 2023-10-02 16:39:59.000000000 +0200
++++ board/ti/am335x/mux.c 2023-12-29 15:45:03.792830000 +0100
+@@ -66,7 +66,7 @@
+ {OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */
+ {OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CMD */
+ {OFFSET(mcasp0_aclkr), (MODE(4) | RXACTIVE)}, /* MMC0_WP */
+- {OFFSET(spi0_cs1), (MODE(7) | RXACTIVE | PULLUP_EN)}, /* GPIO0_6 */
++ {OFFSET(spi0_cs1), (MODE(5) | RXACTIVE)}, /* GPIO0_6 */
+ {-1},
+ };
+
+@@ -142,11 +142,6 @@
+ {-1},
+ };
+
+-static struct module_pin_mux gpio0_7_pin_mux[] = {
+- {OFFSET(ecap0_in_pwm0_out), (MODE(7) | PULLUDEN)}, /* GPIO0_7 */
+- {-1},
+-};
+-
+ static struct module_pin_mux gpio0_18_pin_mux[] = {
+ {OFFSET(usb0_drvvbus), (MODE(7) | PULLUDEN)}, /* GPIO0_18 */
+ {-1},
+@@ -232,40 +227,6 @@
+ {OFFSET(gpmc_be0n_cle), (MODE(0) | PULLDOWN_EN)}, /* BE_CLE */
+ {-1},
+ };
+-#elif defined(CONFIG_NOR)
+-static struct module_pin_mux bone_norcape_pin_mux[] = {
+- {OFFSET(gpmc_a0), MODE(0) | PULLUDDIS}, /* NOR_A0 */
+- {OFFSET(gpmc_a1), MODE(0) | PULLUDDIS}, /* NOR_A1 */
+- {OFFSET(gpmc_a2), MODE(0) | PULLUDDIS}, /* NOR_A2 */
+- {OFFSET(gpmc_a3), MODE(0) | PULLUDDIS}, /* NOR_A3 */
+- {OFFSET(gpmc_a4), MODE(0) | PULLUDDIS}, /* NOR_A4 */
+- {OFFSET(gpmc_a5), MODE(0) | PULLUDDIS}, /* NOR_A5 */
+- {OFFSET(gpmc_a6), MODE(0) | PULLUDDIS}, /* NOR_A6 */
+- {OFFSET(gpmc_a7), MODE(0) | PULLUDDIS}, /* NOR_A7 */
+- {OFFSET(gpmc_ad0), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD0 */
+- {OFFSET(gpmc_ad1), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD1 */
+- {OFFSET(gpmc_ad2), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD2 */
+- {OFFSET(gpmc_ad3), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD3 */
+- {OFFSET(gpmc_ad4), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD4 */
+- {OFFSET(gpmc_ad5), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD5 */
+- {OFFSET(gpmc_ad6), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD6 */
+- {OFFSET(gpmc_ad7), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD7 */
+- {OFFSET(gpmc_ad8), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD8 */
+- {OFFSET(gpmc_ad9), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD9 */
+- {OFFSET(gpmc_ad10), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD10 */
+- {OFFSET(gpmc_ad11), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD11 */
+- {OFFSET(gpmc_ad12), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD12 */
+- {OFFSET(gpmc_ad13), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD13 */
+- {OFFSET(gpmc_ad14), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD14 */
+- {OFFSET(gpmc_ad15), MODE(0) | PULLUDDIS | RXACTIVE}, /* NOR_AD15 */
+- {OFFSET(gpmc_csn0), MODE(0) | PULLUDEN | PULLUP_EN}, /* CE */
+- {OFFSET(gpmc_advn_ale), MODE(0) | PULLUDEN | PULLDOWN_EN}, /* ALE */
+- {OFFSET(gpmc_oen_ren), MODE(0) | PULLUDEN | PULLDOWN_EN},/* OEn_REN */
+- {OFFSET(gpmc_be0n_cle), MODE(0) | PULLUDEN | PULLDOWN_EN},/* unused */
+- {OFFSET(gpmc_wen), MODE(0) | PULLUDEN | PULLDOWN_EN}, /* WEN */
+- {OFFSET(gpmc_wait0), MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE},/*WAIT*/
+- {-1},
+-};
+ #endif
+
+ static struct module_pin_mux uart3_icev2_pin_mux[] = {
+@@ -274,13 +235,6 @@
+ {-1},
+ };
+
+-#if defined(CONFIG_NOR_BOOT)
+-void enable_norboot_pin_mux(void)
+-{
+- configure_module_pin_mux(bone_norcape_pin_mux);
+-}
+-#endif
+-
+ void enable_uart0_pin_mux(void)
+ {
+ configure_module_pin_mux(uart0_pin_mux);
+@@ -366,6 +320,8 @@
+ configure_module_pin_mux(mmc0_pin_mux);
+ #if defined(CONFIG_MTD_RAW_NAND)
+ configure_module_pin_mux(nand_pin_mux);
++#endif
++#if 0
+ #elif defined(CONFIG_NOR)
+ configure_module_pin_mux(bone_norcape_pin_mux);
+ #else
+@@ -396,7 +352,7 @@
+ } else if (board_is_evm_sk()) {
+ /* Starter Kit EVM */
+ configure_module_pin_mux(i2c1_pin_mux);
+- configure_module_pin_mux(gpio0_7_pin_mux);
++// configure_module_pin_mux(gpio0_7_pin_mux);
+ configure_module_pin_mux(rgmii1_pin_mux);
+ configure_module_pin_mux(mmc0_pin_mux_sk_evm);
+ } else if (board_is_bone_lt()) {
+@@ -413,15 +369,9 @@
+ configure_module_pin_mux(mii1_pin_mux);
+ }
+ /* Beaglebone LT pinmux */
+- configure_module_pin_mux(mmc0_pin_mux);
+-#if defined(CONFIG_MTD_RAW_NAND) && defined(CONFIG_EMMC_BOOT)
+- configure_module_pin_mux(nand_pin_mux);
+-#elif defined(CONFIG_NOR) && defined(CONFIG_EMMC_BOOT)
+- configure_module_pin_mux(bone_norcape_pin_mux);
+-#else
+- configure_module_pin_mux(mmc1_pin_mux);
+-#endif
+- configure_module_pin_mux(i2c2_pin_mux);
++ configure_module_pin_mux(mmc0_pin_mux); /* mmc0_no_cd_pin_mux */
++ /* configure_module_pin_mux(mmc1_pin_mux); */
++ configure_module_pin_mux(i2c1_pin_mux);
+ } else if (board_is_pb()) {
+ configure_module_pin_mux(mii1_pin_mux);
+ configure_module_pin_mux(mmc0_pin_mux);
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_config__distro__bootcmd.h b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_config__distro__bootcmd.h
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_config__distro__bootcmd.h
@@ -0,0 +1,10 @@
+--- include/config_distro_bootcmd.h.orig 2023-12-30 10:43:26.582001000 +0100
++++ include/config_distro_bootcmd.h 2023-12-30 11:04:59.993140000 +0100
+@@ -163,6 +163,7 @@
+ "fi\0" \
+ \
+ "load_efi_dtb=" \
++ "echo load efi dtb ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}; " \
+ "load ${devtype} ${devnum}:${distro_bootpart} " \
+ "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \
+ \
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_configs_am335x_evm.h b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_configs_am335x_evm.h
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/files/patch-include_configs_am335x_evm.h
@@ -0,0 +1,51 @@
+--- include/configs/am335x_evm.h.orig 2023-12-30 10:04:48.973407000 +0100
++++ include/configs/am335x_evm.h 2023-12-30 10:09:17.033451000 +0100
+@@ -80,7 +80,7 @@
+
+ #define CFG_EXTRA_ENV_SETTINGS \
+ DEFAULT_LINUX_BOOT_ENV \
+- "fdtfile=undefined\0" \
++ "fdtfile=am335x-olimex-som-evb.dtb\0" \
+ "finduuid=part uuid mmc 0:2 uuid\0" \
+ "console=ttyO0,115200n8\0" \
+ "partitions=" \
+@@ -114,8 +114,6 @@
+ "run ramargs; " \
+ "bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \
+ "findfdt="\
+- "if test $board_name = A335BONE; then " \
+- "setenv fdtfile am335x-bone.dtb; fi; " \
+ "if test $board_name = A335BNLT; then " \
+ "setenv fdtfile am335x-boneblack.dtb; fi; " \
+ "if test $board_name = A335PBGL; then " \
+@@ -128,29 +126,13 @@
+ "setenv fdtfile am335x-bonegreen-wireless.dtb; fi; " \
+ "if test $board_name = BBBL; then " \
+ "setenv fdtfile am335x-boneblue.dtb; fi; " \
+- "if test $board_name = BBEN; then " \
+- "setenv fdtfile am335x-sancloud-bbe.dtb; fi; " \
+- "if test $board_name = BBELITE; then " \
+- "setenv fdtfile am335x-sancloud-bbe-lite.dtb; fi; " \
+- "if test $board_name = BBE_EX_WIFI; then " \
+- "setenv fdtfile am335x-sancloud-bbe-extended-wifi.dtb; fi; " \
+ "if test $board_name = A33515BB; then " \
+ "setenv fdtfile am335x-evm.dtb; fi; " \
+ "if test $board_name = A335X_SK; then " \
+ "setenv fdtfile am335x-evmsk.dtb; fi; " \
+- "if test $board_name = A335_ICE; then " \
+- "setenv fdtfile am335x-icev2.dtb; " \
+- "if test $ice_mii = mii; then " \
+- "setenv pxe_label_override Pruss; fi;" \
+- "fi; " \
+ "if test $fdtfile = undefined; then " \
+ "echo WARNING: Could not determine device tree to use; fi; \0" \
+- "init_console=" \
+- "if test $board_name = A335_ICE; then "\
+- "setenv console ttyO3,115200n8;" \
+- "else " \
+- "setenv console ttyO0,115200n8;" \
+- "fi;\0" \
++ "init_console=setenv console ttyO0,115200n8\0" \
+ NANDARGS \
+ NETARGS \
+ DFUARGS \
diff --git a/sysutils/u-boot-olimex-am3352-som-evb/pkg-descr b/sysutils/u-boot-olimex-am3352-som-evb/pkg-descr
new file mode 100644
--- /dev/null
+++ b/sysutils/u-boot-olimex-am3352-som-evb/pkg-descr
@@ -0,0 +1,8 @@
+U-Boot loader for olimex-am335x-som-evb.
+
+To install this bootloader, copy the files MLO and bb-uboot.img to the FAT
+partition on an SD card or the eMMC. Normally this is partition 1, but
+different partitions can be set with U-Boot environment variables.
+
+For information about running FreeBSD on TI AM335x (BeagleBone Black etc), see
+https://wiki.freebsd.org/FreeBSD/arm/BeagleBone
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jul 19, 6:37 AM (22 m, 43 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35224315
Default Alt Text
D43319.diff (44 KB)
Attached To
Mode
D43319: sysutils/u-boot-olimex-am3352-som-evb
Attached
Detach File
Event Timeline
Log In to Comment