有了之前的real210增加tsc2007支持的经验,这个就简单多了。
1.直接修改board支持文件如下:
41 #ifdef CONFIG_TOUCHSCREEN_TSC2007
42 #include <linux/i2c/tsc2007.h>
43 #endif
1048 /* tsc2007 platform data
1049 */
1050 #define TSC2007_IRQ_GPIO (38)
1051 #define TSC2007_IRQ (OMAP_GPIO_IRQ(TSC2007_IRQ_GPIO))
1052
1053 static int tsc2007_hw_init(void)
1054 {
1055 int err;
1056 omap_cfg_reg(TSC2007_IRQ_GPIO);
1057 err=gpio_request(TSC2007_IRQ_GPIO,"tsc2007 irq");
1058 if(err){
1059 pr_err("tsc2007 irq gpio request err\n");
1060 return err;
1061 }
1062
1063 err=gpio_direction_input(TSC2007_IRQ_GPIO);
1064 if(err){
1065 pr_err("tsc2007 irq gpio init input err %d\n",err);
1066 gpio_free(TSC2007_IRQ_GPIO);
1067 return err;
1068 }
1069 //set_irq_type(TSC2007_IRQ,IRQTYPE_EDGE_FALLING);
1070 enable_irq(gpio_to_irq(TSC2007_IRQ_GPIO));
1071 printk("tsc2007 gpio init ok\n");
1072 return 0;
1073 }
1074
1075 static void tsc2007_hw_remove(void)
1076 {
1077 omap_cfg_reg(TSC2007_IRQ_GPIO);
1078 gpio_free(TSC2007_IRQ_GPIO);
1079 }
1080
1081 static int tsc2007_get_pandown_state(void)
1082 {
1083 int dat;
1084 //s3c_gpio_cfgpin(TSC2007_INT)
1085 dat=gpio_get_value(TSC2007_IRQ_GPIO);
1086 return (dat==0)?1:0;
1087 }
1088 static struct tsc2007_platform_data tsc2007_data={
1089 .model=2007,
1090 .x_plate_ohms=180,
1091 .init_platform_hw=tsc2007_hw_init,
1092 .exit_platform_hw=tsc2007_hw_remove,
1093 .get_pendown_state=tsc2007_get_pandown_state,
1094 };
将如下代码加入到一个i2c_board_info的结构体变量里面
1114 {
1115 I2C_BOARD_INFO("tsc2007",(0x90>>1)),
1116 .platform_data=&tsc2007_data,
1117 .irq=TSC2007_IRQ,
1118 },
调用omap_register_i2c_bus()函数注册i2c设备。
2.修改tsc2007.c
316 err = request_irq(ts->irq, tsc2007_irq,IRQF_TRIGGER_FALLING ,
317 client->dev.driver->name, ts);
好了,大功告成。