//struct l3g4200d_axis *axis = (struct l3g4200d_axis *)rbuf;
/* Report acceleration sensor information */
- input_report_abs(l3g4200d->input_dev, ABS_RX, axis->x);
- input_report_abs(l3g4200d->input_dev, ABS_RY, axis->y);
- input_report_abs(l3g4200d->input_dev, ABS_RZ, axis->z);
+ input_report_rel(l3g4200d->input_dev, ABS_RX, axis->x);
+ input_report_rel(l3g4200d->input_dev, ABS_RY, axis->y);
+ input_report_rel(l3g4200d->input_dev, ABS_RZ, axis->z);
input_sync(l3g4200d->input_dev);
mmaprintk("%s:x==%d y==%d z==%d\n",__func__,axis->x,axis->y,axis->z);
}
mmaprintk("%s :L3G4200D_IOCTL_GET_ENABLE\n",__FUNCTION__);
ret=!l3g4200d->status;
if (copy_to_user(argp, &ret, sizeof(ret)))
- return 0;
+ {
+ printk("%s:failed to copy status to user space.\n",__FUNCTION__);
+ return -EFAULT;
+ }
break;
//case ECS_IOCTL_START:
case L3G4200D_IOCTL_SET_ENABLE:
ret = l3g4200d_start(client, ODR100_BW12_5);
if (ret < 0)
return ret;
+ ret=l3g4200d->status;
+ if (copy_to_user(argp, &ret, sizeof(ret)))
+ {
+ printk("%s:failed to copy sense data to user space.\n",__FUNCTION__);
+ return -EFAULT;
+ }
break;
case ECS_IOCTL_CLOSE:
mmaprintk("%s :ECS_IOCTL_CLOSE\n",__FUNCTION__);
goto exit_input_allocate_device_failed;
}
- set_bit(EV_ABS, l3g4200d->input_dev->evbit);
+ //set_bit(EV_ABS, l3g4200d->input_dev->evbit);
/* x-axis acceleration */
- input_set_abs_params(l3g4200d->input_dev, ABS_RX, -28571, 28571, 0, 0); //2g full scale range
- /* y-axis acceleration */
- input_set_abs_params(l3g4200d->input_dev, ABS_RY, -28571, 28571, 0, 0); //2g full scale range
+ input_set_capability(l3g4200d->input_dev, EV_REL, REL_RX);
+ input_set_abs_params(l3g4200d->input_dev, ABS_RX, -32768, 32768, 0, 0); //2g full scale range
+ /* y-axis acceleration */
+ input_set_capability(l3g4200d->input_dev, EV_REL, REL_RY);
+ input_set_abs_params(l3g4200d->input_dev, ABS_RY, -32768, 32768, 0, 0); //2g full scale range
/* z-axis acceleration */
- input_set_abs_params(l3g4200d->input_dev, ABS_RZ, -28571, 28571, 0, 0); //2g full scale range
+ input_set_capability(l3g4200d->input_dev, EV_REL, REL_RZ);
+ input_set_abs_params(l3g4200d->input_dev, ABS_RZ, -32768, 32768, 0, 0); //2g full scale range
- l3g4200d->input_dev->name = "gyrosensor";
+ l3g4200d->input_dev->name = "gyro";
l3g4200d->input_dev->dev.parent = &client->dev;
err = input_register_device(l3g4200d->input_dev);