#include "dc_hw_types.h"
#include "dm_services.h"
#include "reg_helper.h"
#include "dcn10_dio.h"
#define CTX \
dio10->base.ctx
#define REG(reg)\
dio10->regs->reg
#undef FN
#define FN(reg_name, field_name) \
dio10->shifts->field_name, dio10->masks->field_name
static void dcn10_dio_mem_pwr_ctrl(struct dio *dio, bool enable_i2c_light_sleep)
{
struct dcn10_dio *dio10 = TO_DCN10_DIO(dio);
REG_WRITE(DIO_MEM_PWR_CTRL, 0);
if (enable_i2c_light_sleep)
REG_UPDATE(DIO_MEM_PWR_CTRL, I2C_LIGHT_SLEEP_FORCE, 1);
}
static const struct dio_funcs dcn10_dio_funcs = {
.mem_pwr_ctrl = dcn10_dio_mem_pwr_ctrl,
};
void dcn10_dio_construct(
struct dcn10_dio *dio10,
struct dc_context *ctx,
const struct dcn_dio_registers *regs,
const struct dcn_dio_shift *shifts,
const struct dcn_dio_mask *masks)
{
dio10->base.ctx = ctx;
dio10->base.funcs = &dcn10_dio_funcs;
dio10->regs = regs;
dio10->shifts = shifts;
dio10->masks = masks;
}