Commit 5ca505c6 authored by Basavaraj Natikar's avatar Basavaraj Natikar Committed by Jiri Kosina
Browse files

HID: amd_sfh: Split sensor and HID initialization



Sensors are enabled independently of HID device initialization. Sensor
initialization should be kept separate in this case, while HID devices
should be initialized according to the sensor state. Hence split sensor
initialization and HID initialization into separate blocks.

Signed-off-by: default avatarBasavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent e2957090
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
	struct device *dev;
	u32 feature_report_size;
	u32 input_report_size;
	int rc, i, status;
	int rc, i;
	u8 cl_idx;

	req_list = &cl_data->req_list;
@@ -286,12 +286,15 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
		if (rc)
			goto cleanup;
		mp2_ops->start(privdata, info);
		status = amd_sfh_wait_for_response
		cl_data->sensor_sts[i] = amd_sfh_wait_for_response
						(privdata, cl_data->sensor_idx[i], SENSOR_ENABLED);
		if (status == SENSOR_ENABLED) {
	}

	for (i = 0; i < cl_data->num_hid_devices; i++) {
		cl_data->cur_hid_dev = i;
		if (cl_data->sensor_sts[i] == SENSOR_ENABLED) {
			cl_data->is_any_sensor_enabled = true;
			cl_data->sensor_sts[i] = SENSOR_ENABLED;
			rc = amdtp_hid_probe(cl_data->cur_hid_dev, cl_data);
			rc = amdtp_hid_probe(i, cl_data);
			if (rc)
				goto cleanup;
		} else {
@@ -301,6 +304,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
			cl_data->sensor_idx[i], get_sensor_name(cl_data->sensor_idx[i]),
			cl_data->sensor_sts[i]);
	}

	if (!cl_data->is_any_sensor_enabled ||
	   (mp2_ops->discovery_status && mp2_ops->discovery_status(privdata) == 0)) {
		dev_warn(dev, "Failed to discover, sensors not enabled is %d\n", cl_data->is_any_sensor_enabled);