XO PRS 2006
This is my investigation into the PRS run that Mitch Bradley conducted. Where applicable, I am including comments from Tom Sylla (http://dev.laptop.org/attachment/ticket/109/prscheck.txt) If you wish to comment, make sure you append four tildes ~~~~ to sign it.
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.
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.