cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dcn20_resource.h (5810B)


      1/*
      2* Copyright 2017 Advanced Micro Devices, Inc.
      3 *
      4 * Permission is hereby granted, free of charge, to any person obtaining a
      5 * copy of this software and associated documentation files (the "Software"),
      6 * to deal in the Software without restriction, including without limitation
      7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8 * and/or sell copies of the Software, and to permit persons to whom the
      9 * Software is furnished to do so, subject to the following conditions:
     10 *
     11 * The above copyright notice and this permission notice shall be included in
     12 * all copies or substantial portions of the Software.
     13 *
     14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     20 * OTHER DEALINGS IN THE SOFTWARE.
     21 *
     22 * Authors: AMD
     23 *
     24 */
     25
     26#ifndef __DC_RESOURCE_DCN20_H__
     27#define __DC_RESOURCE_DCN20_H__
     28
     29#include "core_types.h"
     30#include "dml/dcn20/dcn20_fpu.h"
     31
     32#define TO_DCN20_RES_POOL(pool)\
     33	container_of(pool, struct dcn20_resource_pool, base)
     34
     35struct dc;
     36struct resource_pool;
     37struct _vcs_dpi_display_pipe_params_st;
     38
     39extern struct _vcs_dpi_ip_params_st dcn2_0_ip;
     40extern struct _vcs_dpi_ip_params_st dcn2_0_nv14_ip;
     41extern struct _vcs_dpi_soc_bounding_box_st dcn2_0_soc;
     42extern struct _vcs_dpi_soc_bounding_box_st dcn2_0_nv14_soc;
     43extern struct _vcs_dpi_soc_bounding_box_st dcn2_0_nv12_soc;
     44
     45struct dcn20_resource_pool {
     46	struct resource_pool base;
     47};
     48struct resource_pool *dcn20_create_resource_pool(
     49		const struct dc_init_data *init_data,
     50		struct dc *dc);
     51
     52struct link_encoder *dcn20_link_encoder_create(
     53	const struct encoder_init_data *enc_init_data);
     54
     55unsigned int dcn20_calc_max_scaled_time(
     56		unsigned int time_per_pixel,
     57		enum mmhubbub_wbif_mode mode,
     58		unsigned int urgent_watermark);
     59
     60struct pipe_ctx *dcn20_acquire_idle_pipe_for_layer(
     61		struct dc_state *state,
     62		const struct resource_pool *pool,
     63		struct dc_stream_state *stream);
     64
     65struct stream_encoder *dcn20_stream_encoder_create(
     66	enum engine_id eng_id,
     67	struct dc_context *ctx);
     68
     69struct dce_hwseq *dcn20_hwseq_create(
     70	struct dc_context *ctx);
     71
     72bool dcn20_get_dcc_compression_cap(const struct dc *dc,
     73		const struct dc_dcc_surface_param *input,
     74		struct dc_surface_dcc_cap *output);
     75
     76void dcn20_dpp_destroy(struct dpp **dpp);
     77
     78struct dpp *dcn20_dpp_create(
     79	struct dc_context *ctx,
     80	uint32_t inst);
     81
     82struct input_pixel_processor *dcn20_ipp_create(
     83	struct dc_context *ctx, uint32_t inst);
     84
     85struct output_pixel_processor *dcn20_opp_create(
     86	struct dc_context *ctx, uint32_t inst);
     87
     88struct dce_aux *dcn20_aux_engine_create(
     89	struct dc_context *ctx, uint32_t inst);
     90
     91struct dce_i2c_hw *dcn20_i2c_hw_create(
     92	struct dc_context *ctx,
     93	uint32_t inst);
     94
     95void dcn20_clock_source_destroy(struct clock_source **clk_src);
     96
     97struct display_stream_compressor *dcn20_dsc_create(
     98	struct dc_context *ctx, uint32_t inst);
     99void dcn20_dsc_destroy(struct display_stream_compressor **dsc);
    100
    101struct hubp *dcn20_hubp_create(
    102	struct dc_context *ctx,
    103	uint32_t inst);
    104struct timing_generator *dcn20_timing_generator_create(
    105		struct dc_context *ctx,
    106		uint32_t instance);
    107struct mpc *dcn20_mpc_create(struct dc_context *ctx);
    108struct hubbub *dcn20_hubbub_create(struct dc_context *ctx);
    109
    110bool dcn20_dwbc_create(struct dc_context *ctx, struct resource_pool *pool);
    111bool dcn20_mmhubbub_create(struct dc_context *ctx, struct resource_pool *pool);
    112
    113void dcn20_set_mcif_arb_params(
    114		struct dc *dc,
    115		struct dc_state *context,
    116		display_e2e_pipe_params_st *pipes,
    117		int pipe_cnt);
    118bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context, bool fast_validate);
    119void dcn20_merge_pipes_for_validate(
    120		struct dc *dc,
    121		struct dc_state *context);
    122int dcn20_validate_apply_pipe_split_flags(
    123		struct dc *dc,
    124		struct dc_state *context,
    125		int vlevel,
    126		int *split,
    127		bool *merge);
    128void dcn20_release_dsc(struct resource_context *res_ctx,
    129			const struct resource_pool *pool,
    130			struct display_stream_compressor **dsc);
    131bool dcn20_validate_dsc(struct dc *dc, struct dc_state *new_ctx);
    132void dcn20_split_stream_for_mpc(
    133		struct resource_context *res_ctx,
    134		const struct resource_pool *pool,
    135		struct pipe_ctx *primary_pipe,
    136		struct pipe_ctx *secondary_pipe);
    137bool dcn20_split_stream_for_odm(
    138		const struct dc *dc,
    139		struct resource_context *res_ctx,
    140		struct pipe_ctx *prev_odm_pipe,
    141		struct pipe_ctx *next_odm_pipe);
    142void dcn20_acquire_dsc(const struct dc *dc,
    143			struct resource_context *res_ctx,
    144			struct display_stream_compressor **dsc,
    145			int pipe_idx);
    146struct pipe_ctx *dcn20_find_secondary_pipe(struct dc *dc,
    147		struct resource_context *res_ctx,
    148		const struct resource_pool *pool,
    149		const struct pipe_ctx *primary_pipe);
    150bool dcn20_fast_validate_bw(
    151		struct dc *dc,
    152		struct dc_state *context,
    153		display_e2e_pipe_params_st *pipes,
    154		int *pipe_cnt_out,
    155		int *pipe_split_from,
    156		int *vlevel_out,
    157		bool fast_validate);
    158
    159enum dc_status dcn20_build_mapped_resource(const struct dc *dc, struct dc_state *context, struct dc_stream_state *stream);
    160enum dc_status dcn20_add_stream_to_ctx(struct dc *dc, struct dc_state *new_ctx, struct dc_stream_state *dc_stream);
    161enum dc_status dcn20_add_dsc_to_stream_resource(struct dc *dc, struct dc_state *dc_ctx, struct dc_stream_state *dc_stream);
    162enum dc_status dcn20_remove_stream_from_ctx(struct dc *dc, struct dc_state *new_ctx, struct dc_stream_state *dc_stream);
    163enum dc_status dcn20_patch_unknown_plane_state(struct dc_plane_state *plane_state);
    164
    165#endif /* __DC_RESOURCE_DCN20_H__ */
    166