0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #ifndef __DC_MPCC_DCN201_H__
0026 #define __DC_MPCC_DCN201_H__
0027
0028 #include "dcn20/dcn20_mpc.h"
0029
0030 #define TO_DCN201_MPC(mpc_base) \
0031 container_of(mpc_base, struct dcn201_mpc, base)
0032
0033 #define MPC_REG_LIST_DCN201(inst) \
0034 MPC_REG_LIST_DCN2_0(inst)
0035
0036 #define MPC_OUT_MUX_REG_LIST_DCN201(inst) \
0037 MPC_OUT_MUX_REG_LIST_DCN2_0(inst)
0038
0039 #define MPC_REG_VARIABLE_LIST_DCN201 \
0040 MPC_REG_VARIABLE_LIST_DCN2_0
0041
0042 #define MPC_COMMON_MASK_SH_LIST_DCN201(mask_sh) \
0043 MPC_COMMON_MASK_SH_LIST_DCN2_0(mask_sh),\
0044 SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL, mask_sh),\
0045 SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL_DISABLE, mask_sh),\
0046 SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_MODE, mask_sh),\
0047 SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_COUNT0, mask_sh),\
0048 SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_COUNT1, mask_sh)
0049
0050 #define MPC_REG_FIELD_LIST_DCN201(type) \
0051 MPC_REG_FIELD_LIST_DCN2_0(type) \
0052 type MPC_OUT_RATE_CONTROL;\
0053 type MPC_OUT_RATE_CONTROL_DISABLE;\
0054 type MPC_OUT_FLOW_CONTROL_MODE;\
0055 type MPC_OUT_FLOW_CONTROL_COUNT0;\
0056 type MPC_OUT_FLOW_CONTROL_COUNT1;
0057
0058 struct dcn201_mpc_registers {
0059 MPC_REG_VARIABLE_LIST_DCN201
0060 };
0061
0062 struct dcn201_mpc_shift {
0063 MPC_REG_FIELD_LIST_DCN201(uint8_t)
0064 };
0065
0066 struct dcn201_mpc_mask {
0067 MPC_REG_FIELD_LIST_DCN201(uint32_t)
0068 };
0069
0070 struct dcn201_mpc {
0071 struct mpc base;
0072 int mpcc_in_use_mask;
0073 int num_mpcc;
0074 const struct dcn201_mpc_registers *mpc_regs;
0075 const struct dcn201_mpc_shift *mpc_shift;
0076 const struct dcn201_mpc_mask *mpc_mask;
0077 };
0078
0079 void dcn201_mpc_construct(struct dcn201_mpc *mpc201,
0080 struct dc_context *ctx,
0081 const struct dcn201_mpc_registers *mpc_regs,
0082 const struct dcn201_mpc_shift *mpc_shift,
0083 const struct dcn201_mpc_mask *mpc_mask,
0084 int num_mpcc);
0085
0086 #endif