明远智睿技术论坛

标题: 触摸屏tsc2007驱动移植(Android5.1系统) [打印本页]

作者: myzr007    时间: 2017-12-14 16:22
标题: 触摸屏tsc2007驱动移植(Android5.1系统)
本帖最后由 myzr007 于 2017-12-14 16:22 编辑

问题描述:增加tsc2007设备树相关信息后,编译tsc2007驱动,pdata数据为0 。


硬件环境:boot-myimx6ek200-6u开发板
软件环境:myzr官方Android5.1镜像。

移植步骤:
第一步:增加设备树:
将原先ft5x06触摸屏的设备信息替换为tsc2007的信息

/*

        focaltech@38 {

                compatible ="focaltech,5x06";

                reg = <0x38>;

                pinctrl-names ="default";

                pinctrl-0 =<&pinctrl_myts_ft5x0x>;

                interrupt-parent =<&gpio6>;

                interrupts = <16 0x0>;

                focaltech,reset-gpio =<&gpio1 17 GPIO_ACTIVE_LOW>;

                   focaltech,irq-gpio = <&gpio6 16GPIO_ACTIVE_LOW>;

                linux,wakeup;

        };*/

仿照ft56改写设备树,

        focaltech@48 {

                compatible ="tsc2007";

                reg = <0x48>;

                pinctrl-names ="default";

                pinctrl-0 =<&pinctrl_myts_ft5x0x>;

                interrupt-parent =<&gpio6>;

                interrupts = <16 0x0>;

                focaltech,reset-gpio =<&gpio1 17 GPIO_ACTIVE_LOW>;

                   focaltech,irq-gpio= <&gpio6 16 GPIO_ACTIVE_LOW>;

                linux,wakeup;

       };

};

第二步:将drivers/input/touchscreen/目录下的tsc2007.c驱动保持源码不变,
make menuconfig,将tsc2007编译为模块,其余选项全部取消,重新编译镜像。

第三步:重新启动后,通过cat命令后有设备信息
root@sabresd_6dq:/data/local/tmp # cat /sys/bus/i2c/devices/2-0048/name        
tsc2007
但是insmod tsc2007.ko驱动打印信息为。
root@sabresd_6dq:/data/local/tmp # insmod tsc2007.ko
tsc2007_probe                          
tsc2007 2-0048: missing ti,x-plate-ohms devicetree property.
tsc2007: probe of 2-0048 failed with error -22
查看tsc2007.c驱动源码,原因为*pdata 指针为空,
static int tsc2007_probe(struct i2c_client *client,
    const struct i2c_device_id *id)
{
const struct tsc2007_platform_data *pdata = dev_get_platdata(&client->dev);
struct tsc2007 *ts;
struct input_dev *input_dev;
int err;
printk("tsc2007_probe\n");
if (!i2c_check_functionality(client->adapter,
         I2C_FUNC_SMBUS_READ_WORD_DATA))
  return -EIO;
ts = devm_kzalloc(&client->dev, sizeof(struct tsc2007), GFP_KERNEL);
if (!ts)
  return -ENOMEM;
if (pdata)
  err = tsc2007_probe_pdev(client, ts, pdata, id);
else
  err = tsc2007_probe_dt(client, ts);
if (err)
  return err;

1)*pdata 指针为空,是我设备树添加的信息还不够完善吗?还是其它方面我少了那些步骤。
2)硬件连接是没有问题的,因为我在同样的硬件环境下,在系统Android4.4上触摸屏是可以用的。





作者: 软件01    时间: 2017-12-18 10:37
ti,x-plate-ohms = <180>;




欢迎光临 明远智睿技术论坛 (http://bbs.myzr.com.cn/) Powered by Discuz! X3.2