15.6寸 GT9110H电容触摸 RK3566 android 调试记录
需求
在RK3566泰山派原本的android11 SDK基础下,调试出15.6寸LVDS屏 + 15.6寸GT9110H电容触摸。
关于 15.6寸LVDS屏 之前已经调过就不写怎么驱动了。本文主要讲 触摸调试。
硬件


驱动
驱动用是的 SDK 中默认自带的驱动,供应商提供的驱动没有用到,以及 cfg 文件也没有用到。
设备树
触摸I2C的设备树:
&i2c5 {
status = "okay";
pinctrl-0 = <&i2c5m0_xfer>;
clock-frequency = <400000>;
gt911: gt911@14 {
compatible = "goodix,gt9xx";
reg = <0x14>;
status = "okay";
tp-size = <9110>;
max-x = <1920>;
max-y = <1080>;
pinctrl-0 = <&touch_gpio>;
touch-gpio = <&gpio3 RK_PC1 IRQ_TYPE_EDGE_RISING>;
pinctrl-names = "default";
pinctrl-1 = <&reset_gpio>;
reset-gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
};
};
&pinctrl {
...(省略)
gt911{
touch_gpio: touch-gpio {
rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
};
reset_gpio: reset-gpio {
rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
测试方法
进入系统的开发者选项。在设置找到 关于平板电脑 -> 版本号。连续点击版本号几次直到提示进入 开发者模式 为止。
进入开发者模式后,退回设置主页,找到 系统 -> 高级 -> 开发者选项 -> 指针位置 。将指针位置的选项打开,即可看到触摸点。

调试记录
触摸范围不对
烧录上面的设备树后,发现X Y都镜像,触摸范围大小跟屏幕也不搭。
后面打开驱动源码的调试功能,看看具体啥问题。驱动源码位置:
在 gt9xx.h 中找到 DEBUG_SWITCH 宏定义并设置为 1,即可打开DEBUG选项。
完成后,编译内核烧录上电,通过 adb 调试查看日志发现在设备树中设置的像素并没有设置到屏幕里面,触摸范围是默认的1366,768。
查看日志命令:
日志输出:
可以看到它使用的触摸范围是默认的,而不是我们设置的,我的解决办法是直接写死触摸范围。
更新代码:
主要是更新为以下代码:
ts->abs_x_max 和 ts->abs_y_max 就是我们输入的参数。
设置完成后编译烧录测试应该触摸范围正常了。
触摸XY镜像
后面了解到,在设备树中,配置tp-size 参数为 9110,而在驱动代码中,是根据这个 tp-size 来配置的是否镜像。
驱动源码中关于 tp-size 配置是否镜像的位置:

三个关键参数:
这里我全部关闭就正常了。
无法通过UI看到触摸情况时的调试命令
查看当前触摸接口的中断:
确定了是哪一个中断号后,通过下面命令查看触摸效果:
比如我的是中断5
android13 的调试记录
在android13 的 kernel5.10 中是没有 CONFIG_TOUCHSCREEN_GT9XX 选项的,需要在目录:Z:\android13\kernel-5.10\drivers\input\touchscreen\Kconfig 下新增说明:
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 0efc7e75a3dd..b1f0bedc57b7 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -426,6 +426,15 @@ config TOUCHSCREEN_GSLX680_PAD
tristate "gslX680 touchpad driver for pad"
help
gslX680 touchpad driver for pad
+
+config TOUCHSCREEN_GT9XX
+ tristate "Goodix gt9xx support for rockchip platform"
+ depends on I2C && ARCH_ROCKCHIP
+ help
+ Say Y here if you have a touchscreen interface using the gt9xx
+ on Rockchip platform, and your board-specific initialization
+ code includes that in its table of IIC devices.
+ If unsure, say N.
config TOUCHSCREEN_GT1X
tristate "GT1X touchscreens support"
完成后在同目录下的 Makefile 中新增编译使能:
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 0b1975b3bf95..21582b592945 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -54,6 +54,7 @@ gsl3673-800x1280-y := gsl3673_800x1280.o gsl_point_id.o
obj-$(CONFIG_TOUCHSCREEN_GSLX680_PAD) += gslx680-pad.o
gslx680-pad-y := gslx680_pad.o gsl_point_id.o
obj-$(CONFIG_TOUCHSCREEN_GT1X) += gt1x/
+obj-$(CONFIG_TOUCHSCREEN_GT9XX) += gt9xx/
obj-$(CONFIG_TOUCHSCREEN_HIDEEP) += hideep.o
obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
obj-$(CONFIG_TOUCHSCREEN_IMX6UL_TSC) += imx6ul_tsc.o
更新驱动适配触摸屏:
diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.c b/drivers/input/touchscreen/gt9xx/gt9xx.c
index 67b1b3451dab..5cc2d61f4371 100644
--- a/drivers/input/touchscreen/gt9xx/gt9xx.c
+++ b/drivers/input/touchscreen/gt9xx/gt9xx.c
@@ -92,12 +92,16 @@ static ssize_t gt91xx_config_read_proc(struct file *, char __user *, size_t, lof
static ssize_t gt91xx_config_write_proc(struct file *, const char __user *, size_t, loff_t *);
static struct proc_dir_entry *gt91xx_config_proc = NULL;
-static const struct file_operations config_proc_ops = {
- .owner = THIS_MODULE,
- .read = gt91xx_config_read_proc,
- .write = gt91xx_config_write_proc,
+// static const struct file_operations config_proc_ops = {
+// .owner = THIS_MODULE,
+// .read = gt91xx_config_read_proc,
+// .write = gt91xx_config_write_proc,
+// };
+static const struct proc_ops config_proc_ops = {
+ .proc_read = gt91xx_config_read_proc,
+ .proc_write = gt91xx_config_write_proc,
+ .proc_lseek = default_llseek,
};
-
#if GTP_CREATE_WR_NODE
extern s32 init_wr_node(struct i2c_client*);
extern void uninit_wr_node(void);
@@ -1675,6 +1679,7 @@ static s32 gtp_init_panel(struct goodix_ts_data *ts)
}
config[ts->gtp_cfg_len] = (~check_sum) + 1;
#endif
+ GTP_INFO("TEST STAT");
GTP_INFO("X_MAX: %d, Y_MAX: %d, TRIGGER: 0x%02x", ts->abs_x_max,ts->abs_y_max,ts->int_trigger_type);
}
@@ -2102,6 +2107,8 @@ static s8 gtp_request_input_dev(struct i2c_client *client,
input_set_abs_params(ts->input_dev, ABS_X, 0, ts->abs_x_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_Y, 0, ts->abs_y_max, 0, 0);
#endif
+ // input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0, 1080, 0, 0);
+ // input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y, 0, 1920, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0, ts->abs_x_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y, 0, ts->abs_y_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
@@ -2654,8 +2661,8 @@ static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id
if (val == 89) {
m89or101 = TRUE;
gtp_change_x2y = TRUE;
- gtp_x_reverse = FALSE;
- gtp_y_reverse = TRUE;
+ gtp_x_reverse = TRUE;
+ gtp_y_reverse = FALSE;
} else if (val == 101) {
m89or101 = FALSE;
gtp_change_x2y = TRUE;
@@ -2670,8 +2677,8 @@ static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id
} else if (val == 9110) {
m89or101 = FALSE;
bgt9110 = TRUE;
- gtp_change_x2y = TRUE;
- gtp_x_reverse = TRUE;
+ gtp_change_x2y = FALSE;
+ gtp_x_reverse = FALSE;
gtp_y_reverse = FALSE;
} else if (val == 9111) {
m89or101 = FALSE;
diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.h b/drivers/input/touchscreen/gt9xx/gt9xx.h
index acc288575691..37584c11e39c 100644
--- a/drivers/input/touchscreen/gt9xx/gt9xx.h
+++ b/drivers/input/touchscreen/gt9xx/gt9xx.h
@@ -1,3 +1,4 @@
+// #endif /* _GOODIX_GT9XX_H_ */
/* drivers/input/touchscreen/gt9xx.h
*
* 2010 - 2013 Goodix Technology.
@@ -40,7 +41,7 @@
//#include <linux/earlysuspend.h>
#define CONFIG_8_9 0
-#define DEBUG_SWITCH 0
+#define DEBUG_SWITCH 1
//***************************PART1:ON/OFF define*******************************
#define GTP_CUSTOM_CFG 0
@@ -53,7 +54,7 @@
#define GTP_X_REVERSE_ENABLE 1
#define GTP_Y_REVERSE_ENABLE 0
#endif
-#define GTP_DRIVER_SEND_CFG 1
+#define GTP_DRIVER_SEND_CFG 0
#define GTP_HAVE_TOUCH_KEY 0
#define GTP_POWER_CTRL_SLEEP 0
@@ -67,7 +68,7 @@
#define GTP_HEADER_FW_UPDATE 0 // auto update fw by gtp_default_FW in gt9xx_firmware.h, function together with GTP_AUTO_UPDATE
#define GTP_AUTO_UPDATE_CFG 0 // auto update config by .cfg file, function together with GTP_AUTO_UPDATE
-#define GTP_COMPATIBLE_MODE 1 /* compatible with GT9XXF */
+#define GTP_COMPATIBLE_MODE 0 /* compatible with GT9XXF */
#define GTP_CREATE_WR_NODE 0
#define GTP_ESD_PROTECT 0 // esd protection with a cycle of 2 seconds
@@ -78,8 +79,8 @@
#define GTP_GESTURE_WAKEUP 0 // gesture wakeup
#define GTP_DEBUG_ON 1
-#define GTP_DEBUG_ARRAY_ON 0
-#define GTP_DEBUG_FUNC_ON 0
+#define GTP_DEBUG_ARRAY_ON 1
+#define GTP_DEBUG_FUNC_ON 1
/* init use fixed clk num */
/* if open, u8 p_main_clk[6] = {69,69,69,69,69,167}; */
@@ -220,21 +221,22 @@ extern u16 total_len;
//WGJ10187_GT9271_Config_20140623_104014_0X41.cfg
#define CTP_CFG_GROUP1 {\
- 0x41,0x80,0x07,0xB0,0x04,0x0A,0x05,0x00,0x01,0x08,0x28,0x0F,0x50,0x32,0x03, \
- 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8F,0x2F,0x99, \
- 0x2B,0x2D,0x31,0x0D,0x00,0x00,0x00,0x01,0x03,0x1D,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x55,0x94,0xC5,0x02,0x07,0x00,0x00,0x00, \
- 0x8C,0x26,0x00,0x7B,0x2D,0x00,0x6C,0x36,0x00,0x61,0x41,0x00,0x58,0x4E,0x00, \
- 0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x05,0x06,0x07,0x08,0x09, \
- 0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x14,0x15,0x16,0x17,0xFF,0xFF,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x13,0x12,0x11,0x10,0x0F,0x0D,0x0C, \
- 0x0A,0x08,0x07,0x06,0x04,0x02,0x00,0x19,0x1B,0x1C,0x1E,0x1F,0x20,0x21,0x22, \
- 0x23,0x24,0x25,0x26,0x27,0x28,0x29,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0xB5,0x01 \
+ 0x60,0x20,0x03,0x00,0x05,0x0A,0x05,0x00,0x01,0xC2,0x1F,0x05,0x4B,\
+ 0x37,0x03,0x00,0x00,0x00,0x1F,0x00,0x23,0x22,0x04,0x19,0x17,0x20,\
+ 0x14,0x93,0x33,0xCC,0x1C,0x1E,0x0A,0x1A,0x53,0x00,0x00,0x9B,0x33,\
+ 0x1C,0x17,0x1A,0x1C,0x90,0x83,0x23,0x46,0x3C,0x0C,0x08,0x11,0x14,\
+ 0x50,0x94,0xC0,0x52,0x14,0x0F,0x00,0x04,0xCB,0x17,0x00,0xAA,0x1E,\
+ 0xA6,0x91,0x28,0x00,0x83,0x35,0x00,0x7D,0x46,0x00,0x7D,0x00,0x00,\
+ 0x00,0x00,0xF0,0x50,0x32,0xFF,0xFF,0x07,0x22,0x22,0x66,0x03,0x54,\
+ 0x55,0x21,0x42,0x00,0xFF,0x7D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,\
+ 0x00,0x00,0x00,0x00,0xA0,0x00,0x32,0x19,0x17,0x16,0x15,0x14,0x13,\
+ 0x12,0x11,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,\
+ 0x05,0x04,0x03,0x02,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x29,\
+ 0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1B,\
+ 0x19,0x18,0x17,0x16,0x15,0x13,0x12,0x11,0x10,0x0F,0x00,0x01,0x02,\
+ 0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0E,0xFF,0xFF,\
+ 0xFF,0xFF,0xFB,0x01\
}
-
// TODO: define your config for Sensor_ID == 1 here, if needed
#define CTP_CFG_GROUP2 {\
}
@@ -391,7 +393,7 @@ extern u16 total_len;
}while (0)
//*****************************End of Part III********************************
-#define TRUE 1
-#define FALSE 0
+// #define TRUE 1
+// #define FALSE 0
#endif /* _GOODIX_GT9XX_H_ */
最后,在 kernel5.10 的 config 中添加驱动使能:
diff --git a/arch/arm64/configs/rockchip_defconfig b/arch/arm64/configs/rockchip_defconfig
index b2912832b178..04a8ff67e791 100644
--- a/arch/arm64/configs/rockchip_defconfig
+++ b/arch/arm64/configs/rockchip_defconfig
@@ -56,7 +56,6 @@ CONFIG_ARCH_ROCKCHIP=y
# CONFIG_ARM64_ERRATUM_1463225 is not set
# CONFIG_ARM64_ERRATUM_1542419 is not set
# CONFIG_ARM64_ERRATUM_1508412 is not set
-# CONFIG_ARM64_ERRATUM_2051678 is not set
# CONFIG_ARM64_ERRATUM_2054223 is not set
# CONFIG_ARM64_ERRATUM_2067961 is not set
# CONFIG_CAVIUM_ERRATUM_22375 is not set
@@ -80,13 +79,10 @@ CONFIG_ARMV8_DEPRECATED=y
CONFIG_SWP_EMULATION=y
CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
-# CONFIG_ARM64_PTR_AUTH is not set
# CONFIG_ARM64_AMU_EXTN is not set
-# CONFIG_ARM64_TLB_RANGE is not set
# CONFIG_ARM64_BTI is not set
# CONFIG_ARM64_E0PD is not set
# CONFIG_ARCH_RANDOM is not set
-# CONFIG_ARM64_MTE is not set
# CONFIG_ARM64_SVE is not set
CONFIG_ARM64_PSEUDO_NMI=y
CONFIG_RANDOMIZE_BASE=y
@@ -412,7 +408,6 @@ CONFIG_USB_EPSON2888=y
CONFIG_USB_KC2190=y
CONFIG_USB_NET_CX82310_ETH=y
CONFIG_USB_NET_KALMIA=y
-CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_HSO=y
CONFIG_USB_NET_INT51X1=y
CONFIG_USB_IPHETH=y
@@ -859,7 +854,6 @@ CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_HYM8563=y
-CONFIG_RTC_DRV_RK808=y
CONFIG_DMADEVICES=y
CONFIG_PL330_DMA=y
CONFIG_RK_DMABUF_DEBUG=y
@@ -1023,3 +1017,4 @@ CONFIG_SCHEDSTATS=y
CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
# CONFIG_RUNTIME_TESTING_MENU is not set
+CONFIG_TOUCHSCREEN_GT9XX=y
\ No newline at end of file
注意!上面的补丁修改只要关注 CONFIG_TOUCHSCREEN_GT9XX=y 就好,其他的 + 是我个人其他的配置,在触摸上不用关注。
完成后编译 kernel 然后烧录验证即可。
Buildroot 的调试记录
具体更改diff:
主要关注 gt9xx.c .h
diff --git a/arch/arm64/boot/dts/rockchip/tspi-rk3566-core-v10.dtsi b/arch/arm64/boot/dts/rockchip/tspi-rk3566-core-v10.dtsi
index 6c9afefd9002..e319edd1e834 100755
--- a/arch/arm64/boot/dts/rockchip/tspi-rk3566-core-v10.dtsi
+++ b/arch/arm64/boot/dts/rockchip/tspi-rk3566-core-v10.dtsi
@@ -238,8 +238,8 @@
pinctrl-0 = <&uart1m0_rtsn>;
pinctrl-1 = <&uart1_gpios>;
BT,reset_gpio = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
- BT,wake_gpio = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
- BT,wake_host_irq = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
+ BT,wake_gpio = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
+ BT,wake_host_irq = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
@@ -338,6 +338,15 @@
&i2c0 {
status = "okay";
+ hym8563:hym8563@51{
+ compatible = "haoyu,hym8563";
+ reg = <0x51>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&rtc_int>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
+ };
+
vdd_cpu: tcs4525@1c {
compatible = "tcs,tcs452x";
reg = <0x1c>;
@@ -700,6 +709,12 @@
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
+
+ rtc{
+ rtc_int: rtc-int{
+ rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
};
/*
@@ -841,7 +856,7 @@
//音频输出接口
&spdif_8ch {
- status = "disabled";
+ status = "okay";
};
//温度监测
diff --git a/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi b/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi
index 6c3a782fe64a..f0e4ea287f04 100755
--- a/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi
+++ b/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi
@@ -1,20 +1,7 @@
-/*********************************************************************
- * 立创开发板不靠卖板赚钱,以培养中国工程师为己任
- * 泰山派软硬件资料与相关扩展板软硬件资料官网全部开源
- * 开发板官网:www.lckfb.com
- * 立创论坛:oshwhub.com/forum
- * 关注B站:【立创开发板】,掌握我们的最新动态!
- *********************************************************************
- * 文件名:tspi-rk3566-dsi-v10.dtsi
- * 描述:mipi 屏幕
- * 更新:
- * 时间 作者 联系 说明
- * 2023-09-13 吴才成 1378913492@qq.com v1.0.0
- *********************************************************************/
/ {
backlight: backlight {
compatible = "pwm-backlight";
- pwms = <&pwm5 0 25000 0>;
+ pwms = <&pwm0 0 25000 0>;
brightness-levels = <
0 20 20 21 21 22 22 23
23 24 24 25 25 26 26 27
@@ -53,16 +40,45 @@
};
};
-&pwm5 {
+&pwm0 {
status = "okay";
+ pinctrl-0 = <&pwm0m0_pins>;
};
+// &i2c1 {
+// status = "okay";
+// ts@5d {
+// compatible = "goodix,gt9xx";
+// reg = <0x5d>;
+// tp-size = <89>;
+// max-x = <1280>;
+// max-y = <800>;
+// touch-gpio = <&gpio1 RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+// reset-gpio = <&gpio1 RK_PA1 IRQ_TYPE_LEVEL_LOW>;
+// };
+// };
+// &i2c1 {
+// status = "okay";
+// ts@5d {
+// pinctrl-0 = <&touch_gpio>;
+// compatible = "goodix,gt9xx";
+// reg = <0x5d>;
+// tp-size = <970>;
+// max-x = <1080>;
+// max-y = <1920>;
+// touch-gpio = <&gpio1 RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+// reset-gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
+// };
+// };
&pinctrl {
dsi1 {
dsi1_rst_gpio: dsi1-rst-gpio {
- rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+ rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
+ // touch_gpio: touch-gpio {
+ // rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+ // };
};
};
@@ -75,10 +91,12 @@
};
&dsi1_in_vp0 {
+ //status = "disabled";
status = "okay";
};
&dsi1_in_vp1 {
+ //status = "okay";
status = "disabled";
};
@@ -88,229 +106,76 @@
&route_dsi1 {
status = "okay";//wucaicheng mipi okay
+ //connect = <&vp1_out_dsi1>;
connect = <&vp0_out_dsi1>;
};
-//默认 8寸800x1280
+//3.1寸屏幕
+// D310T9362V1
&dsi1 {
status = "okay";
- rockchip,lane-rate = <480>;
+ rockchip,lane-rate = <480>;//(480+50+60+10)*(800+20+34+2)*60*3*8/2,+100mhz
dsi1_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
- reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
+ reset-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&dsi1_rst_gpio>;
reg = <0>;
backlight = <&backlight>;
- reset-delay-ms = <10>;
- enable-delay-ms = <120>;
+ reset-delay-ms = <200>;
+ enable-delay-ms = <100>;
prepare-delay-ms = <20>;
unprepare-delay-ms = <20>;
- disable-delay-ms = <50>;
+ disable-delay-ms = <20>;
+ init-delay-ms = <120>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
- dsi,lanes = <4>;
+ dsi,lanes = <2>;
panel-init-sequence = [
- 15 00 02 E0 00
- 15 00 02 E1 93
- 15 00 02 E2 65
- 15 00 02 E3 F8
- 15 00 02 80 03
- 15 00 02 E0 01
- 15 00 02 00 00
- 15 00 02 01 3C
- 15 00 02 03 10
- 15 00 02 04 38
- 15 00 02 0C 74
- 15 00 02 17 00
- 15 00 02 18 E7
- 15 00 02 19 01
- 15 00 02 1A 00
- 15 00 02 1B E7
- 15 00 02 1C 01
- 15 00 02 24 FE
- 15 00 02 35 23
- 15 00 02 37 09
- 15 00 02 38 04
- 15 00 02 39 00
- 15 00 02 3A 01
- 15 00 02 3C 70
- 15 00 02 3D FF
- 15 00 02 3E FF
- 15 00 02 3F 7F
- 15 00 02 40 06
- 15 00 02 41 A0
- 15 00 02 43 1E
- 15 00 02 44 0B
- 15 00 02 45 28
- 15 00 02 55 02
- 15 00 02 57 A9
- 15 00 02 59 0A
- 15 00 02 5A 2D
- 15 00 02 5B 19
- 15 00 02 5C 15
- 15 00 02 5D 7F
- 15 00 02 5E 6E
- 15 00 02 5F 5F
- 15 00 02 60 53
- 15 00 02 61 50
- 15 00 02 62 41
- 15 00 02 63 44
- 15 00 02 64 2C
- 15 00 02 65 44
- 15 00 02 66 42
- 15 00 02 67 40
- 15 00 02 68 5B
- 15 00 02 69 45
- 15 00 02 6A 48
- 15 00 02 6B 38
- 15 00 02 6C 32
- 15 00 02 6D 25
- 15 00 02 6E 14
- 15 00 02 6F 08
- 15 00 02 70 7F
- 15 00 02 71 6E
- 15 00 02 72 5F
- 15 00 02 73 53
- 15 00 02 74 50
- 15 00 02 75 41
- 15 00 02 76 44
- 15 00 02 77 2C
- 15 00 02 78 44
- 15 00 02 79 42
- 15 00 02 7A 40
- 15 00 02 7B 5B
- 15 00 02 7C 45
- 15 00 02 7D 48
- 15 00 02 7E 38
- 15 00 02 7F 32
- 15 00 02 80 25
- 15 00 02 81 14
- 15 00 02 82 08
- 15 00 02 E0 02
- 15 00 02 00 50
- 15 00 02 01 5F
- 15 00 02 02 5F
- 15 00 02 03 52
- 15 00 02 04 77
- 15 00 02 05 57
- 15 00 02 06 5F
- 15 00 02 07 4E
- 15 00 02 08 4C
- 15 00 02 09 5F
- 15 00 02 0A 4A
- 15 00 02 0B 48
- 15 00 02 0C 5F
- 15 00 02 0D 46
- 15 00 02 0E 44
- 15 00 02 0F 40
- 15 00 02 10 5F
- 15 00 02 11 5F
- 15 00 02 12 5F
- 15 00 02 13 5F
- 15 00 02 14 5F
- 15 00 02 15 5F
- 15 00 02 16 51
- 15 00 02 17 5F
- 15 00 02 18 5F
- 15 00 02 19 53
- 15 00 02 1A 77
- 15 00 02 1B 57
- 15 00 02 1C 5F
- 15 00 02 1D 4F
- 15 00 02 1E 4D
- 15 00 02 1F 5F
- 15 00 02 20 4B
- 15 00 02 21 49
- 15 00 02 22 5F
- 15 00 02 23 47
- 15 00 02 24 45
- 15 00 02 25 41
- 15 00 02 26 5F
- 15 00 02 27 5F
- 15 00 02 28 5F
- 15 00 02 29 5F
- 15 00 02 2A 5F
- 15 00 02 2B 5F
- 15 00 02 2C 01
- 15 00 02 2D 1F
- 15 00 02 2E 1F
- 15 00 02 2F 13
- 15 00 02 30 17
- 15 00 02 31 17
- 15 00 02 32 1F
- 15 00 02 33 0D
- 15 00 02 34 0F
- 15 00 02 35 1F
- 15 00 02 36 05
- 15 00 02 37 07
- 15 00 02 38 1F
- 15 00 02 39 09
- 15 00 02 3A 0B
- 15 00 02 3B 11
- 15 00 02 3C 1F
- 15 00 02 3D 1F
- 15 00 02 3E 1F
- 15 00 02 3F 1F
- 15 00 02 40 1F
- 15 00 02 41 1F
- 15 00 02 42 00
- 15 00 02 43 1F
- 15 00 02 44 1F
- 15 00 02 45 12
- 15 00 02 46 17
- 15 00 02 47 17
- 15 00 02 48 1F
- 15 00 02 49 0C
- 15 00 02 4A 0E
- 15 00 02 4B 1F
- 15 00 02 4C 04
- 15 00 02 4D 06
- 15 00 02 4E 1F
- 15 00 02 4F 08
- 15 00 02 50 0A
- 15 00 02 51 10
- 15 00 02 52 1F
- 15 00 02 53 1F
- 15 00 02 54 1F
- 15 00 02 55 1F
- 15 00 02 56 1F
- 15 00 02 57 1F
- 15 00 02 58 40
- 15 00 02 5B 10
- 15 00 02 5C 06
- 15 00 02 5D 40
- 15 00 02 5E 00
- 15 00 02 5F 00
- 15 00 02 60 40
- 15 00 02 61 03
- 15 00 02 62 04
- 15 00 02 63 6C
- 15 00 02 64 6C
- 15 00 02 65 75
- 15 00 02 66 08
- 15 00 02 67 B4
- 15 00 02 68 08
- 15 00 02 69 6C
- 15 00 02 6A 6C
- 15 00 02 6B 0C
- 15 00 02 6D 00
- 15 00 02 6E 00
- 15 00 02 6F 88
- 15 00 02 75 BB
- 15 00 02 76 00
- 15 00 02 77 05
- 15 00 02 78 2A
- 15 00 02 E0 04
- 15 00 02 00 0E
- 15 00 02 02 B3
- 15 00 02 09 60
- 15 00 02 0E 48
- 15 00 02 E0 00
- 05 fa 01 11
- 05 32 01 29
+ // init code
+ 05 78 01 01
+ 05 78 01 11
+ 39 0A 06 FF 77 01 00 00 11
+ 15 0A 02 D1 11
+ 15 0A 02 55 B0 // 80 90 b0
+ 39 0A 06 FF 77 01 00 00 10
+ 39 0A 03 C0 63 00
+ 39 0A 03 C1 09 02
+ 39 0A 03 C2 37 08
+ 15 0A 02 C7 00 // x-dir rotate 0:0x00,rotate 180:0x04
+ 15 0A 02 CC 38
+ 39 0A 11 B0 00 11 19 0C 10 06 07 0A 09 22 04 10 0E 28 30 1C
+ 39 6E 11 B1 00 12 19 0D 10 04 06 07 08 23 04 12 11 28 30 1C
+ 39 0A 06 FF 77 01 00 00 11 // enable bk fun of command 2 BK1
+ 15 0A 02 B0 4D
+ 15 0A 02 B1 60 // 0x56 0x4a 0x5b
+ 15 0A 02 B2 07
+ 15 6E 02 B3 80
+ 15 0A 02 B5 47
+ 15 0A 02 B7 8A
+ 15 0A 02 B8 21
+ 15 0A 02 C1 78
+ 15 0A 02 C2 78
+ 15 0A 02 D0 88
+ 39 0A 04 E0 00 00 02
+ 39 0A 0C E1 01 A0 03 A0 02 A0 04 A0 00 44 44
+ 39 0A 0D E2 00 00 00 00 00 00 00 00 00 00 00 00
+ 39 0A 05 E3 00 00 33 33
+ 39 0A 03 E4 44 44
+ 39 0A 11 E5 01 26 A0 A0 03 28 A0 A0 05 2A A0 A0 07 2C A0 A0
+ 39 0A 05 E6 00 00 33 33
+ 39 0A 03 E7 44 44
+ 39 0A 11 E8 02 26 A0 A0 04 28 A0 A0 06 2A A0 A0 08 2C A0 A0
+ 39 0A 08 EB 00 01 E4 E4 44 00 40
+ 39 0A 11 ED FF F7 65 4F 0B A1 CF FF FF FC 1A B0 F4 56 7F FF
+ 15 0A 02 EE 42 // missing?
+ 39 0A 06 FF 77 01 00 00 00
+ 15 0A 02 36 00 //U&D Y-DIR rotate 0:0x00,rotate 180:0x10
+ 15 0A 02 3A 55
+ 05 78 01 11
+ 05 14 01 29
];
panel-exit-sequence = [
@@ -321,23 +186,29 @@
disp_timings1: display-timings {
native-mode = <&dsi1_timing0>;
dsi1_timing0: timing0 {
- clock-frequency = <66000000>;
- hactive = <800>;
- vactive = <1280>;
- hfront-porch = <18>;
- hsync-len = <12>;
- hback-porch = <18>;
- vfront-porch = <24>;
- vsync-len = <4>;
- vback-porch = <12>;
+ clock-frequency = <30816000>;// (480+50+60+10)*(800+20+34+2)*60
+
+ hactive = <480>;
+ hfront-porch = <50>;
+ hback-porch = <60>;
+ hsync-len = <10>;
+
+ vactive = <800>;
+ vfront-porch = <20>;
+ vback-porch = <34>;
+ vsync-len = <2>;
+
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
- pixelclk-active = <1>;
+ pixelclk-active = <0>;
+
+ swap-rb = <0>;
+ swap-rg = <0>;
+ swap-gb = <0>;
};
};
-
- ports {
+ ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -363,169 +234,3 @@
};
};
-
-// &dsi1 {
-// status = "okay";
-// rockchip,lane-rate = <1000>;
-// dsi1_panel: panel@0 {
-// status = "okay";
-// compatible = "simple-panel-dsi";
-// reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
-// pinctrl-names = "default";
-// pinctrl-0 = <&dsi1_rst_gpio>;
-// reg = <0>;
-// backlight = <&backlight>;
-// reset-delay-ms = <100>;
-// enable-delay-ms = <120>;
-// prepare-delay-ms = <20>;
-// unprepare-delay-ms = <20>;
-// disable-delay-ms = <100>;
-// dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
-// MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
-// dsi,format = <MIPI_DSI_FMT_RGB888>;
-// dsi,lanes = <4>;
-// panel-init-sequence = [
-// 15 00 02 B0 01
-// 15 00 02 C3 4F
-// 15 00 02 C4 40
-// 15 00 02 C5 40
-// 15 00 02 C6 40
-// 15 00 02 C7 40
-// 15 00 02 C8 4D
-// 15 00 02 C9 52
-// 15 00 02 CA 51
-// 15 00 02 CD 5D
-// 15 00 02 CE 5B
-// 15 00 02 CF 4B
-// 15 00 02 D0 49
-// 15 00 02 D1 47
-// 15 00 02 D2 45
-// 15 00 02 D3 41
-// 15 00 02 D7 50
-// 15 00 02 D8 40
-// 15 00 02 D9 40
-// 15 00 02 DA 40
-// 15 00 02 DB 40
-// 15 00 02 DC 4E
-// 15 00 02 DD 52
-// 15 00 02 DE 51
-// 15 00 02 E1 5E
-// 15 00 02 E2 5C
-// 15 00 02 E3 4C
-// 15 00 02 E4 4A
-// 15 00 02 E5 48
-// 15 00 02 E6 46
-// 15 00 02 E7 42
-// 15 00 02 B0 03
-// 15 00 02 BE 03
-// 15 00 02 CC 44
-// 15 00 02 C8 07
-// 15 00 02 C9 05
-// 15 00 02 CA 42
-// 15 00 02 CD 3E
-// 15 00 02 CF 60
-// 15 00 02 D2 04
-// 15 00 02 D3 04
-// 15 00 02 D4 01
-// 15 00 02 D5 00
-// 15 00 02 D6 03
-// 15 00 02 D7 04
-// 15 00 02 D9 01
-// 15 00 02 DB 01
-// 15 00 02 E4 F0
-// 15 00 02 E5 0A
-// 15 00 02 B0 00
-// 15 00 02 B1 08
-// 15 00 02 BD 54
-// 15 00 02 C2 06
-// 15 00 02 C4 0B
-// 15 00 02 B0 02
-// 15 00 02 C0 00
-// 15 00 02 C1 0A
-// 15 00 02 C2 20
-// 15 00 02 C3 24
-// 15 00 02 C4 23
-// 15 00 02 C5 29
-// 15 00 02 C6 23
-// 15 00 02 C7 1C
-// 15 00 02 C8 19
-// 15 00 02 C9 17
-// 15 00 02 CA 17
-// 15 00 02 CB 18
-// 15 00 02 CC 1A
-// 15 00 02 CD 1E
-// 15 00 02 CE 20
-// 15 00 02 CF 23
-// 15 00 02 D0 07
-// 15 00 02 D1 00
-// 15 00 02 D2 00
-// 15 00 02 D3 0A
-// 15 00 02 D4 13
-// 15 00 02 D5 1C
-// 15 00 02 D6 1A
-// 15 00 02 D7 13
-// 15 00 02 D8 17
-// 15 00 02 D9 1C
-// 15 00 02 DA 19
-// 15 00 02 DB 17
-// 15 00 02 DC 17
-// 15 00 02 DD 18
-// 15 00 02 DE 1A
-// 15 00 02 DF 1E
-// 15 00 02 E0 20
-// 15 00 02 E1 23
-// 15 00 02 E2 07
-// 05 78 01 11
-// 05 14 01 29
-// ];
-
-// panel-exit-sequence = [
-// 05 00 01 28
-// 05 00 01 10
-// ];
-
-// disp_timings1: display-timings {
-// native-mode = <&dsi1_timing0>;
-// dsi1_timing0: timing0 {
-// clock-frequency = <156000000>;
-// hactive = <1200 >;
-// vactive = <1920>;
-// hfront-porch = <42>;
-// hsync-len = <10>;
-// hback-porch = <32>;
-// vfront-porch = <35>;
-// vsync-len = <4>;
-// vback-porch = <30>;
-// hsync-active = <0>;
-// vsync-active = <0>;
-// de-active = <0>;
-// pixelclk-active = <0>;
-// };
-// };
-
-// ports {
-// #address-cells = <1>;
-// #size-cells = <0>;
-
-// port@0 {
-// reg = <0>;
-// panel_in_dsi1: endpoint {
-// remote-endpoint = <&dsi1_out_panel>;
-// };
-// };
-// };
-// };
-
-// ports {
-// #address-cells = <1>;
-// #size-cells = <0>;
-
-// port@1 {
-// reg = <1>;
-// dsi1_out_panel: endpoint {
-// remote-endpoint = <&panel_in_dsi1>;
-// };
-// };
-// };
-
-// };
\ No newline at end of file
diff --git a/arch/arm64/boot/dts/rockchip/tspi-rk3566-gmac1-v10.dtsi b/arch/arm64/boot/dts/rockchip/tspi-rk3566-gmac1-v10.dtsi
index e00f33838612..fe1c72dbb252 100755
--- a/arch/arm64/boot/dts/rockchip/tspi-rk3566-gmac1-v10.dtsi
+++ b/arch/arm64/boot/dts/rockchip/tspi-rk3566-gmac1-v10.dtsi
@@ -14,36 +14,71 @@
+// &gmac1 {
+// phy-mode = "rgmii";
+// clock_in_out = "output";
+
+// snps,reset-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
+// snps,reset-active-low;
+// /* Reset time is 20ms, 100ms for rtl8211f */
+// snps,reset-delays-us = <0 20000 100000>;
+
+// assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+// assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>;
+// assigned-clock-rates = <0>, <125000000>;
+
+// pinctrl-names = "default";
+// pinctrl-0 = <&gmac1m1_miim
+// &gmac1m1_tx_bus2
+// &gmac1m1_rx_bus2
+// &gmac1m1_rgmii_clk
+// &gmac1m1_rgmii_bus>;
+
+// tx_delay = <0x4f>;
+// rx_delay = <0x25>;
+
+// phy-handle = <&rgmii_phy0>;
+// status = "okay";
+// };
+
&gmac1 {
- phy-mode = "rgmii";
+ phy-mode = "rmii";
clock_in_out = "output";
- snps,reset-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
+ snps,reset-gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
/* Reset time is 20ms, 100ms for rtl8211f */
snps,reset-delays-us = <0 20000 100000>;
-
- assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
- assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>;
- assigned-clock-rates = <0>, <125000000>;
+ max-speed = <100>;
+ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>,<&cru CLK_MAC1_OUT>;
+ assigned-clock-parents = <&cru SCLK_GMAC1_RMII_SPEED>;
+ assigned-clock-rates = <0>,<50000000>,<50000000>;
pinctrl-names = "default";
pinctrl-0 = <&gmac1m1_miim
- &gmac1m1_tx_bus2
+ &gmac1m1_tx_bus2
&gmac1m1_rx_bus2
- &gmac1m1_rgmii_clk
- &gmac1m1_rgmii_bus>;
+ &gmac1m1_clkinout/*ð1m0_pins*/
+ >;
+
+//mdc mdio
+//txd0 txd1 txen
+//rxd0 rxd1 rxen
+//refclk 25m ð1m1_pins
+//mclk gmac1m1_clkinout
tx_delay = <0x4f>;
rx_delay = <0x25>;
- phy-handle = <&rgmii_phy0>;
+ phy-handle = <&rmii_phy0>;
status = "okay";
};
+
&mdio1 {
- rgmii_phy0: phy@0 {
- compatible = "ethernet-phy-ieee802.3-c22";
+ rmii_phy0: phy@0 {
+ //compatible = "ethernet-phy-ieee802.3-c22";
+ compatible = "realtek,rtl8201f";
reg = <0x0>;
};
};
diff --git a/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts b/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
index 97da688286b2..08bc78e3882f 100755
--- a/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
+++ b/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
@@ -33,7 +33,10 @@
// #include "tspi-rk3566-edp-v10.dtsi"
//【开/关】mipi 显示屏幕配置,用户可以基于此复制自己的屏幕,注意EDP与MIPI屏幕互斥,因为共用了VOP如果需要同显自行修改
-// #include "tspi-rk3566-dsi-v10.dtsi"
+//#include "tspi-rk3566-dsi-v10.dtsi"
+
+// //【开/关】LVDS 显示屏幕配置
+#include "tspi-rk3566-lvds-v10.dtsi"
//【开/关】HDMI 显示屏幕配置,里面内容几乎可以不用动,如果不需要hdmi显示直接注释掉即可
#include "tspi-rk3566-hdmi-v10.dtsi"
@@ -42,7 +45,7 @@
#include "tspi-rk3566-csi-v10.dtsi"
//【开/关】网口 扩展板上使用的是千兆网,不接扩展板情况下可以关闭
-// #include "tspi-rk3566-gmac1-v10.dtsi"
+#include "tspi-rk3566-gmac1-v10.dtsi"
//【开/关】下方是用户定义层,所有用户修改理论上在此下方修改就好了
/ {
@@ -81,6 +84,84 @@
};
};
+/*
+VDD5V GPIO0_D5 v
+VDD3V3 GPIO0_D4 v
+VCC12V_OUT GPIO0_D6
+VCC5V0_OUT GPIO2_C0 v
+VCC3V3_OUT GPIO2_C1 v
+VCC5V0_USB_OTG GPIO3_D2
+MIPI_DSI_VCC_LED2+ PWM0_M0
+VCC5V0_DSI1 and VCC3V3_DSI1 GPIO3_D3 v
+SPKCTL GPIO3-A5
+*/
+regulators {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ vdd3v3_en: vdd3v3-en {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd3v3_en";
+ gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; // GPIO0_D4 = 28
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc3v3_out_en: vcc3v3-out-en {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3_out_en";
+ gpio = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; // GPIO2_C1 = 81
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc5v0_out_en: vcc5v0-out-en {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_out_en";
+ gpio = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; // GPIO2_C0 = 80
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vdd_5v_en: vdd-5v-en {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_5v_en";
+ gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>; // GPIO0_D5 = 29
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc5v0_dsi_en: vcc5v0-dsi-en {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_dsi_en";
+ gpio = <&gpio3 RK_PD3 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ spk_ctl_en: spk-stl-en {
+ compatible = "regulator-fixed";
+ regulator-name = "spk_ctl_en";
+ gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+ power_12v_en: power-12v-en {
+ compatible = "regulator-fixed";
+ regulator-name = "power_12v_en";
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+ typec_5v_en: typec-5v-en {
+ compatible = "regulator-fixed";
+ regulator-name = "typec_5v_en";
+ gpio = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+ };
};
&pinctrl {
@@ -107,97 +188,135 @@
pinctrl-names = "default";
pinctrl-0 = <&uart3m1_xfer>;
};
-
-//用户I2C2
-&i2c2 {
+//串口0
+&uart0{
status = "okay";
-
- /*添加你的I2C设备参考
- gt1x: gt1x@14 {
- compatible = "goodix,gt1x";
- reg = <0x14>;
- pinctrl-names = "default";
- pinctrl-0 = <&touch_gpio>;
- goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
- goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
- };*/
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_xfer>;
};
-
-&i2c3 {
+//串口5
+&uart5{
status = "okay";
pinctrl-names = "default";
- pinctrl-0 = <&i2c3m1_xfer>;
- /*添加你的I2C设备参考
- gt1x: gt1x@14 {
- compatible = "goodix,gt1x";
- reg = <0x14>;
- pinctrl-names = "default";
- pinctrl-0 = <&touch_gpio>;
- goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
- goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
- };*/
+ pinctrl-0 = <&uart5m1_xfer>;
};
-
-
-&spi3 {
+//串口7
+&uart7{
status = "okay";
- max-freq = <48000000>;
- dma-names = "tx","rx";
- pinctrl-names = "default", "high_speed";
- pinctrl-0 = <&spi3m1_cs0 &spi3m1_pins>;
- pinctrl-1 = <&spi3m1_cs0 &spi3m1_pins_hs>;
- spi_test@10 {
- compatible ="rockchip,spi_test_bus1_cs0";
- reg = <0>;
- spi-max-frequency = <24000000>;
- status = "okay";
- };
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart7m1_xfer>;
};
-
-&pwm8 {
+//串口8
+&uart8 {
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart8m0_xfer>;
};
-
-&pwm9 {
+//串口9
+&uart9{
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart9m1_xfer>;
};
-&pwm14 {
+//串口4
+&uart4 {
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart4m1_xfer>;
};
-//pwd 15遥控器
-&pwm15 {
- status = "okay";
- compatible = "rockchip,remotectl-pwm";
- remote_pwm_id = <3>;
- handle_cpu_id = <1>;
- remote_support_psci = <0>;
- pinctrl-names = "default";
- pinctrl-0 = <&pwm15m0_pins>;
-
- //用户自定方法:adb设置输出日志并通过dmesg确定usercode=address与key_table=command
- //echo 1 > sys/module/rockchip_pwm_remotectl/parameters/code_print
- //键值可在 include/dt-bindings/input/linux-event-codes.h 中查找
- ir_key1 {
- rockchip,usercode = <0xff00>;
- rockchip,key_table =
- <0xf2 KEY_MENU>,
- <0xe9 KEY_BACK>,
- <0xe3 KEY_ENTER>,
- <0xe7 KEY_UP>,
- <0xad KEY_DOWN>,
- <0xf7 KEY_LEFT>,
- <0xa5 KEY_RIGHT>,
- <0xba KEY_1>,
- <0xb9 KEY_2>,
- <0xb8 KEY_3>,
- <0xbb KEY_4>,
- <0xbf KEY_5>,
- <0xbc KEY_6>,
- <0xf8 KEY_7>,
- <0xea KEY_8>,
- <0xf6 KEY_9>,
- <0xe6 KEY_0>;
- };
-};
\ No newline at end of file
+
+// //用户I2C2
+// &i2c2 {
+// status = "okay";
+
+// /*添加你的I2C设备参考
+// gt1x: gt1x@14 {
+// compatible = "goodix,gt1x";
+// reg = <0x14>;
+// pinctrl-names = "default";
+// pinctrl-0 = <&touch_gpio>;
+// goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
+// goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
+// };*/
+// };
+
+// &i2c3 {
+// status = "okay";
+// pinctrl-names = "default";
+// pinctrl-0 = <&i2c3m1_xfer>;
+// /*添加你的I2C设备参考
+// gt1x: gt1x@14 {
+// compatible = "goodix,gt1x";
+// reg = <0x14>;
+// pinctrl-names = "default";
+// pinctrl-0 = <&touch_gpio>;
+// goodix,rst-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
+// goodix,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
+// };*/
+// };
+
+
+// &spi3 {
+// status = "okay";
+// max-freq = <48000000>;
+// dma-names = "tx","rx";
+// pinctrl-names = "default", "high_speed";
+// pinctrl-0 = <&spi3m1_cs0 &spi3m1_pins>;
+// pinctrl-1 = <&spi3m1_cs0 &spi3m1_pins_hs>;
+// spi_test@10 {
+// compatible ="rockchip,spi_test_bus1_cs0";
+// reg = <0>;
+// spi-max-frequency = <24000000>;
+// status = "okay";
+// };
+// };
+
+// &pwm8 {
+// status = "okay";
+// };
+
+// &pwm9 {
+// status = "okay";
+// };
+
+// &pwm14 {
+// status = "okay";
+// };
+
+// //pwd 15遥控器
+// &pwm15 {
+// status = "okay";
+// compatible = "rockchip,remotectl-pwm";
+// remote_pwm_id = <3>;
+// handle_cpu_id = <1>;
+// remote_support_psci = <0>;
+// pinctrl-names = "default";
+// pinctrl-0 = <&pwm15m0_pins>;
+
+// //用户自定方法:adb设置输出日志并通过dmesg确定usercode=address与key_table=command
+// //echo 1 > sys/module/rockchip_pwm_remotectl/parameters/code_print
+// //键值可在 include/dt-bindings/input/linux-event-codes.h 中查找
+// ir_key1 {
+// rockchip,usercode = <0xff00>;
+// rockchip,key_table =
+// <0xf2 KEY_MENU>,
+// <0xe9 KEY_BACK>,
+// <0xe3 KEY_ENTER>,
+// <0xe7 KEY_UP>,
+// <0xad KEY_DOWN>,
+// <0xf7 KEY_LEFT>,
+// <0xa5 KEY_RIGHT>,
+// <0xba KEY_1>,
+// <0xb9 KEY_2>,
+// <0xb8 KEY_3>,
+// <0xbb KEY_4>,
+// <0xbf KEY_5>,
+// <0xbc KEY_6>,
+// <0xf8 KEY_7>,
+// <0xea KEY_8>,
+// <0xf6 KEY_9>,
+// <0xe6 KEY_0>;
+// };
+// };
\ No newline at end of file
diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig
index c5bb7a887f9f..8c9920325618 100755
--- a/arch/arm64/configs/rockchip_linux_defconfig
+++ b/arch/arm64/configs/rockchip_linux_defconfig
@@ -182,6 +182,7 @@ CONFIG_STMMAC_ETH=y
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_REALTEK_PHY=y
CONFIG_ROCKCHIP_PHY=y
CONFIG_RK630_PHY=y
CONFIG_USB_RTL8150=y
@@ -195,7 +196,6 @@ CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
-# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
CONFIG_AP6XXX=m
CONFIG_USB_NET_RNDIS_WLAN=y
CONFIG_INPUT_FF_MEMLESS=y
@@ -267,7 +267,6 @@ CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_CPU_THERMAL=y
-CONFIG_DEVFREQ_THERMAL=y
CONFIG_ROCKCHIP_THERMAL=y
CONFIG_WATCHDOG=y
CONFIG_DW_WATCHDOG=y
@@ -349,7 +348,6 @@ CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk"
CONFIG_MALI_DEBUG=y
CONFIG_MALI_PWRSOFT_765=y
CONFIG_MALI_BIFROST=y
-CONFIG_MALI_BIFROST_DEVFREQ=y
CONFIG_MALI_PLATFORM_NAME="rk"
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
@@ -481,7 +479,6 @@ CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_PVTM=y
CONFIG_ROCKCHIP_SUSPEND_MODE=y
CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y
-CONFIG_PM_DEVFREQ=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
diff --git a/defconfig b/defconfig
index 1b78a90ffb19..8c9920325618 100644
--- a/defconfig
+++ b/defconfig
@@ -182,6 +182,7 @@ CONFIG_STMMAC_ETH=y
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_REALTEK_PHY=y
CONFIG_ROCKCHIP_PHY=y
CONFIG_RK630_PHY=y
CONFIG_USB_RTL8150=y
@@ -435,14 +436,9 @@ CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_UEVENT=y
CONFIG_USB_CONFIGFS_ACM=y
-CONFIG_USB_CONFIGFS_ECM=y
-CONFIG_USB_CONFIGFS_ECM_SUBSET=y
-CONFIG_USB_CONFIGFS_RNDIS=y
-CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_UVC=y
-CONFIG_USB_ETH=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_TEST=y
diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.c b/drivers/input/touchscreen/gt9xx/gt9xx.c
index 67b1b3451dab..40c2fc940449 100644
--- a/drivers/input/touchscreen/gt9xx/gt9xx.c
+++ b/drivers/input/touchscreen/gt9xx/gt9xx.c
@@ -2102,7 +2102,7 @@ static s8 gtp_request_input_dev(struct i2c_client *client,
input_set_abs_params(ts->input_dev, ABS_X, 0, ts->abs_x_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_Y, 0, ts->abs_y_max, 0, 0);
#endif
- input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0, ts->abs_x_max, 0, 0);
+ input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0, ts->abs_x_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y, 0, ts->abs_y_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
@@ -2654,8 +2654,8 @@ static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id
if (val == 89) {
m89or101 = TRUE;
gtp_change_x2y = TRUE;
- gtp_x_reverse = FALSE;
- gtp_y_reverse = TRUE;
+ gtp_x_reverse = TRUE;
+ gtp_y_reverse = FALSE;
} else if (val == 101) {
m89or101 = FALSE;
gtp_change_x2y = TRUE;
@@ -2670,8 +2670,8 @@ static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id
} else if (val == 9110) {
m89or101 = FALSE;
bgt9110 = TRUE;
- gtp_change_x2y = TRUE;
- gtp_x_reverse = TRUE;
+ gtp_change_x2y = FALSE;
+ gtp_x_reverse = FALSE;
gtp_y_reverse = FALSE;
} else if (val == 9111) {
m89or101 = FALSE;
diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.h b/drivers/input/touchscreen/gt9xx/gt9xx.h
index acc288575691..5812e8f3fbb6 100644
--- a/drivers/input/touchscreen/gt9xx/gt9xx.h
+++ b/drivers/input/touchscreen/gt9xx/gt9xx.h
@@ -40,7 +40,7 @@
//#include <linux/earlysuspend.h>
#define CONFIG_8_9 0
-#define DEBUG_SWITCH 0
+#define DEBUG_SWITCH 1
//***************************PART1:ON/OFF define*******************************
#define GTP_CUSTOM_CFG 0
@@ -53,7 +53,7 @@
#define GTP_X_REVERSE_ENABLE 1
#define GTP_Y_REVERSE_ENABLE 0
#endif
-#define GTP_DRIVER_SEND_CFG 1
+#define GTP_DRIVER_SEND_CFG 0
#define GTP_HAVE_TOUCH_KEY 0
#define GTP_POWER_CTRL_SLEEP 0
@@ -67,7 +67,7 @@
#define GTP_HEADER_FW_UPDATE 0 // auto update fw by gtp_default_FW in gt9xx_firmware.h, function together with GTP_AUTO_UPDATE
#define GTP_AUTO_UPDATE_CFG 0 // auto update config by .cfg file, function together with GTP_AUTO_UPDATE
-#define GTP_COMPATIBLE_MODE 1 /* compatible with GT9XXF */
+#define GTP_COMPATIBLE_MODE 0 /* compatible with GT9XXF */
#define GTP_CREATE_WR_NODE 0
#define GTP_ESD_PROTECT 0 // esd protection with a cycle of 2 seconds
@@ -78,8 +78,8 @@
#define GTP_GESTURE_WAKEUP 0 // gesture wakeup
#define GTP_DEBUG_ON 1
-#define GTP_DEBUG_ARRAY_ON 0
-#define GTP_DEBUG_FUNC_ON 0
+#define GTP_DEBUG_ARRAY_ON 1
+#define GTP_DEBUG_FUNC_ON 1
/* init use fixed clk num */
/* if open, u8 p_main_clk[6] = {69,69,69,69,69,167}; */
@@ -220,21 +220,22 @@ extern u16 total_len;
//WGJ10187_GT9271_Config_20140623_104014_0X41.cfg
#define CTP_CFG_GROUP1 {\
- 0x41,0x80,0x07,0xB0,0x04,0x0A,0x05,0x00,0x01,0x08,0x28,0x0F,0x50,0x32,0x03, \
- 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8F,0x2F,0x99, \
- 0x2B,0x2D,0x31,0x0D,0x00,0x00,0x00,0x01,0x03,0x1D,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x55,0x94,0xC5,0x02,0x07,0x00,0x00,0x00, \
- 0x8C,0x26,0x00,0x7B,0x2D,0x00,0x6C,0x36,0x00,0x61,0x41,0x00,0x58,0x4E,0x00, \
- 0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x05,0x06,0x07,0x08,0x09, \
- 0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x14,0x15,0x16,0x17,0xFF,0xFF,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x13,0x12,0x11,0x10,0x0F,0x0D,0x0C, \
- 0x0A,0x08,0x07,0x06,0x04,0x02,0x00,0x19,0x1B,0x1C,0x1E,0x1F,0x20,0x21,0x22, \
- 0x23,0x24,0x25,0x26,0x27,0x28,0x29,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, \
- 0x00,0x00,0x00,0x00,0xB5,0x01 \
+ 0x60,0x20,0x03,0x00,0x05,0x0A,0x05,0x00,0x01,0xC2,0x1F,0x05,0x4B,\
+ 0x37,0x03,0x00,0x00,0x00,0x1F,0x00,0x23,0x22,0x04,0x19,0x17,0x20,\
+ 0x14,0x93,0x33,0xCC,0x1C,0x1E,0x0A,0x1A,0x53,0x00,0x00,0x9B,0x33,\
+ 0x1C,0x17,0x1A,0x1C,0x90,0x83,0x23,0x46,0x3C,0x0C,0x08,0x11,0x14,\
+ 0x50,0x94,0xC0,0x52,0x14,0x0F,0x00,0x04,0xCB,0x17,0x00,0xAA,0x1E,\
+ 0xA6,0x91,0x28,0x00,0x83,0x35,0x00,0x7D,0x46,0x00,0x7D,0x00,0x00,\
+ 0x00,0x00,0xF0,0x50,0x32,0xFF,0xFF,0x07,0x22,0x22,0x66,0x03,0x54,\
+ 0x55,0x21,0x42,0x00,0xFF,0x7D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,\
+ 0x00,0x00,0x00,0x00,0xA0,0x00,0x32,0x19,0x17,0x16,0x15,0x14,0x13,\
+ 0x12,0x11,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,\
+ 0x05,0x04,0x03,0x02,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x29,\
+ 0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1B,\
+ 0x19,0x18,0x17,0x16,0x15,0x13,0x12,0x11,0x10,0x0F,0x00,0x01,0x02,\
+ 0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0E,0xFF,0xFF,\
+ 0xFF,0xFF,0xFB,0x01\
}
-
// TODO: define your config for Sensor_ID == 1 here, if needed
#define CTP_CFG_GROUP2 {\
}
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index 21f40747f28b..2b4791f6ecea 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -127,6 +127,29 @@ config DWMAC_ROCKCHIP
This selects the Rockchip RK3288 SoC glue layer support for
the stmmac device driver.
+config DWMAC_RK_AUTO_DELAYLINE
+ bool "Auto search rgmii delayline"
+ default DWMAC_ROCKCHIP
+ depends on DWMAC_ROCKCHIP
+ help
+ Auto search suitable rgmii delayline at first boot, and save it
+ at vendor storage if success.
+
+config DWMAC_RK_AUTO_DELAYLINE_RAPID_SEARCH
+ bool "Rapid search"
+ default DWMAC_RK_AUTO_DELAYLINE
+ depends on DWMAC_RK_AUTO_DELAYLINE
+ help
+ The delaylines are halted as soon as they become available, rather
+ than choosing the median value after all scans.
+
+config DWMAC_RK_DELAYLINE_SCAN_STEP
+ hex "Auto search rgmii delayline step"
+ default 0x1
+ depends on DWMAC_ROCKCHIP
+ help
+ The step of the auto search.
+
config DWMAC_ROCKCHIP_TOOL
bool "Rockchip dwmac tool support"
depends on DWMAC_ROCKCHIP
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
index 46633a665f7e..5b688501e2bd 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
@@ -99,7 +99,8 @@ struct dwmac_rk_lb_priv {
#define STMMAC_ALIGN(x) __ALIGN_KERNEL(x, SMP_CACHE_BYTES)
#define MAX_DELAYLINE 0x7f
-#define SCAN_STEP 0x5
+//#define SCAN_STEP 0x5
+#define SCAN_STEP CONFIG_DWMAC_RK_DELAYLINE_SCAN_STEP
#define SCAN_VALID_RANGE 0xA
#define DWMAC_RK_TEST_PKT_SIZE (sizeof(struct ethhdr) + sizeof(struct iphdr) + \
@@ -1452,3 +1453,54 @@ int dwmac_rk_remove_loopback_sysfs(struct device *device)
return 0;
}
+
+#ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE
+int dwmac_rk_search_rgmii_delayline(struct stmmac_priv *priv)
+{
+ struct dwmac_rk_lb_priv *lb_priv;
+ int phy_iface = dwmac_rk_get_phy_interface(priv);
+ unsigned char delayline[2];
+ int ret;
+
+ if (phy_iface != PHY_INTERFACE_MODE_RGMII &&
+ phy_iface != PHY_INTERFACE_MODE_RGMII_ID)
+ return 0;
+
+ memset(delayline, 0x0, sizeof(delayline));
+ ret = rk_vendor_read(LAN_RGMII_DL_ID, delayline, 2);
+ if (ret == 2 &&
+ dwmac_rk_delayline_is_valid(delayline[0], delayline[1])) {
+ pr_info("Read rgmii delayline from vendor: tx = 0x%02x, rx = 0x%02x\n",
+ delayline[0], delayline[1]);
+ dwmac_rk_set_rgmii_delayline(priv, delayline[0], delayline[1]);
+
+ return 0;
+ }
+
+ lb_priv = kzalloc(sizeof(*lb_priv), GFP_KERNEL);
+ if (!lb_priv)
+ return -ENOMEM;
+
+#ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE_RAPID_SEARCH
+ lb_priv->sysfs = 0;
+#else
+ lb_priv->sysfs = 1;
+#endif
+ lb_priv->type = LOOPBACK_TYPE_PHY;
+ lb_priv->speed = LOOPBACK_SPEED1000;
+ lb_priv->scan = 1;
+
+ ret = dwmac_rk_loopback_run(priv, lb_priv);
+ if (!ret) {
+ delayline[0] = lb_priv->final_tx;
+ delayline[1] = lb_priv->final_rx;
+ if (!rk_vendor_write(LAN_RGMII_DL_ID, delayline, 2))
+ /* write tx/rx delayline back if loopback okay */
+ dwmac_rk_set_rgmii_delayline(priv, lb_priv->final_tx,
+ lb_priv->final_rx);
+ }
+
+ kfree(lb_priv);
+ return ret;
+}
+#endif
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
index 1eaa1f8bdbe2..264e2d3d833c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
@@ -188,6 +188,11 @@ struct stmmac_priv {
void __iomem *mmcaddr;
void __iomem *ptpaddr;
+ #ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE
+ bool delayline_scanned;
+ struct delayed_work scan_dwork;
+#endif
+
#ifdef CONFIG_DEBUG_FS
struct dentry *dbgfs_dir;
struct dentry *dbgfs_rings_status;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 7ff658739cf3..6c806acedc3d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -54,7 +54,7 @@
#include "dwmac1000.h"
#include "dwxgmac2.h"
#include "hwif.h"
-
+#include "dwmac-rk-tool.h"
#define STMMAC_ALIGN(x) ALIGN(ALIGN(x, SMP_CACHE_BYTES), 16)
#define TSO_MAX_BUFF_SIZE (SZ_16K - 1)
@@ -2690,6 +2690,12 @@ static int stmmac_open(struct net_device *dev)
stmmac_enable_all_queues(priv);
netif_tx_start_all_queues(priv->dev);
+#ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE
+ if (!priv->delayline_scanned) {
+ priv->delayline_scanned = true;
+ schedule_delayed_work(&priv->scan_dwork, msecs_to_jiffies(6000));
+ }
+#endif
return 0;
@@ -4265,6 +4271,14 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
return 0;
}
+#ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE
+static void stmmac_scan_delayline_dwork(struct work_struct *work)
+{
+ struct stmmac_priv *priv = container_of(work, struct stmmac_priv,
+ scan_dwork.work);
+ dwmac_rk_search_rgmii_delayline(priv);
+};
+#endif
/**
* stmmac_dvr_probe
@@ -4458,6 +4472,9 @@ int stmmac_dvr_probe(struct device *device,
netdev_warn(priv->dev, "%s: failed debugFS registration\n",
__func__);
#endif
+#ifdef CONFIG_DWMAC_RK_AUTO_DELAYLINE
+ INIT_DELAYED_WORK(&priv->scan_dwork, stmmac_scan_delayline_dwork);
+#endif
return ret;
diff --git a/logo.bmp b/logo.bmp
old mode 100755
new mode 100644
index 6eadb944eab6..f86203d0797e
Binary files a/logo.bmp and b/logo.bmp differ
diff --git a/logo_kernel.bmp b/logo_kernel.bmp
index 35ec76e69a45..f86203d0797e 100755
Binary files a/logo_kernel.bmp and b/logo_kernel.bmp differ


评论