ddk750_dvi.c (1736B)
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 */ 14static struct dvi_ctrl_device dcft_supported_dvi_controller[] = { 15#ifdef DVI_CTRL_SII164 16 { 17 .init = sii164InitChip, 18 .get_vendor_id = sii164GetVendorID, 19 .get_device_id = sii164GetDeviceID, 20#ifdef SII164_FULL_FUNCTIONS 21 .reset_chip = sii164ResetChip, 22 .get_chip_string = sii164GetChipString, 23 .set_power = sii164SetPower, 24 .enable_hot_plug_detection = sii164EnableHotPlugDetection, 25 .is_connected = sii164IsConnected, 26 .check_interrupt = sii164CheckInterrupt, 27 .clear_interrupt = sii164ClearInterrupt, 28#endif 29 }, 30#endif 31}; 32 33int dvi_init(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 *current_dvi_ctrl; 45 46 current_dvi_ctrl = dcft_supported_dvi_controller; 47 if (current_dvi_ctrl->init) { 48 return current_dvi_ctrl->init(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