blob: 32fe817e03f9aa3d14560bfaaf1dab0304aea31d [file] [log] [blame]
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __DRM_PROPERTY_H__
#define __DRM_PROPERTY_H__
#include <stdint.h>
#include <string>
namespace sde_drm {
enum struct DRMProperty {
INVALID,
TYPE,
FB_ID,
CRTC_ID,
CRTC_X,
CRTC_Y,
CRTC_W,
CRTC_H,
SRC_X,
SRC_Y,
SRC_W,
SRC_H,
ZPOS,
ALPHA,
EXCL_RECT,
H_DECIMATE,
V_DECIMATE,
INPUT_FENCE,
ROTATION,
BLEND_OP,
SRC_CONFIG,
SCALER_V1,
SCALER_V2,
CSC_V1,
CAPABILITIES,
MODE_PROPERTIES,
LUT_ED,
LUT_CIR,
LUT_SEP,
ROTATOR_CAPS_V1,
TRUE_INLINE_ROT_REV,
FB_TRANSLATION_MODE,
ACTIVE,
MODE_ID,
OUTPUT_FENCE_OFFSET,
OUTPUT_FENCE,
ROI_V1,
CORE_CLK,
CORE_AB,
CORE_IB,
LLCC_AB,
LLCC_IB,
DRAM_AB,
DRAM_IB,
ROT_PREFILL_BW,
ROT_CLK,
SECURITY_LEVEL,
DIM_STAGES_V1,
IDLE_TIME,
RETIRE_FENCE,
DST_X,
DST_Y,
DST_W,
DST_H,
LP,
HDR_PROPERTIES,
DEST_SCALER,
DS_LUT_ED,
DS_LUT_CIR,
DS_LUT_SEP,
SDE_DSPP_GAMUT_V3,
SDE_DSPP_GAMUT_V4,
SDE_DSPP_GAMUT_V5,
SDE_DSPP_GC_V1,
SDE_DSPP_GC_V2,
SDE_DSPP_IGC_V2,
SDE_DSPP_IGC_V3,
SDE_DSPP_IGC_V4,
SDE_DSPP_PCC_V3,
SDE_DSPP_PCC_V4,
SDE_DSPP_PCC_V5,
SDE_DSPP_PA_HSIC_V1,
SDE_DSPP_PA_HSIC_V2,
SDE_DSPP_PA_SIXZONE_V1,
SDE_DSPP_PA_SIXZONE_V2,
SDE_DSPP_PA_MEMCOL_SKIN_V1,
SDE_DSPP_PA_MEMCOL_SKIN_V2,
SDE_DSPP_PA_MEMCOL_SKY_V1,
SDE_DSPP_PA_MEMCOL_SKY_V2,
SDE_DSPP_PA_MEMCOL_FOLIAGE_V1,
SDE_DSPP_PA_MEMCOL_FOLIAGE_V2,
SDE_DSPP_PA_MEMCOL_PROT_V1,
SDE_DSPP_PA_MEMCOL_PROT_V2,
AUTOREFRESH,
EXT_HDR_PROPERTIES,
HDR_METADATA,
MULTIRECT_MODE,
ROT_FB_ID,
SDE_DSPP_PA_DITHER_V1,
SDE_DSPP_PA_DITHER_V2,
SDE_PP_DITHER_V1,
SDE_PP_DITHER_V2,
INVERSE_PMA,
CSC_DMA_V1,
SDE_DGM_1D_LUT_IGC_V5,
SDE_DGM_1D_LUT_GC_V5,
SDE_VIG_1D_LUT_IGC_V5,
SDE_VIG_1D_LUT_IGC_V6,
SDE_VIG_3D_LUT_GAMUT_V5,
SDE_VIG_3D_LUT_GAMUT_V6,
SDE_DSPP_AD4_MODE,
SDE_DSPP_AD4_INIT,
SDE_DSPP_AD4_CFG,
SDE_DSPP_AD4_INPUT,
SDE_DSPP_AD4_BACKLIGHT,
SDE_DSPP_AD4_ROI,
SDE_DSPP_AD4_ASSERTIVENESS,
SDE_DSPP_AD4_STRENGTH,
SDE_DSPP_ABA_HIST_CTRL,
SDE_DSPP_ABA_HIST_IRQ,
SDE_DSPP_ABA_LUT,
SDE_DSPP_SV_BL_SCALE,
SDE_DSPP_BL_SCALE,
CAPTURE_MODE,
QSYNC_MODE,
IDLE_PC_STATE,
TOPOLOGY_CONTROL,
EDID,
SDE_LTM_VERSION,
SDE_LTM_INIT,
SDE_LTM_CFG,
SDE_LTM_NOISE_THRESH,
SDE_LTM_HIST_CTRL,
SDE_LTM_BUFFER_CTRL,
SDE_LTM_QUEUE_BUFFER,
SDE_LTM_QUEUE_BUFFER2,
SDE_LTM_QUEUE_BUFFER3,
SDE_LTM_VLUT,
FRAME_TRIGGER,
// Insert above
MAX
};
struct DRMPropertyManager {
DRMProperty GetPropertyEnum(const std::string &name) const;
void SetPropertyId(DRMProperty prop_enum, uint32_t prop_id) {
properties_[(uint32_t)prop_enum] = prop_id;
}
uint32_t GetPropertyId(DRMProperty prop_enum) const {
return properties_[(uint32_t)prop_enum];
}
bool IsPropertyAvailable(DRMProperty prop_enum) const {
return !!properties_[(uint32_t)prop_enum];
}
private:
uint32_t properties_[(uint32_t)DRMProperty::MAX] {};
};
} // namespace sde_drm
#endif // __DRM_PROPERTY_H__