186b6a203SDmytro Laktyushkin /* 286b6a203SDmytro Laktyushkin * Copyright 2017 Advanced Micro Devices, Inc. 386b6a203SDmytro Laktyushkin * 486b6a203SDmytro Laktyushkin * Permission is hereby granted, free of charge, to any person obtaining a 586b6a203SDmytro Laktyushkin * copy of this software and associated documentation files (the "Software"), 686b6a203SDmytro Laktyushkin * to deal in the Software without restriction, including without limitation 786b6a203SDmytro Laktyushkin * the rights to use, copy, modify, merge, publish, distribute, sublicense, 886b6a203SDmytro Laktyushkin * and/or sell copies of the Software, and to permit persons to whom the 986b6a203SDmytro Laktyushkin * Software is furnished to do so, subject to the following conditions: 1086b6a203SDmytro Laktyushkin * 1186b6a203SDmytro Laktyushkin * The above copyright notice and this permission notice shall be included in 1286b6a203SDmytro Laktyushkin * all copies or substantial portions of the Software. 1386b6a203SDmytro Laktyushkin * 1486b6a203SDmytro Laktyushkin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1586b6a203SDmytro Laktyushkin * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1686b6a203SDmytro Laktyushkin * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1786b6a203SDmytro Laktyushkin * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 1886b6a203SDmytro Laktyushkin * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 1986b6a203SDmytro Laktyushkin * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 2086b6a203SDmytro Laktyushkin * OTHER DEALINGS IN THE SOFTWARE. 2186b6a203SDmytro Laktyushkin * 2286b6a203SDmytro Laktyushkin * Authors: AMD 2386b6a203SDmytro Laktyushkin * 2486b6a203SDmytro Laktyushkin */ 2586b6a203SDmytro Laktyushkin 26e6303950SDmytro Laktyushkin #ifndef _DCE_IPP_H_ 27e6303950SDmytro Laktyushkin #define _DCE_IPP_H_ 2886b6a203SDmytro Laktyushkin 2986b6a203SDmytro Laktyushkin #include "ipp.h" 3086b6a203SDmytro Laktyushkin 3186b6a203SDmytro Laktyushkin #define TO_DCE_IPP(ipp)\ 3286b6a203SDmytro Laktyushkin container_of(ipp, struct dce_ipp, base) 3386b6a203SDmytro Laktyushkin 3486b6a203SDmytro Laktyushkin #define IPP_COMMON_REG_LIST_DCE_BASE(id) \ 3586b6a203SDmytro Laktyushkin SRI(CUR_UPDATE, DCP, id), \ 3686b6a203SDmytro Laktyushkin SRI(CUR_CONTROL, DCP, id), \ 3786b6a203SDmytro Laktyushkin SRI(CUR_POSITION, DCP, id), \ 3886b6a203SDmytro Laktyushkin SRI(CUR_HOT_SPOT, DCP, id), \ 3986b6a203SDmytro Laktyushkin SRI(CUR_COLOR1, DCP, id), \ 4086b6a203SDmytro Laktyushkin SRI(CUR_COLOR2, DCP, id), \ 4186b6a203SDmytro Laktyushkin SRI(CUR_SIZE, DCP, id), \ 4286b6a203SDmytro Laktyushkin SRI(CUR_SURFACE_ADDRESS_HIGH, DCP, id), \ 4386b6a203SDmytro Laktyushkin SRI(CUR_SURFACE_ADDRESS, DCP, id), \ 4486b6a203SDmytro Laktyushkin SRI(PRESCALE_GRPH_CONTROL, DCP, id), \ 4586b6a203SDmytro Laktyushkin SRI(PRESCALE_VALUES_GRPH_R, DCP, id), \ 4686b6a203SDmytro Laktyushkin SRI(PRESCALE_VALUES_GRPH_G, DCP, id), \ 4786b6a203SDmytro Laktyushkin SRI(PRESCALE_VALUES_GRPH_B, DCP, id), \ 4886b6a203SDmytro Laktyushkin SRI(INPUT_GAMMA_CONTROL, DCP, id), \ 4986b6a203SDmytro Laktyushkin SRI(DC_LUT_WRITE_EN_MASK, DCP, id), \ 5086b6a203SDmytro Laktyushkin SRI(DC_LUT_RW_MODE, DCP, id), \ 5186b6a203SDmytro Laktyushkin SRI(DC_LUT_CONTROL, DCP, id), \ 5286b6a203SDmytro Laktyushkin SRI(DC_LUT_RW_INDEX, DCP, id), \ 5386b6a203SDmytro Laktyushkin SRI(DC_LUT_SEQ_COLOR, DCP, id), \ 5486b6a203SDmytro Laktyushkin SRI(DEGAMMA_CONTROL, DCP, id) 5586b6a203SDmytro Laktyushkin 56e6303950SDmytro Laktyushkin #define IPP_DCE100_REG_LIST_DCE_BASE(id) \ 57e6303950SDmytro Laktyushkin IPP_COMMON_REG_LIST_DCE_BASE(id), \ 58e6303950SDmytro Laktyushkin SRI(DCFE_MEM_PWR_CTRL, CRTC, id) 59e6303950SDmytro Laktyushkin 60e6303950SDmytro Laktyushkin #define IPP_DCE110_REG_LIST_DCE_BASE(id) \ 61e6303950SDmytro Laktyushkin IPP_COMMON_REG_LIST_DCE_BASE(id), \ 62e6303950SDmytro Laktyushkin SRI(DCFE_MEM_PWR_CTRL, DCFE, id) 63e6303950SDmytro Laktyushkin 6486b6a203SDmytro Laktyushkin #define IPP_SF(reg_name, field_name, post_fix)\ 6586b6a203SDmytro Laktyushkin .field_name = reg_name ## __ ## field_name ## post_fix 6686b6a203SDmytro Laktyushkin 6786b6a203SDmytro Laktyushkin #define IPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh) \ 6886b6a203SDmytro Laktyushkin IPP_SF(CUR_UPDATE, CURSOR_UPDATE_LOCK, mask_sh), \ 6986b6a203SDmytro Laktyushkin IPP_SF(CUR_CONTROL, CURSOR_EN, mask_sh), \ 7086b6a203SDmytro Laktyushkin IPP_SF(CUR_CONTROL, CURSOR_MODE, mask_sh), \ 7186b6a203SDmytro Laktyushkin IPP_SF(CUR_CONTROL, CURSOR_2X_MAGNIFY, mask_sh), \ 7286b6a203SDmytro Laktyushkin IPP_SF(CUR_CONTROL, CUR_INV_TRANS_CLAMP, mask_sh), \ 7386b6a203SDmytro Laktyushkin IPP_SF(CUR_POSITION, CURSOR_X_POSITION, mask_sh), \ 7486b6a203SDmytro Laktyushkin IPP_SF(CUR_POSITION, CURSOR_Y_POSITION, mask_sh), \ 7586b6a203SDmytro Laktyushkin IPP_SF(CUR_HOT_SPOT, CURSOR_HOT_SPOT_X, mask_sh), \ 7686b6a203SDmytro Laktyushkin IPP_SF(CUR_HOT_SPOT, CURSOR_HOT_SPOT_Y, mask_sh), \ 7786b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR1, CUR_COLOR1_BLUE, mask_sh), \ 7886b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR1, CUR_COLOR1_GREEN, mask_sh), \ 7986b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR1, CUR_COLOR1_RED, mask_sh), \ 8086b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR2, CUR_COLOR2_BLUE, mask_sh), \ 8186b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR2, CUR_COLOR2_GREEN, mask_sh), \ 8286b6a203SDmytro Laktyushkin IPP_SF(CUR_COLOR2, CUR_COLOR2_RED, mask_sh), \ 8386b6a203SDmytro Laktyushkin IPP_SF(CUR_SIZE, CURSOR_WIDTH, mask_sh), \ 8486b6a203SDmytro Laktyushkin IPP_SF(CUR_SIZE, CURSOR_HEIGHT, mask_sh), \ 8586b6a203SDmytro Laktyushkin IPP_SF(CUR_SURFACE_ADDRESS_HIGH, CURSOR_SURFACE_ADDRESS_HIGH, mask_sh), \ 8686b6a203SDmytro Laktyushkin IPP_SF(CUR_SURFACE_ADDRESS, CURSOR_SURFACE_ADDRESS, mask_sh), \ 8786b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_GRPH_CONTROL, GRPH_PRESCALE_BYPASS, mask_sh), \ 8886b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_SCALE_R, mask_sh), \ 8986b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_BIAS_R, mask_sh), \ 9086b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_SCALE_G, mask_sh), \ 9186b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_BIAS_G, mask_sh), \ 9286b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_SCALE_B, mask_sh), \ 9386b6a203SDmytro Laktyushkin IPP_SF(PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_BIAS_B, mask_sh), \ 9486b6a203SDmytro Laktyushkin IPP_SF(INPUT_GAMMA_CONTROL, GRPH_INPUT_GAMMA_MODE, mask_sh), \ 9586b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_WRITE_EN_MASK, DC_LUT_WRITE_EN_MASK, mask_sh), \ 9686b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_RW_MODE, DC_LUT_RW_MODE, mask_sh), \ 9786b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_R_FORMAT, mask_sh), \ 9886b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_G_FORMAT, mask_sh), \ 9986b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_B_FORMAT, mask_sh), \ 10086b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_RW_INDEX, DC_LUT_RW_INDEX, mask_sh), \ 10186b6a203SDmytro Laktyushkin IPP_SF(DC_LUT_SEQ_COLOR, DC_LUT_SEQ_COLOR, mask_sh), \ 10286b6a203SDmytro Laktyushkin IPP_SF(DEGAMMA_CONTROL, GRPH_DEGAMMA_MODE, mask_sh), \ 10386b6a203SDmytro Laktyushkin IPP_SF(DEGAMMA_CONTROL, CURSOR_DEGAMMA_MODE, mask_sh), \ 10486b6a203SDmytro Laktyushkin IPP_SF(DEGAMMA_CONTROL, CURSOR2_DEGAMMA_MODE, mask_sh) 10586b6a203SDmytro Laktyushkin 106e6303950SDmytro Laktyushkin #define IPP_DCE100_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh) \ 107e6303950SDmytro Laktyushkin IPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh), \ 108e6303950SDmytro Laktyushkin IPP_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh) 109e6303950SDmytro Laktyushkin 110e6303950SDmytro Laktyushkin #define IPP_DCE120_MASK_SH_LIST_SOC_BASE(mask_sh) \ 11186b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_UPDATE, CURSOR_UPDATE_LOCK, mask_sh), \ 11286b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_CONTROL, CURSOR_EN, mask_sh), \ 11386b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_CONTROL, CURSOR_MODE, mask_sh), \ 11486b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_CONTROL, CURSOR_2X_MAGNIFY, mask_sh), \ 11586b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_CONTROL, CUR_INV_TRANS_CLAMP, mask_sh), \ 11686b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_POSITION, CURSOR_X_POSITION, mask_sh), \ 11786b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_POSITION, CURSOR_Y_POSITION, mask_sh), \ 11886b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_HOT_SPOT, CURSOR_HOT_SPOT_X, mask_sh), \ 11986b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_HOT_SPOT, CURSOR_HOT_SPOT_Y, mask_sh), \ 12086b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR1, CUR_COLOR1_BLUE, mask_sh), \ 12186b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR1, CUR_COLOR1_GREEN, mask_sh), \ 12286b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR1, CUR_COLOR1_RED, mask_sh), \ 12386b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR2, CUR_COLOR2_BLUE, mask_sh), \ 12486b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR2, CUR_COLOR2_GREEN, mask_sh), \ 12586b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_COLOR2, CUR_COLOR2_RED, mask_sh), \ 12686b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_SIZE, CURSOR_WIDTH, mask_sh), \ 12786b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_SIZE, CURSOR_HEIGHT, mask_sh), \ 12886b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_SURFACE_ADDRESS_HIGH, CURSOR_SURFACE_ADDRESS_HIGH, mask_sh), \ 12986b6a203SDmytro Laktyushkin IPP_SF(DCP0_CUR_SURFACE_ADDRESS, CURSOR_SURFACE_ADDRESS, mask_sh), \ 13086b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_GRPH_CONTROL, GRPH_PRESCALE_BYPASS, mask_sh), \ 13186b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_SCALE_R, mask_sh), \ 13286b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_BIAS_R, mask_sh), \ 13386b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_SCALE_G, mask_sh), \ 13486b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_BIAS_G, mask_sh), \ 13586b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_SCALE_B, mask_sh), \ 13686b6a203SDmytro Laktyushkin IPP_SF(DCP0_PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_BIAS_B, mask_sh), \ 13786b6a203SDmytro Laktyushkin IPP_SF(DCP0_INPUT_GAMMA_CONTROL, GRPH_INPUT_GAMMA_MODE, mask_sh), \ 13886b6a203SDmytro Laktyushkin IPP_SF(DCFE0_DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh), \ 13986b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_WRITE_EN_MASK, DC_LUT_WRITE_EN_MASK, mask_sh), \ 14086b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_RW_MODE, DC_LUT_RW_MODE, mask_sh), \ 14186b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_CONTROL, DC_LUT_DATA_R_FORMAT, mask_sh), \ 14286b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_CONTROL, DC_LUT_DATA_G_FORMAT, mask_sh), \ 14386b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_CONTROL, DC_LUT_DATA_B_FORMAT, mask_sh), \ 14486b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_RW_INDEX, DC_LUT_RW_INDEX, mask_sh), \ 14586b6a203SDmytro Laktyushkin IPP_SF(DCP0_DC_LUT_SEQ_COLOR, DC_LUT_SEQ_COLOR, mask_sh), \ 14686b6a203SDmytro Laktyushkin IPP_SF(DCP0_DEGAMMA_CONTROL, GRPH_DEGAMMA_MODE, mask_sh), \ 14786b6a203SDmytro Laktyushkin IPP_SF(DCP0_DEGAMMA_CONTROL, CURSOR_DEGAMMA_MODE, mask_sh), \ 14886b6a203SDmytro Laktyushkin IPP_SF(DCP0_DEGAMMA_CONTROL, CURSOR2_DEGAMMA_MODE, mask_sh) 14986b6a203SDmytro Laktyushkin 15089571d7cSMauro Rossi #if defined(CONFIG_DRM_AMD_DC_SI) 15189571d7cSMauro Rossi #define IPP_DCE60_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh) \ 15289571d7cSMauro Rossi IPP_SF(CUR_UPDATE, CURSOR_UPDATE_LOCK, mask_sh), \ 15389571d7cSMauro Rossi IPP_SF(CUR_CONTROL, CURSOR_EN, mask_sh), \ 15489571d7cSMauro Rossi IPP_SF(CUR_CONTROL, CURSOR_MODE, mask_sh), \ 15589571d7cSMauro Rossi IPP_SF(CUR_CONTROL, CURSOR_2X_MAGNIFY, mask_sh), \ 15689571d7cSMauro Rossi IPP_SF(CUR_CONTROL, CUR_INV_TRANS_CLAMP, mask_sh), \ 15789571d7cSMauro Rossi IPP_SF(CUR_POSITION, CURSOR_X_POSITION, mask_sh), \ 15889571d7cSMauro Rossi IPP_SF(CUR_POSITION, CURSOR_Y_POSITION, mask_sh), \ 15989571d7cSMauro Rossi IPP_SF(CUR_HOT_SPOT, CURSOR_HOT_SPOT_X, mask_sh), \ 16089571d7cSMauro Rossi IPP_SF(CUR_HOT_SPOT, CURSOR_HOT_SPOT_Y, mask_sh), \ 16189571d7cSMauro Rossi IPP_SF(CUR_COLOR1, CUR_COLOR1_BLUE, mask_sh), \ 16289571d7cSMauro Rossi IPP_SF(CUR_COLOR1, CUR_COLOR1_GREEN, mask_sh), \ 16389571d7cSMauro Rossi IPP_SF(CUR_COLOR1, CUR_COLOR1_RED, mask_sh), \ 16489571d7cSMauro Rossi IPP_SF(CUR_COLOR2, CUR_COLOR2_BLUE, mask_sh), \ 16589571d7cSMauro Rossi IPP_SF(CUR_COLOR2, CUR_COLOR2_GREEN, mask_sh), \ 16689571d7cSMauro Rossi IPP_SF(CUR_COLOR2, CUR_COLOR2_RED, mask_sh), \ 16789571d7cSMauro Rossi IPP_SF(CUR_SIZE, CURSOR_WIDTH, mask_sh), \ 16889571d7cSMauro Rossi IPP_SF(CUR_SIZE, CURSOR_HEIGHT, mask_sh), \ 16989571d7cSMauro Rossi IPP_SF(CUR_SURFACE_ADDRESS_HIGH, CURSOR_SURFACE_ADDRESS_HIGH, mask_sh), \ 17089571d7cSMauro Rossi IPP_SF(CUR_SURFACE_ADDRESS, CURSOR_SURFACE_ADDRESS, mask_sh), \ 17189571d7cSMauro Rossi IPP_SF(PRESCALE_GRPH_CONTROL, GRPH_PRESCALE_BYPASS, mask_sh), \ 17289571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_SCALE_R, mask_sh), \ 17389571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_R, GRPH_PRESCALE_BIAS_R, mask_sh), \ 17489571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_SCALE_G, mask_sh), \ 17589571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_G, GRPH_PRESCALE_BIAS_G, mask_sh), \ 17689571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_SCALE_B, mask_sh), \ 17789571d7cSMauro Rossi IPP_SF(PRESCALE_VALUES_GRPH_B, GRPH_PRESCALE_BIAS_B, mask_sh), \ 17889571d7cSMauro Rossi IPP_SF(INPUT_GAMMA_CONTROL, GRPH_INPUT_GAMMA_MODE, mask_sh), \ 17989571d7cSMauro Rossi IPP_SF(DC_LUT_WRITE_EN_MASK, DC_LUT_WRITE_EN_MASK, mask_sh), \ 18089571d7cSMauro Rossi IPP_SF(DC_LUT_RW_MODE, DC_LUT_RW_MODE, mask_sh), \ 18189571d7cSMauro Rossi IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_R_FORMAT, mask_sh), \ 18289571d7cSMauro Rossi IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_G_FORMAT, mask_sh), \ 18389571d7cSMauro Rossi IPP_SF(DC_LUT_CONTROL, DC_LUT_DATA_B_FORMAT, mask_sh), \ 18489571d7cSMauro Rossi IPP_SF(DC_LUT_RW_INDEX, DC_LUT_RW_INDEX, mask_sh), \ 18589571d7cSMauro Rossi IPP_SF(DC_LUT_SEQ_COLOR, DC_LUT_SEQ_COLOR, mask_sh), \ 18689571d7cSMauro Rossi IPP_SF(DEGAMMA_CONTROL, GRPH_DEGAMMA_MODE, mask_sh), \ 18789571d7cSMauro Rossi IPP_SF(DEGAMMA_CONTROL, CURSOR_DEGAMMA_MODE, mask_sh) 18889571d7cSMauro Rossi #endif 18989571d7cSMauro Rossi 19086b6a203SDmytro Laktyushkin #define IPP_REG_FIELD_LIST(type) \ 19186b6a203SDmytro Laktyushkin type CURSOR_UPDATE_LOCK; \ 19286b6a203SDmytro Laktyushkin type CURSOR_EN; \ 19386b6a203SDmytro Laktyushkin type CURSOR_X_POSITION; \ 19486b6a203SDmytro Laktyushkin type CURSOR_Y_POSITION; \ 19586b6a203SDmytro Laktyushkin type CURSOR_HOT_SPOT_X; \ 19686b6a203SDmytro Laktyushkin type CURSOR_HOT_SPOT_Y; \ 19786b6a203SDmytro Laktyushkin type CURSOR_MODE; \ 19886b6a203SDmytro Laktyushkin type CURSOR_2X_MAGNIFY; \ 19986b6a203SDmytro Laktyushkin type CUR_INV_TRANS_CLAMP; \ 20086b6a203SDmytro Laktyushkin type CUR_COLOR1_BLUE; \ 20186b6a203SDmytro Laktyushkin type CUR_COLOR1_GREEN; \ 20286b6a203SDmytro Laktyushkin type CUR_COLOR1_RED; \ 20386b6a203SDmytro Laktyushkin type CUR_COLOR2_BLUE; \ 20486b6a203SDmytro Laktyushkin type CUR_COLOR2_GREEN; \ 20586b6a203SDmytro Laktyushkin type CUR_COLOR2_RED; \ 20686b6a203SDmytro Laktyushkin type CURSOR_WIDTH; \ 20786b6a203SDmytro Laktyushkin type CURSOR_HEIGHT; \ 20886b6a203SDmytro Laktyushkin type CURSOR_SURFACE_ADDRESS_HIGH; \ 20986b6a203SDmytro Laktyushkin type CURSOR_SURFACE_ADDRESS; \ 21086b6a203SDmytro Laktyushkin type GRPH_PRESCALE_BYPASS; \ 21186b6a203SDmytro Laktyushkin type GRPH_PRESCALE_SCALE_R; \ 21286b6a203SDmytro Laktyushkin type GRPH_PRESCALE_BIAS_R; \ 21386b6a203SDmytro Laktyushkin type GRPH_PRESCALE_SCALE_G; \ 21486b6a203SDmytro Laktyushkin type GRPH_PRESCALE_BIAS_G; \ 21586b6a203SDmytro Laktyushkin type GRPH_PRESCALE_SCALE_B; \ 21686b6a203SDmytro Laktyushkin type GRPH_PRESCALE_BIAS_B; \ 21786b6a203SDmytro Laktyushkin type GRPH_INPUT_GAMMA_MODE; \ 21886b6a203SDmytro Laktyushkin type DCP_LUT_MEM_PWR_DIS; \ 21986b6a203SDmytro Laktyushkin type DC_LUT_WRITE_EN_MASK; \ 22086b6a203SDmytro Laktyushkin type DC_LUT_RW_MODE; \ 22186b6a203SDmytro Laktyushkin type DC_LUT_DATA_R_FORMAT; \ 22286b6a203SDmytro Laktyushkin type DC_LUT_DATA_G_FORMAT; \ 22386b6a203SDmytro Laktyushkin type DC_LUT_DATA_B_FORMAT; \ 22486b6a203SDmytro Laktyushkin type DC_LUT_RW_INDEX; \ 22586b6a203SDmytro Laktyushkin type DC_LUT_SEQ_COLOR; \ 22686b6a203SDmytro Laktyushkin type GRPH_DEGAMMA_MODE; \ 22786b6a203SDmytro Laktyushkin type CURSOR_DEGAMMA_MODE; \ 22886b6a203SDmytro Laktyushkin type CURSOR2_DEGAMMA_MODE 22986b6a203SDmytro Laktyushkin 23086b6a203SDmytro Laktyushkin struct dce_ipp_shift { 23186b6a203SDmytro Laktyushkin IPP_REG_FIELD_LIST(uint8_t); 23286b6a203SDmytro Laktyushkin }; 23386b6a203SDmytro Laktyushkin 23486b6a203SDmytro Laktyushkin struct dce_ipp_mask { 23586b6a203SDmytro Laktyushkin IPP_REG_FIELD_LIST(uint32_t); 23686b6a203SDmytro Laktyushkin }; 23786b6a203SDmytro Laktyushkin 23886b6a203SDmytro Laktyushkin struct dce_ipp_registers { 23986b6a203SDmytro Laktyushkin uint32_t CUR_UPDATE; 24086b6a203SDmytro Laktyushkin uint32_t CUR_CONTROL; 24186b6a203SDmytro Laktyushkin uint32_t CUR_POSITION; 24286b6a203SDmytro Laktyushkin uint32_t CUR_HOT_SPOT; 24386b6a203SDmytro Laktyushkin uint32_t CUR_COLOR1; 24486b6a203SDmytro Laktyushkin uint32_t CUR_COLOR2; 24586b6a203SDmytro Laktyushkin uint32_t CUR_SIZE; 24686b6a203SDmytro Laktyushkin uint32_t CUR_SURFACE_ADDRESS_HIGH; 24786b6a203SDmytro Laktyushkin uint32_t CUR_SURFACE_ADDRESS; 24886b6a203SDmytro Laktyushkin uint32_t PRESCALE_GRPH_CONTROL; 24986b6a203SDmytro Laktyushkin uint32_t PRESCALE_VALUES_GRPH_R; 25086b6a203SDmytro Laktyushkin uint32_t PRESCALE_VALUES_GRPH_G; 25186b6a203SDmytro Laktyushkin uint32_t PRESCALE_VALUES_GRPH_B; 25286b6a203SDmytro Laktyushkin uint32_t INPUT_GAMMA_CONTROL; 25386b6a203SDmytro Laktyushkin uint32_t DCFE_MEM_PWR_CTRL; 25486b6a203SDmytro Laktyushkin uint32_t DC_LUT_WRITE_EN_MASK; 25586b6a203SDmytro Laktyushkin uint32_t DC_LUT_RW_MODE; 25686b6a203SDmytro Laktyushkin uint32_t DC_LUT_CONTROL; 25786b6a203SDmytro Laktyushkin uint32_t DC_LUT_RW_INDEX; 25886b6a203SDmytro Laktyushkin uint32_t DC_LUT_SEQ_COLOR; 25986b6a203SDmytro Laktyushkin uint32_t DEGAMMA_CONTROL; 26086b6a203SDmytro Laktyushkin }; 26186b6a203SDmytro Laktyushkin 26286b6a203SDmytro Laktyushkin struct dce_ipp { 26386b6a203SDmytro Laktyushkin struct input_pixel_processor base; 26486b6a203SDmytro Laktyushkin const struct dce_ipp_registers *regs; 26586b6a203SDmytro Laktyushkin const struct dce_ipp_shift *ipp_shift; 26686b6a203SDmytro Laktyushkin const struct dce_ipp_mask *ipp_mask; 26786b6a203SDmytro Laktyushkin }; 26886b6a203SDmytro Laktyushkin 26986b6a203SDmytro Laktyushkin void dce_ipp_construct(struct dce_ipp *ipp_dce, 27086b6a203SDmytro Laktyushkin struct dc_context *ctx, 27186b6a203SDmytro Laktyushkin int inst, 27286b6a203SDmytro Laktyushkin const struct dce_ipp_registers *regs, 27386b6a203SDmytro Laktyushkin const struct dce_ipp_shift *ipp_shift, 27486b6a203SDmytro Laktyushkin const struct dce_ipp_mask *ipp_mask); 27586b6a203SDmytro Laktyushkin 27689571d7cSMauro Rossi #if defined(CONFIG_DRM_AMD_DC_SI) 27789571d7cSMauro Rossi void dce60_ipp_construct(struct dce_ipp *ipp_dce, 27889571d7cSMauro Rossi struct dc_context *ctx, 27989571d7cSMauro Rossi int inst, 28089571d7cSMauro Rossi const struct dce_ipp_registers *regs, 28189571d7cSMauro Rossi const struct dce_ipp_shift *ipp_shift, 28289571d7cSMauro Rossi const struct dce_ipp_mask *ipp_mask); 28389571d7cSMauro Rossi #endif 28489571d7cSMauro Rossi 285e6303950SDmytro Laktyushkin void dce_ipp_destroy(struct input_pixel_processor **ipp); 286e6303950SDmytro Laktyushkin 287e6303950SDmytro Laktyushkin #endif /* _DCE_IPP_H_ */ 288