Commit 4bd76356 authored by Basavaraj Natikar's avatar Basavaraj Natikar Committed by Jiri Kosina

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: default avatarBasavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 8455cbb2
...@@ -147,6 +147,7 @@ static const char *get_sensor_name(int idx) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment