OLPC Firmware q2c20

From OLPC
Jump to: navigation, search

OLPC Firmware Release q2c20 - 2007-07-30

This firmware is the first release candidate for the CTest build. It will also work on boards B1 or later. Do not use it on pre-B1 boards - it will brick them because of the EC microcode.
Support for ATest has been removed!.

BIG FAT WARNING! The manufacturing data has moved locations. If you are upgrading from the B series of the firmware the manufacturing data will be moved to its new location. After that has happened you must not install anything from the B series of the firmware. If you do then you will erase your manufacturing data.


Download: q2c20


How to get the ok prompt

Power & Game buttons

Press the "X" (down) game key after hitting the power button to enable the ok prompt. You still have to press the ESC key (upper left on the keyboard Key esc.jpg) during the countdown. If you don't press the "X" game key, the firmware goes into fastboot mode, in which:

  • The keyboard is not probed, thus saving some time
  • The boot order is SD, USB, NAND, wireless
  • OFW does not put any text on the screen, just graphics

In some previous firmware versions, pressing any game key would get you to interactive mode; in this version, only the "X" game key, which is the one nearest to the power button, does so.

How to play the startup sound

The startup sound was annoying developers, who reboot frequently, so it is no longer automatic. To play it, after you press the power button, press the small button that is on the other side of the display, across from the power button.

Changes since OLPC Firmware q2c18

Open Firmware is r506

  • olpc: Update wireless firmware version
  • Added string macro expansion to the base build.
  • OLPC - "invent" SN (0) and U# (0) properties in /mfg-data for systems that have no manufacturing data.
  • Made a new /chosen property "ramdisk" so loading the Linux ramdisk doesn't overwrite the "bootpath" property.
  • OLCP - set screen-height appropriately for the XO display. Thanks to Luke Gorrie.
  • x86 t( .. )t - use us-factor instead of hardcoding clock speed. Thanks to Luke Gorrie for the patch.
  • OLPC trac 2371 - SD was flaky in high-speed (50 MHz) mode on B1, probably as a result of the FPGA-based CaFe chips on B1. The firmware fix is to check for a B1 system and avoid switching to 50 MHz card clock thereon.
  • OLPC NAND driver/copy-nand - Added JFFS2 cleanmarkers to erased blocks to speed up startup time on the first boot of the OS after copy-nand.
  • OLPC trac #553 - lots of device tree tweaks, mostly stuff that the OS doesn't care about.
  • OLPC trac #2335 - changed boot order to USB before SD.
  • Partition type decoder - handle mismatch between partition type code and actual filesystem. Warn of the mismatch, but use the actual filesystem. OLPC trac #635.
  • OLPC CaFe NAND driver - turned on ECC correction. Trac 738
  • AC97 audio driver - added a 30 ms delay after turning on the amplifier, thus ensuring that the amp is actually on before starting send it audio.
  • x86 timing-measurement: Made t( and )t store the starting timestamp in a variable instead of on the stack, so you can now measure code sequences that change the stack depth.
  • Fixed crash that occurs after a long sequence of memory mapping operations, caused by an error in the early init code. One of the pages that is used by the memory management code was on the free list.
  • SDHCI: OLPC trac 1377 - added MMC support and prefixed error message with "SDHCI:"
  • serial driver - Fixed a bug caused by a name conflict between x86 "msr@" and PowerPC "msr@", which are not compatible. The effect of this bug was that the OFW "com1" driver did not work at all on x86.
  • OLPC trac 1115 - copy-nand improvements:
    • a) Checked for a number of error cases - empty .img file, .img file not a multiple of the NAND erase block size, .crc file length not a multiple of the CRC record length, .crc file length wrong for the .img file.
    • b) Read the CRC file into a buffer at the beginning, so copy-nand works over HTTP.
  • JFFS2 driver - Fixed OLPC trac #2292 (failure of "size" method) and also improved the speed of directory operations by a factor of about 4.
  • disk-label partition handler - Removed a kludge that caused the presence of an ext2 partition to appear to be marked as bootable even if it wasn't. The problem symptom was that on a disk with a FAT FS in partition 1 and an EXT2 FS in partition 2, neither marked bootable, OFW would use partition 2 by default.
  • OLPC help - Changed to a C series firmware in the example. Trac #1972.
  • FAT filesystem - trivial performance optimization.
  • Command completion - don't erase back to longest possible match. This helps when you try to complete a filename. Filename completion isn't implemented (and would be very hard to implement), but it isn't nice when someone tries to complete a filename and thus loses most of what they have already typed.
  • OLPC CaFe NAND driver - relaxed a couple of timings per Marvell's recommendation.
  • Cleaned out some unused cruft that was already commented-out.
  • OLPC resume - reset DCON SMBus controller during resume by sending an address cycle.
  • CaFe NAND - suppress expected bad block messages because they confuse people.
  • OLPC - Ignore game keys on B1 and lower systems; they don't work reliably there.
  • OLPC DCON SMBus - The handling of missing ACKs from the device was wrong; the code wasn't waiting for the address cycle to finish before looking for the ACK.
  • OLPC - Added USB probing back into fastboot sequence at Quanta's request.
  • OLPC trac #498 - make ".img" check case-independent to fix problem noted in comment 17 - mixed or upper case spelling of ".img" prevent CRC checking.
  • Initial check-in of ECC code for CaFe NAND. It builds okay when added to the cafenand driver, but the main cafenand driver doesn't call it yet.

EC code is PQ2C20

  • ATest Boards are no longer supported.
  • Support for the hardware 1-wire interface (for 3700B).
  • Support pin changes for C1 H/W.
    • Move SUS_ON to GPAD3 (pin 34).
    • Move ACIN to GPIO08 (pin 25).
    • Support PWR_BUT_in to GPIO1B (pin 57).
    • Change the polarity of these signals to active high: LED_PWR, LED_CHG_R, LED_CHG_G.
  • Enable the watchdog timer
  • Fix: NiMh charging problem where low batteries were incorrectly set to 85% or 91% charged.
  • Fix: 6c/68 protocol bug where back-to-back commands from the host cause the EC to miss the 2nd command.
  • Remove the PWR_BUT# strobe when the EC sends a wakeup SCI to the host.
  • Keyboard/touchpad now work properly as wakeup sources. (Ticket: 1687) |
  • Fix: EC blocks for long periods while processing game buttons. (Ticket: 1710) |
  • Fix: Ambient temperature doesn't work. (Ticket: 1285)

Known EC issues:

  • The EC doesn't detect the battery after several remove/insert cycles with the hardware 1-wire interface.

Installation Instructions

  • If you have a B1-B4 system:
    • Detailed upgrade instructions are located here.
    • If your firmware version is earlier than the version in Auto Install Image then you can just use that procedure for the update.
      Note: that this procedure will also upgrade the image in your nand flash -- which is the entire Linux operating system and all the files you may have edited or saved. This means it will ERASE what is in your nand and re-write it. So you will lose any data you have stored on the filesystem unless you back it up. If you do not want your files erased, then please use the first procedure above.
    • Do NOT use olpcflash to write new firmware images. Doing so will erase the manufacturing data that was added at the factory.
    • After you reflash, you must power cycle by physically removing power from the system. A warm-start or button-induced restart is not sufficient. Please remove both the battery pack and wall adapter for 10 seconds.
  • If you have an ATest system
    • Don't use this firmware. ATest support has been removed.