/*
 * Copyright 2019 Advanced Micro Devices, Inc.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * Authors: AMD
 *
 */

#ifndef __DAL_DCN31_HPO_DP_STREAM_ENCODER_H__
#define __DAL_DCN31_HPO_DP_STREAM_ENCODER_H__

#include "dcn30/dcn30_vpg.h"
#include "dcn31/dcn31_apg.h"
#include "stream_encoder.h"


#define DCN3_1_HPO_DP_STREAM_ENC_FROM_HPO_STREAM_ENC(hpo_dp_stream_encoder)\
	container_of(hpo_dp_stream_encoder, struct dcn31_hpo_dp_stream_encoder, base)


/* Define MSA_DATA_LANE_[0-3] fields to make programming easier */
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_0__SHIFT   0x0
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_1__SHIFT   0x8
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_2__SHIFT   0x10
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_3__SHIFT   0x18
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_0_MASK     0x000000FFL
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_1_MASK     0x0000FF00L
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_2_MASK     0x00FF0000L
#define DP_SYM32_ENC_VID_MSA__MSA_DATA_LANE_3_MASK     0xFF000000L


#define DCN3_1_HPO_DP_STREAM_ENC_REG_LIST(id) \
	SR(DP_STREAM_MAPPER_CONTROL0),\
	SR(DP_STREAM_MAPPER_CONTROL1),\
	SR(DP_STREAM_MAPPER_CONTROL2),\
	SR(DP_STREAM_MAPPER_CONTROL3),\
	SRI(DP_STREAM_ENC_CLOCK_CONTROL, DP_STREAM_ENC, id),\
	SRI(DP_STREAM_ENC_INPUT_MUX_CONTROL, DP_STREAM_ENC, id),\
	SRI(DP_STREAM_ENC_AUDIO_CONTROL, DP_STREAM_ENC, id),\
	SRI(DP_STREAM_ENC_CLOCK_RAMP_ADJUSTER_FIFO_STATUS_CONTROL0, DP_STREAM_ENC, id),\
	SRI(DP_SYM32_ENC_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_PIXEL_FORMAT, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_PIXEL_FORMAT_DOUBLE_BUFFER_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA0, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA1, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA2, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA3, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA4, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA5, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA6, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA7, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA8, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_MSA_DOUBLE_BUFFER_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_FIFO_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_STREAM_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_VBID_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_GSP_CONTROL0, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_GSP_CONTROL2, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_GSP_CONTROL3, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_GSP_CONTROL5, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_GSP_CONTROL11, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_METADATA_PACKET_CONTROL, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_SDP_AUDIO_CONTROL0, DP_SYM32_ENC, id),\
	SRI(DP_SYM32_ENC_VID_CRC_CONTROL, DP_SYM32_ENC, id)

#define DCN3_1_HPO_DP_STREAM_ENC_REGS \
	uint32_t DP_STREAM_MAPPER_CONTROL0;\
	uint32_t DP_STREAM_MAPPER_CONTROL1;\
	uint32_t DP_STREAM_MAPPER_CONTROL2;\
	uint32_t DP_STREAM_MAPPER_CONTROL3;\
	uint32_t DP_STREAM_ENC_CLOCK_CONTROL;\
	uint32_t DP_STREAM_ENC_INPUT_MUX_CONTROL;\
	uint32_t DP_STREAM_ENC_AUDIO_CONTROL;\
	uint32_t DP_STREAM_ENC_CLOCK_RAMP_ADJUSTER_FIFO_STATUS_CONTROL0;\
	uint32_t DP_SYM32_ENC_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_PIXEL_FORMAT;\
	uint32_t DP_SYM32_ENC_VID_PIXEL_FORMAT_DOUBLE_BUFFER_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_MSA0;\
	uint32_t DP_SYM32_ENC_VID_MSA1;\
	uint32_t DP_SYM32_ENC_VID_MSA2;\
	uint32_t DP_SYM32_ENC_VID_MSA3;\
	uint32_t DP_SYM32_ENC_VID_MSA4;\
	uint32_t DP_SYM32_ENC_VID_MSA5;\
	uint32_t DP_SYM32_ENC_VID_MSA6;\
	uint32_t DP_SYM32_ENC_VID_MSA7;\
	uint32_t DP_SYM32_ENC_VID_MSA8;\
	uint32_t DP_SYM32_ENC_VID_MSA_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_MSA_DOUBLE_BUFFER_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_FIFO_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_STREAM_CONTROL;\
	uint32_t DP_SYM32_ENC_VID_VBID_CONTROL;\
	uint32_t DP_SYM32_ENC_SDP_CONTROL;\
	uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL0;\
	uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL2;\
	uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL3;\
	uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL5;\
	uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL11;\
	uint32_t DP_SYM32_ENC_SDP_METADATA_PACKET_CONTROL;\
	uint32_t DP_SYM32_ENC_SDP_AUDIO_CONTROL0;\
	uint32_t DP_SYM32_ENC_VID_CRC_CONTROL


#define DCN3_1_HPO_DP_STREAM_ENC_MASK_SH_LIST(mask_sh)\
	SE_SF(DP_STREAM_MAPPER_CONTROL0, DP_STREAM_LINK_TARGET, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_CLOCK_CONTROL, DP_STREAM_ENC_CLOCK_EN, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_INPUT_MUX_CONTROL, DP_STREAM_ENC_INPUT_MUX_PIXEL_STREAM_SOURCE_SEL, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_AUDIO_CONTROL, DP_STREAM_ENC_INPUT_MUX_AUDIO_STREAM_SOURCE_SEL, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_CLOCK_RAMP_ADJUSTER_FIFO_STATUS_CONTROL0, FIFO_RESET, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_CLOCK_RAMP_ADJUSTER_FIFO_STATUS_CONTROL0, FIFO_RESET_DONE, mask_sh),\
	SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_CLOCK_RAMP_ADJUSTER_FIFO_STATUS_CONTROL0, FIFO_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_CONTROL, DP_SYM32_ENC_RESET, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_CONTROL, DP_SYM32_ENC_RESET_DONE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_CONTROL, DP_SYM32_ENC_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_PIXEL_FORMAT, PIXEL_ENCODING_TYPE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_PIXEL_FORMAT, UNCOMPRESSED_PIXEL_ENCODING, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_PIXEL_FORMAT, UNCOMPRESSED_COMPONENT_DEPTH, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_PIXEL_FORMAT_DOUBLE_BUFFER_CONTROL, PIXEL_FORMAT_DOUBLE_BUFFER_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_MSA_DOUBLE_BUFFER_CONTROL, MSA_DOUBLE_BUFFER_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC_VID_MSA, MSA_DATA_LANE_0, mask_sh),\
	SE_SF(DP_SYM32_ENC_VID_MSA, MSA_DATA_LANE_1, mask_sh),\
	SE_SF(DP_SYM32_ENC_VID_MSA, MSA_DATA_LANE_2, mask_sh),\
	SE_SF(DP_SYM32_ENC_VID_MSA, MSA_DATA_LANE_3, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_FIFO_CONTROL, PIXEL_TO_SYMBOL_FIFO_RESET, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_FIFO_CONTROL, PIXEL_TO_SYMBOL_FIFO_RESET_DONE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_FIFO_CONTROL, PIXEL_TO_SYMBOL_FIFO_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_STREAM_CONTROL, VID_STREAM_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_STREAM_CONTROL, VID_STREAM_STATUS, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_VBID_CONTROL, VBID_6_COMPRESSEDSTREAM_FLAG_SOF_REFERENCE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_VBID_CONTROL, VBID_6_COMPRESSEDSTREAM_FLAG_LINE_NUMBER, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_CONTROL, SDP_STREAM_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL0, GSP_VIDEO_CONTINUOUS_TRANSMISSION_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL0, GSP_PAYLOAD_SIZE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL0, GSP_TRANSMISSION_LINE_NUMBER, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL5, GSP_VIDEO_CONTINUOUS_TRANSMISSION_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL5, GSP_TRANSMISSION_LINE_NUMBER, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_GSP_CONTROL5, GSP_SOF_REFERENCE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_METADATA_PACKET_CONTROL, METADATA_PACKET_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_AUDIO_CONTROL0, AUDIO_MUTE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_AUDIO_CONTROL0, ASP_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_AUDIO_CONTROL0, ATP_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_AUDIO_CONTROL0, AIP_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_SDP_AUDIO_CONTROL0, ACM_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_CRC_CONTROL, CRC_ENABLE, mask_sh),\
	SE_SF(DP_SYM32_ENC0_DP_SYM32_ENC_VID_CRC_CONTROL, CRC_CONT_MODE_ENABLE, mask_sh)


#define DCN3_1_HPO_DP_STREAM_ENC_REG_FIELD_LIST(type) \
	type DP_STREAM_LINK_TARGET;\
	type DP_STREAM_ENC_CLOCK_EN;\
	type DP_STREAM_ENC_INPUT_MUX_PIXEL_STREAM_SOURCE_SEL;\
	type DP_STREAM_ENC_INPUT_MUX_AUDIO_STREAM_SOURCE_SEL;\
	type FIFO_RESET;\
	type FIFO_RESET_DONE;\
	type FIFO_ENABLE;\
	type DP_SYM32_ENC_RESET;\
	type DP_SYM32_ENC_RESET_DONE;\
	type DP_SYM32_ENC_ENABLE;\
	type PIXEL_ENCODING_TYPE;\
	type UNCOMPRESSED_PIXEL_ENCODING;\
	type UNCOMPRESSED_COMPONENT_DEPTH;\
	type PIXEL_FORMAT_DOUBLE_BUFFER_ENABLE;\
	type MSA_DOUBLE_BUFFER_ENABLE;\
	type MSA_DATA_LANE_0;\
	type MSA_DATA_LANE_1;\
	type MSA_DATA_LANE_2;\
	type MSA_DATA_LANE_3;\
	type PIXEL_TO_SYMBOL_FIFO_RESET;\
	type PIXEL_TO_SYMBOL_FIFO_RESET_DONE;\
	type PIXEL_TO_SYMBOL_FIFO_ENABLE;\
	type VID_STREAM_ENABLE;\
	type VID_STREAM_STATUS;\
	type VBID_6_COMPRESSEDSTREAM_FLAG_SOF_REFERENCE;\
	type VBID_6_COMPRESSEDSTREAM_FLAG_LINE_NUMBER;\
	type SDP_STREAM_ENABLE;\
	type AUDIO_MUTE;\
	type ASP_ENABLE;\
	type ATP_ENABLE;\
	type AIP_ENABLE;\
	type ACM_ENABLE;\
	type GSP_VIDEO_CONTINUOUS_TRANSMISSION_ENABLE;\
	type GSP_PAYLOAD_SIZE;\
	type GSP_TRANSMISSION_LINE_NUMBER;\
	type GSP_SOF_REFERENCE;\
	type METADATA_PACKET_ENABLE;\
	type CRC_ENABLE;\
	type CRC_CONT_MODE_ENABLE


struct dcn31_hpo_dp_stream_encoder_registers {
	DCN3_1_HPO_DP_STREAM_ENC_REGS;
};

struct dcn31_hpo_dp_stream_encoder_shift {
	DCN3_1_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint8_t);
};

struct dcn31_hpo_dp_stream_encoder_mask {
	DCN3_1_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint32_t);
};

struct dcn31_hpo_dp_stream_encoder {
	struct hpo_dp_stream_encoder base;
	const struct dcn31_hpo_dp_stream_encoder_registers *regs;
	const struct dcn31_hpo_dp_stream_encoder_shift *hpo_se_shift;
	const struct dcn31_hpo_dp_stream_encoder_mask *hpo_se_mask;
};


void dcn31_hpo_dp_stream_encoder_construct(
	struct dcn31_hpo_dp_stream_encoder *enc3,
	struct dc_context *ctx,
	struct dc_bios *bp,
	uint32_t inst,
	enum engine_id eng_id,
	struct vpg *vpg,
	struct apg *apg,
	const struct dcn31_hpo_dp_stream_encoder_registers *regs,
	const struct dcn31_hpo_dp_stream_encoder_shift *hpo_se_shift,
	const struct dcn31_hpo_dp_stream_encoder_mask *hpo_se_mask);


#endif   // __DAL_DCN31_HPO_STREAM_ENCODER_H__
