1*787e7c25SGuochun Huang /* SPDX-License-Identifier: GPL-2.0 */ 2*787e7c25SGuochun Huang /* 3*787e7c25SGuochun Huang * (C) Copyright 2022 Rockchip Electronics Co., Ltd 4*787e7c25SGuochun Huang */ 5*787e7c25SGuochun Huang 6*787e7c25SGuochun Huang #ifndef _MAX96755F_H_ 7*787e7c25SGuochun Huang #define _MAX96755F_H_ 8*787e7c25SGuochun Huang 9*787e7c25SGuochun Huang #include <linux/bitfield.h> 10*787e7c25SGuochun Huang #include <asm-generic/gpio.h> 11*787e7c25SGuochun Huang #include <drm_modes.h> 12*787e7c25SGuochun Huang 13*787e7c25SGuochun Huang #define GPIO_A_REG(gpio) (0x02be + ((gpio) * 3)) 14*787e7c25SGuochun Huang #define GPIO_B_REG(gpio) (0x02bf + ((gpio) * 3)) 15*787e7c25SGuochun Huang #define GPIO_C_REG(gpio) (0x02c0 + ((gpio) * 3)) 16*787e7c25SGuochun Huang 17*787e7c25SGuochun Huang /* 0000h */ 18*787e7c25SGuochun Huang #define DEV_ADDR GENMASK(7, 1) 19*787e7c25SGuochun Huang #define CFG_BLOCK BIT(0) 20*787e7c25SGuochun Huang 21*787e7c25SGuochun Huang /* 0001h */ 22*787e7c25SGuochun Huang #define IIC_2_EN BIT(7) 23*787e7c25SGuochun Huang #define IIC_1_EN BIT(6) 24*787e7c25SGuochun Huang #define DIS_REM_CC BIT(4) 25*787e7c25SGuochun Huang #define TX_RATE GENMASK(3, 2) 26*787e7c25SGuochun Huang 27*787e7c25SGuochun Huang /* 0002h */ 28*787e7c25SGuochun Huang #define VID_TX_EN_U BIT(7) 29*787e7c25SGuochun Huang #define VID_TX_EN_Z BIT(6) 30*787e7c25SGuochun Huang #define VID_TX_EN_Y BIT(5) 31*787e7c25SGuochun Huang #define VID_TX_EN_X BIT(4) 32*787e7c25SGuochun Huang #define AUD_TX_EN_Y BIT(3) 33*787e7c25SGuochun Huang #define AUD_TX_EN_X BIT(2) 34*787e7c25SGuochun Huang 35*787e7c25SGuochun Huang /* 0003h */ 36*787e7c25SGuochun Huang #define UART_2_EN BIT(5) 37*787e7c25SGuochun Huang #define UART_1_EN BIT(4) 38*787e7c25SGuochun Huang 39*787e7c25SGuochun Huang /* 0005h */ 40*787e7c25SGuochun Huang #define LOCK_EN BIT(7) 41*787e7c25SGuochun Huang #define ERRB_EN BIT(6) 42*787e7c25SGuochun Huang #define PU_LF3 BIT(3) 43*787e7c25SGuochun Huang #define PU_LF2 BIT(2) 44*787e7c25SGuochun Huang #define PU_LF1 BIT(1) 45*787e7c25SGuochun Huang #define PU_LF0 BIT(0) 46*787e7c25SGuochun Huang 47*787e7c25SGuochun Huang /* 0006h */ 48*787e7c25SGuochun Huang #define RCLKEN BIT(5) 49*787e7c25SGuochun Huang 50*787e7c25SGuochun Huang /* 0010h */ 51*787e7c25SGuochun Huang #define RESET_ALL BIT(7) 52*787e7c25SGuochun Huang #define RESET_LINK BIT(6) 53*787e7c25SGuochun Huang #define RESET_ONESHOT BIT(5) 54*787e7c25SGuochun Huang #define AUTO_LINK BIT(4) 55*787e7c25SGuochun Huang #define SLEEP BIT(3) 56*787e7c25SGuochun Huang #define REG_ENABLE BIT(2) 57*787e7c25SGuochun Huang #define LINK_CFG GENMASK(1, 0) 58*787e7c25SGuochun Huang 59*787e7c25SGuochun Huang /* 0013h */ 60*787e7c25SGuochun Huang #define LINK_MODE GENMASK(5, 4) 61*787e7c25SGuochun Huang #define LOCKED BIT(3) 62*787e7c25SGuochun Huang 63*787e7c25SGuochun Huang /* 0048h */ 64*787e7c25SGuochun Huang #define REM_MS_EN BIT(5) 65*787e7c25SGuochun Huang #define LOC_MS_EN BIT(4) 66*787e7c25SGuochun Huang 67*787e7c25SGuochun Huang /* 0053h */ 68*787e7c25SGuochun Huang #define TX_SPLIT_MASK_B BIT(5) 69*787e7c25SGuochun Huang #define TX_SPLIT_MASK_A BIT(4) 70*787e7c25SGuochun Huang #define TX_STR_SEL GENMASK(1, 0) 71*787e7c25SGuochun Huang 72*787e7c25SGuochun Huang /* 0140h */ 73*787e7c25SGuochun Huang #define AUD_RX_EN BIT(0) 74*787e7c25SGuochun Huang 75*787e7c25SGuochun Huang /* 0170h */ 76*787e7c25SGuochun Huang #define SPI_EN BIT(0) 77*787e7c25SGuochun Huang 78*787e7c25SGuochun Huang /* 02beh */ 79*787e7c25SGuochun Huang #define RES_CFG BIT(7) 80*787e7c25SGuochun Huang #define TX_PRIO BIT(6) 81*787e7c25SGuochun Huang #define TX_COMP_EN BIT(5) 82*787e7c25SGuochun Huang #define GPIO_OUT BIT(4) 83*787e7c25SGuochun Huang #define GPIO_IN BIT(3) 84*787e7c25SGuochun Huang #define GPIO_RX_EN BIT(2) 85*787e7c25SGuochun Huang #define GPIO_TX_EN BIT(1) 86*787e7c25SGuochun Huang #define GPIO_OUT_DIS BIT(0) 87*787e7c25SGuochun Huang 88*787e7c25SGuochun Huang /* 02bfh */ 89*787e7c25SGuochun Huang #define PULL_UPDN_SEL GENMASK(7, 6) 90*787e7c25SGuochun Huang #define OUT_TYPE BIT(5) 91*787e7c25SGuochun Huang #define GPIO_TX_ID GENMASK(4, 0) 92*787e7c25SGuochun Huang 93*787e7c25SGuochun Huang /* 02c0h */ 94*787e7c25SGuochun Huang #define OVR_RES_CFG BIT(7) 95*787e7c25SGuochun Huang #define GPIO_RX_ID GENMASK(4, 0) 96*787e7c25SGuochun Huang 97*787e7c25SGuochun Huang /* 0311h */ 98*787e7c25SGuochun Huang #define START_PORTBU BIT(7) 99*787e7c25SGuochun Huang #define START_PORTBZ BIT(6) 100*787e7c25SGuochun Huang #define START_PORTBY BIT(5) 101*787e7c25SGuochun Huang #define START_PORTBX BIT(4) 102*787e7c25SGuochun Huang #define START_PORTAU BIT(3) 103*787e7c25SGuochun Huang #define START_PORTAZ BIT(2) 104*787e7c25SGuochun Huang #define START_PORTAY BIT(1) 105*787e7c25SGuochun Huang #define START_PORTAX BIT(0) 106*787e7c25SGuochun Huang 107*787e7c25SGuochun Huang /* 032ah */ 108*787e7c25SGuochun Huang #define DV_LOCK BIT(7) 109*787e7c25SGuochun Huang #define DV_SWP_AB BIT(6) 110*787e7c25SGuochun Huang #define LINE_ALT BIT(5) 111*787e7c25SGuochun Huang #define DV_CONV BIT(2) 112*787e7c25SGuochun Huang #define DV_SPL BIT(1) 113*787e7c25SGuochun Huang #define DV_EN BIT(0) 114*787e7c25SGuochun Huang 115*787e7c25SGuochun Huang /* 0330h */ 116*787e7c25SGuochun Huang #define PHY_CONFIG GENMASK(2, 0) 117*787e7c25SGuochun Huang #define MIPI_RX_RESET BIT(3) 118*787e7c25SGuochun Huang 119*787e7c25SGuochun Huang /* 0331h */ 120*787e7c25SGuochun Huang #define NUM_LANES GENMASK(1, 0) 121*787e7c25SGuochun Huang 122*787e7c25SGuochun Huang /* 0385h */ 123*787e7c25SGuochun Huang #define DPI_HSYNC_WIDTH_L GENMASK(7, 0) 124*787e7c25SGuochun Huang 125*787e7c25SGuochun Huang /* 0386h */ 126*787e7c25SGuochun Huang #define DPI_VYSNC_WIDTH_L GENMASK(7, 0) 127*787e7c25SGuochun Huang 128*787e7c25SGuochun Huang /* 0387h */ 129*787e7c25SGuochun Huang #define DPI_HSYNC_WIDTH_H GENMASK(3, 0) 130*787e7c25SGuochun Huang #define DPI_VSYNC_WIDTH_H GENMASK(7, 4) 131*787e7c25SGuochun Huang 132*787e7c25SGuochun Huang /* 03a4h */ 133*787e7c25SGuochun Huang #define DPI_DE_SKEW_SEL BIT(1) 134*787e7c25SGuochun Huang #define DPI_DESKEW_EN BIT(0) 135*787e7c25SGuochun Huang 136*787e7c25SGuochun Huang /* 03a5h */ 137*787e7c25SGuochun Huang #define DPI_VFP_L GENMASK(7, 0) 138*787e7c25SGuochun Huang 139*787e7c25SGuochun Huang /* 03a6h */ 140*787e7c25SGuochun Huang #define DPI_VFP_H GENMASK(3, 0) 141*787e7c25SGuochun Huang #define DPI_VBP_L GENMASK(7, 4) 142*787e7c25SGuochun Huang 143*787e7c25SGuochun Huang /* 03a7h */ 144*787e7c25SGuochun Huang #define DPI_VBP_H GENMASK(7, 0) 145*787e7c25SGuochun Huang 146*787e7c25SGuochun Huang /* 03a8h */ 147*787e7c25SGuochun Huang #define DPI_VACT_L GENMASK(7, 0) 148*787e7c25SGuochun Huang 149*787e7c25SGuochun Huang /* 03a9h */ 150*787e7c25SGuochun Huang #define DPI_VACT_H GENMASK(3, 0) 151*787e7c25SGuochun Huang 152*787e7c25SGuochun Huang /* 03aah */ 153*787e7c25SGuochun Huang #define DPI_HFP_L GENMASK(7, 0) 154*787e7c25SGuochun Huang 155*787e7c25SGuochun Huang /* 03abh */ 156*787e7c25SGuochun Huang #define DPI_HFP_H GENMASK(3, 0) 157*787e7c25SGuochun Huang #define DPI_HBP_L GENMASK(7, 4) 158*787e7c25SGuochun Huang 159*787e7c25SGuochun Huang /* 03ach */ 160*787e7c25SGuochun Huang #define DPI_HBP_H GENMASK(7, 0) 161*787e7c25SGuochun Huang 162*787e7c25SGuochun Huang /* 03adh */ 163*787e7c25SGuochun Huang #define DPI_HACT_L GENMASK(7, 0) 164*787e7c25SGuochun Huang 165*787e7c25SGuochun Huang /* 03aeh */ 166*787e7c25SGuochun Huang #define DPI_HACT_H GENMASK(4, 0) 167*787e7c25SGuochun Huang 168*787e7c25SGuochun Huang enum link_mode { 169*787e7c25SGuochun Huang DUAL_LINK, 170*787e7c25SGuochun Huang LINKA, 171*787e7c25SGuochun Huang LINKB, 172*787e7c25SGuochun Huang SPLITTER_MODE, 173*787e7c25SGuochun Huang }; 174*787e7c25SGuochun Huang 175*787e7c25SGuochun Huang struct max96755f_priv { 176*787e7c25SGuochun Huang struct udevice *dev; 177*787e7c25SGuochun Huang struct gpio_desc enable_gpio; 178*787e7c25SGuochun Huang bool split_mode; 179*787e7c25SGuochun Huang bool dv_swp_ab; 180*787e7c25SGuochun Huang bool dpi_deskew_en; 181*787e7c25SGuochun Huang struct drm_display_mode mode; 182*787e7c25SGuochun Huang u32 num_lanes; 183*787e7c25SGuochun Huang }; 184*787e7c25SGuochun Huang 185*787e7c25SGuochun Huang #endif 186