/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_DVI_H__
#define DDK750_DVI_H__

/* dvi chip stuffs structros */

typedef long (*PFN_DVICTRL_INIT)(unsigned char edgeSelect,
				 unsigned char busSelect,
				 unsigned char dualEdgeClkSelect,
				 unsigned char hsyncEnable,
				 unsigned char vsyncEnable,
				 unsigned char deskewEnable,
				 unsigned char deskewSetting,
				 unsigned char continuousSyncEnable,
				 unsigned char pllFilterEnable,
				 unsigned char pllFilterValue);

typedef void (*PFN_DVICTRL_RESETCHIP)(void);
typedef char* (*PFN_DVICTRL_GETCHIPSTRING)(void);
typedef unsigned short (*PFN_DVICTRL_GETVENDORID)(void);
typedef unsigned short (*PFN_DVICTRL_GETDEVICEID)(void);
typedef void (*PFN_DVICTRL_SETPOWER)(unsigned char powerUp);
typedef void (*PFN_DVICTRL_HOTPLUGDETECTION)(unsigned char enableHotPlug);
typedef unsigned char (*PFN_DVICTRL_ISCONNECTED)(void);
typedef unsigned char (*PFN_DVICTRL_CHECKINTERRUPT)(void);
typedef void (*PFN_DVICTRL_CLEARINTERRUPT)(void);

/* Structure to hold all the function pointer to the DVI Controller. */
struct dvi_ctrl_device {
	PFN_DVICTRL_INIT		pfnInit;
	PFN_DVICTRL_RESETCHIP		pfnResetChip;
	PFN_DVICTRL_GETCHIPSTRING	pfnGetChipString;
	PFN_DVICTRL_GETVENDORID		pfnGetVendorId;
	PFN_DVICTRL_GETDEVICEID		pfnGetDeviceId;
	PFN_DVICTRL_SETPOWER		pfnSetPower;
	PFN_DVICTRL_HOTPLUGDETECTION	pfnEnableHotPlugDetection;
	PFN_DVICTRL_ISCONNECTED		pfnIsConnected;
	PFN_DVICTRL_CHECKINTERRUPT	pfnCheckInterrupt;
	PFN_DVICTRL_CLEARINTERRUPT	pfnClearInterrupt;
};

#define DVI_CTRL_SII164

/* dvi functions prototype */
int dviInit(unsigned char edgeSelect,
	    unsigned char busSelect,
	    unsigned char dualEdgeClkSelect,
	    unsigned char hsyncEnable,
	    unsigned char vsyncEnable,
	    unsigned char deskewEnable,
	    unsigned char deskewSetting,
	    unsigned char continuousSyncEnable,
	    unsigned char pllFilterEnable,
	    unsigned char pllFilterValue);

#endif

