1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 281dee67eSSudip Mukherjee #ifndef DDK750_SII164_H__ 381dee67eSSudip Mukherjee #define DDK750_SII164_H__ 481dee67eSSudip Mukherjee 581dee67eSSudip Mukherjee #define USE_DVICHIP 681dee67eSSudip Mukherjee 781dee67eSSudip Mukherjee /* Hot Plug detection mode structure */ 860d379e1SKeerthi Reddy enum sii164_hot_plug_mode { 98193e6adSJamal Shareef SII164_HOTPLUG_DISABLE = 0, /* Disable Hot Plug output bit 108193e6adSJamal Shareef * (always high). 118193e6adSJamal Shareef */ 128193e6adSJamal Shareef 1381dee67eSSudip Mukherjee SII164_HOTPLUG_USE_MDI, /* Use Monitor Detect Interrupt bit. */ 1481dee67eSSudip Mukherjee SII164_HOTPLUG_USE_RSEN, /* Use Receiver Sense detect bit. */ 1581dee67eSSudip Mukherjee SII164_HOTPLUG_USE_HTPLG /* Use Hot Plug detect bit. */ 1660d379e1SKeerthi Reddy }; 1781dee67eSSudip Mukherjee 1881dee67eSSudip Mukherjee /* Silicon Image SiI164 chip prototype */ 19*72eb8304SAbdel Alkuor long sii164_init_chip(unsigned char edgeSelect, 2081dee67eSSudip Mukherjee unsigned char busSelect, 2181dee67eSSudip Mukherjee unsigned char dualEdgeClkSelect, 2281dee67eSSudip Mukherjee unsigned char hsyncEnable, 2381dee67eSSudip Mukherjee unsigned char vsyncEnable, 2481dee67eSSudip Mukherjee unsigned char deskewEnable, 2581dee67eSSudip Mukherjee unsigned char deskewSetting, 2681dee67eSSudip Mukherjee unsigned char continuousSyncEnable, 2781dee67eSSudip Mukherjee unsigned char pllFilterEnable, 28c9750456SMatej Dujava unsigned char pllFilterValue); 2981dee67eSSudip Mukherjee 30864a821cSNam Cao unsigned short sii164_get_vendor_id(void); 3181dee67eSSudip Mukherjee unsigned short sii164GetDeviceID(void); 3281dee67eSSudip Mukherjee 3381dee67eSSudip Mukherjee #ifdef SII164_FULL_FUNCTIONS 3481dee67eSSudip Mukherjee void sii164ResetChip(void); 3581dee67eSSudip Mukherjee char *sii164GetChipString(void); 3681dee67eSSudip Mukherjee void sii164SetPower(unsigned char powerUp); 3781dee67eSSudip Mukherjee void sii164EnableHotPlugDetection(unsigned char enableHotPlug); 3881dee67eSSudip Mukherjee unsigned char sii164IsConnected(void); 3981dee67eSSudip Mukherjee unsigned char sii164CheckInterrupt(void); 4081dee67eSSudip Mukherjee void sii164ClearInterrupt(void); 4181dee67eSSudip Mukherjee #endif 42fbb8c963SMatej Vasek /* 43fbb8c963SMatej Vasek * below register definition is used for 44fbb8c963SMatej Vasek * Silicon Image SiI164 DVI controller chip 45fbb8c963SMatej Vasek */ 4681dee67eSSudip Mukherjee /* 4781dee67eSSudip Mukherjee * Vendor ID registers 4881dee67eSSudip Mukherjee */ 4981dee67eSSudip Mukherjee #define SII164_VENDOR_ID_LOW 0x00 5081dee67eSSudip Mukherjee #define SII164_VENDOR_ID_HIGH 0x01 5181dee67eSSudip Mukherjee 5281dee67eSSudip Mukherjee /* 5381dee67eSSudip Mukherjee * Device ID registers 5481dee67eSSudip Mukherjee */ 5581dee67eSSudip Mukherjee #define SII164_DEVICE_ID_LOW 0x02 5681dee67eSSudip Mukherjee #define SII164_DEVICE_ID_HIGH 0x03 5781dee67eSSudip Mukherjee 5881dee67eSSudip Mukherjee /* 5981dee67eSSudip Mukherjee * Device Revision 6081dee67eSSudip Mukherjee */ 6181dee67eSSudip Mukherjee #define SII164_DEVICE_REVISION 0x04 6281dee67eSSudip Mukherjee 6381dee67eSSudip Mukherjee /* 6481dee67eSSudip Mukherjee * Frequency Limitation registers 6581dee67eSSudip Mukherjee */ 6681dee67eSSudip Mukherjee #define SII164_FREQUENCY_LIMIT_LOW 0x06 6781dee67eSSudip Mukherjee #define SII164_FREQUENCY_LIMIT_HIGH 0x07 6881dee67eSSudip Mukherjee 6981dee67eSSudip Mukherjee /* 7081dee67eSSudip Mukherjee * Power Down and Input Signal Configuration registers 7181dee67eSSudip Mukherjee */ 7281dee67eSSudip Mukherjee #define SII164_CONFIGURATION 0x08 7381dee67eSSudip Mukherjee 7481dee67eSSudip Mukherjee /* Power down (PD) */ 7581dee67eSSudip Mukherjee #define SII164_CONFIGURATION_POWER_DOWN 0x00 7681dee67eSSudip Mukherjee #define SII164_CONFIGURATION_POWER_NORMAL 0x01 7781dee67eSSudip Mukherjee #define SII164_CONFIGURATION_POWER_MASK 0x01 7881dee67eSSudip Mukherjee 7981dee67eSSudip Mukherjee /* Input Edge Latch Select (EDGE) */ 8081dee67eSSudip Mukherjee #define SII164_CONFIGURATION_LATCH_FALLING 0x00 8181dee67eSSudip Mukherjee #define SII164_CONFIGURATION_LATCH_RISING 0x02 8281dee67eSSudip Mukherjee 8381dee67eSSudip Mukherjee /* Bus Select (BSEL) */ 8481dee67eSSudip Mukherjee #define SII164_CONFIGURATION_BUS_12BITS 0x00 8581dee67eSSudip Mukherjee #define SII164_CONFIGURATION_BUS_24BITS 0x04 8681dee67eSSudip Mukherjee 8781dee67eSSudip Mukherjee /* Dual Edge Clock Select (DSEL) */ 8881dee67eSSudip Mukherjee #define SII164_CONFIGURATION_CLOCK_SINGLE 0x00 8981dee67eSSudip Mukherjee #define SII164_CONFIGURATION_CLOCK_DUAL 0x08 9081dee67eSSudip Mukherjee 9181dee67eSSudip Mukherjee /* Horizontal Sync Enable (HEN) */ 9281dee67eSSudip Mukherjee #define SII164_CONFIGURATION_HSYNC_FORCE_LOW 0x00 9381dee67eSSudip Mukherjee #define SII164_CONFIGURATION_HSYNC_AS_IS 0x10 9481dee67eSSudip Mukherjee 9581dee67eSSudip Mukherjee /* Vertical Sync Enable (VEN) */ 9681dee67eSSudip Mukherjee #define SII164_CONFIGURATION_VSYNC_FORCE_LOW 0x00 9781dee67eSSudip Mukherjee #define SII164_CONFIGURATION_VSYNC_AS_IS 0x20 9881dee67eSSudip Mukherjee 9981dee67eSSudip Mukherjee /* 10081dee67eSSudip Mukherjee * Detection registers 10181dee67eSSudip Mukherjee */ 10281dee67eSSudip Mukherjee #define SII164_DETECT 0x09 10381dee67eSSudip Mukherjee 10481dee67eSSudip Mukherjee /* Monitor Detect Interrupt (MDI) */ 10581dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_STATE_CHANGE 0x00 10681dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_STATE_NO_CHANGE 0x01 10781dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_STATE_CLEAR 0x01 10881dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_STATE_MASK 0x01 10981dee67eSSudip Mukherjee 11081dee67eSSudip Mukherjee /* Hot Plug detect Input (HTPLG) */ 11181dee67eSSudip Mukherjee #define SII164_DETECT_HOT_PLUG_STATUS_OFF 0x00 11281dee67eSSudip Mukherjee #define SII164_DETECT_HOT_PLUG_STATUS_ON 0x02 11381dee67eSSudip Mukherjee #define SII164_DETECT_HOT_PLUG_STATUS_MASK 0x02 11481dee67eSSudip Mukherjee 11581dee67eSSudip Mukherjee /* Receiver Sense (RSEN) */ 11681dee67eSSudip Mukherjee #define SII164_DETECT_RECEIVER_SENSE_NOT_DETECTED 0x00 11781dee67eSSudip Mukherjee #define SII164_DETECT_RECEIVER_SENSE_DETECTED 0x04 11881dee67eSSudip Mukherjee 11981dee67eSSudip Mukherjee /* Interrupt Generation Method (TSEL) */ 12081dee67eSSudip Mukherjee #define SII164_DETECT_INTERRUPT_BY_RSEN_PIN 0x00 12181dee67eSSudip Mukherjee #define SII164_DETECT_INTERRUPT_BY_HTPLG_PIN 0x08 12281dee67eSSudip Mukherjee #define SII164_DETECT_INTERRUPT_MASK 0x08 12381dee67eSSudip Mukherjee 12481dee67eSSudip Mukherjee /* Monitor Sense Output (MSEN) */ 12581dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_SENSE_OUTPUT_HIGH 0x00 12681dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_SENSE_OUTPUT_MDI 0x10 12781dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_SENSE_OUTPUT_RSEN 0x20 12881dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_SENSE_OUTPUT_HTPLG 0x30 12981dee67eSSudip Mukherjee #define SII164_DETECT_MONITOR_SENSE_OUTPUT_FLAG 0x30 13081dee67eSSudip Mukherjee 13181dee67eSSudip Mukherjee /* 13281dee67eSSudip Mukherjee * Skewing registers 13381dee67eSSudip Mukherjee */ 13481dee67eSSudip Mukherjee #define SII164_DESKEW 0x0A 13581dee67eSSudip Mukherjee 13681dee67eSSudip Mukherjee /* General Purpose Input (CTL[3:1]) */ 13781dee67eSSudip Mukherjee #define SII164_DESKEW_GENERAL_PURPOSE_INPUT_MASK 0x0E 13881dee67eSSudip Mukherjee 13981dee67eSSudip Mukherjee /* De-skewing Enable bit (DKEN) */ 14081dee67eSSudip Mukherjee #define SII164_DESKEW_DISABLE 0x00 14181dee67eSSudip Mukherjee #define SII164_DESKEW_ENABLE 0x10 14281dee67eSSudip Mukherjee 14381dee67eSSudip Mukherjee /* De-skewing Setting (DK[3:1])*/ 14481dee67eSSudip Mukherjee #define SII164_DESKEW_1_STEP 0x00 14581dee67eSSudip Mukherjee #define SII164_DESKEW_2_STEP 0x20 14681dee67eSSudip Mukherjee #define SII164_DESKEW_3_STEP 0x40 14781dee67eSSudip Mukherjee #define SII164_DESKEW_4_STEP 0x60 14881dee67eSSudip Mukherjee #define SII164_DESKEW_5_STEP 0x80 14981dee67eSSudip Mukherjee #define SII164_DESKEW_6_STEP 0xA0 15081dee67eSSudip Mukherjee #define SII164_DESKEW_7_STEP 0xC0 15181dee67eSSudip Mukherjee #define SII164_DESKEW_8_STEP 0xE0 15281dee67eSSudip Mukherjee 15381dee67eSSudip Mukherjee /* 15481dee67eSSudip Mukherjee * User Configuration Data registers (CFG 7:0) 15581dee67eSSudip Mukherjee */ 15681dee67eSSudip Mukherjee #define SII164_USER_CONFIGURATION 0x0B 15781dee67eSSudip Mukherjee 15881dee67eSSudip Mukherjee /* 15981dee67eSSudip Mukherjee * PLL registers 16081dee67eSSudip Mukherjee */ 16181dee67eSSudip Mukherjee #define SII164_PLL 0x0C 16281dee67eSSudip Mukherjee 16381dee67eSSudip Mukherjee /* PLL Filter Value (PLLF) */ 16481dee67eSSudip Mukherjee #define SII164_PLL_FILTER_VALUE_MASK 0x0E 16581dee67eSSudip Mukherjee 16681dee67eSSudip Mukherjee /* PLL Filter Enable (PFEN) */ 16781dee67eSSudip Mukherjee #define SII164_PLL_FILTER_DISABLE 0x00 16881dee67eSSudip Mukherjee #define SII164_PLL_FILTER_ENABLE 0x01 16981dee67eSSudip Mukherjee 17081dee67eSSudip Mukherjee /* Sync Continuous (SCNT) */ 17181dee67eSSudip Mukherjee #define SII164_PLL_FILTER_SYNC_CONTINUOUS_DISABLE 0x00 17281dee67eSSudip Mukherjee #define SII164_PLL_FILTER_SYNC_CONTINUOUS_ENABLE 0x80 17381dee67eSSudip Mukherjee 17481dee67eSSudip Mukherjee #endif 175