mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-29 11:42:36 +00:00
HID: amd_sfh: Support for additional light sensor
There is support for additional light sensors in the SFH firmware. As a result, add support for additional light sensors. Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
8455cbb259
commit
4bd763568d
@ -147,6 +147,7 @@ static const char *get_sensor_name(int idx)
|
|||||||
case mag_idx:
|
case mag_idx:
|
||||||
return "magnetometer";
|
return "magnetometer";
|
||||||
case als_idx:
|
case als_idx:
|
||||||
|
case ACS_IDX: /* ambient color sensor */
|
||||||
return "ALS";
|
return "ALS";
|
||||||
case HPD_IDX:
|
case HPD_IDX:
|
||||||
return "HPD";
|
return "HPD";
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#define MAGNO_EN BIT(2)
|
#define MAGNO_EN BIT(2)
|
||||||
#define HPD_EN BIT(16)
|
#define HPD_EN BIT(16)
|
||||||
#define ALS_EN BIT(19)
|
#define ALS_EN BIT(19)
|
||||||
|
#define ACS_EN BIT(22)
|
||||||
|
|
||||||
static int sensor_mask_override = -1;
|
static int sensor_mask_override = -1;
|
||||||
module_param_named(sensor_mask, sensor_mask_override, int, 0444);
|
module_param_named(sensor_mask, sensor_mask_override, int, 0444);
|
||||||
@ -233,6 +234,9 @@ int amd_mp2_get_sensor_num(struct amd_mp2_dev *privdata, u8 *sensor_id)
|
|||||||
if (HPD_EN & activestatus)
|
if (HPD_EN & activestatus)
|
||||||
sensor_id[num_of_sensors++] = HPD_IDX;
|
sensor_id[num_of_sensors++] = HPD_IDX;
|
||||||
|
|
||||||
|
if (ACS_EN & activestatus)
|
||||||
|
sensor_id[num_of_sensors++] = ACS_IDX;
|
||||||
|
|
||||||
return num_of_sensors;
|
return num_of_sensors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#define V2_STATUS 0x2
|
#define V2_STATUS 0x2
|
||||||
|
|
||||||
#define HPD_IDX 16
|
#define HPD_IDX 16
|
||||||
|
#define ACS_IDX 22
|
||||||
|
|
||||||
#define SENSOR_DISCOVERY_STATUS_MASK GENMASK(5, 3)
|
#define SENSOR_DISCOVERY_STATUS_MASK GENMASK(5, 3)
|
||||||
#define SENSOR_DISCOVERY_STATUS_SHIFT 3
|
#define SENSOR_DISCOVERY_STATUS_SHIFT 3
|
||||||
|
@ -48,6 +48,7 @@ static int get_report_descriptor(int sensor_idx, u8 *rep_desc)
|
|||||||
sizeof(comp3_report_descriptor));
|
sizeof(comp3_report_descriptor));
|
||||||
break;
|
break;
|
||||||
case als_idx: /* ambient light sensor */
|
case als_idx: /* ambient light sensor */
|
||||||
|
case ACS_IDX: /* ambient color sensor */
|
||||||
memset(rep_desc, 0, sizeof(als_report_descriptor));
|
memset(rep_desc, 0, sizeof(als_report_descriptor));
|
||||||
memcpy(rep_desc, als_report_descriptor,
|
memcpy(rep_desc, als_report_descriptor,
|
||||||
sizeof(als_report_descriptor));
|
sizeof(als_report_descriptor));
|
||||||
@ -97,6 +98,7 @@ static u32 get_descr_sz(int sensor_idx, int descriptor_name)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case als_idx:
|
case als_idx:
|
||||||
|
case ACS_IDX: /* ambient color sensor */
|
||||||
switch (descriptor_name) {
|
switch (descriptor_name) {
|
||||||
case descr_size:
|
case descr_size:
|
||||||
return sizeof(als_report_descriptor);
|
return sizeof(als_report_descriptor);
|
||||||
@ -174,6 +176,7 @@ static u8 get_feature_report(int sensor_idx, int report_id, u8 *feature_report)
|
|||||||
report_size = sizeof(magno_feature);
|
report_size = sizeof(magno_feature);
|
||||||
break;
|
break;
|
||||||
case als_idx: /* ambient light sensor */
|
case als_idx: /* ambient light sensor */
|
||||||
|
case ACS_IDX: /* ambient color sensor */
|
||||||
get_common_features(&als_feature.common_property, report_id);
|
get_common_features(&als_feature.common_property, report_id);
|
||||||
als_feature.als_change_sesnitivity = HID_DEFAULT_SENSITIVITY;
|
als_feature.als_change_sesnitivity = HID_DEFAULT_SENSITIVITY;
|
||||||
als_feature.als_sensitivity_min = HID_DEFAULT_MIN_VALUE;
|
als_feature.als_sensitivity_min = HID_DEFAULT_MIN_VALUE;
|
||||||
@ -245,6 +248,7 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id,
|
|||||||
report_size = sizeof(magno_input);
|
report_size = sizeof(magno_input);
|
||||||
break;
|
break;
|
||||||
case als_idx: /* Als */
|
case als_idx: /* Als */
|
||||||
|
case ACS_IDX: /* ambient color sensor */
|
||||||
get_common_inputs(&als_input.common_property, report_id);
|
get_common_inputs(&als_input.common_property, report_id);
|
||||||
/* For ALS ,V2 Platforms uses C2P_MSG5 register instead of DRAM access method */
|
/* For ALS ,V2 Platforms uses C2P_MSG5 register instead of DRAM access method */
|
||||||
if (supported_input == V2_STATUS)
|
if (supported_input == V2_STATUS)
|
||||||
|
Loading…
Reference in New Issue
Block a user