Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 018d82e5 authored by Harry Wentland's avatar Harry Wentland Committed by Alex Deucher
Browse files

drm/amd/display: Don't return ddc result and read_bytes in same return value



The two ranges overlap.

Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6e65fb86
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -83,21 +83,22 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
	enum i2c_mot_mode mot = (msg->request & DP_AUX_I2C_MOT) ?
		I2C_MOT_TRUE : I2C_MOT_FALSE;
	enum ddc_result res;
	ssize_t read_bytes;
	uint32_t read_bytes = msg->size;

	if (WARN_ON(msg->size > 16))
		return -E2BIG;

	switch (msg->request & ~DP_AUX_I2C_MOT) {
	case DP_AUX_NATIVE_READ:
		read_bytes = dal_ddc_service_read_dpcd_data(
		res = dal_ddc_service_read_dpcd_data(
				TO_DM_AUX(aux)->ddc_service,
				false,
				I2C_MOT_UNDEF,
				msg->address,
				msg->buffer,
				msg->size);
		return read_bytes;
				msg->size,
				&read_bytes);
		break;
	case DP_AUX_NATIVE_WRITE:
		res = dal_ddc_service_write_dpcd_data(
				TO_DM_AUX(aux)->ddc_service,
@@ -108,14 +109,15 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
				msg->size);
		break;
	case DP_AUX_I2C_READ:
		read_bytes = dal_ddc_service_read_dpcd_data(
		res = dal_ddc_service_read_dpcd_data(
				TO_DM_AUX(aux)->ddc_service,
				true,
				mot,
				msg->address,
				msg->buffer,
				msg->size);
		return read_bytes;
				msg->size,
				&read_bytes);
		break;
	case DP_AUX_I2C_WRITE:
		res = dal_ddc_service_write_dpcd_data(
				TO_DM_AUX(aux)->ddc_service,
@@ -137,7 +139,9 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
		 r == DDC_RESULT_SUCESSFULL);
#endif

	return msg->size;
	if (res != DDC_RESULT_SUCESSFULL)
		return -EIO;
	return read_bytes;
}

static enum drm_connector_status
+7 −3
Original line number Diff line number Diff line
@@ -629,13 +629,14 @@ bool dal_ddc_service_query_ddc_data(
	return ret;
}

ssize_t dal_ddc_service_read_dpcd_data(
enum ddc_result dal_ddc_service_read_dpcd_data(
	struct ddc_service *ddc,
	bool i2c,
	enum i2c_mot_mode mot,
	uint32_t address,
	uint8_t *data,
	uint32_t len)
	uint32_t len,
	uint32_t *read)
{
	struct aux_payload read_payload = {
		.i2c_over_aux = i2c,
@@ -652,6 +653,8 @@ ssize_t dal_ddc_service_read_dpcd_data(
		.mot = mot
	};

	*read = 0;

	if (len > DEFAULT_AUX_MAX_DATA_SIZE) {
		BREAK_TO_DEBUGGER();
		return DDC_RESULT_FAILED_INVALID_OPERATION;
@@ -661,7 +664,8 @@ ssize_t dal_ddc_service_read_dpcd_data(
		ddc->ctx->i2caux,
		ddc->ddc_pin,
		&command)) {
		return (ssize_t)command.payloads->length;
		*read = command.payloads->length;
		return DDC_RESULT_SUCESSFULL;
	}

	return DDC_RESULT_FAILED_OPERATION;
+3 −2
Original line number Diff line number Diff line
@@ -102,13 +102,14 @@ bool dal_ddc_service_query_ddc_data(
		uint8_t *read_buf,
		uint32_t read_size);

ssize_t dal_ddc_service_read_dpcd_data(
enum ddc_result dal_ddc_service_read_dpcd_data(
		struct ddc_service *ddc,
		bool i2c,
		enum i2c_mot_mode mot,
		uint32_t address,
		uint8_t *data,
		uint32_t len);
		uint32_t len,
		uint32_t *read);

enum ddc_result dal_ddc_service_write_dpcd_data(
		struct ddc_service *ddc,