1 // SPDX-License-Identifier: GPL-2.0 2 #define USE_DVICHIP 3 #ifdef USE_DVICHIP 4 #include "ddk750_chip.h" 5 #include "ddk750_reg.h" 6 #include "ddk750_dvi.h" 7 #include "ddk750_sii164.h" 8 9 /* 10 * This global variable contains all the supported driver and its corresponding 11 * function API. Please set the function pointer to NULL whenever the function 12 * is not supported. 13 */ 14 static struct dvi_ctrl_device g_dcftSupportedDviController[] = { 15 #ifdef DVI_CTRL_SII164 16 { 17 .pfnInit = sii164InitChip, 18 .pfnGetVendorId = sii164GetVendorID, 19 .pfnGetDeviceId = sii164GetDeviceID, 20 #ifdef SII164_FULL_FUNCTIONS 21 .pfnResetChip = sii164ResetChip, 22 .pfnGetChipString = sii164GetChipString, 23 .pfnSetPower = sii164SetPower, 24 .pfnEnableHotPlugDetection = sii164EnableHotPlugDetection, 25 .pfnIsConnected = sii164IsConnected, 26 .pfnCheckInterrupt = sii164CheckInterrupt, 27 .pfnClearInterrupt = sii164ClearInterrupt, 28 #endif 29 }, 30 #endif 31 }; 32 33 int dviInit(unsigned char edge_select, 34 unsigned char bus_select, 35 unsigned char dual_edge_clk_select, 36 unsigned char hsync_enable, 37 unsigned char vsync_enable, 38 unsigned char deskew_enable, 39 unsigned char deskew_setting, 40 unsigned char continuous_sync_enable, 41 unsigned char pll_filter_enable, 42 unsigned char pll_filter_value) 43 { 44 struct dvi_ctrl_device *pCurrentDviCtrl; 45 46 pCurrentDviCtrl = g_dcftSupportedDviController; 47 if (pCurrentDviCtrl->pfnInit) { 48 return pCurrentDviCtrl->pfnInit(edge_select, 49 bus_select, 50 dual_edge_clk_select, 51 hsync_enable, 52 vsync_enable, 53 deskew_enable, 54 deskew_setting, 55 continuous_sync_enable, 56 pll_filter_enable, 57 pll_filter_value); 58 } 59 return -1; /* error */ 60 } 61 62 #endif 63