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

Commit 5c6ac711 authored by Bhawanpreet Lakha's avatar Bhawanpreet Lakha Committed by Alex Deucher
Browse files

drm/amd/display: Decouple aux from i2c



[Why]
Aux engine is created from i2caux layer. We want to remove this layer
and use the engine directly.

[How]
Decouple aux engine from i2caux. Move aux engine related code to dce folder and use
dc resource pool to manage the engine. And use the engine functions directly

Signed-off-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3fc9fc4c
Loading
Loading
Loading
Loading
+10 −12
Original line number Original line Diff line number Diff line
@@ -33,10 +33,8 @@
#include "include/vector.h"
#include "include/vector.h"
#include "core_types.h"
#include "core_types.h"
#include "dc_link_ddc.h"
#include "dc_link_ddc.h"
#include "i2caux/engine.h"
#include "engine.h"
#include "i2caux/i2c_engine.h"
#include "aux_engine.h"
#include "i2caux/aux_engine.h"
#include "i2caux/i2caux.h"


#define AUX_POWER_UP_WA_DELAY 500
#define AUX_POWER_UP_WA_DELAY 500
#define I2C_OVER_AUX_DEFER_WA_DELAY 70
#define I2C_OVER_AUX_DEFER_WA_DELAY 70
@@ -641,9 +639,9 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
			     enum aux_transaction_type type,
			     enum aux_transaction_type type,
			     enum i2caux_transaction_action action)
			     enum i2caux_transaction_action action)
{
{
	struct i2caux *i2caux = ddc->ctx->i2caux;
	struct ddc *ddc_pin = ddc->ddc_pin;
	struct ddc *ddc_pin = ddc->ddc_pin;
	struct aux_engine *engine;
	struct engine *engine;
	struct aux_engine *aux_engine;
	enum aux_channel_operation_result operation_result;
	enum aux_channel_operation_result operation_result;
	struct aux_request_transaction_data aux_req;
	struct aux_request_transaction_data aux_req;
	struct aux_reply_transaction_data aux_rep;
	struct aux_reply_transaction_data aux_rep;
@@ -654,7 +652,8 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
	memset(&aux_req, 0, sizeof(aux_req));
	memset(&aux_req, 0, sizeof(aux_req));
	memset(&aux_rep, 0, sizeof(aux_rep));
	memset(&aux_rep, 0, sizeof(aux_rep));


	engine = i2caux->funcs->acquire_aux_engine(i2caux, ddc_pin);
	engine = ddc->ctx->dc->res_pool->engines[ddc_pin->pin_data->en];
	aux_engine = engine->funcs->acquire(engine, ddc_pin);


	aux_req.type = type;
	aux_req.type = type;
	aux_req.action = action;
	aux_req.action = action;
@@ -664,15 +663,15 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
	aux_req.length = size;
	aux_req.length = size;
	aux_req.data = buffer;
	aux_req.data = buffer;


	engine->funcs->submit_channel_request(engine, &aux_req);
	aux_engine->funcs->submit_channel_request(aux_engine, &aux_req);
	operation_result = engine->funcs->get_channel_status(engine, &returned_bytes);
	operation_result = aux_engine->funcs->get_channel_status(aux_engine, &returned_bytes);


	switch (operation_result) {
	switch (operation_result) {
	case AUX_CHANNEL_OPERATION_SUCCEEDED:
	case AUX_CHANNEL_OPERATION_SUCCEEDED:
		res = returned_bytes;
		res = returned_bytes;


		if (res <= size && res >= 0)
		if (res <= size && res >= 0)
			res = engine->funcs->read_channel_reply(engine, size,
			res = aux_engine->funcs->read_channel_reply(aux_engine, size,
								buffer, reply,
								buffer, reply,
								&status);
								&status);


@@ -686,8 +685,7 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
		res = -1;
		res = -1;
		break;
		break;
	}
	}

	aux_engine->base.funcs->release_engine(&aux_engine->base);
	i2caux->funcs->release_engine(i2caux, &engine->base);
	return res;
	return res;
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -28,7 +28,7 @@


DCE = dce_audio.o dce_stream_encoder.o dce_link_encoder.o dce_hwseq.o \
DCE = dce_audio.o dce_stream_encoder.o dce_link_encoder.o dce_hwseq.o \
dce_mem_input.o dce_clock_source.o dce_scl_filters.o dce_transform.o \
dce_mem_input.o dce_clock_source.o dce_scl_filters.o dce_transform.o \
dce_clocks.o dce_opp.o dce_dmcu.o dce_abm.o dce_ipp.o
dce_clocks.o dce_opp.o dce_dmcu.o dce_abm.o dce_ipp.o dce_aux.o




AMD_DAL_DCE = $(addprefix $(AMDDALPATH)/dc/dce/,$(DCE))
AMD_DAL_DCE = $(addprefix $(AMDDALPATH)/dc/dce/,$(DCE))
Loading