drivers/video/fbdev/sis/init.c
Source file repositories/reference/linux-study-clean/drivers/video/fbdev/sis/init.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/video/fbdev/sis/init.c- Extension
.c- Size
- 107396 bytes
- Lines
- 3632
- Domain
- Driver Families
- Bucket
- drivers/video
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
init.h300vtbl.h310vtbl.h
Detected Declarations
function InitCommonPointerfunction InitTo300Pointerfunction InitTo310Pointerfunction SiSInitPtrfunction SiS_GetModeIDfunction SiS_GetModeID_LCDfunction SiS_GetModeID_TVfunction SiS_GetModeID_VGA2function SiS_SetRegfunction SiS_SetRegBytefunction SiS_SetRegShortfunction SiS_SetRegLongfunction SiS_GetRegfunction SiS_GetRegBytefunction SiS_GetRegShortfunction SiS_GetRegLongfunction SiS_SetRegANDORfunction SiS_SetRegANDfunction SiS_SetRegORfunction SiS_DisplayOnfunction SiS_DisplayOfffunction SiSRegInitfunction SiS_GetSysFlagsfunction SiSInitPCIetcfunction SiSSetLVDSetcfunction SiS_SetEnableDstnfunction SiS_SetEnableFstnfunction SiS_GetModeFlagfunction SiSDetermineROMLayout661function SiSDetermineROMUsagefunction SiS_SetSegRegLowerfunction SiS_SetSegRegUpperfunction SiS_SetSegmentRegfunction SiS_ResetSegmentRegfunction SiS_SetSegmentRegOverfunction SiS_ResetSegmentRegOverfunction SiS_ResetSegmentRegistersfunction SiS_GetVBTypefunction SiS_CheckMemorySizefunction SiS_Get310DRAMTypefunction SiS_GetMCLKfunction SiS_ClearBufferfunction SiS_SearchModeIDfunction SiS_GetModePtrfunction SiS_GetRefCRTVCLKfunction SiS_GetRefCRT1CRTCfunction SiS_DoLowModeTestfunction SiS_SetLowModeTest
Annotated Snippet
if(SiS_Pr->ChipType == SIS_300) {
SiS_Pr->SiS_MCLKData_0 = SiS300_MCLKData_300; /* 300 */
} else {
SiS_Pr->SiS_MCLKData_0 = SiS300_MCLKData_630; /* 630, 730 */
}
SiS_Pr->SiS_VCLKData = SiS300_VCLKData;
SiS_Pr->SiS_VBVCLKData = (struct SiS_VBVCLKData *)SiS300_VCLKData;
SiS_Pr->SiS_SR15 = SiS300_SR15;
SiS_Pr->SiS_PanelDelayTbl = SiS300_PanelDelayTbl;
SiS_Pr->SiS_PanelDelayTblLVDS = SiS300_PanelDelayTbl;
SiS_Pr->SiS_ExtLCD1024x768Data = SiS300_ExtLCD1024x768Data;
SiS_Pr->SiS_St2LCD1024x768Data = SiS300_St2LCD1024x768Data;
SiS_Pr->SiS_ExtLCD1280x1024Data = SiS300_ExtLCD1280x1024Data;
SiS_Pr->SiS_St2LCD1280x1024Data = SiS300_St2LCD1280x1024Data;
SiS_Pr->SiS_CRT2Part2_1024x768_1 = SiS300_CRT2Part2_1024x768_1;
SiS_Pr->SiS_CRT2Part2_1024x768_2 = SiS300_CRT2Part2_1024x768_2;
SiS_Pr->SiS_CRT2Part2_1024x768_3 = SiS300_CRT2Part2_1024x768_3;
SiS_Pr->SiS_CHTVUPALData = SiS300_CHTVUPALData;
SiS_Pr->SiS_CHTVOPALData = SiS300_CHTVOPALData;
SiS_Pr->SiS_CHTVUPALMData = SiS_CHTVUNTSCData; /* not supported on 300 series */
SiS_Pr->SiS_CHTVOPALMData = SiS_CHTVONTSCData; /* not supported on 300 series */
SiS_Pr->SiS_CHTVUPALNData = SiS300_CHTVUPALData; /* not supported on 300 series */
SiS_Pr->SiS_CHTVOPALNData = SiS300_CHTVOPALData; /* not supported on 300 series */
SiS_Pr->SiS_CHTVSOPALData = SiS300_CHTVSOPALData;
SiS_Pr->SiS_LVDS848x480Data_1 = SiS300_LVDS848x480Data_1;
SiS_Pr->SiS_LVDS848x480Data_2 = SiS300_LVDS848x480Data_2;
SiS_Pr->SiS_LVDSBARCO1024Data_1 = SiS300_LVDSBARCO1024Data_1;
SiS_Pr->SiS_LVDSBARCO1366Data_1 = SiS300_LVDSBARCO1366Data_1;
SiS_Pr->SiS_LVDSBARCO1366Data_2 = SiS300_LVDSBARCO1366Data_2;
SiS_Pr->SiS_PanelType04_1a = SiS300_PanelType04_1a;
SiS_Pr->SiS_PanelType04_2a = SiS300_PanelType04_2a;
SiS_Pr->SiS_PanelType04_1b = SiS300_PanelType04_1b;
SiS_Pr->SiS_PanelType04_2b = SiS300_PanelType04_2b;
SiS_Pr->SiS_CHTVCRT1UNTSC = SiS300_CHTVCRT1UNTSC;
SiS_Pr->SiS_CHTVCRT1ONTSC = SiS300_CHTVCRT1ONTSC;
SiS_Pr->SiS_CHTVCRT1UPAL = SiS300_CHTVCRT1UPAL;
SiS_Pr->SiS_CHTVCRT1OPAL = SiS300_CHTVCRT1OPAL;
SiS_Pr->SiS_CHTVCRT1SOPAL = SiS300_CHTVCRT1SOPAL;
SiS_Pr->SiS_CHTVReg_UNTSC = SiS300_CHTVReg_UNTSC;
SiS_Pr->SiS_CHTVReg_ONTSC = SiS300_CHTVReg_ONTSC;
SiS_Pr->SiS_CHTVReg_UPAL = SiS300_CHTVReg_UPAL;
SiS_Pr->SiS_CHTVReg_OPAL = SiS300_CHTVReg_OPAL;
SiS_Pr->SiS_CHTVReg_UPALM = SiS300_CHTVReg_UNTSC; /* not supported on 300 series */
SiS_Pr->SiS_CHTVReg_OPALM = SiS300_CHTVReg_ONTSC; /* not supported on 300 series */
SiS_Pr->SiS_CHTVReg_UPALN = SiS300_CHTVReg_UPAL; /* not supported on 300 series */
SiS_Pr->SiS_CHTVReg_OPALN = SiS300_CHTVReg_OPAL; /* not supported on 300 series */
SiS_Pr->SiS_CHTVReg_SOPAL = SiS300_CHTVReg_SOPAL;
SiS_Pr->SiS_CHTVVCLKUNTSC = SiS300_CHTVVCLKUNTSC;
SiS_Pr->SiS_CHTVVCLKONTSC = SiS300_CHTVVCLKONTSC;
SiS_Pr->SiS_CHTVVCLKUPAL = SiS300_CHTVVCLKUPAL;
SiS_Pr->SiS_CHTVVCLKOPAL = SiS300_CHTVVCLKOPAL;
SiS_Pr->SiS_CHTVVCLKUPALM = SiS300_CHTVVCLKUNTSC; /* not supported on 300 series */
SiS_Pr->SiS_CHTVVCLKOPALM = SiS300_CHTVVCLKONTSC; /* not supported on 300 series */
SiS_Pr->SiS_CHTVVCLKUPALN = SiS300_CHTVVCLKUPAL; /* not supported on 300 series */
SiS_Pr->SiS_CHTVVCLKOPALN = SiS300_CHTVVCLKOPAL; /* not supported on 300 series */
SiS_Pr->SiS_CHTVVCLKSOPAL = SiS300_CHTVVCLKSOPAL;
}
#endif
#ifdef CONFIG_FB_SIS_315
static void
InitTo310Pointer(struct SiS_Private *SiS_Pr)
{
InitCommonPointer(SiS_Pr);
SiS_Pr->SiS_EModeIDTable = SiS310_EModeIDTable;
SiS_Pr->SiS_RefIndex = SiS310_RefIndex;
SiS_Pr->SiS_CRT1Table = SiS310_CRT1Table;
if(SiS_Pr->ChipType >= SIS_340) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_340; /* 340 + XGI */
} else if(SiS_Pr->ChipType >= SIS_761) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_761; /* 761 - preliminary */
} else if(SiS_Pr->ChipType >= SIS_760) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_760; /* 760 */
} else if(SiS_Pr->ChipType >= SIS_661) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_660; /* 661/741 */
} else if(SiS_Pr->ChipType == SIS_330) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_330; /* 330 */
} else if(SiS_Pr->ChipType > SIS_315PRO) {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_650; /* 550, 650, 740 */
} else {
SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_315; /* 315 */
Annotation
- Immediate include surface: `init.h`, `300vtbl.h`, `310vtbl.h`.
- Detected declarations: `function InitCommonPointer`, `function InitTo300Pointer`, `function InitTo310Pointer`, `function SiSInitPtr`, `function SiS_GetModeID`, `function SiS_GetModeID_LCD`, `function SiS_GetModeID_TV`, `function SiS_GetModeID_VGA2`, `function SiS_SetReg`, `function SiS_SetRegByte`.
- Atlas domain: Driver Families / drivers/video.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.