XO PRS 2006
This is Jordan Crouse's investigation into a PRS (Processor Register Settings) run that Mitch Bradley conducted using early Open Firmware on the XO in October, 2006. Where applicable, Jordan includes comments from Tom Sylla (http://dev.laptop.org/attachment/ticket/109/prscheck.txt).
GX Graphics PCI Header Register
PCI Cache Line Size (R/W)
Expected 8 Got 0
- IGNORE. The VSA should fill these out so that the headers are spec compliant. Its unlikely that any of the drivers use these fields, so its probably OK to ignore these.
GX CPU Core MSRs
Data Memory Configuration (MSR 0x1800)
Expected 200000000002 Got 200000000022
- FIX PRS. This is correct. It makes an INVD command work exactly like WBINVD. Interestingly enough, Tom's PRS check was different (it expected 200000000022), so that should be looked into.
Default RCONF (MSR 0x1808)
Expected 25fff00210730000 Got 25fff0021077e000
- FIX CODE. From Tom: This one doesn't matter too much at runtime (after BIOS boot) It may as well match our PRS, since that is how we run all the time. The flashrom utility that is used to flash will have to turn off write protect as necessary. There is an interesting tangent though, what settings is LinuxBIOS using when booting? It could be something faster than uncacheable. Even more tangential, is their memcpy for shadowing the fastest it can be on our hardware?
RCONF Bypass (MSR 0x180A)
Expected 11 Got 0
- FIX PRS. This is correct. From Tom: LinuxBIOS is right here. It is wrong in the olpc.prs. The LinuxBIOS value matches both the sparrow and norwich PRSes. '0' is the highest performance setting.
C0000-DFFFF RCONF
Expected 2121212121210101 Got 212121212121212
- POSSIBLE CODE FIX. From Tom: this one would take some looking into. these regions are usually set CD, WS because they are where PCI ROMs are usually located. Since the OLPC will have no PCI ROMs at these locations, These could be made cacheable, and added back to the memory map that linux uses.
- I'm not sure if we can even use this space in kernel land. - JordanCrouse (Talk to me!) 13:59, 3 October 2006 (EDT)
E0000 - FFFFF RCONF
Expected 101010101010101 Got 2121212121212121
- POSSIBLE CODE FIX. Same as above.
- I'm not sure we can use this space even if the kernel gets it back - JordanCrouse (Talk to me!) 13:59, 3 October 2006 (EDT)
Region Configuration SMM
Expected 4043f00040400104 Got 4041f00040400104
- FIX PRS. I think this is fine - this just indicates that our SMM area is smaller then it normally is with the full VSA.
GX GeodeLink Memory Controller MSRs
Refresh and SDRAM program (0x20000018)
Expected 1007401200002000 Got 1007401200002400
- VERIFY & FIX PRS. This needs to be verified correct for the hardware, and the PRS updated for the right value.
GX Display Filter (DF) MSRs
GLD Master Configuration (MSR 0xc0002001)
Expected 40f00 Got 40f80
- FIX PRS. This value is correct for a TFT attached board.
GX GeodeLink Control Processor (GLCP) MSRs
I/O Delay Controls
Expected 830d415f8ea0ad6f Got 830d415a8ea0ad6a
- FIX PRS - PRS is on crack here - the recieved value is correct for DDR.
MCP System Reset and PLL Control
Expected 21906de0078 Got 22606de0070
- FIX CODE? - Bit 4 post divides the dotpll output frequency by 3. Is this needed?
- Jordan will ask his local experts.
- FIX PRS - Bits 32 to 37 are pseudo random due to the design of the PLL divider- the provided value should be fine.
GLCP DOT Clock PLL Control
Expected 9da02000000 Got 3702000000
- FIX PRS - The dot clock DLL gets set in the fbdev driver - this value should be fine.
GLCP GLD Action Data Control
Expected 1b Got 0
- ??? - Jordan needs to look up this undocumented register
GLCP GLD Action Data
Expected 1001 Got 0
- ??? - Jordan needs to look up this undocumented register
GX GeodeLink PCI (GLPCI) MSRs
Fixed Region Enables
Expected fff3ff Got f000ff
- FIX PRS? We are not enabling memory access to the following regions through PCI - unsure if any of these are used by the software: C0,C4,D0,D4,D8,DC,E0,E4,E8,EC
- I think that this is set by VSA - Jordan needs to verify.
Memory Region 1 Configuration
Expected 77bf00000100130 Got 77df00000100130
- FIX PRS - This is probably OK - the memory for this region is put a few K higher then it is on normal geode boxes.
Memory Region 2 Configuration
exp 4043f00040400120 got 4041f00040400120
- FIX PRS - This is probably OK - the memory for this region is put a few K higher then it is on normal geode boxes.
CS5536 ISA Bridge PCI Header Registers
PCI Command
Expected 9 Got 49
- FIX PRS - The ParErr bit is enabled in the header, but it doesn't do anything.
PCI Cache Line Size(R/W)
Expected 8 Got 0
- FIX LB - this is harmless, but should be properly set by LB PCI scan.
CS5536 Audio PCI Header Registers
PCI Command
Expected 5 Got 41
- FIX PRS - The ParErr bit is enabled in the header, but it doesn't do anything.
- FIX PRS - Bus mastering is enabled by the kernel driver.
PCI Cache Line Size(R/W)
Expected 8 Got 0
- FIX LB - this is harmless, but should be properly set by LB PCI scan.
CS5536 USB OHCI PCI Header Registers
PCI Command
Expected 6 Got 2
- FIX PRS - Bus mastering is enabled by the kernel driver.
PCI Cache Line Size(R/W)
Expected 8 Got 0
- FIX LB - this is harmless, but should be properly set by LB PCI scan.
Reserved
Expected 0 Got ff000000
- CHECK LB - this must be set by LB for reasons unknown.
Interrupt Line
Expected d Got a
- 'FIX PRD - this is fine - the chosen interrupt on this platform is 10.
CS5536 USB EHCI PCI Header Registers
PCI Command
Expected 6 Got 2
- FIX PRS - Bus mastering is enabled by the kernel driver.
PCI Cache Line Size(R/W)
Expected 8 Got 0
- FIX LB - this is harmless, but should be properly set by LB PCI scan.
Interrupt Line
Expected d Got a
- FIX PRS - this is fine - the chosen interrupt on this platform is 10.
USB Legacy Support Extended Capability
Expected 0 Got 1
- FIX PRS - this bit indicates legacy handoff of the legacy usb support - this doesn't make sense on the OLPC, so 1 is the right value here.
CS5536 SB
GeodeLink Global Control
Expected 44000040020a0013 Got 4400004000020013
- FIX PRD - bit 15 - Controls the decoding of I/O range associated with the DMA high page registers - this is correctly set to be part of legacy I/O.
- KERNEL PM - bit 23:21 - Busy Sustain - controls the sustain time for keeping the clocks running - this should be set by the kernel PM.
PCI Configuration Space Header Byte 8-C
Expected ff000002 Got ff000003
- FIX PRD - The PRD needs to be updated for the CS5536 B1 revision.
CS5536 DIVIL
PIN_OPT (0x51400015)
Expected 71 Got 70
- FIX PRD - bit 0 indicates if we are using FLASH or IDE - FLASH (0) is the right operation.
NANDF_DATA
Expected 7770777 Got 100010
- FIX PRD or IGNORE - 7770777 is the default for this register - it is currently being programmed correctly for the CS5536 flash. Note that this can be ignored with the CAFE.
NANDF_CNTL
Expected 777 Got 10
- FIX PRD or IGNORE - 777 is the default for this register - it is currently being programmed correctly for the CS5536 flash. Note that this can be ignored with the CAFE.
IRQM_YLOW
Expected aa0b0b00 Got bb050a00
- FIX PRD - the USB IRQ (Yinput 2) is being pointed to interrupt 10 instead of interrupt 11 - this is fine.
- FIX PRD - the Audio IRQ (Yinput 4) is being pointed to interrupt 5 instead of interrupt 11 - this is fine.
- FIX PRD - the Nand Ready (Yinput 6) is being pointed to interrupt 11 instead of interrupt 10 - this is fine (unneeded with CAFE)
- FIX PRD - the Nand Distraction (Yinput 7) is being pointed to interrupt 11 instead of interrupt 10 - this is fine (unneeded with CAFE)
IRQM_ZHIGH
Expected baba2 Got aa5b2
- FIX PRD - these are the interrupt assignments for the PCI pins - they should be modified for the appropriate mappings (PCIA == 0x0B, the other 3 shold not be setup)
IRQM_LPC
Expected 10da Got 0
- FIX PRD - these are the LPC interrupt maps - the only two sources we should be mapping is the keyboard and the mouse (bit 1 and bit 12) - the other devices we don't have. This should be 0x1002 (Per Mercury and Quantas).
DMA_MAP
Expected 7777 Got 0
- FIX PRD - We probably don't need DMA for LPC
LPC_SIRQ
Expected ef2500c0 Got 0
- FIX PRD - this should be set to 0xEFFD0080 for test-A, but it should go to 0xEFFD00C0 for test-B with the KB3700 (and when the EC firmware has changed).
CS5536 GPIO
GPIOL_OUTPUT_ENABLE (0x04)
Expected 3efdc102 Got 3effc100
- FIX CODE GPIO1 output enable is disabled - GPIO1 is connected to the PC speaker function - it should be enabled for that purpose. Fix the code to enable this bit for output
GPIOL_OUT_AUX1_SELECT
Expected 3ffdc002 Got 3effc100
- FIX CODE GPIO1 AUX1 select is disabled - AUX1 support is the PC beep functionality - that is the correct functionality for this pin. Code needs to be fixed.
- FIX PRD GPIO8 AUX1 select is enabled - this enables UART1 functionality, which is correct for this platform.
GPIOL_PULLUP_ENABLE
Expected 30a1cf5e Got 3081cf7e
- FIX PRD GPIO5 - Pullup is enabled. This can be reliably ignored, since the GPIO5 is connected to the DCON and is programmed as an input during DCON init.
GPIOL_PULLDOWN_ENABLE
Expected ffdf0020 Got ffff0000
- FIX PRD - This is the inverse of the above - if pullup is enabled on GPIO5 then it cannot be pulled down. Either way, it doesn't matter.
GPIOL_INPUT_ENABLE
Expected d5af2a5 Got d7af285
- FIX PRD GPIO5 is not configured for input - thats fine, since it is inited during DCON setup.
GPIOL_EVENTS_ENABLE
Expected cf7e3081 Got df7e2081
- FIX PRD - GPIO12 is the DCONBLNK line - asserted by the DCON. It is fine if events are disabled on this bit since it will be correctly setup during DCON init
GPIOH_OUTPUT_ENABLE
Expected f6ff0900 Got ffff0000
- EMAILED MARK - GPIO24 asserts the MAIN_ON line - This seems like it is essential for proper operation.
- FIX PRD - GPIO27 is the SCI# coming from the EC - it is an input line, so output enable is not needed.
GPIOH_OUT_OPENDRAIN
Expected f7ff0800 Got ffff0000
- FIX PRD - GPIO27 is the SCI# coming from the EC to the CS6636 - OUT_OPENDRAIN is not needed.
GPIOH_OUT_AUX1_SELECT
Expected f6ff0900 Got ffff0000
- EMAILED MARK - AUX1 on GPIO24 asserts the MAIN_ON line - This seems like it is essential for proper operation.
- FIX PRD - GPIO27 is the SCI# coming from the EC to the CS5536 - it is an input device, OUT_AUX1 is not needed.
GPIOH_ PULLUP_ENABLE
Expected 1000edff Got fdff
- EMAILED MARK 10/17 - If we need to enable the power button functionality, then this should be enabled (see below).
GPIOH_IN_FILTER_ENABLE
Expected edff1000 Got fdff0000
- EMAILED MARK 10/17 - If we need filtering on the GPIO28 line (POWER_BTN) for debouncing then it should be enabled, and the value in FILTER_AMOUNT (below) should be set.
GPIO_06_FILTER_AMOUNT
Expected 180 Got 0
- EMAILED MARK 10/17 - Filter amount for the GPIO filtering function - if filtering is needed, this value should be used.
GPIO_MAPPER_W
Expected 80000 Got 0
- EMAILED MARK 10/17 - This enables GPIO28 to fire an PME event when it is asserted. Unsure if this is needed with the EC
GPIO_FE_SELECT_6
Expected 1c Got 0
- EMAILED MARK 10/17 - This selects GPIO28 (power button input) to be part of a filter group (see above).
CS5536 PMC
NOTE - These 5 reigsters control various delays related with suspending and resuming the system - they should be evaluated and set during the power management work in the kernel.
PM Sleep Clock Delay and Enable (0x10)
Expected e00 Got 0
- KERNEL PM
PM Sleep End Delay (0x14)
Expected 4601 Got 0
PM Sleep Input Disable De-assert and Enable I/O
Expected 8c02 Got 0
- KERNEL PM
PM Working De-assert Delay and Enable I/O
Expected a0 Got 0
- KERNEL PM
PM Work_Aux De-assert Delay and Enable I/O
Expected a0 Got 0
- KERNEL PM
PM Fail-safe Delay and Enable I/O
Expected 40020000 Got 0
- UNKNOWN - E-MAILED MARK 10/17 - This register allows a fail-safe mechanism to fire and reset the system if the power button is pressed for N cycles. Since the power button on the OLPC goes through the EC, its unclear how the EC behaves in this situation, so we'll wait for Ray and Mark to respond.
CS5536 MFGPT
MFGPT 3 Setup
Expected 10da Got 30da
- INVESTIGATE. Bit 13 indicates that the Comparator 1 output status is high. The clock isn't being actively used, so this is harmless in and of itself, but we need to investigate why VSA is setting up this clock. (Note - same goes for MFGPT 4 and MFGPT 5 setup).
MFGPT 5 CMP1
Expected 1b83 Got ffff
- FIX PRS. The clock isn't being actively used, so the comparator value is harmless.
CS5536 SMB IO
SMBCTL2
Expected ff Got 41
- FIX LB. SMBCTL[7:1] sets up the lower 7 bits of the SMB_CLOCK frequency. The kernel writes a 71 - Not sure where they got 41 from, but 71 has been verified to be a good value. Use that.
CS5536 EHC Native
USB_HCCPARAMS
Expected 5012 Got 12
- FIX PRS. The 50 is used to point to an "extended capabilities" region in the config space.. Right now, that is only used to hand over control from the BIOS to the kernel. This isn't a problem for us, and we have no reason even to wander down this code in the first place, so keep the offset at 0, and fix the PRS.
IPGREG04
Expected 2 Got 0
- FIX PRS. Undocumented bits - 0 is correct for OLPC. Update the PRS.