BSP files for STM32H747I-Discovery Copy from ST Cube delivery

Dependents:   DISCO_H747I_LCD_demo DISCO_H747I_AUDIO_demo

Committer:
Jerome Coutant
Date:
Wed Nov 06 11:32:01 2019 +0100
Revision:
3:bc403474b366
Parent:
0:146cf26a9bbb
Add PDM lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jerome Coutant 0:146cf26a9bbb 1 /**
Jerome Coutant 0:146cf26a9bbb 2 ******************************************************************************
Jerome Coutant 0:146cf26a9bbb 3 * @file otm8009a.c
Jerome Coutant 0:146cf26a9bbb 4 * @author MCD Application Team
Jerome Coutant 0:146cf26a9bbb 5 * @version V1.0.2
Jerome Coutant 0:146cf26a9bbb 6 * @date 27-January-2017
Jerome Coutant 0:146cf26a9bbb 7 * @brief This file provides the LCD Driver for KoD KM-040TMP-02-0621 (WVGA)
Jerome Coutant 0:146cf26a9bbb 8 * DSI LCD Display OTM8009A.
Jerome Coutant 0:146cf26a9bbb 9 ******************************************************************************
Jerome Coutant 0:146cf26a9bbb 10 * @attention
Jerome Coutant 0:146cf26a9bbb 11 *
Jerome Coutant 0:146cf26a9bbb 12 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
Jerome Coutant 0:146cf26a9bbb 13 *
Jerome Coutant 0:146cf26a9bbb 14 * Redistribution and use in source and binary forms, with or without modification,
Jerome Coutant 0:146cf26a9bbb 15 * are permitted provided that the following conditions are met:
Jerome Coutant 0:146cf26a9bbb 16 * 1. Redistributions of source code must retain the above copyright notice,
Jerome Coutant 0:146cf26a9bbb 17 * this list of conditions and the following disclaimer.
Jerome Coutant 0:146cf26a9bbb 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Jerome Coutant 0:146cf26a9bbb 19 * this list of conditions and the following disclaimer in the documentation
Jerome Coutant 0:146cf26a9bbb 20 * and/or other materials provided with the distribution.
Jerome Coutant 0:146cf26a9bbb 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Jerome Coutant 0:146cf26a9bbb 22 * may be used to endorse or promote products derived from this software
Jerome Coutant 0:146cf26a9bbb 23 * without specific prior written permission.
Jerome Coutant 0:146cf26a9bbb 24 *
Jerome Coutant 0:146cf26a9bbb 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Jerome Coutant 0:146cf26a9bbb 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Jerome Coutant 0:146cf26a9bbb 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Jerome Coutant 0:146cf26a9bbb 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Jerome Coutant 0:146cf26a9bbb 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Jerome Coutant 0:146cf26a9bbb 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Jerome Coutant 0:146cf26a9bbb 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Jerome Coutant 0:146cf26a9bbb 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Jerome Coutant 0:146cf26a9bbb 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Jerome Coutant 0:146cf26a9bbb 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Jerome Coutant 0:146cf26a9bbb 35 *
Jerome Coutant 0:146cf26a9bbb 36 ******************************************************************************
Jerome Coutant 0:146cf26a9bbb 37 */
Jerome Coutant 0:146cf26a9bbb 38
Jerome Coutant 0:146cf26a9bbb 39 /* Includes ------------------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 40 #include "otm8009a.h"
Jerome Coutant 0:146cf26a9bbb 41
Jerome Coutant 0:146cf26a9bbb 42 /** @addtogroup BSP
Jerome Coutant 0:146cf26a9bbb 43 * @{
Jerome Coutant 0:146cf26a9bbb 44 */
Jerome Coutant 0:146cf26a9bbb 45
Jerome Coutant 0:146cf26a9bbb 46 /** @addtogroup Components
Jerome Coutant 0:146cf26a9bbb 47 * @{
Jerome Coutant 0:146cf26a9bbb 48 */
Jerome Coutant 0:146cf26a9bbb 49
Jerome Coutant 0:146cf26a9bbb 50 /** @defgroup OTM8009A OTM8009A
Jerome Coutant 0:146cf26a9bbb 51 * @brief This file provides a set of functions needed to drive the
Jerome Coutant 0:146cf26a9bbb 52 * otm8009a IC display driver.
Jerome Coutant 0:146cf26a9bbb 53 * @{
Jerome Coutant 0:146cf26a9bbb 54 */
Jerome Coutant 0:146cf26a9bbb 55
Jerome Coutant 0:146cf26a9bbb 56 /* Private types -------------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 57 /* Private variables ---------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 58 /* Private constants ---------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 59 /** @defgroup OTM8009A_Private_Constants OTM8009A Private Constants
Jerome Coutant 0:146cf26a9bbb 60 * @{
Jerome Coutant 0:146cf26a9bbb 61 */
Jerome Coutant 0:146cf26a9bbb 62
Jerome Coutant 0:146cf26a9bbb 63 /*
Jerome Coutant 0:146cf26a9bbb 64 * @brief Constant tables of register settings used to transmit DSI
Jerome Coutant 0:146cf26a9bbb 65 * command packets as power up initialization sequence of the KoD LCD (OTM8009A LCD Driver)
Jerome Coutant 0:146cf26a9bbb 66 */
Jerome Coutant 0:146cf26a9bbb 67 const uint8_t lcdRegData1[] = {0x80,0x09,0x01,0xFF};
Jerome Coutant 0:146cf26a9bbb 68 const uint8_t lcdRegData2[] = {0x80,0x09,0xFF};
Jerome Coutant 0:146cf26a9bbb 69 const uint8_t lcdRegData3[] = {0x00,0x09,0x0F,0x0E,0x07,0x10,0x0B,0x0A,0x04,0x07,0x0B,0x08,0x0F,0x10,0x0A,0x01,0xE1};
Jerome Coutant 0:146cf26a9bbb 70 const uint8_t lcdRegData4[] = {0x00,0x09,0x0F,0x0E,0x07,0x10,0x0B,0x0A,0x04,0x07,0x0B,0x08,0x0F,0x10,0x0A,0x01,0xE2};
Jerome Coutant 0:146cf26a9bbb 71 const uint8_t lcdRegData5[] = {0x79,0x79,0xD8};
Jerome Coutant 0:146cf26a9bbb 72 const uint8_t lcdRegData6[] = {0x00,0x01,0xB3};
Jerome Coutant 0:146cf26a9bbb 73 const uint8_t lcdRegData7[] = {0x85,0x01,0x00,0x84,0x01,0x00,0xCE};
Jerome Coutant 0:146cf26a9bbb 74 const uint8_t lcdRegData8[] = {0x18,0x04,0x03,0x39,0x00,0x00,0x00,0x18,0x03,0x03,0x3A,0x00,0x00,0x00,0xCE};
Jerome Coutant 0:146cf26a9bbb 75 const uint8_t lcdRegData9[] = {0x18,0x02,0x03,0x3B,0x00,0x00,0x00,0x18,0x01,0x03,0x3C,0x00,0x00,0x00,0xCE};
Jerome Coutant 0:146cf26a9bbb 76 const uint8_t lcdRegData10[] = {0x01,0x01,0x20,0x20,0x00,0x00,0x01,0x02,0x00,0x00,0xCF};
Jerome Coutant 0:146cf26a9bbb 77 const uint8_t lcdRegData11[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 78 const uint8_t lcdRegData12[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 79 const uint8_t lcdRegData13[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 80 const uint8_t lcdRegData14[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 81 const uint8_t lcdRegData15[] = {0x00,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 82 const uint8_t lcdRegData16[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 83 const uint8_t lcdRegData17[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB};
Jerome Coutant 0:146cf26a9bbb 84 const uint8_t lcdRegData18[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCB};
Jerome Coutant 0:146cf26a9bbb 85 const uint8_t lcdRegData19[] = {0x00,0x26,0x09,0x0B,0x01,0x25,0x00,0x00,0x00,0x00,0xCC};
Jerome Coutant 0:146cf26a9bbb 86 const uint8_t lcdRegData20[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x0A,0x0C,0x02,0xCC};
Jerome Coutant 0:146cf26a9bbb 87 const uint8_t lcdRegData21[] = {0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC};
Jerome Coutant 0:146cf26a9bbb 88 const uint8_t lcdRegData22[] = {0x00,0x25,0x0C,0x0A,0x02,0x26,0x00,0x00,0x00,0x00,0xCC};
Jerome Coutant 0:146cf26a9bbb 89 const uint8_t lcdRegData23[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x0B,0x09,0x01,0xCC};
Jerome Coutant 0:146cf26a9bbb 90 const uint8_t lcdRegData24[] = {0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC};
Jerome Coutant 0:146cf26a9bbb 91 const uint8_t lcdRegData25[] = {0xFF,0xFF,0xFF,0xFF};
Jerome Coutant 0:146cf26a9bbb 92 /*
Jerome Coutant 0:146cf26a9bbb 93 * CASET value (Column Address Set) : X direction LCD GRAM boundaries
Jerome Coutant 0:146cf26a9bbb 94 * depending on LCD orientation mode and PASET value (Page Address Set) : Y direction
Jerome Coutant 0:146cf26a9bbb 95 * LCD GRAM boundaries depending on LCD orientation mode
Jerome Coutant 0:146cf26a9bbb 96 * XS[15:0] = 0x000 = 0, XE[15:0] = 0x31F = 799 for landscape mode : apply to CASET
Jerome Coutant 0:146cf26a9bbb 97 * YS[15:0] = 0x000 = 0, YE[15:0] = 0x31F = 799 for portrait mode : : apply to PASET
Jerome Coutant 0:146cf26a9bbb 98 */
Jerome Coutant 0:146cf26a9bbb 99 const uint8_t lcdRegData27[] = {0x00, 0x00, 0x03, 0x1F, OTM8009A_CMD_CASET};
Jerome Coutant 0:146cf26a9bbb 100 /*
Jerome Coutant 0:146cf26a9bbb 101 * XS[15:0] = 0x000 = 0, XE[15:0] = 0x1DF = 479 for portrait mode : apply to CASET
Jerome Coutant 0:146cf26a9bbb 102 * YS[15:0] = 0x000 = 0, YE[15:0] = 0x1DF = 479 for landscape mode : apply to PASET
Jerome Coutant 0:146cf26a9bbb 103 */
Jerome Coutant 0:146cf26a9bbb 104 const uint8_t lcdRegData28[] = {0x00, 0x00, 0x01, 0xDF, OTM8009A_CMD_PASET};
Jerome Coutant 0:146cf26a9bbb 105
Jerome Coutant 0:146cf26a9bbb 106
Jerome Coutant 0:146cf26a9bbb 107 const uint8_t ShortRegData1[] = {OTM8009A_CMD_NOP, 0x00};
Jerome Coutant 0:146cf26a9bbb 108 const uint8_t ShortRegData2[] = {OTM8009A_CMD_NOP, 0x80};
Jerome Coutant 0:146cf26a9bbb 109 const uint8_t ShortRegData3[] = {0xC4, 0x30};
Jerome Coutant 0:146cf26a9bbb 110 const uint8_t ShortRegData4[] = {OTM8009A_CMD_NOP, 0x8A};
Jerome Coutant 0:146cf26a9bbb 111 const uint8_t ShortRegData5[] = {0xC4, 0x40};
Jerome Coutant 0:146cf26a9bbb 112 const uint8_t ShortRegData6[] = {OTM8009A_CMD_NOP, 0xB1};
Jerome Coutant 0:146cf26a9bbb 113 const uint8_t ShortRegData7[] = {0xC5, 0xA9};
Jerome Coutant 0:146cf26a9bbb 114 const uint8_t ShortRegData8[] = {OTM8009A_CMD_NOP, 0x91};
Jerome Coutant 0:146cf26a9bbb 115 const uint8_t ShortRegData9[] = {0xC5, 0x34};
Jerome Coutant 0:146cf26a9bbb 116 const uint8_t ShortRegData10[] = {OTM8009A_CMD_NOP, 0xB4};
Jerome Coutant 0:146cf26a9bbb 117 const uint8_t ShortRegData11[] = {0xC0, 0x50};
Jerome Coutant 0:146cf26a9bbb 118 const uint8_t ShortRegData12[] = {0xD9, 0x4E};
Jerome Coutant 0:146cf26a9bbb 119 const uint8_t ShortRegData13[] = {OTM8009A_CMD_NOP, 0x81};
Jerome Coutant 0:146cf26a9bbb 120 const uint8_t ShortRegData14[] = {0xC1, 0x66};
Jerome Coutant 0:146cf26a9bbb 121 const uint8_t ShortRegData15[] = {OTM8009A_CMD_NOP, 0xA1};
Jerome Coutant 0:146cf26a9bbb 122 const uint8_t ShortRegData16[] = {0xC1, 0x08};
Jerome Coutant 0:146cf26a9bbb 123 const uint8_t ShortRegData17[] = {OTM8009A_CMD_NOP, 0x92};
Jerome Coutant 0:146cf26a9bbb 124 const uint8_t ShortRegData18[] = {0xC5, 0x01};
Jerome Coutant 0:146cf26a9bbb 125 const uint8_t ShortRegData19[] = {OTM8009A_CMD_NOP, 0x95};
Jerome Coutant 0:146cf26a9bbb 126 const uint8_t ShortRegData20[] = {OTM8009A_CMD_NOP, 0x94};
Jerome Coutant 0:146cf26a9bbb 127 const uint8_t ShortRegData21[] = {0xC5, 0x33};
Jerome Coutant 0:146cf26a9bbb 128 const uint8_t ShortRegData22[] = {OTM8009A_CMD_NOP, 0xA3};
Jerome Coutant 0:146cf26a9bbb 129 const uint8_t ShortRegData23[] = {0xC0, 0x1B};
Jerome Coutant 0:146cf26a9bbb 130 const uint8_t ShortRegData24[] = {OTM8009A_CMD_NOP, 0x82};
Jerome Coutant 0:146cf26a9bbb 131 const uint8_t ShortRegData25[] = {0xC5, 0x83};
Jerome Coutant 0:146cf26a9bbb 132 const uint8_t ShortRegData26[] = {0xC4, 0x83};
Jerome Coutant 0:146cf26a9bbb 133 const uint8_t ShortRegData27[] = {0xC1, 0x0E};
Jerome Coutant 0:146cf26a9bbb 134 const uint8_t ShortRegData28[] = {OTM8009A_CMD_NOP, 0xA6};
Jerome Coutant 0:146cf26a9bbb 135 const uint8_t ShortRegData29[] = {OTM8009A_CMD_NOP, 0xA0};
Jerome Coutant 0:146cf26a9bbb 136 const uint8_t ShortRegData30[] = {OTM8009A_CMD_NOP, 0xB0};
Jerome Coutant 0:146cf26a9bbb 137 const uint8_t ShortRegData31[] = {OTM8009A_CMD_NOP, 0xC0};
Jerome Coutant 0:146cf26a9bbb 138 const uint8_t ShortRegData32[] = {OTM8009A_CMD_NOP, 0xD0};
Jerome Coutant 0:146cf26a9bbb 139 const uint8_t ShortRegData33[] = {OTM8009A_CMD_NOP, 0x90};
Jerome Coutant 0:146cf26a9bbb 140 const uint8_t ShortRegData34[] = {OTM8009A_CMD_NOP, 0xE0};
Jerome Coutant 0:146cf26a9bbb 141 const uint8_t ShortRegData35[] = {OTM8009A_CMD_NOP, 0xF0};
Jerome Coutant 0:146cf26a9bbb 142 const uint8_t ShortRegData36[] = {OTM8009A_CMD_SLPOUT, 0x00};
Jerome Coutant 0:146cf26a9bbb 143 const uint8_t ShortRegData37[] = {OTM8009A_CMD_COLMOD, OTM8009A_COLMOD_RGB565};
Jerome Coutant 0:146cf26a9bbb 144 const uint8_t ShortRegData38[] = {OTM8009A_CMD_COLMOD, OTM8009A_COLMOD_RGB888};
Jerome Coutant 0:146cf26a9bbb 145 const uint8_t ShortRegData39[] = {OTM8009A_CMD_MADCTR, OTM8009A_MADCTR_MODE_LANDSCAPE};
Jerome Coutant 0:146cf26a9bbb 146 const uint8_t ShortRegData40[] = {OTM8009A_CMD_WRDISBV, 0x7F};
Jerome Coutant 0:146cf26a9bbb 147 const uint8_t ShortRegData41[] = {OTM8009A_CMD_WRCTRLD, 0x2C};
Jerome Coutant 0:146cf26a9bbb 148 const uint8_t ShortRegData42[] = {OTM8009A_CMD_WRCABC, 0x02};
Jerome Coutant 0:146cf26a9bbb 149 const uint8_t ShortRegData43[] = {OTM8009A_CMD_WRCABCMB, 0xFF};
Jerome Coutant 0:146cf26a9bbb 150 const uint8_t ShortRegData44[] = {OTM8009A_CMD_DISPON, 0x00};
Jerome Coutant 0:146cf26a9bbb 151 const uint8_t ShortRegData45[] = {OTM8009A_CMD_RAMWR, 0x00};
Jerome Coutant 0:146cf26a9bbb 152 const uint8_t ShortRegData46[] = {0xCF, 0x00};
Jerome Coutant 0:146cf26a9bbb 153 const uint8_t ShortRegData47[] = {0xC5, 0x66};
Jerome Coutant 0:146cf26a9bbb 154 const uint8_t ShortRegData48[] = {OTM8009A_CMD_NOP, 0xB6};
Jerome Coutant 0:146cf26a9bbb 155 const uint8_t ShortRegData49[] = {0xF5, 0x06};
Jerome Coutant 0:146cf26a9bbb 156 const uint8_t ShortRegData50[] = {OTM8009A_CMD_NOP, 0xB1};
Jerome Coutant 0:146cf26a9bbb 157 const uint8_t ShortRegData51[] = {0xC6, 0x06};
Jerome Coutant 0:146cf26a9bbb 158 /**
Jerome Coutant 0:146cf26a9bbb 159 * @}
Jerome Coutant 0:146cf26a9bbb 160 */
Jerome Coutant 0:146cf26a9bbb 161
Jerome Coutant 0:146cf26a9bbb 162 /* Private macros ------------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 163 /* Private functions ---------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 164 /** @defgroup OTM8009A_Exported_Variables
Jerome Coutant 0:146cf26a9bbb 165 * @{
Jerome Coutant 0:146cf26a9bbb 166 */
Jerome Coutant 0:146cf26a9bbb 167
Jerome Coutant 0:146cf26a9bbb 168 /**
Jerome Coutant 0:146cf26a9bbb 169 * @}
Jerome Coutant 0:146cf26a9bbb 170 */
Jerome Coutant 0:146cf26a9bbb 171
Jerome Coutant 0:146cf26a9bbb 172 /* Exported functions ---------------------------------------------------------*/
Jerome Coutant 0:146cf26a9bbb 173 /** @defgroup OTM8009A_Exported_Functions OTM8009A Exported Functions
Jerome Coutant 0:146cf26a9bbb 174 * @{
Jerome Coutant 0:146cf26a9bbb 175 */
Jerome Coutant 0:146cf26a9bbb 176
Jerome Coutant 0:146cf26a9bbb 177 /**
Jerome Coutant 0:146cf26a9bbb 178 * @brief DSI IO write short/long command.
Jerome Coutant 0:146cf26a9bbb 179 * @note : Can be surcharged by application code implementation of the function.
Jerome Coutant 0:146cf26a9bbb 180 */
Jerome Coutant 0:146cf26a9bbb 181 __weak void DSI_IO_WriteCmd(uint32_t NbrParams, uint8_t *pParams)
Jerome Coutant 0:146cf26a9bbb 182 {
Jerome Coutant 0:146cf26a9bbb 183 /* NOTE : This function Should not be modified, when it is needed,
Jerome Coutant 0:146cf26a9bbb 184 the DSI_IO_WriteCmd could be implemented in the user file
Jerome Coutant 0:146cf26a9bbb 185 */
Jerome Coutant 0:146cf26a9bbb 186 }
Jerome Coutant 0:146cf26a9bbb 187
Jerome Coutant 0:146cf26a9bbb 188 /**
Jerome Coutant 0:146cf26a9bbb 189 * @brief Initializes the LCD KoD display part by communication in DSI mode in Video Mode
Jerome Coutant 0:146cf26a9bbb 190 * with IC Display Driver OTM8009A (see IC Driver specification for more information).
Jerome Coutant 0:146cf26a9bbb 191 * @param hdsi_eval : pointer on DSI configuration structure
Jerome Coutant 0:146cf26a9bbb 192 * @param hdsivideo_handle : pointer on DSI video mode configuration structure
Jerome Coutant 0:146cf26a9bbb 193 * @retval Status
Jerome Coutant 0:146cf26a9bbb 194 */
Jerome Coutant 0:146cf26a9bbb 195 uint8_t OTM8009A_Init(uint32_t ColorCoding, uint32_t orientation)
Jerome Coutant 0:146cf26a9bbb 196 {
Jerome Coutant 0:146cf26a9bbb 197 /* Enable CMD2 to access vendor specific commands */
Jerome Coutant 0:146cf26a9bbb 198 /* Enter in command 2 mode and set EXTC to enable address shift function (0x00) */
Jerome Coutant 0:146cf26a9bbb 199 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 200 DSI_IO_WriteCmd( 3, (uint8_t *)lcdRegData1);
Jerome Coutant 0:146cf26a9bbb 201
Jerome Coutant 0:146cf26a9bbb 202 /* Enter ORISE Command 2 */
Jerome Coutant 0:146cf26a9bbb 203 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData2); /* Shift address to 0x80 */
Jerome Coutant 0:146cf26a9bbb 204 DSI_IO_WriteCmd( 2, (uint8_t *)lcdRegData2);
Jerome Coutant 0:146cf26a9bbb 205
Jerome Coutant 0:146cf26a9bbb 206 /////////////////////////////////////////////////////////////////////
Jerome Coutant 0:146cf26a9bbb 207 /* SD_PCH_CTRL - 0xC480h - 129th parameter - Default 0x00 */
Jerome Coutant 0:146cf26a9bbb 208 /* Set SD_PT */
Jerome Coutant 0:146cf26a9bbb 209 /* -> Source output level during porch and non-display area to GND */
Jerome Coutant 0:146cf26a9bbb 210 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData2);
Jerome Coutant 0:146cf26a9bbb 211 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData3);
Jerome Coutant 0:146cf26a9bbb 212 OTM8009A_IO_Delay(10);
Jerome Coutant 0:146cf26a9bbb 213 /* Not documented */
Jerome Coutant 0:146cf26a9bbb 214 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData4);
Jerome Coutant 0:146cf26a9bbb 215 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData5);
Jerome Coutant 0:146cf26a9bbb 216 OTM8009A_IO_Delay(10);
Jerome Coutant 0:146cf26a9bbb 217 /////////////////////////////////////////////////////////////////////
Jerome Coutant 0:146cf26a9bbb 218
Jerome Coutant 0:146cf26a9bbb 219 /* PWR_CTRL4 - 0xC4B0h - 178th parameter - Default 0xA8 */
Jerome Coutant 0:146cf26a9bbb 220 /* Set gvdd_en_test */
Jerome Coutant 0:146cf26a9bbb 221 /* -> enable GVDD test mode !!! */
Jerome Coutant 0:146cf26a9bbb 222 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData6);
Jerome Coutant 0:146cf26a9bbb 223 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData7);
Jerome Coutant 0:146cf26a9bbb 224
Jerome Coutant 0:146cf26a9bbb 225 /* PWR_CTRL2 - 0xC590h - 146th parameter - Default 0x79 */
Jerome Coutant 0:146cf26a9bbb 226 /* Set pump 4 vgh voltage */
Jerome Coutant 0:146cf26a9bbb 227 /* -> from 15.0v down to 13.0v */
Jerome Coutant 0:146cf26a9bbb 228 /* Set pump 5 vgh voltage */
Jerome Coutant 0:146cf26a9bbb 229 /* -> from -12.0v downto -9.0v */
Jerome Coutant 0:146cf26a9bbb 230 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData8);
Jerome Coutant 0:146cf26a9bbb 231 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData9);
Jerome Coutant 0:146cf26a9bbb 232
Jerome Coutant 0:146cf26a9bbb 233 /* P_DRV_M - 0xC0B4h - 181th parameter - Default 0x00 */
Jerome Coutant 0:146cf26a9bbb 234 /* -> Column inversion */
Jerome Coutant 0:146cf26a9bbb 235 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData10);
Jerome Coutant 0:146cf26a9bbb 236 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData11);
Jerome Coutant 0:146cf26a9bbb 237
Jerome Coutant 0:146cf26a9bbb 238 /* VCOMDC - 0xD900h - 1st parameter - Default 0x39h */
Jerome Coutant 0:146cf26a9bbb 239 /* VCOM Voltage settings */
Jerome Coutant 0:146cf26a9bbb 240 /* -> from -1.0000v downto -1.2625v */
Jerome Coutant 0:146cf26a9bbb 241 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 242 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData12);
Jerome Coutant 0:146cf26a9bbb 243
Jerome Coutant 0:146cf26a9bbb 244 /* Oscillator adjustment for Idle/Normal mode (LPDT only) set to 65Hz (default is 60Hz) */
Jerome Coutant 0:146cf26a9bbb 245 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData13);
Jerome Coutant 0:146cf26a9bbb 246 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData14);
Jerome Coutant 0:146cf26a9bbb 247
Jerome Coutant 0:146cf26a9bbb 248 /* Video mode internal */
Jerome Coutant 0:146cf26a9bbb 249 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData15);
Jerome Coutant 0:146cf26a9bbb 250 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData16);
Jerome Coutant 0:146cf26a9bbb 251
Jerome Coutant 0:146cf26a9bbb 252 /* PWR_CTRL2 - 0xC590h - 147h parameter - Default 0x00 */
Jerome Coutant 0:146cf26a9bbb 253 /* Set pump 4&5 x6 */
Jerome Coutant 0:146cf26a9bbb 254 /* -> ONLY VALID when PUMP4_EN_ASDM_HV = "0" */
Jerome Coutant 0:146cf26a9bbb 255 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData17);
Jerome Coutant 0:146cf26a9bbb 256 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData18);
Jerome Coutant 0:146cf26a9bbb 257
Jerome Coutant 0:146cf26a9bbb 258 /* PWR_CTRL2 - 0xC590h - 150th parameter - Default 0x33h */
Jerome Coutant 0:146cf26a9bbb 259 /* Change pump4 clock ratio */
Jerome Coutant 0:146cf26a9bbb 260 /* -> from 1 line to 1/2 line */
Jerome Coutant 0:146cf26a9bbb 261 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData19);
Jerome Coutant 0:146cf26a9bbb 262 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData9);
Jerome Coutant 0:146cf26a9bbb 263
Jerome Coutant 0:146cf26a9bbb 264 /* GVDD/NGVDD settings */
Jerome Coutant 0:146cf26a9bbb 265 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 266 DSI_IO_WriteCmd( 2, (uint8_t *)lcdRegData5);
Jerome Coutant 0:146cf26a9bbb 267
Jerome Coutant 0:146cf26a9bbb 268 /* PWR_CTRL2 - 0xC590h - 149th parameter - Default 0x33h */
Jerome Coutant 0:146cf26a9bbb 269 /* Rewrite the default value ! */
Jerome Coutant 0:146cf26a9bbb 270 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData20);
Jerome Coutant 0:146cf26a9bbb 271 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData21);
Jerome Coutant 0:146cf26a9bbb 272
Jerome Coutant 0:146cf26a9bbb 273 /* Panel display timing Setting 3 */
Jerome Coutant 0:146cf26a9bbb 274 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData22);
Jerome Coutant 0:146cf26a9bbb 275 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData23);
Jerome Coutant 0:146cf26a9bbb 276
Jerome Coutant 0:146cf26a9bbb 277 /* Power control 1 */
Jerome Coutant 0:146cf26a9bbb 278 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData24);
Jerome Coutant 0:146cf26a9bbb 279 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData25);
Jerome Coutant 0:146cf26a9bbb 280
Jerome Coutant 0:146cf26a9bbb 281 /* Source driver precharge */
Jerome Coutant 0:146cf26a9bbb 282 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData13);
Jerome Coutant 0:146cf26a9bbb 283 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData26);
Jerome Coutant 0:146cf26a9bbb 284
Jerome Coutant 0:146cf26a9bbb 285 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData15);
Jerome Coutant 0:146cf26a9bbb 286 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData27);
Jerome Coutant 0:146cf26a9bbb 287
Jerome Coutant 0:146cf26a9bbb 288 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData28);
Jerome Coutant 0:146cf26a9bbb 289 DSI_IO_WriteCmd( 2, (uint8_t *)lcdRegData6);
Jerome Coutant 0:146cf26a9bbb 290
Jerome Coutant 0:146cf26a9bbb 291 /* GOAVST */
Jerome Coutant 0:146cf26a9bbb 292 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData2);
Jerome Coutant 0:146cf26a9bbb 293 DSI_IO_WriteCmd( 6, (uint8_t *)lcdRegData7);
Jerome Coutant 0:146cf26a9bbb 294
Jerome Coutant 0:146cf26a9bbb 295 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData29);
Jerome Coutant 0:146cf26a9bbb 296 DSI_IO_WriteCmd( 14, (uint8_t *)lcdRegData8);
Jerome Coutant 0:146cf26a9bbb 297
Jerome Coutant 0:146cf26a9bbb 298 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData30);
Jerome Coutant 0:146cf26a9bbb 299 DSI_IO_WriteCmd( 14, (uint8_t *)lcdRegData9);
Jerome Coutant 0:146cf26a9bbb 300
Jerome Coutant 0:146cf26a9bbb 301 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData31);
Jerome Coutant 0:146cf26a9bbb 302 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData10);
Jerome Coutant 0:146cf26a9bbb 303
Jerome Coutant 0:146cf26a9bbb 304 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData32);
Jerome Coutant 0:146cf26a9bbb 305 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData46);
Jerome Coutant 0:146cf26a9bbb 306
Jerome Coutant 0:146cf26a9bbb 307 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData2);
Jerome Coutant 0:146cf26a9bbb 308 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData11);
Jerome Coutant 0:146cf26a9bbb 309
Jerome Coutant 0:146cf26a9bbb 310 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData33);
Jerome Coutant 0:146cf26a9bbb 311 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData12);
Jerome Coutant 0:146cf26a9bbb 312
Jerome Coutant 0:146cf26a9bbb 313 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData29);
Jerome Coutant 0:146cf26a9bbb 314 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData13);
Jerome Coutant 0:146cf26a9bbb 315
Jerome Coutant 0:146cf26a9bbb 316 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData30);
Jerome Coutant 0:146cf26a9bbb 317 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData14);
Jerome Coutant 0:146cf26a9bbb 318
Jerome Coutant 0:146cf26a9bbb 319 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData31);
Jerome Coutant 0:146cf26a9bbb 320 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData15);
Jerome Coutant 0:146cf26a9bbb 321
Jerome Coutant 0:146cf26a9bbb 322 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData32);
Jerome Coutant 0:146cf26a9bbb 323 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData16);
Jerome Coutant 0:146cf26a9bbb 324
Jerome Coutant 0:146cf26a9bbb 325 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData34);
Jerome Coutant 0:146cf26a9bbb 326 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData17);
Jerome Coutant 0:146cf26a9bbb 327
Jerome Coutant 0:146cf26a9bbb 328 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData35);
Jerome Coutant 0:146cf26a9bbb 329 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData18);
Jerome Coutant 0:146cf26a9bbb 330
Jerome Coutant 0:146cf26a9bbb 331 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData2);
Jerome Coutant 0:146cf26a9bbb 332 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData19);
Jerome Coutant 0:146cf26a9bbb 333
Jerome Coutant 0:146cf26a9bbb 334 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData33);
Jerome Coutant 0:146cf26a9bbb 335 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData20);
Jerome Coutant 0:146cf26a9bbb 336
Jerome Coutant 0:146cf26a9bbb 337 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData29);
Jerome Coutant 0:146cf26a9bbb 338 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData21);
Jerome Coutant 0:146cf26a9bbb 339
Jerome Coutant 0:146cf26a9bbb 340 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData30);
Jerome Coutant 0:146cf26a9bbb 341 DSI_IO_WriteCmd( 10, (uint8_t *)lcdRegData22);
Jerome Coutant 0:146cf26a9bbb 342
Jerome Coutant 0:146cf26a9bbb 343 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData31);
Jerome Coutant 0:146cf26a9bbb 344 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData23);
Jerome Coutant 0:146cf26a9bbb 345
Jerome Coutant 0:146cf26a9bbb 346 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData32);
Jerome Coutant 0:146cf26a9bbb 347 DSI_IO_WriteCmd( 15, (uint8_t *)lcdRegData24);
Jerome Coutant 0:146cf26a9bbb 348
Jerome Coutant 0:146cf26a9bbb 349 /////////////////////////////////////////////////////////////////////////////
Jerome Coutant 0:146cf26a9bbb 350 /* PWR_CTRL1 - 0xc580h - 130th parameter - default 0x00 */
Jerome Coutant 0:146cf26a9bbb 351 /* Pump 1 min and max DM */
Jerome Coutant 0:146cf26a9bbb 352 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData13);
Jerome Coutant 0:146cf26a9bbb 353 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData47);
Jerome Coutant 0:146cf26a9bbb 354 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData48);
Jerome Coutant 0:146cf26a9bbb 355 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData49);
Jerome Coutant 0:146cf26a9bbb 356 /////////////////////////////////////////////////////////////////////////////
Jerome Coutant 0:146cf26a9bbb 357
Jerome Coutant 0:146cf26a9bbb 358 /* CABC LEDPWM frequency adjusted to 19,5kHz */
Jerome Coutant 0:146cf26a9bbb 359 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData50);
Jerome Coutant 0:146cf26a9bbb 360 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData51);
Jerome Coutant 0:146cf26a9bbb 361
Jerome Coutant 0:146cf26a9bbb 362 /* Exit CMD2 mode */
Jerome Coutant 0:146cf26a9bbb 363 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 364 DSI_IO_WriteCmd( 3, (uint8_t *)lcdRegData25);
Jerome Coutant 0:146cf26a9bbb 365
Jerome Coutant 0:146cf26a9bbb 366 /*************************************************************************** */
Jerome Coutant 0:146cf26a9bbb 367 /* Standard DCS Initialization TO KEEP CAN BE DONE IN HSDT */
Jerome Coutant 0:146cf26a9bbb 368 /*************************************************************************** */
Jerome Coutant 0:146cf26a9bbb 369
Jerome Coutant 0:146cf26a9bbb 370 /* NOP - goes back to DCS std command ? */
Jerome Coutant 0:146cf26a9bbb 371 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 372
Jerome Coutant 0:146cf26a9bbb 373 /* Gamma correction 2.2+ table (HSDT possible) */
Jerome Coutant 0:146cf26a9bbb 374 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 375 DSI_IO_WriteCmd( 16, (uint8_t *)lcdRegData3);
Jerome Coutant 0:146cf26a9bbb 376
Jerome Coutant 0:146cf26a9bbb 377 /* Gamma correction 2.2- table (HSDT possible) */
Jerome Coutant 0:146cf26a9bbb 378 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 379 DSI_IO_WriteCmd( 16, (uint8_t *)lcdRegData4);
Jerome Coutant 0:146cf26a9bbb 380
Jerome Coutant 0:146cf26a9bbb 381 /* Send Sleep Out command to display : no parameter */
Jerome Coutant 0:146cf26a9bbb 382 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData36);
Jerome Coutant 0:146cf26a9bbb 383
Jerome Coutant 0:146cf26a9bbb 384 /* Wait for sleep out exit */
Jerome Coutant 0:146cf26a9bbb 385 OTM8009A_IO_Delay(120);
Jerome Coutant 0:146cf26a9bbb 386
Jerome Coutant 0:146cf26a9bbb 387 switch(ColorCoding)
Jerome Coutant 0:146cf26a9bbb 388 {
Jerome Coutant 0:146cf26a9bbb 389 case OTM8009A_FORMAT_RBG565 :
Jerome Coutant 0:146cf26a9bbb 390 /* Set Pixel color format to RGB565 */
Jerome Coutant 0:146cf26a9bbb 391 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData37);
Jerome Coutant 0:146cf26a9bbb 392 break;
Jerome Coutant 0:146cf26a9bbb 393 case OTM8009A_FORMAT_RGB888 :
Jerome Coutant 0:146cf26a9bbb 394 /* Set Pixel color format to RGB888 */
Jerome Coutant 0:146cf26a9bbb 395 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData38);
Jerome Coutant 0:146cf26a9bbb 396 break;
Jerome Coutant 0:146cf26a9bbb 397 default :
Jerome Coutant 0:146cf26a9bbb 398 break;
Jerome Coutant 0:146cf26a9bbb 399 }
Jerome Coutant 0:146cf26a9bbb 400
Jerome Coutant 0:146cf26a9bbb 401 /* Send command to configure display in landscape orientation mode. By default
Jerome Coutant 0:146cf26a9bbb 402 the orientation mode is portrait */
Jerome Coutant 0:146cf26a9bbb 403 if(orientation == OTM8009A_ORIENTATION_LANDSCAPE)
Jerome Coutant 0:146cf26a9bbb 404 {
Jerome Coutant 0:146cf26a9bbb 405 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData39);
Jerome Coutant 0:146cf26a9bbb 406 DSI_IO_WriteCmd( 4, (uint8_t *)lcdRegData27);
Jerome Coutant 0:146cf26a9bbb 407 DSI_IO_WriteCmd( 4, (uint8_t *)lcdRegData28);
Jerome Coutant 0:146cf26a9bbb 408 }
Jerome Coutant 0:146cf26a9bbb 409
Jerome Coutant 0:146cf26a9bbb 410 /** CABC : Content Adaptive Backlight Control section start >> */
Jerome Coutant 0:146cf26a9bbb 411 /* Note : defaut is 0 (lowest Brightness), 0xFF is highest Brightness, try 0x7F : intermediate value */
Jerome Coutant 0:146cf26a9bbb 412 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData40);
Jerome Coutant 0:146cf26a9bbb 413
Jerome Coutant 0:146cf26a9bbb 414 /* defaut is 0, try 0x2C - Brightness Control Block, Display Dimming & BackLight on */
Jerome Coutant 0:146cf26a9bbb 415 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData41);
Jerome Coutant 0:146cf26a9bbb 416
Jerome Coutant 0:146cf26a9bbb 417 /* defaut is 0, try 0x02 - image Content based Adaptive Brightness [Still Picture] */
Jerome Coutant 0:146cf26a9bbb 418 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData42);
Jerome Coutant 0:146cf26a9bbb 419
Jerome Coutant 0:146cf26a9bbb 420 /* defaut is 0 (lowest Brightness), 0xFF is highest Brightness */
Jerome Coutant 0:146cf26a9bbb 421 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData43);
Jerome Coutant 0:146cf26a9bbb 422
Jerome Coutant 0:146cf26a9bbb 423 /** CABC : Content Adaptive Backlight Control section end << */
Jerome Coutant 0:146cf26a9bbb 424
Jerome Coutant 0:146cf26a9bbb 425 /* Send Command Display On */
Jerome Coutant 0:146cf26a9bbb 426 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData44);
Jerome Coutant 0:146cf26a9bbb 427
Jerome Coutant 0:146cf26a9bbb 428 /* NOP command */
Jerome Coutant 0:146cf26a9bbb 429 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData1);
Jerome Coutant 0:146cf26a9bbb 430
Jerome Coutant 0:146cf26a9bbb 431 /* Send Command GRAM memory write (no parameters) : this initiates frame write via other DSI commands sent by */
Jerome Coutant 0:146cf26a9bbb 432 /* DSI host from LTDC incoming pixels in video mode */
Jerome Coutant 0:146cf26a9bbb 433 DSI_IO_WriteCmd(0, (uint8_t *)ShortRegData45);
Jerome Coutant 0:146cf26a9bbb 434
Jerome Coutant 0:146cf26a9bbb 435 return 0;
Jerome Coutant 0:146cf26a9bbb 436 }
Jerome Coutant 0:146cf26a9bbb 437
Jerome Coutant 0:146cf26a9bbb 438 /**
Jerome Coutant 0:146cf26a9bbb 439 * @}
Jerome Coutant 0:146cf26a9bbb 440 */
Jerome Coutant 0:146cf26a9bbb 441
Jerome Coutant 0:146cf26a9bbb 442 /**
Jerome Coutant 0:146cf26a9bbb 443 * @}
Jerome Coutant 0:146cf26a9bbb 444 */
Jerome Coutant 0:146cf26a9bbb 445
Jerome Coutant 0:146cf26a9bbb 446 /**
Jerome Coutant 0:146cf26a9bbb 447 * @}
Jerome Coutant 0:146cf26a9bbb 448 */
Jerome Coutant 0:146cf26a9bbb 449
Jerome Coutant 0:146cf26a9bbb 450 /**
Jerome Coutant 0:146cf26a9bbb 451 * @}
Jerome Coutant 0:146cf26a9bbb 452 */
Jerome Coutant 0:146cf26a9bbb 453
Jerome Coutant 0:146cf26a9bbb 454 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/