当前位置: 首页 > news >正文

em3288 linux_4.19 lvds+tp调试

一、显示配置
\rk3288_linux4.19\kernel\arch\arm\boot\dts\rk3288-evb-act8846.dtspanel {compatible ="simple-panel";backlight = <&backlight>;bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;enable-gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;enable-delay-ms = <1>;power-supply = <&vcc_lcd>;rockchip,data-mapping = "vesa"; //rgb  closerockchip,data-width = <24>;rockchip,output = "lvds";display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <78000000>;hactive = <1280>;vactive = <800>;hback-porch = <100>;hfront-porch = <18>;vback-porch = <8>;vfront-porch = <6>;hsync-len = <10>;vsync-len = <2>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};port {panel_in_lvds: endpoint {remote-endpoint = <&lvds_out_panel>;};};};	
.............................
&route_lvds {status = "okay";
};&lvds {status = "okay";ports {port@1 {reg = <1>;lvds_out_panel: endpoint {remote-endpoint = <&panel_in_lvds>;};};};
};&lvds_in_vopl {status = "okay";
};&lvds_in_vopb {status = "disabled";
};&backlight {
//	enable-gpios = <&gpio7 RK_PA2 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";
//	pinctrl-0 = <&bl_en>;pwms = <&pwm1 0 1000000 PWM_POLARITY_INVERTED>;
};&pwm1 {status = "okay";
};
二、gt928 配置
\rk3288_linux4.19\kernel\arch\arm\boot\dts\rk3288-evb-act8846.dts&i2c4 {status = "okay";ts@02 {compatible = "goodix,gt9xx";reg = <0x5d>;touch-gpio = <&gpio8 RK_PB1 IRQ_TYPE_LEVEL_LOW>;reset-gpio = <&gpio7 RK_PA6 GPIO_ACTIVE_LOW>;max-x = <1280>;max-y = <800>;};
};
\rk3288_linux4.19\kernel\drivers\input\touchscreen\gt9xx\gt9xx.cstatic void gtp_touch_down(struct goodix_ts_data* ts,s32 id,s32 x,s32 y,s32 w)
{if (gtp_change_x2y)GTP_SWAP(x, y);
+        x = ts->abs_x_max - x; if (!bgt911 && !bgt970) {if (gtp_x_reverse)x = ts->abs_x_max - x;if (gtp_y_reverse)y = ts->abs_y_max - y;}..........................
static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id *id)
{s32 ret = -1;struct goodix_ts_data *ts;u16 version_info;struct device_node *np = client->dev.of_node;
+ //   enum of_gpio_flags rst_flags, pwr_flags;
+ 	enum of_gpio_flags rst_flags;u32 val;printk("%s() start\n", __func__);GTP_DEBUG_FUNC();//do NOT remove these logsGTP_INFO("GTP Driver Version: %s", GTP_DRIVER_VERSION);GTP_INFO("GTP I2C Address: 0x%02x", client->addr);i2c_connect_client = client;if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {GTP_ERROR("I2C check functionality failed.");return -ENODEV;}ts = kzalloc(sizeof(*ts), GFP_KERNEL);if (ts == NULL){GTP_ERROR("Alloc GFP_KERNEL memory failed.");return -ENOMEM;}memset(ts, 0, sizeof(*ts));if (!np) {dev_err(&client->dev, "no device tree\n");return -EINVAL;}
+    
+/*    if (of_property_read_u32(np, "tp-size", &val)) {dev_err(&client->dev, "no max-x defined\n");return -EINVAL;
+    } */
+if (val == 89) {m89or101 = TRUE;gtp_change_x2y = TRUE;gtp_x_reverse = FALSE;gtp_y_reverse = TRUE;} else if (val == 101) {m89or101 = FALSE;gtp_change_x2y = TRUE;gtp_x_reverse = TRUE;gtp_y_reverse = FALSE;} else if (val == 911) {m89or101 = FALSE;bgt911 = TRUE;gtp_change_x2y = TRUE;gtp_x_reverse = FALSE;gtp_y_reverse = TRUE;} else if (val == 9110) {m89or101 = FALSE;bgt9110 = TRUE;gtp_change_x2y = TRUE;gtp_x_reverse = TRUE;gtp_y_reverse = FALSE;} else if (val == 9111) {m89or101 = FALSE;bgt9111 = TRUE;gtp_change_x2y = TRUE;gtp_x_reverse = FALSE;gtp_y_reverse = FALSE;} else if (val == 970) {m89or101 = FALSE;bgt911 = FALSE;bgt970 = TRUE;gtp_change_x2y = FALSE;gtp_x_reverse = FALSE;gtp_y_reverse = TRUE;} else if (val == 910) {m89or101 = FALSE;bgt911 = FALSE;bgt970 = FALSE;bgt910 = TRUE;gtp_change_x2y = TRUE;gtp_x_reverse = FALSE;gtp_y_reverse = TRUE;}ts->tp_regulator = devm_regulator_get(&client->dev, "tp");if (IS_ERR(ts->tp_regulator)) {dev_err(&client->dev, "failed to get regulator, %ld\n",PTR_ERR(ts->tp_regulator));return PTR_ERR(ts->tp_regulator);}ret = regulator_enable(ts->tp_regulator);if (ret < 0)GTP_ERROR("failed to enable tp regulator\n");msleep(20);ts->irq_pin = of_get_named_gpio_flags(np, "touch-gpio", 0, (enum of_gpio_flags *)(&ts->irq_flags));ts->rst_pin = of_get_named_gpio_flags(np, "reset-gpio", 0, &rst_flags);+   //ts->pwr_pin = of_get_named_gpio_flags(np, "power-gpio", 0, &pwr_flags);//ts->tp_select_pin = of_get_named_gpio_flags(np, "tp-select-gpio", 0, &tp_select_flags);if (of_property_read_u32(np, "max-x", &val)) {dev_err(&client->dev, "no max-x defined\n");return -EINVAL;}//ts->abs_x_max = val;if (of_property_read_u32(np, "max-y", &val)) {dev_err(&client->dev, "no max-y defined\n");return -EINVAL;}//ts->abs_y_max = val;if (of_property_read_u32(np, "configfile-num", &val)) {ts->cfg_file_num = 0;} else {ts->cfg_file_num = val;}ts->pendown =PEN_RELEASE;ts->client = client;INIT_WORK(&ts->work, goodix_ts_work_func);ts->client = client;spin_lock_init(&ts->irq_lock);          // 2.6.39 later// ts->irq_lock = SPIN_LOCK_UNLOCKED;   // 2.6.39 & before
#if GTP_ESD_PROTECTts->clk_tick_cnt = 2 * HZ;      // HZ: clock ticks in 1 second generated by systemGTP_DEBUG("Clock ticks for an esd cycle: %d", ts->clk_tick_cnt);  spin_lock_init(&ts->esd_lock);// ts->esd_lock = SPIN_LOCK_UNLOCKED;
#endif

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

em3288 linux_4.19 lvds+tp调试

一、显示配置\rk3288_linux4.19\kernel\arch\arm\boot\dts\rk3288-evb-act8846.dtspanel {compatible "simple-panel";backlight <&backlight>;bus-format <MEDIA_BUS_FMT_RGB666_1X18>;enable-gpios <&gpio1 24 GPIO_ACTIVE_HIGH>;ena…...

Linux 之 systemctl

systemctl 可以控制软件&#xff08;一般指服务&#xff09;的启动、关闭、开机自启动 能被systemctl 管理的软件&#xff0c;一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件&#xff0c;如果 自动注册了 可被systemctl 控制第三方软件&#xff0c;如果没有自动…...

【技巧】通过 CMD 走代理下载 Vue

通过 CMD 走代理下载 Vue 在学习或者工作中&#xff0c;有时上网走的是代理模式&#xff0c;就是在浏览器里面配置代理服务的那种。后来在下载 Vue 组件的时候显示请求超时。此时才发先&#xff0c;浏览器代理只能在浏览器里生效&#xff0c;cmd 中不生效&#xff0c;那该怎么办…...

VSCode C/C++多文件编译配置

多文件编译备忘&#xff0c;带注释的地方都需要注意&#xff01;&#xff01;&#xff01; launch.json文件 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387&quo…...

Autosar通信入门系列05-聊聊一帧Can/CanFD报文发送时间?

本文框架 1. 概述2. 一帧CAN报文发送时间计算3. 一帧CanFD报文的传输时间计算3.1 标准CAN与CANFD两者间的区别3.2 CANFD报文传输时间计算 1. 概述 本篇我们一起看下一帧Can报文发送需要多长时间&#xff0c;下述文章里我们会首先计算下Can分别对应的字节数&#xff0c;再根据传…...

【phaser微信抖音小游戏开发002】hello world!

执行效果&#xff1a; 将以下代码文本内容&#xff0c;放入到game.js中即可。目录结构如下图 import ./js/libs/weapp-adapter import ./js/libs/symbolGameGlobal.window.scrollTo () > { };//防止真机出错 import Phaser from ./js/phaser//引入Phaservar {windowWidth, …...

2023.07.29 驱动开发DAY6

通过epoll实现一个并发服务器 服务器 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/epoll.h…...

网工必须掌握的5种组网技术,你会了吗?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、VLAN技术 1、VLAN是什么&#xff1f; 2、VLAN的作用 ①提高网络安全性 ②提高了网络的灵活性性 ③增强了网络的健壮性 二、D…...

webpack中文文档

基本安装 首先我们创建一个目录&#xff0c;初始化 npm&#xff0c;然后 在本地安装 webpack&#xff0c;接着安装 webpack-cli&#xff08;此工具用于在命令行中运行 webpack&#xff09;&#xff1a; mkdir webpack-demo cd webpack-demo npm init -y npm install webpack …...

【Linux指令篇】--- Linux常用指令汇总(克服指令繁杂问题)

文章目录 前言&#x1f31f;一、Linux基本指令&#x1f31f;二、ls指令&#x1f30f;2.1.语法&#xff1a;&#x1f30f;2.2.功能&#xff1a;&#x1f30f;2.3.常用选项&#xff1a; &#x1f31f;三、pwd指令&#x1f30f;3.1.语法&#xff1a;&#x1f30f;3.2.功能&#xf…...

硬盘的分类

目前常见的硬盘种类主要有以下2种&#xff1a; 机械硬盘&#xff08;HDD&#xff09; 机械硬盘&#xff08;HDD&#xff09;是一种利用旋转磁盘和读写头来存储和访问数据的存储设备。它由磁盘、读写头、电机和控制电路等组成&#xff0c;磁盘通常是一种铝合金或玻璃材质的圆盘&…...

el-upload批量手动上传,并用form表单校验上传文件

手动上传设置:auto-upload"false" <el-formref"formData"class"formWidth":model"formData"label-width"120px":rules"rules"><el-form-itemlabel"数据"class"uploadClass"required…...

牛客网Verilog刷题——VL52

牛客网Verilog刷题——VL52 题目答案 题目 请编写一个十进制计数器模块&#xff0c;当mode信号为1&#xff0c;计数器输出信号递增&#xff0c;当mode信号为0&#xff0c;计数器输出信号递减。每次到达0&#xff0c;给出指示信号zero。模块的接口信号图如下&#xff1a; 模块的…...

4-7月预测价差方向准确率统计

月度 预测价差方向准确率 4月 33.6% 5月 28.4% 6月 25.7% 7月 34.2% 4-7月合计 30.6% 准确率计算公式&#xff1a; 其中&#xff0c; D&#xff1a;价差方向预测值&#xff08;1:实时>日前&#xff0c;0:实时日前&#xff0c;-1&#xff1a;实时<日前&#x…...

《Vue3+Typescript》一个简单的日历组件实现

这是一个没有套路的前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 目录 一、…...

第一章 修学旅行

前言 翻了翻文章回收站&#xff0c;好怀念靖和阳的故事啊&#xff08;航和颜&#xff1a;还有我们别忘啦&#xff09; 不知道还有没有人记得以前的故事呢…… 那么&#xff0c;我就开始写啦。这是关于密码学的一篇文章&#xff0c;一共2696字&#xff1a;D&#xff08;累死我…...

如果你也能认识并使用这个低代码平台,那真的是泰酷辣——iVX低代码平台

低代码技术起源是比较悠久的了&#xff0c;尤其是在近些年&#xff0c;随着技术的演进&#xff0c;低代码平台逐渐成为热门趋势。这些平台通过简化应用程序开发流程&#xff0c;减少手动编码&#xff0c;使非专业开发人员也能快速构建复杂应用。为我们的敏捷开发和高效生产贡献…...

uC-OS2 V2.93 STM32L476 移植:系统移植篇

前言 上一篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG STM32L476RG 的 裸机工程&#xff0c;并且下载了 uC-OS2 V2.93 的源码&#xff0c;接下来&#xff0c;开始系统移植 开发环境 win10 64位 Keil uVision5&#xff0c;MDK V5.36 uC-OS2 V2.93 开发板&#xff1a;NUC…...

gitee修改代码提交操作步骤说明

一&#xff0c;简介 本文主要介绍如何从gitee仓库下载文件&#xff0c;本地修改&#xff0c;本地提交&#xff0c;然后再push到远程服务器的操作步骤。供参考&#xff0c;欢迎一起讨论交流~ 二&#xff0c;操作步骤 总的操作步骤分为以下几步 1&#xff0c;远程服务器下载文…...

物联网|可变参数的使用技巧|不一样的点灯实验|访问外设的寄存器|操作寄存器实现点灯|硬件编程的基本流程-学习笔记(11)

文章目录 可变参数的使用技巧第三阶段-初级实验Lesson5:不一样的点灯实验---学习I/O的输出 ☆点灯的电路图分析1 一起看看点灯的电路图Tip1:另一种点灯的电路Tip1:如何访问外设的寄存器2 STM32F407中操作GPIO的方法 通过直接操作寄存器实现点灯实验Tip1:硬件编程的基本流程 2代…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...