diff --git a/config/boards/forlinx-ok3506-s12.csc b/config/boards/forlinx-ok3506-s12.csc new file mode 100644 index 0000000000..65ec8577e6 --- /dev/null +++ b/config/boards/forlinx-ok3506-s12.csc @@ -0,0 +1,12 @@ +# Rockchip RK3506B/J triple core 512MB SoC 1x100MBe NAND SD USB2 +BOARD_NAME="ForLinx OK3506-S12" +BOARD_VENDOR="forlinx" +BOARDFAMILY="rockchip" +BOOTCONFIG="forlinx-ok3506-s12-rk3506j_defconfig" +BOARD_MAINTAINER="vidplace7" +KERNEL_TARGET="vendor" +BOOT_FDT_FILE="rk3506j-forlinx-OK3506-S12_nand-microsd.dtb" +IMAGE_PARTITION_TABLE="gpt" +SERIALCON="ttyFIQ0" +BOOT_SOC="rk3506" +DDR_BLOB="rk35/rk3506b_ddr_750MHz_v1.06.bin" diff --git a/patch/u-boot/u-boot-rk3506/0000.patching_config.yaml b/patch/u-boot/u-boot-rk3506/0000.patching_config.yaml new file mode 100644 index 0000000000..719cf56a8c --- /dev/null +++ b/patch/u-boot/u-boot-rk3506/0000.patching_config.yaml @@ -0,0 +1,5 @@ +config: + + overlay-directories: + - { source: "defconfig", target: "configs" } # copies all files in defconfig dir to the configs/ dir in the u-boot source tree + - { source: "dt", target: "arch/arm/dts" } # copies all files in dt dir to the arch/arm/dts dir in the u-boot source tree diff --git a/patch/u-boot/u-boot-rk3506/defconfig/forlinx-ok3506-s12-rk3506j_defconfig b/patch/u-boot/u-boot-rk3506/defconfig/forlinx-ok3506-s12-rk3506j_defconfig new file mode 100644 index 0000000000..6a8d2bcc89 --- /dev/null +++ b/patch/u-boot/u-boot-rk3506/defconfig/forlinx-ok3506-s12-rk3506j_defconfig @@ -0,0 +1,59 @@ +CONFIG_ARM=y +CONFIG_SKIP_LOWLEVEL_INIT=y +CONFIG_COUNTER_FREQUENCY=24000000 +CONFIG_ARCH_ROCKCHIP=y +CONFIG_DEFAULT_DEVICE_TREE="rk3506j-forlinx-ok3506-s12" +CONFIG_ROCKCHIP_RK3506=y +CONFIG_SYS_BOOTM_LEN=0x4000000 +CONFIG_SYS_LOAD_ADDR=0xc00800 +CONFIG_DEBUG_UART_BASE=0xFF0A0000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_DEBUG_UART=y +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3506j-forlinx-ok3506-s12.dtb" +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_SPL_MAX_SIZE=0x40000 +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_MEMINFO_MAP=y +CONFIG_CMD_ADC=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_MISC=y +CONFIG_CMD_MMC=y +CONFIG_CMD_MTD=y +CONFIG_CMD_USB=y +CONFIG_CMD_ROCKUSB=y +CONFIG_CMD_USB_MASS_STORAGE=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_RNG=y +CONFIG_CMD_REGULATOR=y +CONFIG_CMD_BTRFS=y +# CONFIG_SPL_DOS_PARTITION is not set +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_BUTTON=y +CONFIG_BUTTON_ADC=y +# CONFIG_USB_FUNCTION_FASTBOOT is not set +CONFIG_ROCKCHIP_GPIO=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_DM_MTD=y +CONFIG_MTD_SPI_NAND=y +CONFIG_PHY_MOTORCOMM=y +CONFIG_DM_MDIO=y +CONFIG_DWC_ETH_QOS=y +CONFIG_DWC_ETH_QOS_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_BAUDRATE=1500000 +CONFIG_DEBUG_UART_SHIFT=2 +CONFIG_SYS_NS16550_MEM32=y +CONFIG_ROCKCHIP_SFC=y +CONFIG_USB=y +CONFIG_DM_USB_GADGET=y +CONFIG_USB_DWC2=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_FUNCTION_ROCKUSB=y +CONFIG_ERRNO_STR=y diff --git a/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12-u-boot.dtsi b/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12-u-boot.dtsi new file mode 100644 index 0000000000..207ea521f1 --- /dev/null +++ b/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12-u-boot.dtsi @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +#include "rk3506-u-boot.dtsi" + +&fspi { + flash@0 { + bootph-pre-ram; + bootph-some-ram; + }; +}; + +&sdmmc_det_l { + bootph-pre-ram; + bootph-some-ram; +}; diff --git a/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12.dts b/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12.dts new file mode 100644 index 0000000000..9e7b24e8a6 --- /dev/null +++ b/patch/u-boot/u-boot-rk3506/dt/rk3506j-forlinx-ok3506-s12.dts @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +/dts-v1/; + +#include +#include +#include "rk3506.dtsi" + +/ { + model = "Forlinx OK3506-S Board"; + compatible = "forlinx,ok3506", "rockchip,rk3506"; + + aliases { + ethernet0 = <&gmac0>; + ethernet1 = <&gmac1>; + mmc0 = &sdmmc; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:1500000n8"; + }; + + adc-keys { + compatible = "adc-keys"; + io-channels = <&saradc 1>; + io-channel-names = "buttons"; + keyup-threshold-microvolt = <1800000>; + poll-interval = <100>; + + vol-up-key { + label = "volume up"; + linux,code = ; + press-threshold-microvolt = <15000>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + color = ; + default-state = "on"; + function = LED_FUNCTION_HEARTBEAT; + gpios = <&gpio0 RK_PD0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + pinctrl-names = "default"; + pinctrl-0 = <&run_led>; + }; + }; + + vdd_0v9: regulator-0v9 { + compatible = "regulator-fixed"; + regulator-name = "vdd_0v9"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + vin-supply = <&vcc5v0_sys>; + }; + + vcc_1v8: regulator-1v8 { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc_3v3>; + }; + + vcc_3v3: regulator-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_3v3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc5v0_sys>; + }; + + vcc5v0_sys: regulator-5v0-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc5v0_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; + + vcc5v0_usb20_otg1: regulator-5v0-usb20-otg1 { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&usb20_otg1_drv_h>; + regulator-name = "vcc5v0_usb20_otg1"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; + + vcc_ddr: regulator-vcc-ddr { + compatible = "regulator-fixed"; + regulator-name = "vcc_ddr"; + regulator-always-on; + regulator-boot-on; + vin-supply = <&vcc5v0_sys>; + }; +}; + +&fspi { + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <80000000>; + spi-rx-bus-width = <4>; + spi-tx-bus-width = <1>; + vcc-supply = <&vcc_3v3>; + }; +}; + +&gmac0 { + assigned-clocks = <&cru CLK_MAC0>; + assigned-clock-rates = <50000000>; + clock_in_out = "output"; + phy-handle = <&rmii_phy0>; + phy-supply = <&vcc_3v3>; + pinctrl-names = "default"; + pinctrl-0 = <ð_rmii0_miim>, <ð_rmii0_tx_bus2>, + <ð_rmii0_rx_bus2>, <ð_rmii0_clk>; + status = "okay"; +}; + +&gmac1 { + status = "disabled"; +}; + +&mdio0 { + rmii_phy0: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + pinctrl-names = "default"; + pinctrl-0 = <&rmii0_rstn>; + reset-assert-us = <20000>; + reset-deassert-us = <100000>; + reset-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>; + }; +}; + +&mdio1 { + status = "disabled"; +}; + +&pinctrl { + ethernet { + /omit-if-no-ref/ + rmii0_rstn: rmii0-rstn { + rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + leds { + /omit-if-no-ref/ + run_led: run-led { + rockchip,pins = <0 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + sdmmc { + /omit-if-no-ref/ + sdmmc_det_l: sdmmc-det-l { + rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + usb { + /omit-if-no-ref/ + usb20_otg1_drv_h: usb20-otg1-drv-h { + rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&saradc { + vref-supply = <&vcc_1v8>; + status = "okay"; +}; + +&sdmmc { + cap-mmc-highspeed; + cap-sd-highspeed; + cd-gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>; + disable-wp; + no-sdio; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc_bus4>, <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_det_l>; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&vcc_3v3>; + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&usb20_otg0 { + status = "okay"; +}; + +&usb20_otg1 { + dr_mode = "host"; + status = "okay"; +}; + +&usb2phy { + status = "okay"; +}; + +&usb2phy_otg0 { + status = "okay"; +}; + +&usb2phy_otg1 { + phy-supply = <&vcc5v0_usb20_otg1>; + status = "okay"; +};