| // SPDX-License-Identifier: GPL-2.0 |
| #define USE_DVICHIP |
| #ifdef USE_DVICHIP |
| #include "ddk750_chip.h" |
| #include "ddk750_reg.h" |
| #include "ddk750_dvi.h" |
| #include "ddk750_sii164.h" |
| |
| /* |
| * This global variable contains all the supported driver and its corresponding |
| * function API. Please set the function pointer to NULL whenever the function |
| * is not supported. |
| */ |
| static struct dvi_ctrl_device dcft_supported_dvi_controller[] = { |
| #ifdef DVI_CTRL_SII164 |
| { |
| .init = sii164_init_chip, |
| .get_vendor_id = sii164_get_vendor_id, |
| .get_device_id = sii164GetDeviceID, |
| #ifdef SII164_FULL_FUNCTIONS |
| .reset_chip = sii164ResetChip, |
| .get_chip_string = sii164GetChipString, |
| .set_power = sii164SetPower, |
| .enable_hot_plug_detection = sii164EnableHotPlugDetection, |
| .is_connected = sii164IsConnected, |
| .check_interrupt = sii164CheckInterrupt, |
| .clear_interrupt = sii164ClearInterrupt, |
| #endif |
| }, |
| #endif |
| }; |
| |
| int dvi_init(unsigned char edge_select, |
| unsigned char bus_select, |
| unsigned char dual_edge_clk_select, |
| unsigned char hsync_enable, |
| unsigned char vsync_enable, |
| unsigned char deskew_enable, |
| unsigned char deskew_setting, |
| unsigned char continuous_sync_enable, |
| unsigned char pll_filter_enable, |
| unsigned char pll_filter_value) |
| { |
| struct dvi_ctrl_device *current_dvi_ctrl; |
| |
| current_dvi_ctrl = dcft_supported_dvi_controller; |
| if (current_dvi_ctrl->init) { |
| return current_dvi_ctrl->init(edge_select, |
| bus_select, |
| dual_edge_clk_select, |
| hsync_enable, |
| vsync_enable, |
| deskew_enable, |
| deskew_setting, |
| continuous_sync_enable, |
| pll_filter_enable, |
| pll_filter_value); |
| } |
| return -1; /* error */ |
| } |
| |
| #endif |