本帖最后由 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命令后有设备信息 但是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上触摸屏是可以用的。
|