[processor-sdk/performance-audio-sr.git] / pdk_k2g_1_0_1 / packages / ti / board / diag / hdmi / src / evmk2g_hdmi_panel.c
1 /*
2 * Copyright (c) 2016, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
34 /**
35 *
36 * \file evmk2g_hdmi_panel.c
37 *
38 * \brief This file contains DSS Panel (HDMI) specific functions.
39 *
40 ******************************************************************************/
42 #include "platform_internal.h"
43 #include "keystone_pll.h"
45 dispCfg_t dispCfg_hdmi = { 0, DSS_LCD_TYPE_ACTIVE, 3, 0};
46 dmaCfg_t vidDmaCfg_hdmi = {0x09FF, 0x09F8, 1, 1, 0x00080000, 2, 0, 0, 0, 0, 7};
47 tmgCfg_t tmgCfg_hdmi = {0,0,0,0,0,1,0,0,0,0,0,0};
49 dssInfo_t *dssInfo_hdmi;
51 extern void init_pll(const pllcConfig *data);
53 /**
54 * \brief This function initializes HDMI Panel module.
55 *
56 * This function should be called before using any other DSS functions.
57 * This function configures the HDMI parameters and then configures DSS.
58 *
59 * \param
60 * hdmiCfg - pointer to HDMI configuration
61 *
62 * \return
63 * DSS_RET_OK - If successful
64 * DSS_RET_FAILED - If failure
65 *
66 */
67 DSS_RET hdmiPanelInit(lcdCfg_t *hdmiCfg)
68 {
69 DSS_RET status = DSS_RET_OK;
70 pllcConfig pll_data;
72 dssInfo_hdmi = (dssInfo_t *)malloc(sizeof(dssInfo_t));
73 if (dssInfo_hdmi == NULL)
74 return DSS_RET_FAILED;
76 /* Configure PLL for LCD PCLK - 24MHz input clock */
77 pll_data.pll = CSL_PLL_DSS;
78 pll_data.pll_m = 198; // Multiply by 198
79 pll_data.pll_d = 12; // Divide by 12
80 pll_data.pll_od = 16; // Divide by 16
82 init_pll(&pll_data);
84 memcpy(&dssInfo_hdmi->lcdCfg, hdmiCfg, sizeof(lcdCfg_t));
85 memcpy(&dssInfo_hdmi->dispCfg, &dispCfg_hdmi, sizeof(dispCfg_t));
86 memcpy(&dssInfo_hdmi->vidDmaCfg, &vidDmaCfg_hdmi, sizeof(dmaCfg_t));
87 memset(&dssInfo_hdmi->tmgCfg, 0, sizeof(tmgCfg_t));
89 status = dssInit(dssInfo_hdmi);
90 #if (PLATFORM_DEBUG)
91 dssDumpReg(dssInfo_hdmi);
92 #endif
94 return status;
95 }
97 /**
98 * \brief Display color bar on the HDMI
99 *
100 * This function calls the function to put the color bar information on the framebuffer
101 * and hence displays the Color bar on the HDMI screen
102 *
103 * \param
104 * hdmiCfg - pointer to HDMI configuration
105 *
106 * \return
107 * None
108 *
109 */
110 void hdmiColorBarDisplay(lcdCfg_t *hdmiCfg)
111 {
112 dssInitFrameBuffer(RGB888_GENERATE, hdmiCfg->LcdWidth, hdmiCfg->LcdHeight);
113 }
115 /**
116 * \brief Display a single color on the HDMI screen
117 *
118 * This function calls the function to put a single color passed as an argument on the framebuffer
119 * and hence displays the Color screen on the HDMI screen
120 *
121 * \param
122 * hdmiCfg - pointer to HDMI configuration
123 * color - Color to be displayed on the screen.
124 *
125 * \return
126 * None
127 *
128 */
129 void hdmiColorDisplay(lcdCfg_t *hdmiCfg, int color)
130 {
131 dssFrameBufferColor( hdmiCfg, color );
132 }
134 /* Nothing past this point */