input:ABS_DISTANCE上报空指针错误


在probe函数中设置事件类型EV_ABS和支持的事件码ABS_DISTANCE:

input_set_capability(input_dev, EV_ABS, ABS_DISTANCE);
然后在工作队列里上报传感器的数据:

input_report_abs(dt->input, ABS_DISTANCE, 1);
input_sync(dt->input);

运行程序,每次到上报时候就会出现空指针错误,内核就跑飞了。

解决办法:

因为ABS_DISTANCE需要使用下面的函数设置相关的参数,如距离的最小,最大值等。才能正常上报。
添加如下内容在probe函数中。

input_set_abs_params(input_dev, ABS_DISTANCE, 0, 1, 0, 0);

函数定义如下:

void input_set_abs_params(struct input_dev *dev, unsigned int axis,
<span>			</span>  int min, int max, int fuzz, int flat)
{
<span>	</span>struct input_absinfo *absinfo;


<span>	</span>input_alloc_absinfo(dev);
<span>	</span>if (!dev->absinfo)
<span>		</span>return;


<span>	</span>absinfo = &dev->absinfo[axis];
<span>	</span>absinfo->minimum = min;
<span>	</span>absinfo->maximum = max;
<span>	</span>absinfo->fuzz = fuzz;
<span>	</span>absinfo->flat = flat;


<span>	</span>dev->absbit[BIT_WORD(axis)] |= BIT_MASK(axis);
}

你可能感兴趣的:(android,input,S5P4418)