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

Commit 65c78961 authored by Bhawanpreet Lakha's avatar Bhawanpreet Lakha Committed by Alex Deucher
Browse files

drm/amd/display: flatten aux_engine and engine



[Why]
engine and aux_engine are unnecessary layers we want to remove this
layer.

[How]
flatten engine and aux engine structs into one struct called
aux_engine and remove all references to the engine struct.

Signed-off-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 824474ba
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@
#include "include/vector.h"
#include "core_types.h"
#include "dc_link_ddc.h"
#include "engine.h"
#include "aux_engine.h"

#define AUX_POWER_UP_WA_DELAY 500
@@ -640,7 +639,6 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
			     enum i2caux_transaction_action action)
{
	struct ddc *ddc_pin = ddc->ddc_pin;
	struct engine *engine;
	struct aux_engine *aux_engine;
	enum aux_channel_operation_result operation_result;
	struct aux_request_transaction_data aux_req;
@@ -652,8 +650,8 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
	memset(&aux_req, 0, sizeof(aux_req));
	memset(&aux_rep, 0, sizeof(aux_rep));

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

	aux_req.type = type;
	aux_req.action = action;
@@ -685,7 +683,7 @@ int dc_link_aux_transfer(struct ddc_service *ddc,
		res = -1;
		break;
	}
	aux_engine->base.funcs->release_engine(&aux_engine->base);
	aux_engine->funcs->release_engine(aux_engine);
	return res;
}

+25 −30
Original line number Diff line number Diff line
@@ -28,12 +28,12 @@
#include "dce/dce_11_0_sh_mask.h"

#define CTX \
	aux110->base.base.ctx
	aux110->base.ctx
#define REG(reg_name)\
	(aux110->regs->reg_name)

#define DC_LOGGER \
	engine->base.ctx->logger
	engine->ctx->logger

#include "reg_helper.h"

@@ -51,9 +51,9 @@ enum {
	AUX_DEFER_RETRY_COUNTER = 6
};
static void release_engine(
	struct engine *engine)
	struct aux_engine *engine)
{
	struct aux_engine_dce110 *aux110 = FROM_ENGINE(engine);
	struct aux_engine_dce110 *aux110 = FROM_AUX_ENGINE(engine);

	dal_ddc_close(engine->ddc);

@@ -827,22 +827,21 @@ static bool end_of_transaction_command(

	/* according Syed, it does not need now DoDummyMOT */
}
bool submit_request(
	struct engine *engine,
static bool submit_request(
	struct aux_engine *engine,
	struct i2caux_transaction_request *request,
	bool middle_of_transaction)
{
	struct aux_engine *aux_engine = FROM_AUX_ENGINE_ENGINE(engine);

	bool result;
	bool mot_used = true;

	switch (request->operation) {
	case I2CAUX_TRANSACTION_READ:
		result = read_command(aux_engine, request, mot_used);
		result = read_command(engine, request, mot_used);
	break;
	case I2CAUX_TRANSACTION_WRITE:
		result = write_command(aux_engine, request, mot_used);
		result = write_command(engine, request, mot_used);
	break;
	default:
		result = false;
@@ -854,45 +853,45 @@ bool submit_request(
	 */

	if (!middle_of_transaction || !result)
		end_of_transaction_command(aux_engine, request);
		end_of_transaction_command(engine, request);

	/* mask AUX interrupt */

	return result;
}
enum i2caux_engine_type get_engine_type(
		const struct engine *engine)
		const struct aux_engine *engine)
{
	return I2CAUX_ENGINE_TYPE_AUX;
}

static struct aux_engine *acquire(
	struct engine *engine,
static bool acquire(
	struct aux_engine *engine,
	struct ddc *ddc)
{
	struct aux_engine *aux_engine = FROM_AUX_ENGINE_ENGINE(engine);

	enum gpio_result result;

	if (aux_engine->funcs->is_engine_available) {
	if (engine->funcs->is_engine_available) {
		/*check whether SW could use the engine*/
		if (!aux_engine->funcs->is_engine_available(aux_engine))
			return NULL;
		if (!engine->funcs->is_engine_available(engine))
			return false;
	}

	result = dal_ddc_open(ddc, GPIO_MODE_HARDWARE,
		GPIO_DDC_CONFIG_TYPE_MODE_AUX);

	if (result != GPIO_RESULT_OK)
		return NULL;
		return false;

	if (!aux_engine->funcs->acquire_engine(aux_engine)) {
	if (!engine->funcs->acquire_engine(engine)) {
		dal_ddc_close(ddc);
		return NULL;
		return false;
	}

	engine->ddc = ddc;

	return aux_engine;
	return true;
}

static const struct aux_engine_funcs aux_engine_funcs = {
@@ -902,9 +901,6 @@ static const struct aux_engine_funcs aux_engine_funcs = {
	.read_channel_reply = read_channel_reply,
	.get_channel_status = get_channel_status,
	.is_engine_available = is_engine_available,
};

static const struct engine_funcs engine_funcs = {
	.release_engine = release_engine,
	.destroy_engine = dce110_engine_destroy,
	.submit_request = submit_request,
@@ -912,10 +908,10 @@ static const struct engine_funcs engine_funcs = {
	.acquire = acquire,
};

void dce110_engine_destroy(struct engine **engine)
void dce110_engine_destroy(struct aux_engine **engine)
{

	struct aux_engine_dce110 *engine110 = FROM_ENGINE(*engine);
	struct aux_engine_dce110 *engine110 = FROM_AUX_ENGINE(*engine);

	kfree(engine110);
	*engine = NULL;
@@ -927,13 +923,12 @@ struct aux_engine *dce110_aux_engine_construct(struct aux_engine_dce110 *aux_eng
		uint32_t timeout_period,
		const struct dce110_aux_registers *regs)
{
	aux_engine110->base.base.ddc = NULL;
	aux_engine110->base.base.ctx = ctx;
	aux_engine110->base.ddc = NULL;
	aux_engine110->base.ctx = ctx;
	aux_engine110->base.delay = 0;
	aux_engine110->base.max_defer_write_retry = 0;
	aux_engine110->base.base.funcs = &engine_funcs;
	aux_engine110->base.funcs = &aux_engine_funcs;
	aux_engine110->base.base.inst = inst;
	aux_engine110->base.inst = inst;
	aux_engine110->timeout_period = timeout_period;
	aux_engine110->regs = regs;

+2 −2
Original line number Diff line number Diff line
@@ -103,9 +103,9 @@ struct aux_engine *dce110_aux_engine_construct(
		uint32_t timeout_period,
		const struct dce110_aux_registers *regs);

void dce110_engine_destroy(struct engine **engine);
void dce110_engine_destroy(struct aux_engine **engine);

bool dce110_aux_engine_acquire(
	struct engine *aux_engine,
	struct aux_engine *aux_engine,
	struct ddc *ddc);
#endif
+2 −2
Original line number Diff line number Diff line
@@ -586,7 +586,7 @@ struct output_pixel_processor *dce100_opp_create(
	return &opp->base;
}

struct engine *dce100_aux_engine_create(
struct aux_engine *dce100_aux_engine_create(
	struct dc_context *ctx,
	uint32_t inst)
{
@@ -600,7 +600,7 @@ struct engine *dce100_aux_engine_create(
				    SW_AUX_TIMEOUT_PERIOD_MULTIPLIER * AUX_TIMEOUT_PERIOD,
				    &aux_engine_regs[inst]);

	return &aux_engine->base.base;
	return &aux_engine->base;
}

struct clock_source *dce100_clock_source_create(
+2 −2
Original line number Diff line number Diff line
@@ -604,7 +604,7 @@ static struct output_pixel_processor *dce110_opp_create(
	return &opp->base;
}

struct engine *dce110_aux_engine_create(
struct aux_engine *dce110_aux_engine_create(
	struct dc_context *ctx,
	uint32_t inst)
{
@@ -618,7 +618,7 @@ struct engine *dce110_aux_engine_create(
				    SW_AUX_TIMEOUT_PERIOD_MULTIPLIER * AUX_TIMEOUT_PERIOD,
				    &aux_engine_regs[inst]);

	return &aux_engine->base.base;
	return &aux_engine->base;
}

struct clock_source *dce110_clock_source_create(
Loading