1787e7c25SGuochun Huang /* SPDX-License-Identifier: GPL-2.0 */ 2787e7c25SGuochun Huang /* 3787e7c25SGuochun Huang * (C) Copyright 2022 Rockchip Electronics Co., Ltd 4787e7c25SGuochun Huang */ 5787e7c25SGuochun Huang 6787e7c25SGuochun Huang #ifndef _MAX96755F_H_ 7787e7c25SGuochun Huang #define _MAX96755F_H_ 8787e7c25SGuochun Huang 9787e7c25SGuochun Huang #include <linux/bitfield.h> 10787e7c25SGuochun Huang #include <asm-generic/gpio.h> 11787e7c25SGuochun Huang #include <drm_modes.h> 12787e7c25SGuochun Huang 13787e7c25SGuochun Huang #define GPIO_A_REG(gpio) (0x02be + ((gpio) * 3)) 14787e7c25SGuochun Huang #define GPIO_B_REG(gpio) (0x02bf + ((gpio) * 3)) 15787e7c25SGuochun Huang #define GPIO_C_REG(gpio) (0x02c0 + ((gpio) * 3)) 16787e7c25SGuochun Huang 17787e7c25SGuochun Huang /* 0000h */ 18787e7c25SGuochun Huang #define DEV_ADDR GENMASK(7, 1) 19787e7c25SGuochun Huang #define CFG_BLOCK BIT(0) 20787e7c25SGuochun Huang 21787e7c25SGuochun Huang /* 0001h */ 22787e7c25SGuochun Huang #define IIC_2_EN BIT(7) 23787e7c25SGuochun Huang #define IIC_1_EN BIT(6) 24787e7c25SGuochun Huang #define DIS_REM_CC BIT(4) 25787e7c25SGuochun Huang #define TX_RATE GENMASK(3, 2) 26787e7c25SGuochun Huang 27787e7c25SGuochun Huang /* 0002h */ 28787e7c25SGuochun Huang #define VID_TX_EN_U BIT(7) 29787e7c25SGuochun Huang #define VID_TX_EN_Z BIT(6) 30787e7c25SGuochun Huang #define VID_TX_EN_Y BIT(5) 31787e7c25SGuochun Huang #define VID_TX_EN_X BIT(4) 32787e7c25SGuochun Huang #define AUD_TX_EN_Y BIT(3) 33787e7c25SGuochun Huang #define AUD_TX_EN_X BIT(2) 34787e7c25SGuochun Huang 35787e7c25SGuochun Huang /* 0003h */ 36787e7c25SGuochun Huang #define UART_2_EN BIT(5) 37787e7c25SGuochun Huang #define UART_1_EN BIT(4) 38787e7c25SGuochun Huang 39787e7c25SGuochun Huang /* 0005h */ 40787e7c25SGuochun Huang #define LOCK_EN BIT(7) 41787e7c25SGuochun Huang #define ERRB_EN BIT(6) 42787e7c25SGuochun Huang #define PU_LF3 BIT(3) 43787e7c25SGuochun Huang #define PU_LF2 BIT(2) 44787e7c25SGuochun Huang #define PU_LF1 BIT(1) 45787e7c25SGuochun Huang #define PU_LF0 BIT(0) 46787e7c25SGuochun Huang 47787e7c25SGuochun Huang /* 0006h */ 48787e7c25SGuochun Huang #define RCLKEN BIT(5) 49787e7c25SGuochun Huang 50787e7c25SGuochun Huang /* 0010h */ 51787e7c25SGuochun Huang #define RESET_ALL BIT(7) 52787e7c25SGuochun Huang #define RESET_LINK BIT(6) 53787e7c25SGuochun Huang #define RESET_ONESHOT BIT(5) 54787e7c25SGuochun Huang #define AUTO_LINK BIT(4) 55787e7c25SGuochun Huang #define SLEEP BIT(3) 56787e7c25SGuochun Huang #define REG_ENABLE BIT(2) 57787e7c25SGuochun Huang #define LINK_CFG GENMASK(1, 0) 58787e7c25SGuochun Huang 59787e7c25SGuochun Huang /* 0013h */ 60787e7c25SGuochun Huang #define LINK_MODE GENMASK(5, 4) 61787e7c25SGuochun Huang #define LOCKED BIT(3) 62787e7c25SGuochun Huang 63787e7c25SGuochun Huang /* 0048h */ 64787e7c25SGuochun Huang #define REM_MS_EN BIT(5) 65787e7c25SGuochun Huang #define LOC_MS_EN BIT(4) 66787e7c25SGuochun Huang 67787e7c25SGuochun Huang /* 0053h */ 68787e7c25SGuochun Huang #define TX_SPLIT_MASK_B BIT(5) 69787e7c25SGuochun Huang #define TX_SPLIT_MASK_A BIT(4) 70787e7c25SGuochun Huang #define TX_STR_SEL GENMASK(1, 0) 71787e7c25SGuochun Huang 72787e7c25SGuochun Huang /* 0140h */ 73787e7c25SGuochun Huang #define AUD_RX_EN BIT(0) 74787e7c25SGuochun Huang 75787e7c25SGuochun Huang /* 0170h */ 76787e7c25SGuochun Huang #define SPI_EN BIT(0) 77787e7c25SGuochun Huang 78787e7c25SGuochun Huang /* 02beh */ 79787e7c25SGuochun Huang #define RES_CFG BIT(7) 80787e7c25SGuochun Huang #define TX_PRIO BIT(6) 81787e7c25SGuochun Huang #define TX_COMP_EN BIT(5) 82787e7c25SGuochun Huang #define GPIO_OUT BIT(4) 83787e7c25SGuochun Huang #define GPIO_IN BIT(3) 84787e7c25SGuochun Huang #define GPIO_RX_EN BIT(2) 85787e7c25SGuochun Huang #define GPIO_TX_EN BIT(1) 86787e7c25SGuochun Huang #define GPIO_OUT_DIS BIT(0) 87787e7c25SGuochun Huang 88787e7c25SGuochun Huang /* 02bfh */ 89787e7c25SGuochun Huang #define PULL_UPDN_SEL GENMASK(7, 6) 90787e7c25SGuochun Huang #define OUT_TYPE BIT(5) 91787e7c25SGuochun Huang #define GPIO_TX_ID GENMASK(4, 0) 92787e7c25SGuochun Huang 93787e7c25SGuochun Huang /* 02c0h */ 94787e7c25SGuochun Huang #define OVR_RES_CFG BIT(7) 95787e7c25SGuochun Huang #define GPIO_RX_ID GENMASK(4, 0) 96787e7c25SGuochun Huang 97787e7c25SGuochun Huang /* 0311h */ 98787e7c25SGuochun Huang #define START_PORTBU BIT(7) 99787e7c25SGuochun Huang #define START_PORTBZ BIT(6) 100787e7c25SGuochun Huang #define START_PORTBY BIT(5) 101787e7c25SGuochun Huang #define START_PORTBX BIT(4) 102787e7c25SGuochun Huang #define START_PORTAU BIT(3) 103787e7c25SGuochun Huang #define START_PORTAZ BIT(2) 104787e7c25SGuochun Huang #define START_PORTAY BIT(1) 105787e7c25SGuochun Huang #define START_PORTAX BIT(0) 106787e7c25SGuochun Huang 107787e7c25SGuochun Huang /* 032ah */ 108787e7c25SGuochun Huang #define DV_LOCK BIT(7) 109787e7c25SGuochun Huang #define DV_SWP_AB BIT(6) 110787e7c25SGuochun Huang #define LINE_ALT BIT(5) 111787e7c25SGuochun Huang #define DV_CONV BIT(2) 112787e7c25SGuochun Huang #define DV_SPL BIT(1) 113787e7c25SGuochun Huang #define DV_EN BIT(0) 114787e7c25SGuochun Huang 115787e7c25SGuochun Huang /* 0330h */ 116787e7c25SGuochun Huang #define PHY_CONFIG GENMASK(2, 0) 117787e7c25SGuochun Huang #define MIPI_RX_RESET BIT(3) 118787e7c25SGuochun Huang 119787e7c25SGuochun Huang /* 0331h */ 120787e7c25SGuochun Huang #define NUM_LANES GENMASK(1, 0) 121787e7c25SGuochun Huang 122787e7c25SGuochun Huang /* 0385h */ 123787e7c25SGuochun Huang #define DPI_HSYNC_WIDTH_L GENMASK(7, 0) 124787e7c25SGuochun Huang 125787e7c25SGuochun Huang /* 0386h */ 126787e7c25SGuochun Huang #define DPI_VYSNC_WIDTH_L GENMASK(7, 0) 127787e7c25SGuochun Huang 128787e7c25SGuochun Huang /* 0387h */ 129787e7c25SGuochun Huang #define DPI_HSYNC_WIDTH_H GENMASK(3, 0) 130787e7c25SGuochun Huang #define DPI_VSYNC_WIDTH_H GENMASK(7, 4) 131787e7c25SGuochun Huang 132787e7c25SGuochun Huang /* 03a4h */ 133787e7c25SGuochun Huang #define DPI_DE_SKEW_SEL BIT(1) 134787e7c25SGuochun Huang #define DPI_DESKEW_EN BIT(0) 135787e7c25SGuochun Huang 136787e7c25SGuochun Huang /* 03a5h */ 137787e7c25SGuochun Huang #define DPI_VFP_L GENMASK(7, 0) 138787e7c25SGuochun Huang 139787e7c25SGuochun Huang /* 03a6h */ 140787e7c25SGuochun Huang #define DPI_VFP_H GENMASK(3, 0) 141787e7c25SGuochun Huang #define DPI_VBP_L GENMASK(7, 4) 142787e7c25SGuochun Huang 143787e7c25SGuochun Huang /* 03a7h */ 144787e7c25SGuochun Huang #define DPI_VBP_H GENMASK(7, 0) 145787e7c25SGuochun Huang 146787e7c25SGuochun Huang /* 03a8h */ 147787e7c25SGuochun Huang #define DPI_VACT_L GENMASK(7, 0) 148787e7c25SGuochun Huang 149787e7c25SGuochun Huang /* 03a9h */ 150787e7c25SGuochun Huang #define DPI_VACT_H GENMASK(3, 0) 151787e7c25SGuochun Huang 152787e7c25SGuochun Huang /* 03aah */ 153787e7c25SGuochun Huang #define DPI_HFP_L GENMASK(7, 0) 154787e7c25SGuochun Huang 155787e7c25SGuochun Huang /* 03abh */ 156787e7c25SGuochun Huang #define DPI_HFP_H GENMASK(3, 0) 157787e7c25SGuochun Huang #define DPI_HBP_L GENMASK(7, 4) 158787e7c25SGuochun Huang 159787e7c25SGuochun Huang /* 03ach */ 160787e7c25SGuochun Huang #define DPI_HBP_H GENMASK(7, 0) 161787e7c25SGuochun Huang 162787e7c25SGuochun Huang /* 03adh */ 163787e7c25SGuochun Huang #define DPI_HACT_L GENMASK(7, 0) 164787e7c25SGuochun Huang 165787e7c25SGuochun Huang /* 03aeh */ 166787e7c25SGuochun Huang #define DPI_HACT_H GENMASK(4, 0) 167787e7c25SGuochun Huang 168787e7c25SGuochun Huang enum link_mode { 169787e7c25SGuochun Huang DUAL_LINK, 170787e7c25SGuochun Huang LINKA, 171787e7c25SGuochun Huang LINKB, 172787e7c25SGuochun Huang SPLITTER_MODE, 173787e7c25SGuochun Huang }; 174787e7c25SGuochun Huang 175787e7c25SGuochun Huang struct max96755f_priv { 176787e7c25SGuochun Huang struct udevice *dev; 177787e7c25SGuochun Huang struct gpio_desc enable_gpio; 178787e7c25SGuochun Huang bool split_mode; 179787e7c25SGuochun Huang bool dv_swp_ab; 180787e7c25SGuochun Huang bool dpi_deskew_en; 181787e7c25SGuochun Huang struct drm_display_mode mode; 182787e7c25SGuochun Huang u32 num_lanes; 183f1efa5adSGuochun Huang struct gpio_desc lock_gpio; 184*da42fac8SGuochun Huang u32 dsi_lane_map[4]; 185787e7c25SGuochun Huang }; 186787e7c25SGuochun Huang 187787e7c25SGuochun Huang #endif 188