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 可以控制软件(一般指服务)的启动、关闭、开机自启动 能被systemctl 管理的软件,一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件,如果 自动注册了 可被systemctl 控制第三方软件,如果没有自动…...
【技巧】通过 CMD 走代理下载 Vue
通过 CMD 走代理下载 Vue 在学习或者工作中,有时上网走的是代理模式,就是在浏览器里面配置代理服务的那种。后来在下载 Vue 组件的时候显示请求超时。此时才发先,浏览器代理只能在浏览器里生效,cmd 中不生效,那该怎么办…...
VSCode C/C++多文件编译配置
多文件编译备忘,带注释的地方都需要注意!!! launch.json文件 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: 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报文发送需要多长时间,下述文章里我们会首先计算下Can分别对应的字节数,再根据传…...
【phaser微信抖音小游戏开发002】hello world!
执行效果: 将以下代码文本内容,放入到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种组网技术,你会了吗?
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、VLAN技术 1、VLAN是什么? 2、VLAN的作用 ①提高网络安全性 ②提高了网络的灵活性性 ③增强了网络的健壮性 二、D…...
webpack中文文档
基本安装 首先我们创建一个目录,初始化 npm,然后 在本地安装 webpack,接着安装 webpack-cli(此工具用于在命令行中运行 webpack): mkdir webpack-demo cd webpack-demo npm init -y npm install webpack …...
【Linux指令篇】--- Linux常用指令汇总(克服指令繁杂问题)
文章目录 前言🌟一、Linux基本指令🌟二、ls指令🌏2.1.语法:🌏2.2.功能:🌏2.3.常用选项: 🌟三、pwd指令🌏3.1.语法:🌏3.2.功能…...
硬盘的分类
目前常见的硬盘种类主要有以下2种: 机械硬盘(HDD) 机械硬盘(HDD)是一种利用旋转磁盘和读写头来存储和访问数据的存储设备。它由磁盘、读写头、电机和控制电路等组成,磁盘通常是一种铝合金或玻璃材质的圆盘&…...
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 题目答案 题目 请编写一个十进制计数器模块,当mode信号为1,计数器输出信号递增,当mode信号为0,计数器输出信号递减。每次到达0,给出指示信号zero。模块的接口信号图如下: 模块的…...
4-7月预测价差方向准确率统计
月度 预测价差方向准确率 4月 33.6% 5月 28.4% 6月 25.7% 7月 34.2% 4-7月合计 30.6% 准确率计算公式: 其中, D:价差方向预测值(1:实时>日前,0:实时日前,-1:实时<日前&#x…...
《Vue3+Typescript》一个简单的日历组件实现
这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 目录 一、…...
第一章 修学旅行
前言 翻了翻文章回收站,好怀念靖和阳的故事啊(航和颜:还有我们别忘啦) 不知道还有没有人记得以前的故事呢…… 那么,我就开始写啦。这是关于密码学的一篇文章,一共2696字:D(累死我…...
如果你也能认识并使用这个低代码平台,那真的是泰酷辣——iVX低代码平台
低代码技术起源是比较悠久的了,尤其是在近些年,随着技术的演进,低代码平台逐渐成为热门趋势。这些平台通过简化应用程序开发流程,减少手动编码,使非专业开发人员也能快速构建复杂应用。为我们的敏捷开发和高效生产贡献…...
uC-OS2 V2.93 STM32L476 移植:系统移植篇
前言 上一篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG STM32L476RG 的 裸机工程,并且下载了 uC-OS2 V2.93 的源码,接下来,开始系统移植 开发环境 win10 64位 Keil uVision5,MDK V5.36 uC-OS2 V2.93 开发板:NUC…...
gitee修改代码提交操作步骤说明
一,简介 本文主要介绍如何从gitee仓库下载文件,本地修改,本地提交,然后再push到远程服务器的操作步骤。供参考,欢迎一起讨论交流~ 二,操作步骤 总的操作步骤分为以下几步 1,远程服务器下载文…...
物联网|可变参数的使用技巧|不一样的点灯实验|访问外设的寄存器|操作寄存器实现点灯|硬件编程的基本流程-学习笔记(11)
文章目录 可变参数的使用技巧第三阶段-初级实验Lesson5:不一样的点灯实验---学习I/O的输出 ☆点灯的电路图分析1 一起看看点灯的电路图Tip1:另一种点灯的电路Tip1:如何访问外设的寄存器2 STM32F407中操作GPIO的方法 通过直接操作寄存器实现点灯实验Tip1:硬件编程的基本流程 2代…...
AutoGPT失控事件:烧毁$1M云账单的灾难复盘
失控的智能代理在生成式AI技术加速落地的浪潮中,AutoGPT凭借其自主任务分解与执行的能力,被誉为迈向通用人工智能的关键一步。它不再是一个被动的问答机器,而是能主动思考、调用工具、不断逼近目标的智能代理。然而,在2025年末&am…...
Reloadium与Django集成:实现视图热重载和页面自动刷新
Reloadium与Django集成:实现视图热重载和页面自动刷新 【免费下载链接】reloadium Hot Reloading, Profiling and AI debugging for Python 项目地址: https://gitcode.com/gh_mirrors/re/reloadium Reloadium是一个强大的Python开发工具,为你的I…...
【MobaXterm进阶】SSH连接稳定性优化:Keepalive与超时设置详解
1. 为什么SSH连接会频繁断开? 很多朋友在用MobaXterm远程连接服务器时都遇到过这样的困扰:明明连接得好好的,过一会儿就莫名其妙断开了。特别是当你正在执行一个耗时较长的任务时,突然中断简直让人抓狂。这种情况在家庭版用户中尤…...
Plumbum部署指南:生产环境配置、安全与监控完整方案
Plumbum部署指南:生产环境配置、安全与监控完整方案 【免费下载链接】plumbum Plumbum: Shell Combinators 项目地址: https://gitcode.com/gh_mirrors/pl/plumbum Plumbum作为Python Shell Combinators库,为生产环境提供了强大的命令行执行和远程…...
从零到一实战:基于快马AI生成企业级RESTful API服务器代码
最近在做一个图书管理系统的项目,需要搭建一个完整的RESTful API服务器。作为一个全栈开发者,我决定尝试用InsCode(快马)平台来快速生成服务器代码,没想到效果出奇地好。下面分享下我的实战经验。 项目需求分析 首先明确需要实现的功能&#…...
DeepSeek-OCR-2应用实战:快速提取发票信息,财务效率翻倍
DeepSeek-OCR-2应用实战:快速提取发票信息,财务效率翻倍 1. 财务人的痛点:发票处理的效率黑洞 每个月末,财务部门总要面对这样的场景: 堆积如山的纸质发票需要手工录入电子发票PDF需要逐个打开复制粘贴关键信息&…...
别再只盯着CLIP了!用PaddlePaddle复现VSE++图文互搜模型(附Flickr8k数据集处理全流程)
突破CLIP局限:基于PaddlePaddle的轻量化图文检索实战指南 在当今多模态AI领域,CLIP等大型模型虽然表现出色,但其庞大的参数量和计算需求让许多开发者和企业望而却步。本文将带您探索一种更轻量、更高效的替代方案——VSE模型,并手…...
Legacy-iOS-Kit:让旧设备重获新生的开源解决方案
Legacy-iOS-Kit:让旧设备重获新生的开源解决方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 当你的…...
如何快速搭建抖音批量下载工具:面向初学者的完整指南
如何快速搭建抖音批量下载工具:面向初学者的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...
台式电脑怎么连接打印机 4种方法详细教程
台式电脑连接打印机的方法多种多样,具体选择取决于打印机类型和使用环境。合理选择连接方式,不仅能提高打印效率,还能减少后续使用中的故障问题。下面将详细介绍几种常见的连接方法及操作步骤。 一、通过USB数据线连接 这种方式最为直接常见…...
