staging driver fixes for 3.13-rc3
Here are some bugfixes for the staging and IIO drivers for 3.13-rc3. The resolve the vm memory issue in the tidspbridge driver, fix a much-reported build failure in an ARM driver, and some other IIO bugfixes that have been reported. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEABECAAYFAlKiFYcACgkQMUfUDdst+ykuUgCcCqLrTpaBhOfFaLhSUONJh0Db BfYAoMFoyviPqclR7NYouZT6mUehiJ7+ =X5WP -----END PGP SIGNATURE----- Merge tag 'staging-3.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging Pull staging driver fixes from Greg KH: "Here are some bugfixes for the staging and IIO drivers for 3.13-rc3. The resolve the vm memory issue in the tidspbridge driver, fix a much-reported build failure in an ARM driver, and some other IIO bugfixes that have been reported" * tag 'staging-3.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: Staging: TIDSPBRIDGE: Use vm_iomap_memory for mmap-ing instead of remap_pfn_range Fix build failure for gp2ap020a00f.c iio: hid-sensors: Fix power and report state HID: hid-sensor-hub: Add logical min and max
This commit is contained in:
commit
2d4d4a8dde
|
@ -112,13 +112,15 @@ static int sensor_hub_get_physical_device_count(
|
|||
|
||||
static void sensor_hub_fill_attr_info(
|
||||
struct hid_sensor_hub_attribute_info *info,
|
||||
s32 index, s32 report_id, s32 units, s32 unit_expo, s32 size)
|
||||
s32 index, s32 report_id, struct hid_field *field)
|
||||
{
|
||||
info->index = index;
|
||||
info->report_id = report_id;
|
||||
info->units = units;
|
||||
info->unit_expo = unit_expo;
|
||||
info->size = size/8;
|
||||
info->units = field->unit;
|
||||
info->unit_expo = field->unit_exponent;
|
||||
info->size = (field->report_size * field->report_count)/8;
|
||||
info->logical_minimum = field->logical_minimum;
|
||||
info->logical_maximum = field->logical_maximum;
|
||||
}
|
||||
|
||||
static struct hid_sensor_hub_callbacks *sensor_hub_get_callback(
|
||||
|
@ -325,9 +327,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
|
|||
if (field->physical == usage_id &&
|
||||
field->logical == attr_usage_id) {
|
||||
sensor_hub_fill_attr_info(info, i, report->id,
|
||||
field->unit, field->unit_exponent,
|
||||
field->report_size *
|
||||
field->report_count);
|
||||
field);
|
||||
ret = 0;
|
||||
} else {
|
||||
for (j = 0; j < field->maxusage; ++j) {
|
||||
|
@ -336,11 +336,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
|
|||
field->usage[j].collection_index ==
|
||||
collection_index) {
|
||||
sensor_hub_fill_attr_info(info,
|
||||
i, report->id,
|
||||
field->unit,
|
||||
field->unit_exponent,
|
||||
field->report_size *
|
||||
field->report_count);
|
||||
i, report->id, field);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -25,13 +25,4 @@ config HID_SENSOR_IIO_TRIGGER
|
|||
If this driver is compiled as a module, it will be named
|
||||
hid-sensor-trigger.
|
||||
|
||||
config HID_SENSOR_ENUM_BASE_QUIRKS
|
||||
bool "ENUM base quirks for HID Sensor IIO drivers"
|
||||
depends on HID_SENSOR_IIO_COMMON
|
||||
help
|
||||
Say yes here to build support for sensor hub FW using
|
||||
enumeration, which is using 1 as base instead of 0.
|
||||
Since logical minimum is still set 0 instead of 1,
|
||||
there is no easy way to differentiate.
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -33,24 +33,34 @@ static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
|
|||
{
|
||||
struct hid_sensor_common *st = iio_trigger_get_drvdata(trig);
|
||||
int state_val;
|
||||
int report_val;
|
||||
|
||||
if (state) {
|
||||
if (sensor_hub_device_open(st->hsdev))
|
||||
return -EIO;
|
||||
} else
|
||||
sensor_hub_device_close(st->hsdev);
|
||||
state_val =
|
||||
HID_USAGE_SENSOR_PROP_POWER_STATE_D0_FULL_POWER_ENUM;
|
||||
report_val =
|
||||
HID_USAGE_SENSOR_PROP_REPORTING_STATE_ALL_EVENTS_ENUM;
|
||||
|
||||
} else {
|
||||
sensor_hub_device_close(st->hsdev);
|
||||
state_val =
|
||||
HID_USAGE_SENSOR_PROP_POWER_STATE_D4_POWER_OFF_ENUM;
|
||||
report_val =
|
||||
HID_USAGE_SENSOR_PROP_REPORTING_STATE_NO_EVENTS_ENUM;
|
||||
}
|
||||
|
||||
state_val = state ? 1 : 0;
|
||||
if (IS_ENABLED(CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS))
|
||||
++state_val;
|
||||
st->data_ready = state;
|
||||
state_val += st->power_state.logical_minimum;
|
||||
report_val += st->report_state.logical_minimum;
|
||||
sensor_hub_set_feature(st->hsdev, st->power_state.report_id,
|
||||
st->power_state.index,
|
||||
(s32)state_val);
|
||||
|
||||
sensor_hub_set_feature(st->hsdev, st->report_state.report_id,
|
||||
st->report_state.index,
|
||||
(s32)state_val);
|
||||
(s32)report_val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ config GP2AP020A00F
|
|||
depends on I2C
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select IRQ_WORK
|
||||
help
|
||||
Say Y here if you have a Sharp GP2AP020A00F proximity/ALS combo-chip
|
||||
hooked to an I2C bus.
|
||||
|
|
|
@ -258,7 +258,8 @@ err:
|
|||
/* This function maps kernel space memory to user space memory. */
|
||||
static int bridge_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
{
|
||||
u32 status;
|
||||
struct omap_dsp_platform_data *pdata =
|
||||
omap_dspbridge_dev->dev.platform_data;
|
||||
|
||||
/* VM_IO | VM_DONTEXPAND | VM_DONTDUMP are set by remap_pfn_range() */
|
||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||
|
@ -268,13 +269,9 @@ static int bridge_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||
vma->vm_start, vma->vm_end, vma->vm_page_prot,
|
||||
vma->vm_flags);
|
||||
|
||||
status = remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
|
||||
vma->vm_end - vma->vm_start,
|
||||
vma->vm_page_prot);
|
||||
if (status != 0)
|
||||
status = -EAGAIN;
|
||||
|
||||
return status;
|
||||
return vm_iomap_memory(vma,
|
||||
pdata->phys_mempool_base,
|
||||
pdata->phys_mempool_size);
|
||||
}
|
||||
|
||||
static const struct file_operations bridge_fops = {
|
||||
|
|
|
@ -42,6 +42,8 @@ struct hid_sensor_hub_attribute_info {
|
|||
s32 units;
|
||||
s32 unit_expo;
|
||||
s32 size;
|
||||
s32 logical_minimum;
|
||||
s32 logical_maximum;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -117,4 +117,16 @@
|
|||
#define HID_USAGE_SENSOR_PROP_REPORT_STATE 0x200316
|
||||
#define HID_USAGE_SENSOR_PROY_POWER_STATE 0x200319
|
||||
|
||||
/* Power state enumerations */
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_UNDEFINED_ENUM 0x00
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_D0_FULL_POWER_ENUM 0x01
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_D1_LOW_POWER_ENUM 0x02
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_D2_STANDBY_WITH_WAKE_ENUM 0x03
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_D3_SLEEP_WITH_WAKE_ENUM 0x04
|
||||
#define HID_USAGE_SENSOR_PROP_POWER_STATE_D4_POWER_OFF_ENUM 0x05
|
||||
|
||||
/* Report State enumerations */
|
||||
#define HID_USAGE_SENSOR_PROP_REPORTING_STATE_NO_EVENTS_ENUM 0x00
|
||||
#define HID_USAGE_SENSOR_PROP_REPORTING_STATE_ALL_EVENTS_ENUM 0x01
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue