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

湖北公司网站备案严格吗263企业邮箱手机版登录

湖北公司网站备案严格吗,263企业邮箱手机版登录,做网站需要什么样的电脑配置,单业网站建设本篇记录在友善之臂 mini2440 平台上挂载I2C接口触摸屏的驱动开发过程。内核版本linux-2.6.32.2, 平台是ARM9 S3C2440I2C接口的触摸屏如上篇 Linux的I2C驱动体系结构讲述http://www.lupaworld.com/273398/viewspace-204237.html要挂载新的I2C设备#xff0c;需要实现3部分I2C接口的触摸屏如上篇 Linux的I2C驱动体系结构讲述http://www.lupaworld.com/273398/viewspace-204237.html要挂载新的I2C设备需要实现3部分1) 适配器的硬件驱动内核中已经实现mini2440,i2c适配器驱动可以在如下目录i2c-s3c2410.c中看到相关代码linux-2.6.32.2/drivers/i2c/busses/i2c-s3c2410.c 2) I2C 设配器的algorithm同样在inux-2.6.32.2/drivers/i2c/busses/i2c-s3c2410.c文件中实现。以上两部分无须做任何更改3) I2C设备驱动可以以linux-2.6.32.2/drivers/input/touchscreen/migor_ts.c为例分析如下//-------------------------------------------------------------------//#include linux/module.h#include linux/kernel.h#include linux/input.h#include linux/interrupt.h#include asm/io.h#include linux/i2c.h#include linux/timer.h#include linux/delay.h/*resolution definion according to touch screen */#define MIN_X_COORDINATE    0#define MAX_X_COORDINATE    1024    #define MIN_Y_COORDINATE    0#define MAX_Y_COORDINATE    768/* touch screen data structure */struct i2c_ts_priv {struct i2c_client *client;struct input_dev *input;struct delayed_work work;int irq;};static void i2c_ts_poscheck(struct work_struct *work){struct i2c_ts_priv *priv container_of(work, struct i2c_ts_priv, work.work);/* buffer for storing data */char buf[6];int number;int xpos, ypos;memset(buf, 0, sizeof(buf));/* Now do Page Read */if (i2c_master_recv(priv-client, buf,6) ! 6) {dev_err(priv-client-dev, Unable to read i2c page\n);goto out;}/* convert coordinate */number buf[0]0x07;xpos ((buf[3] 8) | buf[2]);ypos ((buf[5] 8) | buf[4]);/* report input event */if ((number ! 0) (xpos ! 0) (ypos ! 0)) {input_report_key(priv-input, BTN_TOUCH, 1);input_report_abs(priv-input, ABS_X, xpos);input_report_abs(priv-input, ABS_Y, ypos);input_sync(priv-input);} else if (number 0) {input_report_key(priv-input, BTN_TOUCH, 0);input_sync(priv-input);}out:enable_irq(priv-irq);}/* read finger numbers and coordinate and report input event */static irqreturn_t i2c_ts_isr(int irq, void *dev_id){struct i2c_ts_priv *priv dev_id;/* disable irq */disable_irq_nosync(irq);schedule_delayed_work(priv-work, HZ/100);    return IRQ_HANDLED;}static int i2c_ts_open(struct input_dev *dev){return 0;}static void i2c_ts_close(struct input_dev *dev){}static int i2c_ts_probe(struct i2c_client *client,const struct i2c_device_id *idp){struct i2c_ts_priv *priv;struct input_dev *input;int error;char buf[2];    priv kzalloc(sizeof(*priv), GFP_KERNEL);if (!priv) {dev_err(client-dev, failed to allocate driver data\n);error -ENOMEM;goto err0;}dev_set_drvdata(client-dev, priv);input input_allocate_device();if (!input) {dev_err(client-dev, Failed to allocate input device.\n);error -ENOMEM;goto err1;}input-evbit[0] BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);input-keybit[BIT_WORD(BTN_TOUCH)] BIT_MASK(BTN_TOUCH);input_set_abs_params(input, ABS_X, MIN_X_COORDINATE, MAX_X_COORDINATE, 0, 0);input_set_abs_params(input, ABS_Y, MIN_Y_COORDINATE, MAX_Y_COORDINATE, 0, 0);input-name client-name;input-id.bustype BUS_I2C;input-dev.parent client-dev;input-open i2c_ts_open;input-close i2c_ts_close;input_set_drvdata(input, priv);priv-client client;priv-input input;INIT_DELAYED_WORK(priv-work, i2c_ts_poscheck);priv-irq client-irq;error input_register_device(input);if (error)goto err1;error request_irq(priv-irq, i2c_ts_isr, IRQF_TRIGGER_FALLING,client-name, priv);if (error) {dev_err(client-dev, Unable to request touchscreen IRQ.\n);goto err2;}device_init_wakeup(client-dev,1);return 0;err2:input_unregister_device(input);input NULL; /* so we dont try to free it below */err1:input_free_device(input);kfree(priv);err0:dev_set_drvdata(client-dev, NULL);return error;}static int i2c_ts_remove(struct i2c_client *client){struct i2c_ts_priv *priv dev_get_drvdata(client-dev);free_irq(priv-irq, priv);input_unregister_device(priv-input);kfree(priv);dev_set_drvdata(client-dev, NULL);return 0;}static int i2c_ts_suspend(struct i2c_client *client, pm_message_t mesg){struct i2c_ts_priv *priv dev_get_drvdata(client-dev);if(device_may_wakeup(client-dev))enable_irq_wake(priv-irq);return 0;}static int i2c_ts_resume(struct i2c_client *client){struct i2c_ts_priv *priv dev_get_drvdata(client-dev);if(device_may_wakeup(client-dev))disable_irq_wake(priv-irq);return 0;}static const struct i2c_device_id i2c_ts_id[] {{ i2c-ts, 0 },{ }};MODULE_DEVICE_TABLE(i2c, i2c_ts_id);static struct i2c_driver i2c_ts_driver {.driver {.name i2c-ts,},.probe i2c_ts_probe,.remove i2c_ts_remove,.suspend i2c_ts_suspend,.resume i2c_ts_resume,.id_table i2c_ts_id,};static int __init i2c_ts_init(void){return i2c_add_driver(i2c_ts_driver);}static void __exit i2c_ts_exit(void){i2c_del_driver(i2c_ts_driver);}MODULE_DESCRIPTION(i2c Touchscreen driver);MODULE_AUTHOR(ALlen allen.p.wanggmail.com);MODULE_LICENSE(GPL);module_init(i2c_ts_init);module_exit(i2c_ts_exit);4).实现如上步骤后还需要创建和配置I2C 设备,设置文件位于linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c中添加如下代码................................................../* I2C touch screen devices. *//* bus configuration */static struct s3c2410_platform_i2c i2c_touchscreen_cfg __initdata {.flags        0,.slave_addr    0x5c,.frequency    100*1000,.sda_delay    2,};/* i2c device name is i2c_ts, address is 0x5c, interrupt is eint20 */static struct i2c_board_info touchscreen_i2c_devs[] __initdata {{I2C_BOARD_INFO(i2c-ts, 0x5c),.irq    IRQ_EINT20,},};...................................................static void __init mini2440_machine_init(void){................................................../* i2c touch screen devices */s3c_i2c0_set_platdata(i2c_touchscreen_cfg);i2c_register_board_info(0, touchscreen_i2c_devs,  ARRAY_SIZE(touchscreen_i2c_devs));...................................................}此处I2C_BOARD_INFO(i2c-ts,0x5c), “i2c-ts” 要和i2c设备驱动中i2c_ts_id一致。才能保证i2c设备驱动成功加载。
http://www.sadfv.cn/news/78664/

相关文章:

  • 江门网站推广网页设计市场价
  • 为企业开发网站网页设计工资怎么样
  • 手机能用的网站流程图
  • asp做的网站数据库在哪里wordpress中front-page
  • 郑州企业网站排名优化自己搭建云手机服务器
  • 哪个网站可以免费做网页制作网架厂家
  • 企业的网站用vue做的买了个域名 如何建网站
  • 云商城是什么网站加载优化
  • 上海网站建设在哪里郓城那家网站做的好
  • 开发一个网站大概多少钱重庆 建网站
  • 安徽太基建设官方网站成都品牌形象设计公司
  • 用个人的信息备案网站吗手机网站建设需要多少钱
  • 公司做网站的费用怎么做账网站建设冖金手指花总十四
  • 深圳网站开发公网站上添加图片的原则
  • 网站建设及空间推进门户网站建设 用好用活
  • 网站开发工程师面试问题wordpress 添加备案信息
  • 婚庆设备租赁网站源码陕西建设执业注册中心网站
  • 东莞企业网站咨询wordpress导航站主题
  • 广东微信网站制作价格东莞房价2022最新房价
  • 做网站的公司都有哪些岗位常见的旅游网络营销方式
  • 常州做网站价格邯郸求职信息网
  • 微信号 网站模板机械加工网站模板
  • 电子商务网站建设与电子支付网络营销的三种方式
  • 家里面的服务器可以做网站吗汕头市建设信息网
  • 前端网站推荐python wordpress采集器
  • 网站开发工程师岗位概要成都设计公司排行
  • 校园网站建设可行性分析四川建设发展股份有限公司网站
  • 项目进度管理软件app优化关键词排名的工具
  • 网站开发实例模板wordpress 固定链接插件
  • 网站栏目类型模板免费的ppt软件