1*77b55e8cSThomas Abraham /* 2*77b55e8cSThomas Abraham * Copyright (C) 2012 Samsung Electronics 3*77b55e8cSThomas Abraham * 4*77b55e8cSThomas Abraham * Author: InKi Dae <inki.dae@samsung.com> 5*77b55e8cSThomas Abraham * Author: Donghwa Lee <dh09.lee@samsung.com> 6*77b55e8cSThomas Abraham * 7*77b55e8cSThomas Abraham * SPDX-License-Identifier: GPL-2.0+ 8*77b55e8cSThomas Abraham */ 9*77b55e8cSThomas Abraham 10*77b55e8cSThomas Abraham #ifndef __ASM_ARM_ARCH_DSIM_H_ 11*77b55e8cSThomas Abraham #define __ASM_ARM_ARCH_DSIM_H_ 12*77b55e8cSThomas Abraham 13*77b55e8cSThomas Abraham #ifndef __ASSEMBLY__ 14*77b55e8cSThomas Abraham 15*77b55e8cSThomas Abraham struct exynos_mipi_dsim { 16*77b55e8cSThomas Abraham unsigned int status; 17*77b55e8cSThomas Abraham unsigned int swrst; 18*77b55e8cSThomas Abraham unsigned int clkctrl; 19*77b55e8cSThomas Abraham unsigned int timeout; 20*77b55e8cSThomas Abraham unsigned int config; 21*77b55e8cSThomas Abraham unsigned int escmode; 22*77b55e8cSThomas Abraham unsigned int mdresol; 23*77b55e8cSThomas Abraham unsigned int mvporch; 24*77b55e8cSThomas Abraham unsigned int mhporch; 25*77b55e8cSThomas Abraham unsigned int msync; 26*77b55e8cSThomas Abraham unsigned int sdresol; 27*77b55e8cSThomas Abraham unsigned int intsrc; 28*77b55e8cSThomas Abraham unsigned int intmsk; 29*77b55e8cSThomas Abraham unsigned int pkthdr; 30*77b55e8cSThomas Abraham unsigned int payload; 31*77b55e8cSThomas Abraham unsigned int rxfifo; 32*77b55e8cSThomas Abraham unsigned int fifothld; 33*77b55e8cSThomas Abraham unsigned int fifoctrl; 34*77b55e8cSThomas Abraham unsigned int memacchr; 35*77b55e8cSThomas Abraham unsigned int pllctrl; 36*77b55e8cSThomas Abraham unsigned int plltmr; 37*77b55e8cSThomas Abraham unsigned int phyacchr; 38*77b55e8cSThomas Abraham unsigned int phyacchr1; 39*77b55e8cSThomas Abraham }; 40*77b55e8cSThomas Abraham 41*77b55e8cSThomas Abraham #endif /* __ASSEMBLY__ */ 42*77b55e8cSThomas Abraham 43*77b55e8cSThomas Abraham /* 44*77b55e8cSThomas Abraham * Bit Definitions 45*77b55e8cSThomas Abraham */ 46*77b55e8cSThomas Abraham /* DSIM_STATUS */ 47*77b55e8cSThomas Abraham #define DSIM_STOP_STATE_DAT(x) (((x) & 0xf) << 0) 48*77b55e8cSThomas Abraham #define DSIM_STOP_STATE_CLK (1 << 8) 49*77b55e8cSThomas Abraham #define DSIM_TX_READY_HS_CLK (1 << 10) 50*77b55e8cSThomas Abraham #define DSIM_PLL_STABLE (1 << 31) 51*77b55e8cSThomas Abraham 52*77b55e8cSThomas Abraham /* DSIM_SWRST */ 53*77b55e8cSThomas Abraham #define DSIM_FUNCRST (1 << 16) 54*77b55e8cSThomas Abraham #define DSIM_SWRST (1 << 0) 55*77b55e8cSThomas Abraham 56*77b55e8cSThomas Abraham /* EXYNOS_DSIM_TIMEOUT */ 57*77b55e8cSThomas Abraham #define DSIM_LPDR_TOUT_SHIFT (0) 58*77b55e8cSThomas Abraham #define DSIM_BTA_TOUT_SHIFT (16) 59*77b55e8cSThomas Abraham 60*77b55e8cSThomas Abraham /* EXYNOS_DSIM_CLKCTRL */ 61*77b55e8cSThomas Abraham #define DSIM_LANE_ESC_CLKEN_SHIFT (19) 62*77b55e8cSThomas Abraham #define DSIM_BYTE_CLKEN_SHIFT (24) 63*77b55e8cSThomas Abraham #define DSIM_BYTE_CLK_SRC_SHIFT (25) 64*77b55e8cSThomas Abraham #define DSIM_PLL_BYPASS_SHIFT (27) 65*77b55e8cSThomas Abraham #define DSIM_ESC_CLKEN_SHIFT (28) 66*77b55e8cSThomas Abraham #define DSIM_TX_REQUEST_HSCLK_SHIFT (31) 67*77b55e8cSThomas Abraham #define DSIM_LANE_ESC_CLKEN(x) (((x) & 0x1f) << \ 68*77b55e8cSThomas Abraham DSIM_LANE_ESC_CLKEN_SHIFT) 69*77b55e8cSThomas Abraham #define DSIM_BYTE_CLK_ENABLE (1 << DSIM_BYTE_CLKEN_SHIFT) 70*77b55e8cSThomas Abraham #define DSIM_BYTE_CLK_DISABLE (0 << DSIM_BYTE_CLKEN_SHIFT) 71*77b55e8cSThomas Abraham #define DSIM_PLL_BYPASS_EXTERNAL (1 << DSIM_PLL_BYPASS_SHIFT) 72*77b55e8cSThomas Abraham #define DSIM_ESC_CLKEN_ENABLE (1 << DSIM_ESC_CLKEN_SHIFT) 73*77b55e8cSThomas Abraham #define DSIM_ESC_CLKEN_DISABLE (0 << DSIM_ESC_CLKEN_SHIFT) 74*77b55e8cSThomas Abraham 75*77b55e8cSThomas Abraham /* EXYNOS_DSIM_CONFIG */ 76*77b55e8cSThomas Abraham #define DSIM_NUM_OF_DATALANE_SHIFT (5) 77*77b55e8cSThomas Abraham #define DSIM_SUBPIX_SHIFT (8) 78*77b55e8cSThomas Abraham #define DSIM_MAINPIX_SHIFT (12) 79*77b55e8cSThomas Abraham #define DSIM_SUBVC_SHIFT (16) 80*77b55e8cSThomas Abraham #define DSIM_MAINVC_SHIFT (18) 81*77b55e8cSThomas Abraham #define DSIM_HSA_MODE_SHIFT (20) 82*77b55e8cSThomas Abraham #define DSIM_HBP_MODE_SHIFT (21) 83*77b55e8cSThomas Abraham #define DSIM_HFP_MODE_SHIFT (22) 84*77b55e8cSThomas Abraham #define DSIM_HSE_MODE_SHIFT (23) 85*77b55e8cSThomas Abraham #define DSIM_AUTO_MODE_SHIFT (24) 86*77b55e8cSThomas Abraham #define DSIM_VIDEO_MODE_SHIFT (25) 87*77b55e8cSThomas Abraham #define DSIM_BURST_MODE_SHIFT (26) 88*77b55e8cSThomas Abraham #define DSIM_EOT_PACKET_SHIFT (28) 89*77b55e8cSThomas Abraham #define DSIM_AUTO_FLUSH_SHIFT (29) 90*77b55e8cSThomas Abraham #define DSIM_LANE_ENx(x) (((x) & 0x1f) << 0) 91*77b55e8cSThomas Abraham 92*77b55e8cSThomas Abraham #define DSIM_NUM_OF_DATA_LANE(x) ((x) << DSIM_NUM_OF_DATALANE_SHIFT) 93*77b55e8cSThomas Abraham 94*77b55e8cSThomas Abraham /* EXYNOS_DSIM_ESCMODE */ 95*77b55e8cSThomas Abraham #define DSIM_TX_LPDT_SHIFT (6) 96*77b55e8cSThomas Abraham #define DSIM_CMD_LPDT_SHIFT (7) 97*77b55e8cSThomas Abraham #define DSIM_TX_LPDT_LP (1 << DSIM_TX_LPDT_SHIFT) 98*77b55e8cSThomas Abraham #define DSIM_CMD_LPDT_LP (1 << DSIM_CMD_LPDT_SHIFT) 99*77b55e8cSThomas Abraham #define DSIM_STOP_STATE_CNT_SHIFT (21) 100*77b55e8cSThomas Abraham #define DSIM_FORCE_STOP_STATE_SHIFT (20) 101*77b55e8cSThomas Abraham 102*77b55e8cSThomas Abraham /* EXYNOS_DSIM_MDRESOL */ 103*77b55e8cSThomas Abraham #define DSIM_MAIN_STAND_BY (1 << 31) 104*77b55e8cSThomas Abraham #define DSIM_MAIN_VRESOL(x) (((x) & 0x7ff) << 16) 105*77b55e8cSThomas Abraham #define DSIM_MAIN_HRESOL(x) (((x) & 0X7ff) << 0) 106*77b55e8cSThomas Abraham 107*77b55e8cSThomas Abraham /* EXYNOS_DSIM_MVPORCH */ 108*77b55e8cSThomas Abraham #define DSIM_CMD_ALLOW_SHIFT (28) 109*77b55e8cSThomas Abraham #define DSIM_STABLE_VFP_SHIFT (16) 110*77b55e8cSThomas Abraham #define DSIM_MAIN_VBP_SHIFT (0) 111*77b55e8cSThomas Abraham #define DSIM_CMD_ALLOW_MASK (0xf << DSIM_CMD_ALLOW_SHIFT) 112*77b55e8cSThomas Abraham #define DSIM_STABLE_VFP_MASK (0x7ff << DSIM_STABLE_VFP_SHIFT) 113*77b55e8cSThomas Abraham #define DSIM_MAIN_VBP_MASK (0x7ff << DSIM_MAIN_VBP_SHIFT) 114*77b55e8cSThomas Abraham 115*77b55e8cSThomas Abraham /* EXYNOS_DSIM_MHPORCH */ 116*77b55e8cSThomas Abraham #define DSIM_MAIN_HFP_SHIFT (16) 117*77b55e8cSThomas Abraham #define DSIM_MAIN_HBP_SHIFT (0) 118*77b55e8cSThomas Abraham #define DSIM_MAIN_HFP_MASK ((0xffff) << DSIM_MAIN_HFP_SHIFT) 119*77b55e8cSThomas Abraham #define DSIM_MAIN_HBP_MASK ((0xffff) << DSIM_MAIN_HBP_SHIFT) 120*77b55e8cSThomas Abraham 121*77b55e8cSThomas Abraham /* EXYNOS_DSIM_MSYNC */ 122*77b55e8cSThomas Abraham #define DSIM_MAIN_VSA_SHIFT (22) 123*77b55e8cSThomas Abraham #define DSIM_MAIN_HSA_SHIFT (0) 124*77b55e8cSThomas Abraham #define DSIM_MAIN_VSA_MASK ((0x3ff) << DSIM_MAIN_VSA_SHIFT) 125*77b55e8cSThomas Abraham #define DSIM_MAIN_HSA_MASK ((0xffff) << DSIM_MAIN_HSA_SHIFT) 126*77b55e8cSThomas Abraham 127*77b55e8cSThomas Abraham /* EXYNOS_DSIM_SDRESOL */ 128*77b55e8cSThomas Abraham #define DSIM_SUB_STANDY_SHIFT (31) 129*77b55e8cSThomas Abraham #define DSIM_SUB_VRESOL_SHIFT (16) 130*77b55e8cSThomas Abraham #define DSIM_SUB_HRESOL_SHIFT (0) 131*77b55e8cSThomas Abraham #define DSIM_SUB_STANDY_MASK ((0x1) << DSIM_SUB_STANDY_SHIFT) 132*77b55e8cSThomas Abraham #define DSIM_SUB_VRESOL_MASK ((0x7ff) << DSIM_SUB_VRESOL_SHIFT) 133*77b55e8cSThomas Abraham #define DSIM_SUB_HRESOL_MASK ((0x7ff) << DSIM_SUB_HRESOL_SHIFT) 134*77b55e8cSThomas Abraham 135*77b55e8cSThomas Abraham /* EXYNOS_DSIM_INTSRC */ 136*77b55e8cSThomas Abraham #define INTSRC_FRAME_DONE (1 << 24) 137*77b55e8cSThomas Abraham #define INTSRC_PLL_STABLE (1 << 31) 138*77b55e8cSThomas Abraham #define INTSRC_SWRST_RELEASE (1 << 30) 139*77b55e8cSThomas Abraham 140*77b55e8cSThomas Abraham /* EXYNOS_DSIM_INTMSK */ 141*77b55e8cSThomas Abraham #define INTMSK_FRAME_DONE (1 << 24) 142*77b55e8cSThomas Abraham 143*77b55e8cSThomas Abraham /* EXYNOS_DSIM_FIFOCTRL */ 144*77b55e8cSThomas Abraham #define SFR_HEADER_EMPTY (1 << 22) 145*77b55e8cSThomas Abraham 146*77b55e8cSThomas Abraham /* EXYNOS_DSIM_PKTHDR */ 147*77b55e8cSThomas Abraham #define DSIM_PKTHDR_DI(x) (((x) & 0x3f) << 0) 148*77b55e8cSThomas Abraham #define DSIM_PKTHDR_DAT0(x) ((x) << 8) 149*77b55e8cSThomas Abraham #define DSIM_PKTHDR_DAT1(x) ((x) << 16) 150*77b55e8cSThomas Abraham 151*77b55e8cSThomas Abraham /* EXYNOS_DSIM_PHYACCHR */ 152*77b55e8cSThomas Abraham #define DSIM_AFC_CTL(x) (((x) & 0x7) << 5) 153*77b55e8cSThomas Abraham #define DSIM_AFC_CTL_SHIFT (5) 154*77b55e8cSThomas Abraham #define DSIM_AFC_EN (1 << 14) 155*77b55e8cSThomas Abraham 156*77b55e8cSThomas Abraham /* EXYNOS_DSIM_PHYACCHR1 */ 157*77b55e8cSThomas Abraham #define DSIM_DPDN_SWAP_DATA_SHIFT (0) 158*77b55e8cSThomas Abraham 159*77b55e8cSThomas Abraham /* EXYNOS_DSIM_PLLCTRL */ 160*77b55e8cSThomas Abraham #define DSIM_SCALER_SHIFT (1) 161*77b55e8cSThomas Abraham #define DSIM_MAIN_SHIFT (4) 162*77b55e8cSThomas Abraham #define DSIM_PREDIV_SHIFT (13) 163*77b55e8cSThomas Abraham #define DSIM_PRECTRL_SHIFT (20) 164*77b55e8cSThomas Abraham #define DSIM_PLL_EN_SHIFT (23) 165*77b55e8cSThomas Abraham #define DSIM_FREQ_BAND_SHIFT (24) 166*77b55e8cSThomas Abraham #define DSIM_ZEROCTRL_SHIFT (28) 167*77b55e8cSThomas Abraham 168*77b55e8cSThomas Abraham #endif 169