Commit b28fe2e3 authored by Kevin Bracey's avatar Kevin Bracey
Browse files

Default RCLK mode now RCLK/2 rather than RCLK/1.

Doesn't force CMOS setting of sync and monitortype on NCs/STBs.
Accepts HClockSelect parameter (number 9) in VIDC lists. Uses this to
determine whether to use HCLK or not, rather than abusing
Service_MonitorLeadTranslation.
If DontUseVCO flag is set, then VCLK will not be used - only RCLK (or HCLK if
requested).

Version 4.86. Tagged as 'Kernel-4_86'
parent 66e47bc2
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
GBLS Module_MinorVersion GBLS Module_MinorVersion
GBLS Module_Date GBLS Module_Date
GBLS Module_FullVersion GBLS Module_FullVersion
Module_MajorVersion SETS "4.85" Module_MajorVersion SETS "4.86"
Module_Version SETA 485 Module_Version SETA 486
Module_MinorVersion SETS "" Module_MinorVersion SETS ""
Module_Date SETS "24 Aug 1999" Module_Date SETS "16 Sep 1999"
Module_FullVersion SETS "4.85" Module_FullVersion SETS "4.86"
END END
/* (4.85) /* (4.86)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* *
*/ */
#define Module_MajorVersion_CMHG 4.85 #define Module_MajorVersion_CMHG 4.86
#define Module_MinorVersion_CMHG #define Module_MinorVersion_CMHG
#define Module_Date_CMHG 24 Aug 1999 #define Module_Date_CMHG 16 Sep 1999
#define Module_MajorVersion "4.85" #define Module_MajorVersion "4.86"
#define Module_Version 485 #define Module_Version 486
#define Module_MinorVersion "" #define Module_MinorVersion ""
#define Module_Date "24 Aug 1999" #define Module_Date "16 Sep 1999"
#define Module_FullVersion "4.85" #define Module_FullVersion "4.86"
...@@ -482,9 +482,6 @@ InterlacedPointer SETL {TRUE} :LAND: STB ; enable code to do prop ...@@ -482,9 +482,6 @@ InterlacedPointer SETL {TRUE} :LAND: STB ; enable code to do prop
GBLL ValidateCMOS ; Apply special CMOS-corruption detection code, and do minimal default settings. GBLL ValidateCMOS ; Apply special CMOS-corruption detection code, and do minimal default settings.
ValidateCMOS SETL {TRUE} :LAND: STB ValidateCMOS SETL {TRUE} :LAND: STB
GBLL UseHClk
UseHClk SETL {TRUE} :LAND: STB ; Use HClk when driving TVs.
[ DebugHeaps [ DebugHeaps
! 0, "*** WARNING *** Heap debugging assembled in" ! 0, "*** WARNING *** Heap debugging assembled in"
] ]
......
...@@ -305,7 +305,7 @@ VIDCTAB ...@@ -305,7 +305,7 @@ VIDCTAB
& &E0000401 ; CR: FIFO load 16 words, 1 bpp, ck/1, hclk & &E0000401 ; CR: FIFO load 16 words, 1 bpp, ck/1, hclk
] ]
[ VIDCClockSource = "RCLK" [ VIDCClockSource = "RCLK"
& &E0000402 ; CR: FIFO load 16 words, 1 bpp, ck/1, rclk & &E0000406 ; CR: FIFO load 16 words, 1 bpp, ck/2, rclk
] ]
; Don't bother programming all 256 palette entries, we'll be here all night ; Don't bother programming all 256 palette entries, we'll be here all night
...@@ -966,6 +966,8 @@ reset_loop ...@@ -966,6 +966,8 @@ reset_loop
BHI cmos_reset BHI cmos_reset
] ]
[ {FALSE}
; Oh, just leave it be
MOV R0, #VduCMOS MOV R0, #VduCMOS
BL Read BL Read
[ IOMD_C_MonitorType = 0 :LAND: MPEGPoduleNTSCNotPALMask = 0 :LAND: IOMD_C_PALNTSCType = 0 [ IOMD_C_MonitorType = 0 :LAND: MPEGPoduleNTSCNotPALMask = 0 :LAND: IOMD_C_PALNTSCType = 0
...@@ -976,6 +978,7 @@ reset_loop ...@@ -976,6 +978,7 @@ reset_loop
TEQ R0, #(Sync_Auto :OR: MonitorTypeAuto) TEQ R0, #(Sync_Auto :OR: MonitorTypeAuto)
] ]
BNE cmos_reset BNE cmos_reset
]
; Year should be >=1995, <=2020 ; Year should be >=1995, <=2020
; (2020 is arbitrary, but everything breaks soon after that) ; (2020 is arbitrary, but everything breaks soon after that)
......
...@@ -77,6 +77,7 @@ VIDCDataControl * &F0000000 ...@@ -77,6 +77,7 @@ VIDCDataControl * &F0000000
; Pseudo-registers used to return additional information to kernel ; Pseudo-registers used to return additional information to kernel
PseudoRegister_HClockSpeed * &FB000000 ; used to indicate VIDC hclock speed (and use it)
PseudoRegister_ClockSpeed * &FC000000 ; used to indicate real VIDC rclock speed PseudoRegister_ClockSpeed * &FC000000 ; used to indicate real VIDC rclock speed
PseudoRegister_DPMSState * &FD000000 ; used to return desired DPMS state PseudoRegister_DPMSState * &FD000000 ; used to return desired DPMS state
[ ChrontelSupport [ ChrontelSupport
......
...@@ -2104,7 +2104,7 @@ ProcessControlListItem ENTRY ...@@ -2104,7 +2104,7 @@ ProcessControlListItem ENTRY
& ProcessControlListDACControl ; 6 - DAC control & ProcessControlListDACControl ; 6 - DAC control
& ProcessControlListRGBPedestals ; 7 - RGB pedestal enables & ProcessControlListRGBPedestals ; 7 - RGB pedestal enables
& ProcessControlListExternalRegister ; 8 - External register & ProcessControlListExternalRegister ; 8 - External register
& ProcessControlListNOP ; 9 - HClk select/specify & ProcessControlListHClockSelect ; 9 - HClk select/specify
& ProcessControlListNOP ; 10 - RClk frequency & ProcessControlListNOP ; 10 - RClk frequency
& ProcessControlListDPMSState ; 11 - DPMS state & ProcessControlListDPMSState ; 11 - DPMS state
...@@ -2217,9 +2217,13 @@ ProcessControlListLCDOffsetRegister1 ...@@ -2217,9 +2217,13 @@ ProcessControlListLCDOffsetRegister1
MOV r0, #LCDOffsetRegister1 MOV r0, #LCDOffsetRegister1
B %BT20 B %BT20
ProcessControlListHClockSelect
MOV r0, #PseudoRegister_HClockSpeed ; pseudo-register holding HClock speed
B %FT40
ProcessControlListDPMSState ProcessControlListDPMSState
MOV r0, #PseudoRegister_DPMSState ; pseudo-register holding DPMS state MOV r0, #PseudoRegister_DPMSState ; pseudo-register holding DPMS state
ORR r2, r2, r0 ; form combined value 40 ORR r2, r2, r0 ; form combined value
STR r2, [r9, r0, LSR #22] ; store in register STR r2, [r9, r0, LSR #22] ; store in register
EXIT EXIT
...@@ -2230,6 +2234,7 @@ ProcessControlListDPMSState ...@@ -2230,6 +2234,7 @@ ProcessControlListDPMSState
; ;
; in: r0 = desired frequency (kHz) ; in: r0 = desired frequency (kHz)
; r1 = rclk frequency (kHz) (normally 24000) ; r1 = rclk frequency (kHz) (normally 24000)
; r9 -> VIDC table
; ;
; out: r0 = bits to put in bits 0..15 of Frequency Synthesizer Register ; out: r0 = bits to put in bits 0..15 of Frequency Synthesizer Register
; r1 = bits to put in bits 0..4 of Control Register ; r1 = bits to put in bits 0..4 of Control Register
...@@ -2252,28 +2257,17 @@ BestRangeError # 4 ...@@ -2252,28 +2257,17 @@ BestRangeError # 4
ComputeModuliStack * :INDEX: @ ComputeModuliStack * :INDEX: @
ComputeModuli ENTRY "r2-r12", ComputeModuliStack ComputeModuli ENTRY "r2-r12", ComputeModuliStack
[ ChrontelSupport LDR r1, [r9, #PseudoRegister_HClockSpeed:SHR:22] ; are we using HCLK?
MOV r1, #CR_HCLK :OR: ((1-1) :SHL: CR_PixelDivShift) ; use divide by 1 CMP r1, #-1
LDR r0, =(63 :SHL: FSyn_RShift) :OR: (1 :SHL: FSyn_VShift) ; minimum V, maximum R BEQ %FT05 ; -1 => no, use VCLK/RCLK
EXIT
| BIC r1, r1, #&FF000000 ; r1 = HCLK frequency
[ UseHClk :LAND: STB SUB r1, r1, r1, LSR #2 ; r1 = HCLK * 3/4
CMP r0, r1
; TMD 09-Oct-96: Only check monitor lead type if there is the hardware, otherwise assume just TV MOVLO r1, #CR_HCLK :OR: ((2-1) :SHL: CR_PixelDivShift) ; if < 3/4 HCLK, use divide by 2
[ IOMD_C_MonitorType <> 0 MOVHS r1, #CR_HCLK :OR: ((1-1) :SHL: CR_PixelDivShift) ; else use divide by 1
BL TranslateMonitorLeadType ; -> r3=mode, r4=monitor, r5=sync LDR r0, =(63 :SHL: FSyn_RShift) :OR: (1 :SHL: FSyn_VShift) ; minimum V, maximum R
CMP r4, #3 EXIT
BEQ %FT05
]
; Use HClk
LDR r1, =12500 ; if desired pixel clock
CMP r0, r1
MOVCC r1, #CR_HCLK :OR: ((2-1) :SHL: CR_PixelDivShift) ; if < 12.5MHz, use divide by 2
MOVCS r1, #CR_HCLK :OR: ((1-1) :SHL: CR_PixelDivShift) ; else use divide by 1
LDR r0, =63 :OR: (1 :SHL: FSyn_VShift) ; minimum V, maximum R
EXIT
]
; Use VCLK/RCLK ; Use VCLK/RCLK
05 05
...@@ -2356,9 +2350,11 @@ ComputeModuli ENTRY "r2-r12", ComputeModuliStack ...@@ -2356,9 +2350,11 @@ ComputeModuli ENTRY "r2-r12", ComputeModuliStack
STR r8, BestVInOrOutOfRange STR r8, BestVInOrOutOfRange
STR r14, BestRangeError STR r14, BestRangeError
50 50
[ :LNOT: DontUseVCO ; If we don't use the VCO, R has to be 1
ADD r4, r4, #1 ADD r4, r4, #1
CMP r4, #16 ; R goes from 2 to 16 (was 2 to 64) CMP r4, #16 ; R goes from 2 to 16 (was 2 to 64)
BLS %BT15 BLS %BT15
]
ADD r3, r3, #1 ADD r3, r3, #1
CMP r3, #8 ; D goes from 1 to 8 CMP r3, #8 ; D goes from 1 to 8
...@@ -2393,7 +2389,6 @@ ComputeModuli ENTRY "r2-r12", ComputeModuliStack ...@@ -2393,7 +2389,6 @@ ComputeModuli ENTRY "r2-r12", ComputeModuliStack
ORREQ r1, r1, #CR_RCLK ; if using VCO then set for VCLK, else RCLK ORREQ r1, r1, #CR_RCLK ; if using VCO then set for VCLK, else RCLK
EXIT EXIT
] ; ChrontelSupport
] ; VIDCListType3 ] ; VIDCListType3
; ***************************************************************************** ; *****************************************************************************
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment