199 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/* include/video/ili9320.c3 *4 * ILI9320 LCD controller configuration control.5 *6 * Copyright 2007 Simtec Electronics7 * Ben Dooks <ben@simtec.co.uk>8 *9 * http://armlinux.simtec.co.uk/10*/11 12#define ILI9320_REG(x) (x)13 14#define ILI9320_INDEX ILI9320_REG(0x00)15 16#define ILI9320_OSCILATION ILI9320_REG(0x00)17#define ILI9320_DRIVER ILI9320_REG(0x01)18#define ILI9320_DRIVEWAVE ILI9320_REG(0x02)19#define ILI9320_ENTRYMODE ILI9320_REG(0x03)20#define ILI9320_RESIZING ILI9320_REG(0x04)21#define ILI9320_DISPLAY1 ILI9320_REG(0x07)22#define ILI9320_DISPLAY2 ILI9320_REG(0x08)23#define ILI9320_DISPLAY3 ILI9320_REG(0x09)24#define ILI9320_DISPLAY4 ILI9320_REG(0x0A)25#define ILI9320_RGB_IF1 ILI9320_REG(0x0C)26#define ILI9320_FRAMEMAKER ILI9320_REG(0x0D)27#define ILI9320_RGB_IF2 ILI9320_REG(0x0F)28 29#define ILI9320_POWER1 ILI9320_REG(0x10)30#define ILI9320_POWER2 ILI9320_REG(0x11)31#define ILI9320_POWER3 ILI9320_REG(0x12)32#define ILI9320_POWER4 ILI9320_REG(0x13)33#define ILI9320_GRAM_HORIZ_ADDR ILI9320_REG(0x20)34#define ILI9320_GRAM_VERT_ADD ILI9320_REG(0x21)35#define ILI9320_POWER7 ILI9320_REG(0x29)36#define ILI9320_FRAME_RATE_COLOUR ILI9320_REG(0x2B)37 38#define ILI9320_GAMMA1 ILI9320_REG(0x30)39#define ILI9320_GAMMA2 ILI9320_REG(0x31)40#define ILI9320_GAMMA3 ILI9320_REG(0x32)41#define ILI9320_GAMMA4 ILI9320_REG(0x35)42#define ILI9320_GAMMA5 ILI9320_REG(0x36)43#define ILI9320_GAMMA6 ILI9320_REG(0x37)44#define ILI9320_GAMMA7 ILI9320_REG(0x38)45#define ILI9320_GAMMA8 ILI9320_REG(0x39)46#define ILI9320_GAMMA9 ILI9320_REG(0x3C)47#define ILI9320_GAMMA10 ILI9320_REG(0x3D)48 49#define ILI9320_HORIZ_START ILI9320_REG(0x50)50#define ILI9320_HORIZ_END ILI9320_REG(0x51)51#define ILI9320_VERT_START ILI9320_REG(0x52)52#define ILI9320_VERT_END ILI9320_REG(0x53)53 54#define ILI9320_DRIVER2 ILI9320_REG(0x60)55#define ILI9320_BASE_IMAGE ILI9320_REG(0x61)56#define ILI9320_VERT_SCROLL ILI9320_REG(0x6a)57 58#define ILI9320_PARTIAL1_POSITION ILI9320_REG(0x80)59#define ILI9320_PARTIAL1_START ILI9320_REG(0x81)60#define ILI9320_PARTIAL1_END ILI9320_REG(0x82)61#define ILI9320_PARTIAL2_POSITION ILI9320_REG(0x83)62#define ILI9320_PARTIAL2_START ILI9320_REG(0x84)63#define ILI9320_PARTIAL2_END ILI9320_REG(0x85)64 65#define ILI9320_INTERFACE1 ILI9320_REG(0x90)66#define ILI9320_INTERFACE2 ILI9320_REG(0x92)67#define ILI9320_INTERFACE3 ILI9320_REG(0x93)68#define ILI9320_INTERFACE4 ILI9320_REG(0x95)69#define ILI9320_INTERFACE5 ILI9320_REG(0x97)70#define ILI9320_INTERFACE6 ILI9320_REG(0x98)71 72/* Register contents definitions. */73 74#define ILI9320_OSCILATION_OSC (1 << 0)75 76#define ILI9320_DRIVER_SS (1 << 8)77#define ILI9320_DRIVER_SM (1 << 10)78 79#define ILI9320_DRIVEWAVE_EOR (1 << 8)80#define ILI9320_DRIVEWAVE_BC (1 << 9)81#define ILI9320_DRIVEWAVE_MUSTSET (1 << 10)82 83#define ILI9320_ENTRYMODE_AM (1 << 3)84#define ILI9320_ENTRYMODE_ID(x) ((x) << 4)85#define ILI9320_ENTRYMODE_ORG (1 << 7)86#define ILI9320_ENTRYMODE_HWM (1 << 8)87#define ILI9320_ENTRYMODE_BGR (1 << 12)88#define ILI9320_ENTRYMODE_DFM (1 << 14)89#define ILI9320_ENTRYMODE_TRI (1 << 15)90 91 92#define ILI9320_RESIZING_RSZ(x) ((x) << 0)93#define ILI9320_RESIZING_RCH(x) ((x) << 4)94#define ILI9320_RESIZING_RCV(x) ((x) << 8)95 96 97#define ILI9320_DISPLAY1_D(x) ((x) << 0)98#define ILI9320_DISPLAY1_CL (1 << 3)99#define ILI9320_DISPLAY1_DTE (1 << 4)100#define ILI9320_DISPLAY1_GON (1 << 5)101#define ILI9320_DISPLAY1_BASEE (1 << 8)102#define ILI9320_DISPLAY1_PTDE(x) ((x) << 12)103 104 105#define ILI9320_DISPLAY2_BP(x) ((x) << 0)106#define ILI9320_DISPLAY2_FP(x) ((x) << 8)107 108 109#define ILI9320_RGBIF1_RIM_RGB18 (0 << 0)110#define ILI9320_RGBIF1_RIM_RGB16 (1 << 0)111#define ILI9320_RGBIF1_RIM_RGB6 (2 << 0)112 113#define ILI9320_RGBIF1_CLK_INT (0 << 4)114#define ILI9320_RGBIF1_CLK_RGBIF (1 << 4)115#define ILI9320_RGBIF1_CLK_VSYNC (2 << 4)116 117#define ILI9320_RGBIF1_RM (1 << 8)118 119#define ILI9320_RGBIF1_ENC_FRAMES(x) (((x) - 1)<< 13)120 121#define ILI9320_RGBIF2_DPL (1 << 0)122#define ILI9320_RGBIF2_EPL (1 << 1)123#define ILI9320_RGBIF2_HSPL (1 << 3)124#define ILI9320_RGBIF2_VSPL (1 << 4)125 126 127#define ILI9320_POWER1_SLP (1 << 1)128#define ILI9320_POWER1_DSTB (1 << 2)129#define ILI9320_POWER1_AP(x) ((x) << 4)130#define ILI9320_POWER1_APE (1 << 7)131#define ILI9320_POWER1_BT(x) ((x) << 8)132#define ILI9320_POWER1_SAP (1 << 12)133 134 135#define ILI9320_POWER2_VC(x) ((x) << 0)136#define ILI9320_POWER2_DC0(x) ((x) << 4)137#define ILI9320_POWER2_DC1(x) ((x) << 8)138 139 140#define ILI9320_POWER3_VRH(x) ((x) << 0)141#define ILI9320_POWER3_PON (1 << 4)142#define ILI9320_POWER3_VCMR (1 << 8)143 144 145#define ILI9320_POWER4_VREOUT(x) ((x) << 8)146 147 148#define ILI9320_DRIVER2_SCNL(x) ((x) << 0)149#define ILI9320_DRIVER2_NL(x) ((x) << 8)150#define ILI9320_DRIVER2_GS (1 << 15)151 152 153#define ILI9320_BASEIMAGE_REV (1 << 0)154#define ILI9320_BASEIMAGE_VLE (1 << 1)155#define ILI9320_BASEIMAGE_NDL (1 << 2)156 157 158#define ILI9320_INTERFACE4_RTNE(x) (x)159#define ILI9320_INTERFACE4_DIVE(x) ((x) << 8)160 161/* SPI interface definitions */162 163#define ILI9320_SPI_IDCODE (0x70)164#define ILI9320_SPI_ID(x) ((x) << 2)165#define ILI9320_SPI_READ (0x01)166#define ILI9320_SPI_WRITE (0x00)167#define ILI9320_SPI_DATA (0x02)168#define ILI9320_SPI_INDEX (0x00)169 170/* platform data to pass configuration from lcd */171 172enum ili9320_suspend {173 ILI9320_SUSPEND_OFF,174 ILI9320_SUSPEND_DEEP,175};176 177struct ili9320_platdata {178 unsigned short hsize;179 unsigned short vsize;180 181 enum ili9320_suspend suspend;182 183 /* set the reset line, 0 = reset asserted, 1 = normal */184 void (*reset)(unsigned int val);185 186 unsigned short entry_mode;187 unsigned short display2;188 unsigned short display3;189 unsigned short display4;190 unsigned short rgb_if1;191 unsigned short rgb_if2;192 unsigned short interface2;193 unsigned short interface3;194 unsigned short interface4;195 unsigned short interface5;196 unsigned short interface6;197};198 199