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 ++ ++/ { ++ 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