1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
281dee67eSSudip Mukherjee #define USE_DVICHIP
381dee67eSSudip Mukherjee #ifdef USE_DVICHIP
4efe9bc08SElise Lennion #include "ddk750_chip.h"
581dee67eSSudip Mukherjee #include "ddk750_reg.h"
681dee67eSSudip Mukherjee #include "ddk750_dvi.h"
781dee67eSSudip Mukherjee #include "ddk750_sii164.h"
881dee67eSSudip Mukherjee 
92d17105eSEdward Lipinsky /*
102d17105eSEdward Lipinsky  * This global variable contains all the supported driver and its corresponding
112d17105eSEdward Lipinsky  * function API. Please set the function pointer to NULL whenever the function
122d17105eSEdward Lipinsky  * is not supported.
132d17105eSEdward Lipinsky  */
149314a822SNam Cao static struct dvi_ctrl_device dcft_supported_dvi_controller[] = {
1581dee67eSSudip Mukherjee #ifdef DVI_CTRL_SII164
1681dee67eSSudip Mukherjee 	{
17*72eb8304SAbdel Alkuor 		.init = sii164_init_chip,
18864a821cSNam Cao 		.get_vendor_id = sii164_get_vendor_id,
199314a822SNam Cao 		.get_device_id = sii164GetDeviceID,
2081dee67eSSudip Mukherjee #ifdef SII164_FULL_FUNCTIONS
219314a822SNam Cao 		.reset_chip = sii164ResetChip,
229314a822SNam Cao 		.get_chip_string = sii164GetChipString,
239314a822SNam Cao 		.set_power = sii164SetPower,
249314a822SNam Cao 		.enable_hot_plug_detection = sii164EnableHotPlugDetection,
259314a822SNam Cao 		.is_connected = sii164IsConnected,
269314a822SNam Cao 		.check_interrupt = sii164CheckInterrupt,
279314a822SNam Cao 		.clear_interrupt = sii164ClearInterrupt,
2881dee67eSSudip Mukherjee #endif
2981dee67eSSudip Mukherjee 	},
3081dee67eSSudip Mukherjee #endif
3181dee67eSSudip Mukherjee };
3281dee67eSSudip Mukherjee 
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)339314a822SNam Cao int dvi_init(unsigned char edge_select,
34de5e4aeaSNishka Dasgupta 	     unsigned char bus_select,
35de5e4aeaSNishka Dasgupta 	     unsigned char dual_edge_clk_select,
36de5e4aeaSNishka Dasgupta 	     unsigned char hsync_enable,
37de5e4aeaSNishka Dasgupta 	     unsigned char vsync_enable,
38de5e4aeaSNishka Dasgupta 	     unsigned char deskew_enable,
39de5e4aeaSNishka Dasgupta 	     unsigned char deskew_setting,
40de5e4aeaSNishka Dasgupta 	     unsigned char continuous_sync_enable,
41de5e4aeaSNishka Dasgupta 	     unsigned char pll_filter_enable,
42de5e4aeaSNishka Dasgupta 	     unsigned char pll_filter_value)
4381dee67eSSudip Mukherjee {
449314a822SNam Cao 	struct dvi_ctrl_device *current_dvi_ctrl;
4540403c1bSJuston Li 
469314a822SNam Cao 	current_dvi_ctrl = dcft_supported_dvi_controller;
479314a822SNam Cao 	if (current_dvi_ctrl->init) {
489314a822SNam Cao 		return current_dvi_ctrl->init(edge_select,
49de5e4aeaSNishka Dasgupta 					      bus_select,
50de5e4aeaSNishka Dasgupta 					      dual_edge_clk_select,
51de5e4aeaSNishka Dasgupta 					      hsync_enable,
52de5e4aeaSNishka Dasgupta 					      vsync_enable,
53de5e4aeaSNishka Dasgupta 					      deskew_enable,
54de5e4aeaSNishka Dasgupta 					      deskew_setting,
55de5e4aeaSNishka Dasgupta 					      continuous_sync_enable,
56de5e4aeaSNishka Dasgupta 					      pll_filter_enable,
57de5e4aeaSNishka Dasgupta 					      pll_filter_value);
5881dee67eSSudip Mukherjee 	}
595ee35ea7SJuston Li 	return -1; /* error */
6081dee67eSSudip Mukherjee }
6181dee67eSSudip Mukherjee 
6281dee67eSSudip Mukherjee #endif
63