case CHIP_POLARIS12:
case CHIP_TONGA:
case CHIP_FIJI:
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case CHIP_VEGA10:
-#endif
#if defined(CONFIG_DRM_AMD_DC_PRE_VEGA)
return amdgpu_dc != 0;
#else
by default. This includes Polaris, Carrizo, Tonga, Bonaire,
and Hawaii.
-config DRM_AMD_DC_DCE12_0
- bool "Vega10 family"
- depends on DRM_AMD_DC
- help
- Choose this option if you want to have
- VG family for display engine.
-
config DEBUG_KERNEL_DC
bool "Enable kgdb break in DC"
depends on DRM_AMD_DC
case CHIP_POLARIS11:
case CHIP_POLARIS10:
case CHIP_POLARIS12:
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case CHIP_VEGA10:
-#endif
if (dce110_register_irq_handlers(dm->adev)) {
DRM_ERROR("DM: Failed to initialize IRQ\n");
return -1;
adev->mode_info.num_hpd = 6;
adev->mode_info.num_dig = 6;
break;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case CHIP_VEGA10:
adev->mode_info.num_crtc = 6;
adev->mode_info.num_hpd = 6;
adev->mode_info.num_dig = 6;
break;
-#endif
default:
DRM_ERROR("Usupported ASIC type: 0x%X\n", adev->asic_type);
return -EINVAL;
return false;
}
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool dm_pp_notify_wm_clock_changes_soc15(
const struct dc_context *ctx,
struct dm_pp_wm_sets_with_clock_ranges_soc15 *wm_with_clock_ranges)
/* TODO: to be implemented */
return false;
}
-#endif
bool dm_pp_apply_power_level_change_request(
const struct dc_context *ctx,
surface->tiling_info.gfx8.pipe_config =
AMDGPU_TILING_GET(tiling_flags, PIPE_CONFIG);
-#if defined (CONFIG_DRM_AMD_DC_DCE12_0)
if (adev->asic_type == CHIP_VEGA10) {
/* Fill GFX9 params */
surface->tiling_info.gfx9.num_pipes =
AMDGPU_TILING_GET(tiling_flags, SWIZZLE_MODE);
surface->tiling_info.gfx9.shaderEnable = 1;
}
-#endif
surface->plane_size.grph.surface_size.x = 0;
DC_LIBS = basics bios calcs dce gpio i2caux irq virtual
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
DC_LIBS += dce120
-endif
-
DC_LIBS += dce112
DC_LIBS += dce110
DC_LIBS += dce100
BIOS = bios_parser.o bios_parser_interface.o bios_parser_helper.o command_table.o command_table_helper.o
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
BIOS += command_table2.o command_table_helper2.o bios_parser2.o
-endif
AMD_DAL_BIOS = $(addprefix $(AMDDALPATH)/dc/bios/,$(BIOS))
AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce112/command_table_helper_dce112.o
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce112/command_table_helper2_dce112.o
-endif
#include "bios_parser_interface.h"
#include "bios_parser.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "bios_parser2.h"
-#endif
struct dc_bios *dal_bios_parser_create(
{
struct dc_bios *bios = NULL;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bios = firmware_parser_create(init, dce_version);
+ /* Fall back to old bios parser for older asics */
if (bios == NULL)
- /* TODO: remove dce_version from bios_parser.
- * cannot remove today because dal enum to bp enum translation is dce specific
- */
bios = bios_parser_create(init, dce_version);
-#else
- bios = bios_parser_create(init, dce_version);
-#endif
return bios;
}
case DCE_VERSION_11_2:
*h = dal_cmd_tbl_helper_dce112_get_table2();
return true;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
*h = dal_cmd_tbl_helper_dce112_get_table2();
return true;
-#endif
default:
/* Unsupported DCE */
return BW_CALCS_VERSION_POLARIS11;
return BW_CALCS_VERSION_INVALID;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case FAMILY_AI:
return BW_CALCS_VERSION_VEGA10;
-#endif
default:
return BW_CALCS_VERSION_INVALID;
dceip.scatter_gather_pte_request_rows_in_tiling_mode = 2;
dceip.mcifwr_all_surfaces_burst_time = bw_int_to_fixed(0);
break;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case BW_CALCS_VERSION_VEGA10:
vbios.memory_type = bw_def_hbm;
vbios.dram_channel_width_in_bits = 128;
dceip.scatter_gather_pte_request_rows_in_tiling_mode = 2;
dceip.mcifwr_all_surfaces_burst_time = bw_int_to_fixed(0);
break;
-#endif
default:
break;
}
}
}
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool dc_init_dchub(struct dc *dc, struct dchub_init_data *dh_data)
{
int i;
return true;
}
-#endif
surface->rotation,
surface->stereo_format);
-#if defined (CONFIG_DRM_AMD_DC_DCE12_0)
SURFACE_TRACE("surface->tiling_info.gfx9.swizzle = %d;\n",
surface->tiling_info.gfx9.swizzle);
-#endif
SURFACE_TRACE("\n");
}
update->plane_info->tiling_info.gfx8.array_mode,
update->plane_info->visible);
- #if defined (CONFIG_DRM_AMD_DC_DCE12_0)
- SURFACE_TRACE("surface->tiling_info.gfx9.swizzle = %d;\n",
+ SURFACE_TRACE("surface->tiling_info.gfx9.swizzle = %d;\n",
update->plane_info->tiling_info.gfx9.swizzle);
- #endif
}
if (update->scaling_info) {
pipe_ctx->dis_clk->funcs->set_min_clocks_state(
pipe_ctx->dis_clk, DM_PP_CLOCKS_STATE_NOMINAL);
} else {
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
uint32_t dp_phyclk_in_khz;
const struct clocks_value clocks_value =
pipe_ctx->dis_clk->cur_clocks_value;
false,
true);
}
-#endif
}
}
#include "dce100/dce100_resource.h"
#include "dce110/dce110_resource.h"
#include "dce112/dce112_resource.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "dce120/dce120_resource.h"
-#endif
enum dce_version resource_parse_asic_id(struct hw_asic_id asic_id)
{
dc_version = DCE_VERSION_11_2;
}
break;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case FAMILY_AI:
dc_version = DCE_VERSION_12_0;
break;
-#endif
default:
dc_version = DCE_VERSION_UNKNOWN;
break;
res_pool = dce112_create_resource_pool(
num_virtual_links, dc);
break;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
res_pool = dce120_create_resource_pool(
num_virtual_links, dc);
break;
-#endif
default:
break;
}
struct dc_dcc_surface_param {
enum surface_pixel_format format;
struct dc_size surface_size;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
enum swizzle_mode_values swizzle_mode;
-#endif
enum dc_scan_direction scan;
};
bool disable_stutter;
bool disable_dcc;
bool disable_dfs_bypass;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool disable_pplib_clock_request;
-#endif
bool disable_clock_gate;
bool disable_dmcu;
bool force_abm_enable;
struct dc_debug debug;
};
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
enum frame_buffer_mode {
FRAME_BUFFER_MODE_LOCAL_ONLY = 0,
FRAME_BUFFER_MODE_ZFB_ONLY,
uint64_t zfb_size_in_byte;
enum frame_buffer_mode fb_mode;
};
-#endif
struct dc_init_data {
struct hw_asic_id asic_id;
void dc_destroy(struct dc **dc);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool dc_init_dchub(struct dc *dc, struct dchub_init_data *dh_data);
-#endif
/*******************************************************************************
* Surface Interfaces
DC_ADDR_SURF_MICRO_TILING_NON_DISPLAY = 0x1,
};
-#if defined (CONFIG_DRM_AMD_DC_DCE12_0)
enum swizzle_mode_values {
DC_SW_LINEAR = 0,
DC_SW_256B_S = 1,
DC_SW_VAR_R_X = 31,
DC_SW_MAX
};
-#endif
union dc_tiling_info {
enum array_mode_values array_mode;
} gfx8;
-#if defined (CONFIG_DRM_AMD_DC_DCE12_0)
struct {
unsigned int num_pipes;
unsigned int num_banks;
bool rb_aligned;
bool pipe_aligned;
} gfx9;
-#endif
};
/* Rotation angle */
pll_settings, pix_clk_params);
break;
case DCE_VERSION_11_2:
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
-#endif
dce112_get_pix_clk_dividers_helper(clk_src,
pll_settings, pix_clk_params);
break;
break;
case DCE_VERSION_11_2:
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
-#endif
if (clock_source->id != CLOCK_SOURCE_ID_DP_DTO) {
bp_pc_params.flags.SET_GENLOCK_REF_DIV_SRC =
pll_settings->use_external_clk;
/*ClocksStatePerformance*/
{ .display_clk_khz = 1132000, .pixel_clk_khz = 600000 } };
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
static struct state_dependent_clocks dce120_max_clks_by_state[] = {
/*ClocksStateInvalid - should not be used*/
{ .display_clk_khz = 0, .pixel_clk_khz = 0 },
{ .display_clk_khz = 670000, .pixel_clk_khz = 600000 },
/*ClocksStatePerformance*/
{ .display_clk_khz = 1133000, .pixel_clk_khz = 600000 } };
-#endif
/* Starting point for each divider range.*/
enum dce_divider_range_start {
}
}
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
static bool dce_apply_clock_voltage_request(
struct display_clock *clk,
enum dm_pp_clock_type clocks_type,
.apply_clock_voltage_request = dce_apply_clock_voltage_request,
.set_clock = dce112_set_clock
};
-#endif
static const struct display_clock_funcs dce112_funcs = {
.get_dp_ref_clk_frequency = dce_clocks_get_dp_ref_freq,
return &clk_dce->base;
}
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
struct display_clock *dce120_disp_clk_create(
struct dc_context *ctx,
const struct dce_disp_clk_registers *regs,
return &clk_dce->base;
}
-#endif
void dce_disp_clk_destroy(struct display_clock **disp_clk)
{
CLK_SF(MASTER_COMM_CMD_REG, MASTER_COMM_CMD_REG_BYTE0, mask_sh), \
CLK_SF(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, mask_sh)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define CLK_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh) \
CLK_SF(DCCG_DFS_DPREFCLK_CNTL, DPREFCLK_SRC_SEL, mask_sh), \
CLK_SF(DCCG_DFS_DENTIST_DISPCLK_CNTL, DENTIST_DPREFCLK_WDIVIDER, mask_sh), \
CLK_SF(DCCG_DFS_MASTER_COMM_CMD_REG, MASTER_COMM_CMD_REG_BYTE0, mask_sh), \
CLK_SF(DCCG_DFS_MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, mask_sh)
-#endif
#define CLK_REG_FIELD_LIST(type) \
type DPREFCLK_SRC_SEL; \
int gpu_pll_ss_divider;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
/* max disp_clk from PPLIB for max validation display clock*/
int max_displ_clk_in_khz;
-#endif
};
const struct dce_disp_clk_shift *clk_shift,
const struct dce_disp_clk_mask *clk_mask);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
struct display_clock *dce120_disp_clk_create(
struct dc_context *ctx,
const struct dce_disp_clk_registers *regs,
const struct dce_disp_clk_shift *clk_shift,
const struct dce_disp_clk_mask *clk_mask);
-#endif
void dce_disp_clk_destroy(struct display_clock **disp_clk);
HWSEQ_DCE10_MASK_SH_LIST(mask_sh),\
HWSEQ_PHYPLL_MASK_SH_LIST(mask_sh, CRTC0_)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define HWSEQ_DCE12_MASK_SH_LIST(mask_sh)\
HWSEQ_DCEF_MASK_SH_LIST(mask_sh, DCFE0_DCFE_),\
HWSEQ_BLND_MASK_SH_LIST(mask_sh, BLND0_BLND_),\
HWSEQ_PIXEL_RATE_MASK_SH_LIST(mask_sh, CRTC0_),\
HWSEQ_PHYPLL_MASK_SH_LIST(mask_sh, CRTC0_)
-#endif
#define HWSEQ_REG_FIED_LIST(type) \
type DCFE_CLOCK_ENABLE; \
#define TO_DCE110_LINK_ENC(link_encoder)\
container_of(link_encoder, struct dce110_link_encoder, base)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
/* Not found regs in dce120 spec
* BIOS_SCRATCH_2
* DP_DPHY_INTERNAL_CTRL
*/
-#endif
#define AUX_REG_LIST(id)\
SRI(AUX_CONTROL, DP_AUX, id), \
SRI(DP_DPHY_INTERNAL_CTRL, DP, id), \
SR(DCI_MEM_PWR_STATUS)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
- #define LE_DCE120_REG_LIST(id)\
- LE_COMMON_REG_LIST_BASE(id), \
- SRI(DP_DPHY_BS_SR_SWAP_CNTL, DP, id), \
- SR(DCI_MEM_PWR_STATUS)
-#endif
+#define LE_DCE120_REG_LIST(id)\
+ LE_COMMON_REG_LIST_BASE(id), \
+ SRI(DP_DPHY_BS_SR_SWAP_CNTL, DP, id), \
+ SR(DCI_MEM_PWR_STATUS)
- #define LE_DCE80_REG_LIST(id)\
- SRI(DP_DPHY_INTERNAL_CTRL, DP, id), \
- LE_COMMON_REG_LIST_BASE(id)
+#define LE_DCE80_REG_LIST(id)\
+ SRI(DP_DPHY_INTERNAL_CTRL, DP, id), \
+ LE_COMMON_REG_LIST_BASE(id)
struct dce110_link_enc_aux_registers {
REG_UPDATE(DPG_PIPE_NB_PSTATE_CHANGE_CONTROL,
NB_PSTATE_CHANGE_WATERMARK, nbp_wm);
}
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
+
if (REG(DPG_PIPE_LOW_POWER_CONTROL)) {
REG_UPDATE(DPG_WATERMARK_MASK_CONTROL,
PSTATE_CHANGE_WATERMARK_MASK, wm_select);
REG_UPDATE(DPG_PIPE_LOW_POWER_CONTROL,
PSTATE_CHANGE_WATERMARK, nbp_wm);
}
-#endif
}
static void program_stutter_watermark(struct mem_input *mi,
REG_UPDATE(DPG_WATERMARK_MASK_CONTROL,
STUTTER_EXIT_SELF_REFRESH_WATERMARK_MASK, wm_select);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
if (REG(DPG_PIPE_STUTTER_CONTROL2))
REG_UPDATE(DPG_PIPE_STUTTER_CONTROL2,
STUTTER_EXIT_SELF_REFRESH_WATERMARK, stutter_mark);
else
-#endif
REG_UPDATE(DPG_PIPE_STUTTER_CONTROL,
STUTTER_EXIT_SELF_REFRESH_WATERMARK, stutter_mark);
}
static void program_tiling(struct mem_input *mi,
const union dc_tiling_info *info)
{
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
if (mi->masks->GRPH_SW_MODE) { /* GFX9 */
REG_UPDATE_6(GRPH_CONTROL,
GRPH_SW_MODE, info->gfx9.swizzle,
GRPH_Z, 0);
*/
}
-#endif
+
if (mi->masks->GRPH_ARRAY_MODE) { /* GFX8 */
REG_UPDATE_9(GRPH_CONTROL,
GRPH_NUM_BANKS, info->gfx8.num_banks,
MI_DCE11_2_REG_LIST(id),\
MI_DCE_PTE_REG_LIST(id)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define MI_DCE12_REG_LIST(id)\
MI_DCE_BASE_REG_LIST(id),\
MI_DCE_PTE_REG_LIST(id),\
SRI(GRPH_PIPE_OUTSTANDING_REQUEST_LIMIT, DCP, id),\
SRI(DPG_PIPE_STUTTER_CONTROL2, DMIF_PG, id),\
SRI(DPG_PIPE_LOW_POWER_CONTROL, DMIF_PG, id)
-#endif
struct dce_mem_input_registers {
/* DCP */
MI_DCE11_2_MASK_SH_LIST(mask_sh),\
MI_DCP_PTE_MASK_SH_LIST(mask_sh, )
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define MI_GFX9_TILE_MASK_SH_LIST(mask_sh, blk)\
SFB(blk, GRPH_CONTROL, GRPH_SW_MODE, mask_sh),\
SFB(blk, GRPH_CONTROL, GRPH_SE_ENABLE, mask_sh),\
MI_DMIF_PG_MASK_SH_LIST(mask_sh, DMIF_PG0_),\
MI_DCE12_DMIF_PG_MASK_SH_LIST(mask_sh, DMIF_PG0_),\
MI_GFX9_TILE_MASK_SH_LIST(mask_sh, DCP0_)
-#endif
#define MI_REG_FIELD_LIST(type) \
type GRPH_ENABLE; \
SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_T_MATRIX, FMT, id), \
SRI(CONTROL, FMT_MEMORY, id)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define OPP_DCE_120_REG_LIST(id) \
OPP_COMMON_REG_LIST_BASE(id), \
SRI(DCFE_MEM_PWR_CTRL, DCFE, id), \
SRI(DCFE_MEM_PWR_STATUS, DCFE, id), \
SRI(CONTROL, FMT_MEMORY, id)
-#endif
#define OPP_SF(reg_name, field_name, post_fix)\
.field_name = reg_name ## __ ## field_name ## post_fix
OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, DCP_LUT_LIGHT_SLEEP_DIS, mask_sh),\
OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, REGAMMA_LUT_MEM_PWR_STATE, mask_sh)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define OPP_COMMON_MASK_SH_LIST_DCE_120(mask_sh)\
OPP_SF(DCFE0_DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
OPP_SF(DCFE0_DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
OPP_SF(FMT0_FMT_CONTROL, FMT_SUBSAMPLING_MODE, mask_sh),\
OPP_SF(FMT0_FMT_CONTROL, FMT_SUBSAMPLING_ORDER, mask_sh),\
OPP_SF(FMT0_FMT_CONTROL, FMT_CBCR_BIT_REDUCTION_BYPASS, mask_sh)
-#endif
#define OPP_REG_FIELD_LIST(type) \
type DCP_REGAMMA_MEM_PWR_DIS; \
#define SE_COMMON_MASK_SH_LIST_DCE_COMMON(mask_sh)\
SE_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define SE_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh)\
SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_INDEX, mask_sh),\
SE_SF(DIG0_AFMT_GENERIC_HDR, AFMT_GENERIC_HB0, mask_sh),\
SE_SF(DIG0_HDMI_CONTROL, HDMI_CLOCK_CHANNEL_RATE, mask_sh),\
SE_SF(DIG0_DIG_FE_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
SE_SF(DIG0_DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh)
-#endif
#define SE_COMMON_MASK_SH_LIST_SOC(mask_sh)\
SE_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh)
SE_SF(DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh),\
SE_SF(DP_VID_TIMING, DP_VID_M_DOUBLE_VALUE_EN, mask_sh)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define SE_COMMON_MASK_SH_LIST_DCE120(mask_sh)\
SE_COMMON_MASK_SH_LIST_SOC(mask_sh),\
SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC0_UPDATE, mask_sh),\
SE_SF(DP0_DP_SEC_CNTL, DP_SEC_AVI_ENABLE, mask_sh),\
SE_SF(DIG0_AFMT_AVI_INFO3, AFMT_AVI_INFO_VERSION, mask_sh),\
SE_SF(DP0_DP_VID_TIMING, DP_VID_M_DOUBLE_VALUE_EN, mask_sh)
-#endif
struct dce_stream_encoder_shift {
uint8_t AFMT_GENERIC_INDEX;
XFM_SF(DCFE_MEM_PWR_STATUS, SCL_COEFF_MEM_PWR_STATE, mask_sh), \
XFM_SF(SCL_MODE, SCL_PSCL_EN, mask_sh)
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define XFM_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh) \
XFM_SF(DCP0_OUT_CLAMP_CONTROL_B_CB, OUT_CLAMP_MIN_B_CB, mask_sh), \
XFM_SF(DCP0_OUT_CLAMP_CONTROL_B_CB, OUT_CLAMP_MAX_B_CB, mask_sh), \
XFM_SF(DCFE0_DCFE_MEM_PWR_CTRL, SCL_COEFF_MEM_PWR_DIS, mask_sh), \
XFM_SF(DCFE0_DCFE_MEM_PWR_STATUS, SCL_COEFF_MEM_PWR_STATE, mask_sh), \
XFM_SF(SCL0_SCL_MODE, SCL_PSCL_EN, mask_sh)
-#endif
#define XFM_REG_FIELD_LIST(type) \
type OUT_CLAMP_MIN_B_CB; \
return;
}
- /* TODOFPGA */
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
/* TODO: This is incorrect. Figure out how to fix. */
pipe_ctx->dis_clk->funcs->apply_clock_voltage_request(
pipe_ctx->dis_clk,
pre_mode_set,
false);
return;
-#endif
}
/* get the required state based on state dependent clocks:
pipe_ctx->dis_clk->funcs->set_min_clocks_state(
pipe_ctx->dis_clk, *clocks_state);
} else {
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
pipe_ctx->dis_clk->funcs->apply_clock_voltage_request(
pipe_ctx->dis_clk,
DM_PP_CLOCK_TYPE_DISPLAY_CLK,
req_clocks.pixel_clk_khz,
pre_mode_set,
false);
-#endif
}
}
dce_mem_input_program_surface_config,
.mem_input_is_flip_pending =
dce110_mem_input_is_flip_pending,
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
.mem_input_update_dchub = NULL
-#endif
};
/*****************************************/
/* Constructor, Destructor */
uint32_t min_h_front_porch;
uint32_t min_h_back_porch;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
/* DCE 12 */
-#endif
uint32_t min_h_sync_width;
uint32_t min_v_sync_width;
uint32_t min_v_blank;
{
unsigned int i;
struct dc_context *ctx = dc->ctx;
+ struct irq_service_init_data irq_init_data;
ctx->dc_bios->regs = &bios_regs;
goto res_create_fail;
}
- {
- #if defined(CONFIG_DRM_AMD_DC_DCE12_0)
- struct irq_service_init_data init_data;
- init_data.ctx = dc->ctx;
- pool->base.irqs = dal_irq_service_dce120_create(&init_data);
- if (!pool->base.irqs)
- goto irqs_create_fail;
- #endif
- }
+ irq_init_data.ctx = dc->ctx;
+ pool->base.irqs = dal_irq_service_dce120_create(&irq_init_data);
+ if (!pool->base.irqs)
+ goto irqs_create_fail;
for (i = 0; i < pool->base.pipe_count; i++) {
pool->base.timing_generators[i] =
dce_mem_input_program_surface_config,
.mem_input_is_flip_pending =
dce110_mem_input_is_flip_pending,
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
.mem_input_update_dchub = NULL
-#endif
};
/*****************************************/
unsigned int delay_between_poll_us, unsigned int time_out_num_tries,
const char *func_name);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
/* These macros need to be used with soc15 registers in order to retrieve
* the actual offset.
20000,\
200000)
-#endif
/**************************************
* Power Play (PP) interfaces
**************************************/
const struct dc_context *ctx,
struct dm_pp_wm_sets_with_clock_ranges *wm_with_clock_ranges);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool dm_pp_notify_wm_clock_changes_soc15(
const struct dc_context *ctx,
struct dm_pp_wm_sets_with_clock_ranges_soc15 *wm_with_clock_ranges);
-#endif
/* DAL calls this function to notify PP about completion of Mode Set.
* For PP it means that current DCE clocks are those which were returned
struct dm_pp_clock_range_for_wm_set wm_clk_ranges[MAX_WM_SETS];
};
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
struct dm_pp_clock_range_for_dmif_wm_set_soc15 {
enum dm_pp_wm_set_id wm_set_id;
uint32_t wm_min_dcfclk_clk_in_khz;
struct dm_pp_clock_range_for_mcif_wm_set_soc15
wm_mcif_clocks_ranges[MAX_WM_SETS];
};
-#endif
#define MAX_DISPLAY_CONFIGS 6
###############################################################################
# DCE 12x
###############################################################################
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
GPIO_DCE120 = hw_translate_dce120.o hw_factory_dce120.o
AMD_DAL_GPIO_DCE120 = $(addprefix $(AMDDALPATH)/dc/gpio/dce120/,$(GPIO_DCE120))
AMD_DISPLAY_FILES += $(AMD_DAL_GPIO_DCE120)
-endif
###############################################################################
# Diagnostics on FPGA
#include "dce110/hw_factory_dce110.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "dce120/hw_factory_dce120.h"
-#endif
#include "diagnostics/hw_factory_diag.h"
case DCE_VERSION_11_2:
dal_hw_factory_dce110_init(factory);
return true;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
dal_hw_factory_dce120_init(factory);
return true;
-#endif
default:
ASSERT_CRITICAL(false);
return false;
#include "dce80/hw_translate_dce80.h"
#include "dce110/hw_translate_dce110.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "dce120/hw_translate_dce120.h"
-#endif
#include "diagnostics/hw_translate_diag.h"
/*
case DCE_VERSION_11_2:
dal_hw_translate_dce110_init(translate);
return true;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
dal_hw_translate_dce120_init(translate);
return true;
-#endif
default:
BREAK_TO_DEBUGGER();
return false;
###############################################################################
# DCE 120 family
###############################################################################
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
I2CAUX_DCE120 = i2caux_dce120.o
AMD_DAL_I2CAUX_DCE120 = $(addprefix $(AMDDALPATH)/dc/i2caux/dce120/,$(I2CAUX_DCE120))
AMD_DISPLAY_FILES += $(AMD_DAL_I2CAUX_DCE120)
-endif
###############################################################################
# Diagnostics on FPGA
#include "dce112/i2caux_dce112.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "dce120/i2caux_dce120.h"
-#endif
#include "diagnostics/i2caux_diag.h"
return dal_i2caux_dce110_create(ctx);
case DCE_VERSION_10_0:
return dal_i2caux_dce100_create(ctx);
- #if defined(CONFIG_DRM_AMD_DC_DCE12_0)
case DCE_VERSION_12_0:
return dal_i2caux_dce120_create(ctx);
- #endif
default:
BREAK_TO_DEBUGGER();
return NULL;
BW_CALCS_VERSION_POLARIS10,
BW_CALCS_VERSION_POLARIS11,
BW_CALCS_VERSION_STONEY,
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
BW_CALCS_VERSION_VEGA10
-#endif
};
/*******************************************************************************
#include "dm_services_types.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
struct clocks_value {
int dispclk_in_khz;
int max_pixelclk_in_khz;
bool pixelclk_notify_pplib_done;
bool phyclk_notigy_pplib_done;
};
-#endif
/* Structure containing all state-dependent clocks
* (dependent on "enum clocks_state") */
enum dm_pp_clocks_state max_clks_state;
enum dm_pp_clocks_state cur_min_clks_state;
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
struct clocks_value cur_clocks_value;
-#endif
};
struct display_clock_funcs {
int (*get_dp_ref_clk_frequency)(struct display_clock *disp_clk);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
bool (*apply_clock_voltage_request)(
struct display_clock *disp_clk,
enum dm_pp_clock_type clocks_type,
int clocks_in_khz,
bool pre_mode_set,
bool update_dp_phyclk);
-#endif
};
#endif /* __DISPLAY_CLOCK_H__ */
bool (*mem_input_is_flip_pending)(struct mem_input *mem_input);
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
void (*mem_input_update_dchub)(struct mem_input *mem_input,
struct dchub_init_data *dh_data);
-#endif
};
#endif
###############################################################################
# DCE 12x
###############################################################################
-ifdef CONFIG_DRM_AMD_DC_DCE12_0
IRQ_DCE12 = irq_service_dce120.o
AMD_DAL_IRQ_DCE12 = $(addprefix $(AMDDALPATH)/dc/irq/dce120/,$(IRQ_DCE12))
AMD_DISPLAY_FILES += $(AMD_DAL_IRQ_DCE12)
-endif
#include "dce80/irq_service_dce80.h"
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#include "dce120/irq_service_dce120.h"
-#endif
#include "reg_helper.h"
#include "irq_service.h"
#define FAMILY_VI 130 /* Volcanic Islands: Iceland (V), Tonga (M) */
#define FAMILY_CZ 135 /* Carrizo */
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
#define FAMILY_AI 141
-#endif
#define FAMILY_UNKNOWN 0xFF
DCE_VERSION_10_0,
DCE_VERSION_11_0,
DCE_VERSION_11_2,
-#if defined(CONFIG_DRM_AMD_DC_DCE12_0)
DCE_VERSION_12_0,
-#endif
DCE_VERSION_MAX,
};