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

具体的网站建设做网站时分类标题和分类描述

具体的网站建设,做网站时分类标题和分类描述,深圳高端电商网站建设者,wordpress主题 插件下载失败一#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器#xff0c;如 ILI6480、ILI9341 等#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器如 ILI6480、ILI9341 等采用 I2C 接口。 这些控制器能够支持多点触控并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时控制器将触摸坐标通常是 x 和 y 坐标通过 I2C 总线发送给主机。 二DTS配置 i2c1 {status okay;ilitek41 {compatible tchip,ilitek;reg 0x41;ilitek,irq-gpio gpio7 6 GPIO_ACTIVE_HIGH;ilitek,reset-gpio gpio7 15 GPIO_ACTIVE_HIGH; //修改相对应的gpio参数pinctrl-names default;pinctrl-0 ilitek_gpio_e;status okay;}; };pinctrl {touchscreen {ilitek_gpio_e: ilitek-gpio-e {rockchip,pins 7 6 RK_FUNC_GPIO pcfg_pull_up,7 15 RK_FUNC_GPIO pcfg_pull_up;};}; }; 注一定要对应的I2C bus节点硬件原理图上会有标注。 三驱动文件配置 1. ilitek_lim.c static int ilitek_i2c_probe(struct i2c_client *client,const struct i2c_device_id *id) {int ret 0;int revert_x0;int revert_y0;int revert_x_y0;struct device_node *param_node; #ifdef ILI_UPDATE_FW#ifdef UPDATE_THREADEstruct task_struct *thread_update NULL;#endif #endif#ifdef RECOGNITION_LONGTIME_BUTTON struct task_struct *thread_longtime_button NULL; #endif#ifdef WRITE_2210_CFGstruct task_struct *thread_write_cfg NULL; #endif#if IC2120int i 0; #endif//int i 0;//uint8_t buf[8] {0}; #ifdef DEBUG_NETLINKstruct netlink_kernel_cfg cfg {.groups 0,.input udp_receive,};#endiftp_log_info(Enter ilitek_i2c_probe client-addr 0x%x\n, client-addr);if(!i2c_check_functionality(client-adapter, I2C_FUNC_I2C)){tp_log_err(%s, I2C_FUNC_I2C not support\n, __func__);return -1;}// initialize global variable#ifdef TOOLmemset(dev_ilitek, 0, sizeof(struct dev_data));#endifmemset(i2c, 0, sizeof(struct i2c_data));// initialize mutex object #if LINUX_VERSION_CODE KERNEL_VERSION(2, 6, 37)init_MUTEX(i2c.wr_sem); #elsesema_init(i2c.wr_sem,1); #endifi2c.wr_sem.count 1;mutex_init((i2c.irq_mutex));i2c.report_status 1;i2c.client client;#ifdef CONFIG_ENABLE_REGULATOR_POWER_ONret ilitek_get_regulator();if (ret) {tp_log_err(%s, ilitek_get_regulator failed\n, __func__);return ret;}ret ilitek_power_on(true);if (ret) {tp_log_err(%s, power on failed\n, __func__);return ret;}#endif//ret ilitek_request_io_port(client);if (ret ! 0){tp_log_err(%s, io error, __func__);return ret;}param_node of_find_node_by_path(/smdt_param);if (!param_node){printk(gt9xx wxl error smdt_param not node!!!\n);}of_property_read_u32(param_node, ctp_revert_x_flag, revert_x);of_property_read_u32(param_node, ctp_revert_y_flag, revert_y);of_property_read_u32(param_node, ctp_exchange_x_y_flag, revert_x_y);if(revert_x 1 )REVERT_X 1;else REVERT_X 0;if(revert_y 1 )REVERT_Y 1;else REVERT_Y 0;if(revert_x_y 1 )EXCHANG_XY 1;else EXCHANG_XY 0;i2c.client-irq gpio_to_irq(i2c.irq_gpio);tp_log_info(ilitek i2c.irq_gpio %d, i2c.client-irq %d\n, i2c.irq_gpio, i2c.client-irq);i2c.valid_i2c_register 1;#if 1ilitek_reset(i2c.reset_gpio);#endif#if !IC2120mdelay(200);#elsefor (i 0; i 30; i ) {ret ilitek_poll_int();tp_log_info(ilitek int status %d\n, ret);if (ret 0) {break;}else {mdelay(5);}}if (i 30) {#ifdef ILI_UPDATE_FWtp_log_info(ilitek reset but int not pull low so driver_upgrade_flag true\n);driver_upgrade_flag true;#endif}else #endif{#if 0msleep(2000);for (i 0; i 127; i) {//buf[0] 0x10;client-addr i;ret ilitek_i2c_write_and_read(i2c.client, buf, 0, 10, buf, 4);tp_log_info(ilitek %s, write 0x10 read buf %X, %X, %X\n, __func__, buf[0], buf[1], buf[2]);if (ret 0) {mdelay(5);}else {tp_log_info(ilitek %s, client-addr 0x%X, read buf %X, %X, %X\n, __func__, client-addr, buf[0], buf[1], buf[2]);tp_log_info(ilitek %s, client-addr 0x%X, read buf %X, %X, %X\n, __func__, client-addr, buf[0], buf[1], buf[2]);tp_log_info(ilitek %s, client-addr 0x%X, read buf %X, %X, %X\n, __func__, client-addr, buf[0], buf[1], buf[2]);tp_log_info(ilitek %s, client-addr 0x%X, read buf %X, %X, %X\n, __func__, client-addr, buf[0], buf[1], buf[2]);tp_log_info(ilitek %s, client-addr 0x%X, read buf %X, %X, %X\n, __func__, client-addr, buf[0], buf[1], buf[2]);break;}}#endif// read touch parameterret ilitek_i2c_read_tp_info();if(ret 0){tp_log_err(ilitek read tp info fail free gpio\n);if (gpio_is_valid(i2c.irq_gpio)) {gpio_free(i2c.irq_gpio);}if (gpio_is_valid(i2c.reset_gpio)) {gpio_free(i2c.reset_gpio);}return ret;}} #ifdef CLOCK_INTERRUPT #ifdef REPORT_THREADi2c.thread kthread_run(ilitek_i2c_touchevent_thread, NULL, ilitek_i2c_thread);if(i2c.thread (struct task_struct*)ERR_PTR){i2c.thread NULL;tp_log_err(%s, kthread create, error\n, __func__);} #endif #endifilitek_handle_irqorpolling();i2c.input_dev input_allocate_device();if(i2c.input_dev NULL){tp_log_err(%s, allocate input device, error\n, __func__);return -1;}ilitek_set_input_param(i2c.input_dev, i2c.max_tp, i2c.max_x, i2c.max_y);ret input_register_device(i2c.input_dev);if(ret){tp_log_err(%s, register input device, error\n, __func__);return ret;}i2c.valid_input_register 1;tp_log_info(%s, register input device, success\n, __func__); #ifdef ILI_UPDATE_FW#ifndef UPDATE_THREADE{update_wait_flag 1;ret ilitek_upgrade_firmware();if(ret ILITEK_UPDATE_OK) {tp_log_info(update end\n);}else if(ret ILITEK_I2C_TRANSFER_ERR) {tp_log_info(i2c communication error\n);}if(i2c.reset_request_success){ilitek_reset(i2c.reset_gpio);}// read touch parameterretilitek_i2c_read_tp_info();if(ret 0){tp_log_err(ilitek_i2c_read_tp_info err\n);return ret;}update_wait_flag 0;#if 1input_unregister_device(i2c.input_dev);#if 1i2c.input_dev input_allocate_device();if(i2c.input_dev NULL){tp_log_err(%s, allocate input device, error\n, __func__);return -1;}#endif// register input device//memset(i2c.input_dev, 0, sizeof(struct input_dev));// register input deviceilitek_set_input_param(i2c.input_dev, i2c.max_tp, i2c.max_x, i2c.max_y);ret input_register_device(i2c.input_dev);if(ret){tp_log_err(%s, register input device, error\n, __func__);return ret;}tp_log_info(%s, register input device, success\n, __func__);#endif}#else{thread_update kthread_run(ilitek_i2c_update_thread, NULL, ilitek_i2c_updatethread);if(thread_update (struct task_struct*)ERR_PTR){thread_update NULL;tp_log_err(%s,thread_update kthread create, error\n, __func__);}}#endif #endif#ifdef WRITE_2210_CFGthread_write_cfg kthread_run(ilitek_i2c_write_cfg_thread, NULL, ilitek_i2c_write_cfg_thread);if(thread_write_cfg (struct task_struct*)ERR_PTR){thread_write_cfg NULL;tp_log_err(%s,thread_write_cfg kthread create, error\n, __func__);} #endif#ifdef RECOGNITION_LONGTIME_BUTTONthread_longtime_button kthread_run(ilitek_i2c_check_longtime_button_thread, NULL, ilitek_i2c_check_longtime_button_thread);if(thread_longtime_button (struct task_struct*)ERR_PTR){thread_longtime_button NULL;tp_log_err(%s,thread_longtime_button kthread create, error\n, __func__);} #endif#ifdef GESTUREilitek_system_resume 1;input_set_capability(i2c.input_dev, EV_KEY, KEY_POWER);input_set_capability(i2c.input_dev, EV_KEY, KEY_W);input_set_capability(i2c.input_dev, EV_KEY, KEY_LEFT);input_set_capability(i2c.input_dev, EV_KEY, KEY_RIGHT);input_set_capability(i2c.input_dev, EV_KEY, KEY_UP);input_set_capability(i2c.input_dev, EV_KEY, KEY_DOWN);input_set_capability(i2c.input_dev, EV_KEY, KEY_O);input_set_capability(i2c.input_dev, EV_KEY, KEY_C);input_set_capability(i2c.input_dev, EV_KEY, KEY_E);input_set_capability(i2c.input_dev, EV_KEY, KEY_M); #endif#ifdef TOOLret create_tool_node(); #endif#ifdef SENSOR_TEST #ifdef SYS_ATTR_FILEilitek_sensor_test_init(); #endif #endif#ifdef HALL_CHECK #if HALL_CHECK HALL_CHECK_OTHERilitek_hall_check_init(); #elif HALL_CHECK HALL_CHECK_HWilitek_hall_check_hw_init(); #endif //end of HALL_CHECK #endifReport_Flag0;#ifdef PLAT_ROCKCHIPi2c.tp.tp_resume ilitek_i2c_late_resume;i2c.tp.tp_suspend ilitek_i2c_early_suspend;tp_register_fb(i2c.tp); #endif#ifdef ILITEK_ESD_CHECKINIT_DELAYED_WORK(esd_work, ilitek_touch_esd_func);esd_wq create_singlethread_workqueue(esd_wq); if (!esd_wq) {return -ENOMEM;}queue_delayed_work(esd_wq, esd_work, delay); #endif #ifdef WRITE_2210_CFGret sysfs_create_group(client-dev.kobj, ilitek_test_attribute_group);if (ret) {dev_err(client-dev, failed to create sysfs attributes: %d\n,ret);return ret;} #endif #ifdef DEBUG_NETLINK//netlink_sock netlink_kernel_create(init_net, 21, 0,udp_receive, NULL, THIS_MODULE);netlink_sock netlink_kernel_create(init_net, 21, cfg);#endifdevice_init_wakeup(client-dev, 1);return 0; }ilitek_i2c_probe 函数是 I2C 设备的初始化函数在设备被识别和加载驱动时调用。它的主要职责包括 初始化设备根据 I2C 客户端信息和设备 ID 来配置和初始化设备。分配所需资源如内存、GPIO 等。设置中断处理程序如适用为设备配置中断。注册输入设备根据设备类型设置输入设备的相关参数。 2. ilitek_ts.h ilitek_ts.h用于定义驱动相关的数据结构、常量、函数原型以及其他必要的包含。该头文件的内容用于抽象和管理与 Ilitek 触摸屏控制器之间的接口。 3. ILI25110CN080O0003_CRC.ili ILI25110CN080O0003_CRC.ili 可能是与 Ilitek 触摸屏控制器 ILI2511 系列相关的文件。 4. 驱动移植 a.将原厂提供的的驱动(ilitek)拷贝到下面的文件夹 ./kernel/drivers/input/touchscreenb. 然后修改 touchscreen 目录下的 Makefile以及Kconfig。这个Makefile中定义的就是要编译哪个平台的触摸屏驱动的。 kernel/drivers/input/touchscreen/Makefile中添加 obj-$(CONFIG_TOUCHSCREEN_ILITEK) ilitek/-------------------------------------------------------- kernel/drivers/input/touchscreen/Kconfig中添加 config TOUCHSCREEN_ILITEKtristate ILITEK touchscreens matched with screen support for rockchip platformdepends on I2C ARCH_ROCKCHIPhelpSay Y here if you have a touchscreen interface using the ILITEKtouchscreen chip on Rockchip platform, and your board-specificinitialization code includes that in its table of IIC devices.If unsure, say N.c. 内核中加载驱动 kernel/arch/arm/configs/rockchip_defconfig中添加 CONFIG_TOUCHSCREEN_ILITEKy四调试 确认 /sys/bus/i2c/devices 下有裝置节点 (-0041) 报点问题 有触摸效果只是坐标 mapping 问题。 X、Y 需要交換。 將 ILITEK_ROTATE_FLAG 设定值由 0 改为 1 或由 1 改为 0。 X、Y 值要做鏡像变化。 將 ILITEK_REVERT_X 或 ILITEK_REVERT_Y 的设定值由 0 改为 1 或由 1 改为 0。 若需要指定显示屏的解析度。 则开放 ILITEK_USE_LCM_RESOLUTION 宏同时將TOUCH_SCREEN_X_MAX 和 TOUCH_SCREEN_Y_MAX 设为正确值。
http://www.dnsts.com.cn/news/224563.html

相关文章:

  • 企业网站建设方案教程网站建设 技术团队
  • 淮安建设银行招聘网站汕头网页搜索排名提升
  • 网站图片设置方法做期货黄金哪个网站信息数据准
  • wordpress 评论顶踩百度seo怎么提高排名
  • 怎么做简单的钓鱼网站宗亲网站开发6
  • 中山网站搜索排名微商分销系统开发
  • 做爰全的网站thinkphp网站优化
  • wordpress的固定链接如何设置网站底部优化字
  • 为什么网站开发这么便宜wordpress仿站视频
  • html网站开发心得网站提示页面设计
  • 江门网站制作软件php企业网站后台管理系统
  • 温州做网站找哪家好为什么不建议学平面设计
  • 河北网站建设与管理主网站怎么做熊掌号优化
  • 一个人做网站时间淘宝流量平台
  • 骨骼型的网站怎么做能上谷歌网站
  • 备案的网站名与公司名称wordpress汽车模版
  • 空中乘务专业简历制作莆田百度seo排名
  • 网站建设推广平台有哪些网页制作与网站建设
  • 一个ip地址做多个网站电商网站建设合同模板
  • 兰州市住房建设局网站个人网页设计排版
  • 易网做的网站后台网站推广 昆明
  • 建筑公司网站背景图江西省上饶市城乡建设网站
  • 网站建设工程属于科技档案吗网络咨询服务公司经营范围
  • 大型网站建设翻译英文学网站建设能赚钱吗
  • 网站怎么做看起来好看给公司做个网页要多少钱
  • 微信推送在哪个网站做如何免费制作小视频
  • 怎么给自己的品牌做网站seo关键词首页排名代发
  • php网站怎么修改后台地址有没有如何做网站的书
  • 那些cps网站做的比较好南京建设网站公司哪家好
  • 马克斯网站建设南宁网站建设王道下拉強