From e1dea8a98d36c1d58157b491f5eb3f6dfa5e3e6f Mon Sep 17 00:00:00 2001 From: eng33 Date: Wed, 27 Sep 2023 18:14:22 +0800 Subject: [PATCH] feat: add luckfox pico pro/max support --- media/luckfox/examples/Makefile | 2 +- media/luckfox/examples/luckfox_gpio_test.c | 43 ++- media/luckfox/examples/luckfox_pwm_test.c | 47 ++- media/luckfox/include/luckfox_gpio.h | 40 +++ .../rkipc/rkipc/src/rv1106_ipc/rkipc-300w.ini | 3 +- .../rkipc/rkipc/src/rv1106_ipc/rkipc-400w.ini | 2 +- .../rkipc/rkipc/src/rv1106_ipc/rkipc-500w.ini | 2 +- ...I_NAND-NONE-RV1106_Luckfox_Pico_Max-IPC.mk | 84 ++++++ .../boot/dts/rv1106-luckfox-pico-max-ipc.dtsi | 278 ++++++++++++++++++ .../arm/boot/dts/rv1106g-luckfox-pico-max.dts | 207 +++++++++++++ 10 files changed, 695 insertions(+), 13 deletions(-) create mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-NONE-RV1106_Luckfox_Pico_Max-IPC.mk create mode 100755 sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-max-ipc.dtsi create mode 100755 sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-max.dts diff --git a/media/luckfox/examples/Makefile b/media/luckfox/examples/Makefile index 0d8314056..a66a6dfc9 100755 --- a/media/luckfox/examples/Makefile +++ b/media/luckfox/examples/Makefile @@ -14,7 +14,7 @@ TARGET5 = luckfox_uart_test TARGET6 = luckfox_spi_test -all: $(TARGET1) $(TARGET2) $(TARGET3) $(TARGET4) $(TARGET5) $(TARGET6) +all: $(TARGET1) $(TARGET2) $(TARGET3) $(TARGET4) $(TARGET5) $(TARGET6) $(TARGET1): $(TARGET1).o $(OBJ) @$(CC) $(CFLAGS) $(TARGET1).o $(OBJ) -o $@ diff --git a/media/luckfox/examples/luckfox_gpio_test.c b/media/luckfox/examples/luckfox_gpio_test.c index 57e809ab2..e1f16981c 100755 --- a/media/luckfox/examples/luckfox_gpio_test.c +++ b/media/luckfox/examples/luckfox_gpio_test.c @@ -38,6 +38,37 @@ int GPIO_BEGIN_PIN, GPIO_END_PIN; int *TEST_PIN; +int PICO_MAX_GPIOS[] = { + LUCKFOX_PICO_MAX_GPIO0, + LUCKFOX_PICO_MAX_GPIO1, + LUCKFOX_PICO_MAX_GPIO2, + LUCKFOX_PICO_MAX_GPIO3, + LUCKFOX_PICO_MAX_GPIO4, + LUCKFOX_PICO_MAX_GPIO5, + LUCKFOX_PICO_MAX_GPIO6, + LUCKFOX_PICO_MAX_GPIO7, + LUCKFOX_PICO_MAX_GPIO8, + LUCKFOX_PICO_MAX_GPIO9, + LUCKFOX_PICO_MAX_GPIO10, + LUCKFOX_PICO_MAX_GPIO11, + LUCKFOX_PICO_MAX_GPIO12, + LUCKFOX_PICO_MAX_GPIO13, + LUCKFOX_PICO_MAX_GPIO14, + LUCKFOX_PICO_MAX_GPIO15, + LUCKFOX_PICO_MAX_GPIO16, + LUCKFOX_PICO_MAX_GPIO17, + LUCKFOX_PICO_MAX_GPIO18, + LUCKFOX_PICO_MAX_GPIO19, + LUCKFOX_PICO_MAX_GPIO20, + LUCKFOX_PICO_MAX_GPIO21, + LUCKFOX_PICO_MAX_GPIO22, + /*23-25*/ + LUCKFOX_PICO_MAX_GPIO26, + LUCKFOX_PICO_MAX_GPIO27, + LUCKFOX_PICO_MAX_GPIO28, + +}; + int PICO_PLUS_GPIOS[] = { LUCKFOX_PICO_PLUS_GPIO0, LUCKFOX_PICO_PLUS_GPIO1, @@ -62,6 +93,7 @@ int PICO_PLUS_GPIOS[] = { LUCKFOX_PICO_PLUS_GPIO20, LUCKFOX_PICO_PLUS_GPIO21, LUCKFOX_PICO_PLUS_GPIO22, + /*23-25*/ LUCKFOX_PICO_PLUS_GPIO26, LUCKFOX_PICO_PLUS_GPIO27, }; @@ -125,12 +157,13 @@ int main(int argc, char *argv[]) printf("Please select your test borad\r\n"); printf("* 1. LUCKFOX PICO\r\n"); printf("* 2. LUCKFOX PICO PLUS\r\n"); + printf("* 3. LUCKFOX PICO MAX\r\n"); printf("-----------------------------\r\n"); while (1) { printf("Which would you like? :"); input_char = getchar(); - if (input_char >= '1' && input_char <= '2') + if (input_char >= '1' && input_char <= '3') { break; } @@ -148,6 +181,12 @@ int main(int argc, char *argv[]) GPIO_END_PIN = 22; TEST_PIN = PICO_PLUS_GPIOS; } + else if (input_char == '3') + { + GPIO_BEGIN_PIN = 16; + GPIO_END_PIN = 22; + TEST_PIN = PICO_MAX_GPIOS; + } else { exit(0); @@ -155,7 +194,7 @@ int main(int argc, char *argv[]) printf("-----------------------------\r\n"); printf("Please select your test borad\r\n"); printf("* 1. Default part(GP%d-GP%d)\r\n", GPIO_BEGIN_PIN, GPIO_END_PIN); - printf("* 2. ALL(Except GP0 GP1)\r\n"); + printf("* 2. ALL(GP2-GP%d)\r\n", GPIO_END_PIN); printf("-----------------------------\r\n"); while (1) { diff --git a/media/luckfox/examples/luckfox_pwm_test.c b/media/luckfox/examples/luckfox_pwm_test.c index 2ff4a3751..db500270b 100755 --- a/media/luckfox/examples/luckfox_pwm_test.c +++ b/media/luckfox/examples/luckfox_pwm_test.c @@ -34,7 +34,9 @@ #include //signal() #include "luckfox_pwm.h" -int PWMS[] = {0, 1, 10, 11}; +int PICO_PWMS[] = {0, 1, 10, 11}; +int PICO_MAX_PWMS[] = {5, 6, 10, 11}; +int *TEST_PWM; void Delay_ms(uint32_t xms) { @@ -51,9 +53,9 @@ void Handler(int signo) printf("\r\nHandler:exit\r\n"); for (int x = 0; x < 4; x++) { - luckfox_pwm_set_duty(PWMS[x], 0); - luckfox_pwm_deinit(PWMS[x]); - printf("PWM%dM0 deinit\r\n", PWMS[x]); + luckfox_pwm_set_duty(TEST_PWM[x], 0); + luckfox_pwm_deinit(TEST_PWM[x]); + printf("PWM%dM0 deinit\r\n", TEST_PWM[x]); } exit(0); @@ -61,12 +63,43 @@ void Handler(int signo) int main(int argc, char *argv[]) { + char input_char = '0'; signal(SIGINT, Handler); + printf("-----------------------------\r\n"); + printf("----------PWM TEST----------\r\n"); + printf("-----------------------------\r\n"); + printf("Please select your test borad\r\n"); + printf("* 1. LUCKFOX PICO & LUCKFOX PICO PLUS\r\n"); + printf("* 2. LUCKFOX PICO MAX\r\n"); + printf("-----------------------------\r\n"); + while (1) + { + printf("Which would you like? :"); + input_char = getchar(); + if (input_char >= '1' && input_char <= '2') + { + break; + } + } + + if (input_char == '1') + { + TEST_PWM = PICO_PWMS; + } + else if (input_char == '2') + { + TEST_PWM = PICO_MAX_PWMS; + } + else + { + exit(0); + } + for (int x = 0; x < 4; x++) { - luckfox_pwm_init(PWMS[x], 100000, 15000 * (x + 1), PWM_POLARITY_NORMAL); - luckfox_pwm_set_enable(PWMS[x], true); - printf("PWM%dM0 period=%d duty=%d\r\n", PWMS[x], luckfox_pwm_get_period(PWMS[x]), luckfox_pwm_get_duty(PWMS[x])); + luckfox_pwm_init(TEST_PWM[x], 100000, 15000 * (x + 1), PWM_POLARITY_NORMAL); + luckfox_pwm_set_enable(TEST_PWM[x], true); + printf("PWM%dM0 period=%d duty=%d\r\n", TEST_PWM[x], luckfox_pwm_get_period(TEST_PWM[x]), luckfox_pwm_get_duty(TEST_PWM[x])); } while (1) { diff --git a/media/luckfox/include/luckfox_gpio.h b/media/luckfox/include/luckfox_gpio.h index fac664910..deb43f60c 100755 --- a/media/luckfox/include/luckfox_gpio.h +++ b/media/luckfox/include/luckfox_gpio.h @@ -76,6 +76,46 @@ #define GPIO(bank, pin) ((((bank) * 32) + (pin))) +/**********************************************/ +#define LUCKFOX_PICO_MAX_GPIO0 GPIO(GPIO1,PB2) +#define LUCKFOX_PICO_MAX_GPIO1 GPIO(GPIO1,PB3) + +#define LUCKFOX_PICO_MAX_GPIO2 GPIO(GPIO1,PC7) +#define LUCKFOX_PICO_MAX_GPIO3 GPIO(GPIO1,PC6) +#define LUCKFOX_PICO_MAX_GPIO4 GPIO(GPIO1,PC5) +#define LUCKFOX_PICO_MAX_GPIO5 GPIO(GPIO1,PC4) + +#define LUCKFOX_PICO_MAX_GPIO6 GPIO(GPIO1,PD2) +#define LUCKFOX_PICO_MAX_GPIO7 GPIO(GPIO1,PD3) +#define LUCKFOX_PICO_MAX_GPIO8 GPIO(GPIO2,PB1) +#define LUCKFOX_PICO_MAX_GPIO9 GPIO(GPIO1,PC0) + +#define LUCKFOX_PICO_MAX_GPIO10 GPIO(GPIO1,PC1) +#define LUCKFOX_PICO_MAX_GPIO11 GPIO(GPIO1,PC2) +#define LUCKFOX_PICO_MAX_GPIO12 GPIO(GPIO1,PC3) +#define LUCKFOX_PICO_MAX_GPIO13 GPIO(GPIO2,PB0) + +#define LUCKFOX_PICO_MAX_GPIO14 GPIO(GPIO1,PD0) +#define LUCKFOX_PICO_MAX_GPIO15 GPIO(GPIO1,PD1) + +/**********************************************/ +#define LUCKFOX_PICO_MAX_GPIO28 GPIO(GPIO2,PA7) + +#define LUCKFOX_PICO_MAX_GPIO27 GPIO(GPIO4,PC1) +#define LUCKFOX_PICO_MAX_GPIO26 GPIO(GPIO4,PC0) + +#define LUCKFOX_PICO_MAX_GPIO22 GPIO(GPIO2,PA6) + +#define LUCKFOX_PICO_MAX_GPIO21 GPIO(GPIO2,PA3) +#define LUCKFOX_PICO_MAX_GPIO20 GPIO(GPIO2,PA2) +#define LUCKFOX_PICO_MAX_GPIO19 GPIO(GPIO2,PA1) +#define LUCKFOX_PICO_MAX_GPIO18 GPIO(GPIO2,PA0) + +#define LUCKFOX_PICO_MAX_GPIO17 GPIO(GPIO2,PA5) +#define LUCKFOX_PICO_MAX_GPIO16 GPIO(GPIO2,PA4) + + + /**********************************************/ #define LUCKFOX_PICO_PLUS_GPIO0 GPIO(GPIO1,PB2) #define LUCKFOX_PICO_PLUS_GPIO1 GPIO(GPIO1,PB3) diff --git a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-300w.ini b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-300w.ini index e4c6af796..7b8a583e0 100644 --- a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-300w.ini +++ b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-300w.ini @@ -26,8 +26,9 @@ enable_venc_1 = 1 enable_venc_2 = 0 enable_npu = 1 npu_fps = 10 +buffer_line = 1296 enable_rtsp = 1 -enable_rtmp = 1 +enable_rtmp = 0 rotation = 0 ; available value:0 90 180 270 [video.0] diff --git a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-400w.ini b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-400w.ini index 72ecceea4..f6a2ce3d4 100644 --- a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-400w.ini +++ b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-400w.ini @@ -27,7 +27,7 @@ enable_venc_2 = 0 enable_npu = 1 npu_fps = 10 enable_rtsp = 1 -enable_rtmp = 1 +enable_rtmp = 0 rotation = 0 ; available value:0 90 180 270 [video.0] diff --git a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-500w.ini b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-500w.ini index 224da52fa..1111923aa 100644 --- a/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-500w.ini +++ b/project/app/rkipc/rkipc/src/rv1106_ipc/rkipc-500w.ini @@ -27,7 +27,7 @@ enable_venc_2 = 0 enable_npu = 1 npu_fps = 10 enable_rtsp = 1 -enable_rtmp = 1 +enable_rtmp = 0 rotation = 0 ; available value:0 90 180 270 [video.0] diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-NONE-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-NONE-RV1106_Luckfox_Pico_Max-IPC.mk new file mode 100755 index 000000000..489df22b7 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-NONE-RV1106_Luckfox_Pico_Max-IPC.mk @@ -0,0 +1,84 @@ +#!/bin/bash + +# Target arch +export RK_ARCH=arm + +# Target CHIP +export RK_CHIP=rv1106 + +# Target Toolchain Cross Compile +export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf + +# Target boot medium: emmc/spi_nor/spi_nand +export RK_BOOT_MEDIUM=spi_nand + +# Uboot defconfig +export RK_UBOOT_DEFCONFIG=rv1106_defconfig + +# Uboot defconfig fragment +export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-sfc.config + +# Kernel defconfig +export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig + +# Kernel dts +export RK_KERNEL_DTS=rv1106g-luckfox-pico-max.dts + +#misc image +export RK_MISC=wipe_all-misc.img + +# Config sensor IQ files +# RK_CAMERA_SENSOR_IQFILES format: +# "iqfile1 iqfile2 iqfile3 ..." +# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES +export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" +#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" + +# Config sensor lens CAC calibrattion bin files +export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" +#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" + +# Config CMA size in environment +# export RK_BOOTARGS_CMA_SIZE="24M" +export RK_BOOTARGS_CMA_SIZE="66M" + +# config partition in environment +# RK_PARTITION_CMD_IN_ENV format: +# [,] +# := [@](part-name) +# Note: +# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. +export RK_PARTITION_CMD_IN_ENV="256K(env),256K@256K(idblock),512K(uboot),4M(boot),32M(rootfs),48M(oem),160M(userdata)" +#export RK_PARTITION_CMD_IN_ENV="256K(env),256K@256K(idblock),256K(uboot),8M(boot),32M(rootfs),48M(oem),32M(userdata),-(media)" + +# config partition's filesystem type (squashfs is readonly) +# emmc: squashfs/ext4 +# nand: squashfs/ubifs +# spi nor: squashfs/jffs2 +# RK_PARTITION_FS_TYPE_CFG format: +# AAAA:/BBBB/CCCC@ext4 +# AAAA ----------> partition name +# /BBBB/CCCC ----> partition mount point +# ext4 ----------> partition filesystem type +#export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@squashfs,oem@/oem@squashfs,userdata@/userdata@ubifs +export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/userdata@ubifs + +# config filesystem compress (Just for squashfs or ubifs) +# squashfs: lz4/lzo/lzma/xz/gzip, default xz +# ubifs: lzo/zlib, default lzo +# export RK_SQUASHFS_COMP=xz +# export RK_UBIFS_COMP=lzo + +# app config +# export RK_APP_TYPE=RKIPC_RV1103 +export RK_APP_TYPE=RKIPC_RV1106 + +# build ipc web backend +# export RK_APP_IPCWEB_BACKEND=y + +# enable install app to oem partition +export RK_BUILD_APP_TO_OEM_PARTITION=y + +# enable rockchip test +export RK_ENABLE_ROCKCHIP_TEST=y + diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-max-ipc.dtsi b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-max-ipc.dtsi new file mode 100755 index 000000000..583c684c2 --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-max-ipc.dtsi @@ -0,0 +1,278 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Rockchip Electronics Co., Ltd. + */ +#include "rv1106-amp.dtsi" + +/ { + chosen { + bootargs = "earlycon=uart8250,mmio32,0xff4c0000 console=ttyFIQ0 rootwait snd_soc_core.prealloc_buffer_size_kbytes=16 coherent_pool=0"; + }; + + acodec_sound: acodec-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "rv-acodec"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,cpu { + sound-dai = <&i2s0_8ch>; + }; + simple-audio-card,codec { + sound-dai = <&acodec>; + }; + }; + + vcc_1v8: vcc-1v8 { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + vcc_3v3: vcc-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_3v3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + vdd_arm: vdd-arm { + compatible = "regulator-fixed"; + regulator-name = "vdd_arm"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + regulator-always-on; + + regulator-boot-on; + }; + leds: leds { + compatible = "gpio-leds"; + work_led: work{ + gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "activity"; + default-state = "on"; + }; + }; +}; + +&acodec { + #sound-dai-cells = <0>; + pa-ctl-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>; + status = "okay"; +}; + +&cpu0 { + cpu-supply = <&vdd_arm>; +}; + +&csi2_dphy_hw { + status = "okay"; +}; + +&csi2_dphy0 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + csi_dphy_input0: endpoint@0 { + reg = <0>; + remote-endpoint = <&sc3336_out>; + data-lanes = <1 2>; + }; + + csi_dphy_input1: endpoint@1 { + reg = <1>; + remote-endpoint = <&sc4336_out>; + data-lanes = <1 2>; + }; + + csi_dphy_input2: endpoint@2 { + reg = <2>; + remote-endpoint = <&sc530ai_out>; + data-lanes = <1 2>; + }; + }; + + port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + csi_dphy_output: endpoint@0 { + reg = <0>; + remote-endpoint = <&mipi_csi2_input>; + }; + }; + }; +}; + +&i2c4 { + status = "okay"; + clock-frequency = <400000>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c4m2_xfer>; + + sc3336: sc3336@30 { + compatible = "smartsens,sc3336"; + status = "okay"; + reg = <0x30>; + clocks = <&cru MCLK_REF_MIPI0>; + clock-names = "xvclk"; + pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&mipi_refclk_out0>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + rockchip,camera-module-name = "CMK-OT2119-PC1"; + rockchip,camera-module-lens-name = "30IRC-F16"; + port { + sc3336_out: endpoint { + remote-endpoint = <&csi_dphy_input0>; + data-lanes = <1 2>; + }; + }; + }; + + sc4336: sc4336@30 { + compatible = "smartsens,sc4336"; + status = "okay"; + reg = <0x30>; + clocks = <&cru MCLK_REF_MIPI0>; + clock-names = "xvclk"; + pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&mipi_refclk_out0>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + rockchip,camera-module-name = "OT01"; + rockchip,camera-module-lens-name = "40IRC_F16"; + port { + sc4336_out: endpoint { + remote-endpoint = <&csi_dphy_input1>; + data-lanes = <1 2>; + }; + }; + }; + + sc530ai: sc530ai@30 { + compatible = "smartsens,sc530ai"; + status = "okay"; + reg = <0x30>; + clocks = <&cru MCLK_REF_MIPI0>; + clock-names = "xvclk"; + pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&mipi_refclk_out0>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + rockchip,camera-module-name = "CMK-OT2115-PC1"; + rockchip,camera-module-lens-name = "30IRC-F16"; + port { + sc530ai_out: endpoint { + remote-endpoint = <&csi_dphy_input2>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&i2s0_8ch { + #sound-dai-cells = <0>; + status = "okay"; +}; + +&mipi0_csi2 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + mipi_csi2_input: endpoint@1 { + reg = <1>; + remote-endpoint = <&csi_dphy_output>; + }; + }; + + port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + mipi_csi2_output: endpoint@0 { + reg = <0>; + remote-endpoint = <&cif_mipi_in>; + }; + }; + }; +}; + +&rkcif { + status = "okay"; +}; + +&rkcif_mipi_lvds { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&mipi_pins>; + port { + /* MIPI CSI-2 endpoint */ + cif_mipi_in: endpoint { + remote-endpoint = <&mipi_csi2_output>; + }; + }; +}; + +&rkcif_mipi_lvds_sditf { + status = "okay"; + + port { + /* MIPI CSI-2 endpoint */ + mipi_lvds_sditf: endpoint { + remote-endpoint = <&isp_in>; + }; + }; +}; + +&rkisp { + status = "okay"; +}; + +&rkisp_vir0 { + status = "okay"; + + port@0 { + isp_in: endpoint { + remote-endpoint = <&mipi_lvds_sditf>; + }; + }; +}; + +&saradc { + status = "okay"; + vref-supply = <&vcc_1v8>; +}; + + +&tsadc { + status = "okay"; +}; + + diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-max.dts b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-max.dts new file mode 100755 index 000000000..bf2a58586 --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-max.dts @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Rockchip Electronics Co., Ltd. + */ + +/dts-v1/; + +#include "rv1106.dtsi" +#include "rv1106-evb.dtsi" +#include "rv1106-luckfox-pico-max-ipc.dtsi" + +/ { + model = "Luckfox Pico Max"; + compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106"; +}; + + + +/**********FLASH**********/ +&sfc { + status = "okay"; + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <75000000>; + spi-rx-bus-width = <4>; + spi-tx-bus-width = <1>; + }; + +}; + +/**********SDMMC**********/ +&sdmmc { + max-frequency = <50000000>; + no-sdio; + no-mmc; + bus-width = <4>; + cap-mmc-highspeed; + cap-sd-highspeed; + disable-wp; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4>; + status = "okay"; +}; + +/**********SDIO**********/ +// &sdio { +// max-frequency = <50000000>; +// no-sdio; +// no-mmc; +// bus-width = <4>; +// cap-mmc-highspeed; +// cap-sd-highspeed; +// disable-wp; +// pinctrl-names = "default"; +// pinctrl-0 = <&sdmmc1m0_cmd &sdmmc1m0_clk &sdmmc1m0_bus4 &clk_32k>; +// status = "okay"; +// }; + +/**********ETH**********/ +&gmac { + status = "okay"; +}; + +/**********USB**********/ +&usbdrd_dwc3 { + status = "okay"; + dr_mode = "peripheral"; +}; + +/**********I2C**********/ +// &i2c1 { +// status = "okay"; +// pinctrl-0 = <&i2c1m1_xfer>; +// clock-frequency = <100000>; +// }; +&i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3m1_xfer>; + clock-frequency = <100000>; +}; + +// /**********SPI**********/ +&spi0 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&spi0m0_pins>; + cs-gpios = <&gpio1 RK_PC0 1>; + // cs-gpios = <&gpio1 26 1>; + #address-cells = <1>; + #size-cells = <0>; + spidev@0 { + compatible = "rockchip,spidev"; + spi-max-frequency = <50000000>; + reg = <0>; + }; +}; + + + +/**********UART**********/ + +// &uart0 { +// status = "okay"; +// pinctrl-names = "default"; +// pinctrl-0 = <&uart0m1_xfer>; +// }; + +// &uart1 { +// status = "okay"; +// pinctrl-names = "default"; +// pinctrl-0 = <&uart1m1_xfer>; +// }; + +&uart3 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart3m1_xfer>; +}; +&uart4 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart4m1_xfer>; +}; + + +// /**********PWM**********/ + +// &pwm0 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm0m0_pins>; +// // pinctrl-0 = <&pwm0m1_pins>; +// }; +// &pwm1 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm1m0_pins>; +// // pinctrl-0 = <&pwm1m1_pins>; +// }; + +//&pwm2 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm2m2_pins>; +//}; +//&pwm3 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm3m2_pins>; +//}; +//&pwm4 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm4m2_pins>; +//}; +&pwm5 { + status = "okay"; + pinctrl-names = "active"; + pinctrl-0 = <&pwm5m1_pins>; + // pinctrl-0 = <&pwm5m2_pins>; +}; +&pwm6 { + status = "okay"; + pinctrl-names = "active"; + pinctrl-0 = <&pwm6m1_pins>; + // pinctrl-0 = <&pwm6m2_pins>; +}; +//&pwm7 { +// status = "okay"; +// pinctrl-names = "active"; +// pinctrl-0 = <&pwm7m2_pins>; +//}; +//&pwm8 { +// status = "okay"; +// pinctrl-names = "active"; +// // pinctrl-0 = <&pwm8m1_pins>; +// pinctrl-0 = <&pwm8m0_pins>; +//}; +//&pwm9 { +// status = "okay"; +// pinctrl-names = "active"; +// // pinctrl-0 = <&pwm9m1_pins>; +// pinctrl-0 = <&pwm9m0_pins>; +//}; + +&pwm10 { + status = "okay"; + pinctrl-names = "active"; + pinctrl-0 = <&pwm10m1_pins>; + // pinctrl-0 = <&pwm10m2_pins>; + // pinctrl-0 = <&pwm10m0_pins>; +}; +&pwm11 { + status = "okay"; + pinctrl-names = "active"; + pinctrl-0 = <&pwm11m1_pins>; + // pinctrl-0 = <&pwm11m2_pins>; + // pinctrl-0 = <&pwm11m0_pins>; +}; + + +&rtc { + status = "okay"; +}; + +