code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

/**
 * Message that contains a stream of uninterpreted bytes
 *
 * @package Stomp
 */
class Bytes extends Message
{
    /**
     * Constructor
     *
     * @param string $body
     * @param array $headers
     */
    public function __construct($body, array $headers = [])
    {
        parent::__construct($body, $headers);
        $this->headers['content-type'] = 'application/octet-stream';
        $this->expectLengthHeader(true);
    }

    /**
     * @inheritdoc
     */
    protected function getBodySize()
    {
        return count(unpack('c*', $this->getBody()));
    }
}


code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

use ArrayAccess;

/**
 * Stomp Frames are messages that are sent and received on a stomp connection.
 *
 * @package Stomp
 */
class Frame implements ArrayAccess
{
    /**
     * Stomp Command
     *
     * @var string
     */
    protected $command;

    /**
     * Frame Headers
     *
     * @var array
     */
    protected $headers;

    /**
     * Frame Content
     *
     * @var mixed
     */
    public $body;

    /**
     * Frame should set an content-length header on transmission
     *
     * @var bool
     */
    private $addLengthHeader = false;

    /**
     * Frame is in stomp 1.0 mode
     *
     * @var bool
     */
    private $legacyMode = false;

    /**
     * Constructor
     *
     * @param string $command
     * @param array  $headers
     * @param string $body
     */
    public function __construct($command = null, array $headers = [], $body = null)
    {
        $this->command = $command;
        $this->headers = $headers ?: [];
        $this->body = $body;
    }

    /**
     * Add given headers to currently set headers.
     *
     * Will override existing keys.
     *
     * @param array $header
     * @return Frame
     */
    public function addHeaders(array $header)
    {
        $this->headers += $header;
        return $this;
    }

    /**
     * Stomp message Id
     *
     * @return string
     */
    public function getMessageId()
    {
        return $this['message-id'];
    }

    /**
     * Is error frame.
     *
     * @return boolean
     */
    public function isErrorFrame()
    {
        return ($this->command == 'ERROR');
    }

    /**
     * Tell the frame that we expect an length header.
     *
     * @param bool|false $expected
     */
    public function expectLengthHeader($expected = false)
    {
        $this->addLengthHeader = $expected;
    }

    /**
     * Enable legacy mode for this frame
     *
     * @param bool|false $legacy
     */
    public function legacyMode($legacy = false)
    {
        $this->legacyMode = $legacy;
    }

    /**
     * Frame is in legacy mode.
     *
     * @return bool
     */
    public function isLegacyMode()
    {
        return $this->legacyMode;
    }

    /**
     * Command
     *
     * @return string
     */
    public function getCommand()
    {
        return $this->command;
    }

    /**
     * Body
     *
     * @return string
     */
    public function getBody()
    {
        return $this->body;
    }

    /**
     * Headers
     *
     * @return array
     */
    public function getHeaders()
    {
        return $this->headers;
    }

    /**
     * Convert frame to transportable string
     *
     * @return string
     */
    public function __toString()
    {
        $data = $this->command . "\n";

        if (!$this->legacyMode) {
            if ($this->body && ($this->addLengthHeader || stripos($this->body, "\x00") !== false)) {
                $this['content-length'] = $this->getBodySize();
            }
        }

        foreach ($this->headers as $name => $value) {
            $data .= $this->encodeHeaderValue($name) . ':' . $this->encodeHeaderValue($value) . "\n";
        }

        $data .= "\n";
        $data .= $this->body;
        return $data . "\x00";
    }

    /**
     * Size of Frame body.
     *
     * @return int
     */
    protected function getBodySize()
    {
        return strlen($this->body);
    }

    /**
     * Encodes header values.
     *
     * @param string $value
     * @return string
     */
    protected function encodeHeaderValue($value)
    {
        if ($this->legacyMode) {
            return str_replace(["\n"], ['\n'], $value);
        }
        return str_replace(["\\", "\r", "\n", ':'], ["\\\\", '\r', '\n', '\c'], $value);
    }

    /**
     * @inheritdoc
     */
    public function offsetExists($offset)
    {
        return isset($this->headers[$offset]);
    }

    /**
     * @inheritdoc
     */
    public function offsetGet($offset)
    {
        if (isset($this->headers[$offset])) {
            return $this->headers[$offset];
        }
        return null;
    }

    /**
     * @inheritdoc
     */
    public function offsetSet($offset, $value)
    {
        if ($value !== null) {
            $this->headers[$offset] = $value;
        }
    }

    /**
     * @inheritdoc
     */
    public function offsetUnset($offset)
    {
        unset($this->headers[$offset]);
    }
}

repo_name: ksuudilla/gnu

license: mit


code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

/**
 * FrameFactory defines how new frames are created after the frame details have been extracted.
 *
 * @package Stomp\Transport
 * @author Jens Radtke <swefl.oss@fin-sn.de>
 */
class FrameFactory
{
    /**
     * @var callable[]
     */
    private $resolver = [];

    /**
     * FrameFactory constructor.
     */
    public function __construct()
    {
        // register default additional builtin resolvers
        $this->resolver[] =
            function ($command, array $headers, $body) {
                if (isset($headers['transformation']) && strcasecmp($headers['transformation'], 'jms-map-json') == 0) {
                    return new Map($body, $headers, $command);
                }
            };
    }

    /**
     * Creates a frame instance out of the given frame details.
     *
     * @param string $command
     * @param array $headers
     * @param string $body
     * @param boolean $legacyMode stomp 1.0 mode (headers)
     * @return Frame
     */
    public function createFrame($command, array $headers, $body, $legacyMode)
    {
        foreach ($this->resolver as $resolver) {
            if ($frame = $resolver($command, $headers, $body, $legacyMode)) {
                return $frame;
            }
        }
        return $this->defaultFrame($command, $headers, $body, $legacyMode);
    }

    /**
     * Creates a new default frame instance.
     *
     * @param string $command
     * @param array $headers
     * @param string $body
     * @param boolean $legacyMode
     * @return Frame
     */
    private function defaultFrame($command, array $headers, $body, $legacyMode)
    {
        $frame = new Frame($command, $headers, $body);
        $frame->legacyMode($legacyMode);
        return $frame;
    }

    /**
     * Register a new resolver inside this frame factory.
     *
     * The new resolver becomes the first one which will be used to handle the frame create request.
     * The resolver must return null/false if he won't create a frame for the request.
     *
     * @param callable $callable
     * @return FrameFactory
     */
    public function registerResolver($callable)
    {
        array_unshift($this->resolver, $callable);
        return $this;
    }
}


code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

/**
 * Message that contains a set of name-value pairs
 *
 * @package Stomp
 */
class Map extends Message
{
    public $map;

    /**
     * Constructor
     *
     * @param array|object|string $body string will get decoded (receive), otherwise the body will be encoded (send)
     * @param array $headers
     * @param string $command
     */
    public function __construct($body, array $headers = [], $command = 'SEND')
    {
        if (is_string($body)) {
            parent::__construct($body, $headers);
            $this->command = $command;
            $this->map = json_decode($body, true);
        } else {
            parent::__construct(json_encode($body), $headers + ['transformation' => 'jms-map-json']);
            $this->command = $command;
            $this->map = $body;
        }
    }

    /**
     * Returns the received decoded json.
     *
     * @return mixed
     */
    public function getMap()
    {
        return $this->map;
    }
}


code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

/**
 * Basic text stomp message
 *
 * @package Stomp
 */
class Message extends Frame
{
    /**
     * Message constructor.
     *
     * @param string $body
     * @param array $headers
     */
    public function __construct($body, array $headers = [])
    {
        parent::__construct('SEND', $headers, $body);
    }
}


code:
<?php

/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Transport;

use Stomp\Network\Observer\ConnectionObserver;

/**
 * A Stomp frame parser
 *
 * @package Stomp
 * @author Hiram Chirino <hiram@hiramchirino.com>
 * @author Dejan Bosanac <dejan@nighttale.net>
 * @author Michael Caplan <mcaplan@labnet.net>
 * @author Jens Radtke <swefl.oss@fin-sn.de>
 */
class Parser
{

    /**
     * Frame end
     */
    const FRAME_END = "\x00";

    /**
     * Frame that has been parsed last.
     *
     * @var Frame|null
     */
    private $frame;

    /**
     * Active Frame command
     *
     * @var string
     */
    private $command;

    /**
     * Active Frame headers
     *
     * @var array
     */
    private $headers = [];

    /**
     * Active Frame expected body size (content-length header)
     *
     * @var integer|null
     */
    private $expectedBodyLength;

    /**
     * Parser mode
     *
     * @var string
     */
    private $mode = self::MODE_HEADER;

    /**
     * Expecting header data mode
     */
    const MODE_HEADER = 'HEADER';

    /**
     * Expecting body end marker mode
     */
    const MODE_BODY = 'BODY';

    /**
     * Header end marker CR_LF
     */
    const HEADER_STOP_CR_LF = "\r\n\r\n";

    /**
     * Header end marker LF
     */
    const HEADER_STOP_LF = "\n\n";

    /**
     * Parser offset within buffer
     *
     * @var int
     */
    private $offset = 0;

    /**
     * Buffer size
     *
     * @var int
     */
    private $bufferSize;

    /**
     * Current buffer for new frames.
     *
     * @var string
     */
    private $buffer = '';

    /**
     * Parser is in stomp 1.0 mode
     *
     * @var bool
     */
    private $legacyMode = false;

    /**
     * @var FrameFactory
     */
    private $factory;

    /**
     * @var ConnectionObserver|null
     */
    private $observer;

    /**
     * Parser constructor.
     *
     * @param FrameFactory $factory
     */
    public function __construct(FrameFactory $factory = null)
    {
        $this->factory = $factory ?: new FrameFactory();
    }

    /**
     * Sets the observer for the parser, in order to receive heartbeat information.
     *
     * @param ConnectionObserver $observer
     * @return Parser
     */
    public function setObserver(ConnectionObserver $observer)
    {
        $this->observer = $observer;
        return $this;
    }

    /**
     * Returns the factory that will be used to create frame instances.
     *
     * @return FrameFactory
     */
    public function getFactory()
    {
        return $this->factory;
    }

    /**
     * Set parser in legacy mode.
     *
     * @param bool|false $legacy
     */
    public function legacyMode($legacy = false)
    {
        $this->legacyMode = $legacy;
    }

    /**
     * Add data to parse.
     *
     * @param string $data
     * @return void
     */
    public function addData($data)
    {
        $this->buffer .= $data;
    }

    /**
     * Get next parsed frame.
     *
     * @deprecated Will be removed in next version. Please use nextFrame().
     * @return Frame
     */
    public function getFrame()
    {
        return $this->frame;
    }

    /**
     * Parse current buffer and return the next available frame, otherwise return null.
     *
     * @return null|Frame
     */
    public function nextFrame()
    {
        if ($this->parse()) {
            $frame = $this->getFrame();
            $this->frame = null;
            if ($this->observer) {
                $this->observer->receivedFrame($frame);
            }
            return $frame;
        }
        return null;
    }

    /**
     * Parse current buffer for frames.
     *
     * @deprecated Will become private in next version. Please use nextFrame().
     *
     * @return bool
     */
    public function parse()
    {
        if ($this->buffer === '') {
            return false;
        }
        $this->frame = null;
        $this->offset = 0;
        $this->bufferSize = strlen($this->buffer);
        while ($this->offset < $this->bufferSize) {
            if ($this->mode === self::MODE_HEADER) {
                $this->skipEmptyLines();
                if ($this->detectFrameHead()) {
                    $this->mode = self::MODE_BODY;
                } else {
                    break;
                }
            }
            if ($this->detectFrameEnd()) {
                $this->mode = self::MODE_HEADER;
            }
            break;
        }

        if ($this->offset > 0) {
            // remove parsed buffer
            $this->buffer = substr($this->buffer, $this->offset);
        }
        return $this->frame !== null;
    }

    /**
     * Skips empty lines before frame headers (they are allowed after \00)
     */
    private function skipEmptyLines()
    {
        $foundHeartbeat = false;
        while ($this->offset < $this->bufferSize) {
            $char = substr($this->buffer, $this->offset, 1);
            if ($char === "\x00" || $char === "\n" || $char === "\r") {
                $this->offset++;
                $foundHeartbeat = true;
            } else {
                break;
            }
        }
        if ($foundHeartbeat && $this->observer) {
            $this->observer->emptyLineReceived();
        }
    }

    /**
     * Detect frame header end marker, starting from current offset.
     *
     * @return bool
     */
    private function detectFrameHead()
    {
        $firstCrLf = strpos($this->buffer, self::HEADER_STOP_CR_LF, $this->offset);
        $firstLf = strpos($this->buffer, self::HEADER_STOP_LF, $this->offset);

        // we need to use the first available marker, so we need to make sure that cr lf don't overrule lf
        if ($firstCrLf !== false && ($firstLf === false || $firstLf > $firstCrLf)) {
            $this->extractFrameMeta(substr($this->buffer, $this->offset, $firstCrLf - $this->offset));
            $this->offset = $firstCrLf + strlen(self::HEADER_STOP_CR_LF);
            return true;
        }

        if ($firstLf !== false) {
            $this->extractFrameMeta(substr($this->buffer, $this->offset, $firstLf - $this->offset));
            $this->offset = $firstLf + strlen(self::HEADER_STOP_LF);
            return true;
        }
        return false;
    }

    /**
     * Detect frame end marker, starting from current offset.
     *
     * @return bool
     */
    private function detectFrameEnd()
    {
        $bodySize = null;
        if ($this->expectedBodyLength) {
            if (($this->bufferSize - $this->offset) >= $this->expectedBodyLength) {
                $bodySize = $this->expectedBodyLength;
            }
        } elseif (($frameEnd = strpos($this->buffer, self::FRAME_END, $this->offset)) !== false) {
            $bodySize = $frameEnd - $this->offset;
        }

        if ($bodySize !== null) {
            $this->setFrame($bodySize);
            $this->offset += $bodySize + strlen(self::FRAME_END); // x00
        }
        return $bodySize !== null;
    }

    /**
     * Adds a frame from current known command, headers. Uses current offset and given body size.
     *
     * @param integer $bodySize
     */
    private function setFrame($bodySize)
    {
        $this->frame = $this->factory->createFrame(
            $this->command,
            $this->headers,
            (string)substr($this->buffer, $this->offset, $bodySize),
            $this->legacyMode
        );

        $this->expectedBodyLength = null;
        $this->headers = [];
        $this->mode = self::MODE_HEADER;
    }

    /**
     * Extracts command and headers from given header source.
     *
     * @param string $source
     * @return void
     */
    private function extractFrameMeta($source)
    {
        $headers = preg_split("/(\r?\n)+/", $source);

        $this->command = array_shift($headers);

        foreach ($headers as $header) {
            $headerDetails = explode(':', $header, 2);
            $name = $this->decodeHeaderValue($headerDetails[0]);
            $value = isset($headerDetails[1]) ? $this->decodeHeaderValue($headerDetails[1]) : true;
            if (!isset($this->headers[$name])) {
                $this->headers[$name] = $value;
            }
        }

        if (isset($this->headers['content-length'])) {
            $this->expectedBodyLength = (int)$this->headers['content-length'];
        }
    }

    /**
     * Decodes header values.
     *
     * @param string $value
     * @return string
     */
    private function decodeHeaderValue($value)
    {
        if ($this->legacyMode) {
            return str_replace(['\n'], ["\n"], $value);
        }
        return str_replace(['\r', '\n', '\c', "\\\\"], ["\r", "\n", ':', "\\"], $value);
    }

    /**
     * Resets the current buffer within this parser and returns the flushed buffer value.
     *
     * @return string
     */
    public function flushBuffer()
    {
        $this->expectedBodyLength = null;
        $this->headers = [];
        $this->mode = self::MODE_HEADER;

        $currentBuffer = substr($this->buffer, $this->offset);
        $this->offset = 0;
        $this->bufferSize = 0;
        $this->buffer = '';
        return $currentBuffer;
    }
}


code:
<?php
/*
 * This file is part of the Stomp package.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Stomp\Util;

/**
 * IdGenerator generates Ids which are unique during the runtime scope.
 *
 * @package Stomp\Util
 * @author Jens Radtke <swefl.oss@fin-sn.de>
 */
class IdGenerator
{
    /**
     * @var array
     */
    private static $generatedIds = [];

    /**
     * Generate a not used id.
     *
     * @return int
     */
    public static function generateId()
    {
        while ($rand = rand(1, PHP_INT_MAX)) {
            if (!in_array($rand, static::$generatedIds, true)) {
                static::$generatedIds[] = $rand;
                return $rand;
            }
        }
    }

    /**
     * Removes a previous generated id from currently used ids.
     *
     * @param int $generatedId
     */
    public static function releaseId($generatedId)
    {
        $index = array_search($generatedId, static::$generatedIds, true);
        if ($index !== false) {
            unset(static::$generatedIds[$index]);
        }
    }
}


code:
*~
*.s[a-w]?
*.vim
/TODO/
/docs/version
/bucts/
/coreboot/
/flashrom/
/grub/
/memtest86plus/
/bin/
/release/
/resources/utilities/ich9deblob/*.rom
/resources/utilities/ich9deblob/*.bin
/resources/utilities/ich9deblob/ich9deblob
/resources/utilities/ich9deblob/ich9gen
/resources/utilities/ich9deblob/demefactory
/resources/utilities/ich9deblob/obj/*.o
/resources/utilities/ich9deblob/obj/*/*.o
/resources/utilities/ich9deblob/mkdescriptor*.[ch]
/resources/utilities/ich9deblob/mkgbe*.[ch]
/resources/utilities/coreboot-libre/tocheck
/resources/utilities/grub-assemble/grub_*.elf
/mkgbe.[ch]
/*.bin
/resources/utilities/i945-pwm/i945-pwm
/push

repo_name: Amlouden/libreboot

path: .gitignore


code:
#!/bin/bash

#  generic build script, for building libreboot (all of it)
#
#	Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>
#                      2015 Patrick "P. J." McDermott <pj@pehjota.net>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e

build="./resources/scripts/helpers/build"
mode="unknown"
option="unknown"

usage="./build mode option"
availablemodes="$(for mode in ${build}/*; do printf "%s\n" "${mode##*/}"; done)"
availableoptions="unknown" # unknown until the mode is determined

# User specified no or too few/many parameters
if [ $# -lt 2 ]; then
	printf "%s\n\n" "${usage}"
	printf "possible values for 'mode':\n%s\n\n" "${availablemodes}"
	printf "Example: ./build module all\n"
	printf "Example: ./build module flashrom\n"
	printf "Example: ./build roms withgrub\n"
	printf "Example: ./build release archives\n"
	printf "Example: ./build clean all\n"
	printf "Example (extra option) ./build module bucts static\n"
	printf "Refer to the libreboot documentation for more info\n\n"
	exit 1
fi
mode="${1}"
option="${2}"
shift 2

if [ -d "${build}/${mode}" ]; then
	availableoptions="$(for buildoption in ${build}/${mode}/*; do printf "%s\n" "${buildoption##*/}"; done)"
	if [ "${option}" = "list" ]; then
		printf "Available options for '%s' are:\nall\n%s\n\n" "${mode}" "${availableoptions}"
	elif [ -f "${build}/${mode}/${option}" ]; then
		"${build}/${mode}/${option}" "$@"
	elif [ "${option}" = "all" ]; then
		for option in ${availableoptions}; do
			"${build}/${mode}/${option}" "$@"
		done
	else
		printf "Invalid option for '%s'. Available options are:\nall\n%s\n\n" "${mode}" "${availableoptions}"
		exit 1
	fi
else
	printf "Invalid mode. Available modes are:\n%s\n\n" "${availablemodes}"
	exit 1
fi

# ------------------- DONE ----------------------

path: build


code:
<!DOCTYPE html>

	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">

	<title>Libreboot release information (old)</title>

Libreboot release information (old)

				Information for this release can be found at release.html.
				Updated versions of libreboot can be found at libreboot.org.

					This page is *obsolete*, provided for historical purposes.

Releases

r20150518 (18th May 2015)

r20150124 (24th January 2015), r20150126 (26th January 2015), r20150208 (8th February 2015)

r20141015 (15th October 2014)

r20140911 (6th release) (11th September 2014 pre-release, 7th beta)

r20140622 (5th release) (7th March 2014, revised 22nd June 2014)

r20140221 (4th release) (21st February 2014)

r20131214 (3rd release) (14th December 2013)

r20131213 (2nd release) (13th December 2013)

r20131212 (1st release) (12th December 2013)

Release 20150518

				Release date: 18th May 2015.

					Installation instructions can be found at docs/install/index.html.
					Building instructions (for source code) can be found at docs/git/index.html#build.

Machines supported in this release:

						ThinkPad X60/X60s

								You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard.
								An X60 Tablet motherboard will also fit inside an X60/X60s.

						ThinkPad X60 Tablet (1024x768 and 1400x1050) with digitizer support

See docs/hcl/index.html#supported_x60t_list for list of supported LCD panels

It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.

						ThinkPad T60 (Intel GPU) (there are issues; see below):

See notes below for exceptions, and docs/hcl/index.html#supported_t60_list for known working LCD panels.

It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.

See docs/future/index.html#t60_cpu_microcode.

T60P (and T60 laptops with ATI GPU) will likely never be supported: docs/hcl/index.html#t60_ati_intel

						ThinkPad X200

X200S and X200 Tablet are also supported, conditionally; see docs/hcl/x200.html#x200s

ME/AMT: libreboot removes this, permanently. docs/hcl/gm45_remove_me.html

						ThinkPad R400

See docs/hcl/r400.html

ME/AMT: libreboot removes this, permanently. docs/hcl/gm45_remove_me.html

						ThinkPad T400

See docs/hcl/t400.html

ME/AMT: libreboot removes this, permanently. docs/hcl/gm45_remove_me.html

						ThinkPad T500

See docs/hcl/t500.html

ME/AMT: libreboot removes this, permanently. docs/hcl/gm45_remove_me.html

						Apple MacBook1,1 (MA255LL/A, MA254LL/A, MA472LL/A)

See docs/hcl/index.html#macbook11.

						Apple MacBook2,1 (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A)

See docs/hcl/index.html#macbook21.

				Changes for this release, relative to r20150208 (earliest changes last, recent changes first)

Add a whitelist entry to board_enable.c in flashrom, for the ThinkPad R400, T400 and T500

						Updated flashrom (to SVN revision 1889)

X200 whitelist patch removed (merged upstream)

X200 whitelist modified to include X200S and X200 Tablet

libreboot_util: don't include cmos layout files (not needed anymore)

coreboot-libre: backport patches for X200 Tablet digitizer support

build/release/archives: create SHA512 sum manifest file of the release archives

build/release/archives: separate crossgcc into a new archive

disabled generation of txtmode ROM images for now (they will be back again in the next release)

coreboot-libre: delete unused code (reduce size of src archive)

Flashing guides: make them more friendly to colourblind people

						docs/gnulinux/encrypted_*.html: Remove mention of password length
						- it was arbitrary and pointless.

docs/maintain/index.html: Finish the guide

						scripts/download/coreboot: use diffs included in libreboot, not external gerrit cherry-picks
						- review.coreboot.org (gerrit) being down no longer kills
						libreboot (backup mirrors of the master repository exist)

docs/install/bbb_setup.html: Add info about wp/hold and pinouts

docs/index.html: improve the description of libreboot

docs/hcl/gm45_remove_me.html: notes about the demefactory utility

docs/install/bbb_setup.html: EHCI debug: recommend linux-libre

docs/install/bbb_setup.html: EHCI Debug logging setup guide

docs/hcl/t500.html: Add screen compatibility report (TODO: fix incompatible screens)

						Update coreboot(again) + merge GM45 hybrid GPU patches
						- means that T400/T500 with the ATI+Intel hybrid GPU setup
						will work (ATI disabled, Intel permanently enabled).
						power_on_after_fail nvram option added to all GM45 boards,
						defaulting to No, so that plugging it AC doesn't boot up
						the system against the users will. Net20DC is now the default
						debug dongle on all boards (compatible with BBB).

demefactory (new utility): create GM45 factory.rom without the ME

ich9deblob: re-factor descriptor.c functions

docs/hcl/t500.html: add hardware logs

docs/gnulinux/encrypted_*.html: No password for default entry

docs/git/index.html: Add more details about BUC.TS

grub.cfg: Also scan for grub2/grub.cfg, not just grub/grub.cfg

docs/maintain/ (new section. WIP!): Maintaining libreboot

docs/gnulinux/grub_boot_installer.html: Fix hazardous instruction

docs/tasks.html: Better categorization between intel/amd/arm

docs/install/bbb_setup.html: notes about SPI flashing stability

docs/install/bbb_setup.html: more names for the 0.1" cables

docs/install/*_external.html: add disclaimer about thermal paste

docs/install/bbb_setup.html: Fix broken links

docs/install/bbb_setup.html: preliminary notes about EHCI debug

docs/hcl/gm45_remove_me.html: Link to websites talking about the ME

docs/install/{t400,t500,r400}_external.html: Notes about CPU compatibility

Delete the ich9macchange script. It's useless, and confuses people

docs/hcl/gm45_remove_me.html: prioritize ich9gen executable path

docs/hcl/gm45_remove_me.html: prioritize changing mac address

docs/hcl/gm45_remove_me.html: less confusing notes about ich9gen

build/dependencies/parabola: Add dependencies for x86_64

Move parabola/trisquel dependency scripts to scripts/helpers/build

scripts/dependencies/paraboladependencies: build dependencies (32-bit Parabola)

New board: ThinkPad T500

Add diffs for descriptor/gbe differences between T500 and X200

coreboot-libre: provide better blob categorization

docs/hcl/gm45_remove_me.html: add notes about flash write protect

New board: ThinkPad T400

GRUB: add partial vesamenu.c32 support (fixes tails ISOLINUX menu)

Update GRUB (to revision fa07d919d1ff868b18d8a42276d094b63a58e299)

						Update coreboot (to revision 83b05eb0a85d7b7ac0837cece67afabbdb46ea65)

								Intel CPU microcode (most of it) no longer deleted,
								because it was deleted upstream (moved to a 3rd
								party repository).

MacBook2,1 cstate patch is no longer cherry picked (merged upstream)

Patch to disable use of timestamps in coreboot no longer included (merged upstream)

coreboot-libre: don't list vortex86ex kbd firmware as microcode (list it separately)

coreboot-libre: don't rm */early_setup_ss.h (these are not blobs)

coreboot-libre: add GPLv3 license to the findblobs script

coreboot-libreboot: don't rm raminit_tables (nahelem/sandybridge) (they are not blobs)

coreboot-libre: don't delete the .spd.hex files (they are not blobs)

build/release/archives: don't put rmodtool in libreboot_util

docs/install/x200_external.html: recommend installing GNU/Linux at the end

docs/install/x200_external.html: add more photos, improve instructions

build/clean/grub: use distclean instead of clean

grub-assemble: Add the bsd and part_bsd modules

build/roms/withgrub: Only run ich9gen if gm45/gs45 images exist

docs/git/index.html: Add notes about building for specific boards

build/roms/withgrub: Allow building for a custom range of boards

grub-assemble: Disable verbose output

Add documentation on how to unlock root encrypted fs with key in initramfs in Parabola Linux

docs/gnulinux/grub_cbfs.html: Improve structure (easier to use)

grub.cfg: Disable the beep on startup

docs/install/bbb_setup.html: Make the guide easier to use

docs/gnulinux/grub_cbfs.html: Remove redundant instructions

docs/install/x200_external.html: Mark pins in the images

docs/install/bbb_setup.html: Replace 3.3V PSU photo with ATX PSU

docs/hcl/x200.html: Add dumps from 4-MiB X200 with Lenovo BIOS 3.22

docs/hcl/x200.html: Add dumps from 4-MiB X200 with Lenovo BIOS 3.18

grub.cfg: add syslinux_configfile menuentry for ahci0

grub.cfg: Add more paths for syslinux_configfile

docs/future.html: T60: Add EDID dump from LG-Philips LP150E05-A2K1

docs/install/bbb_setup.html: Further clarify which clip is needed

bash scripts: Make script output more user-friendly in general

bash scripts: Only enable verbose output if DEBUG= is used

						build: Support multiple extra options
						- now possible to build multiple images for arbitrary
						boards (configs), but without building the entire
						collection.

						Deleted the signing archive key
						- the finger print and ID is given instead, so that
						the user can download it from a key server

						scripts/helpers/build/release: Move docs to separate archive
						- reduces the size of the other archives considerably

Move DEBLOB to resources/utilities/coreboot-libre/deblob

						scripts/helpers/build/release: Delete DEBLOB from libreboot_src/
						- not needed in libreboot_src (release archive) because it
						contains a coreboot revision that has already been deblobbed.

flash (script): Use build instead of DEBLOB to know if in src

docs/install/r400_external.html: Show images, don't link.

docs/install/x200_external.html: Show images, don't link.

docs/install/bbb_setup.html: Show images, instead of linking

Documentation: optimize all images (reduce file sizes)

						Remove download links from the release page (and the archive page)
						- release archives are hosted differently following this release,
						which means that the old methods are no longer viable.

Moved ich9macchange to resources/scripts/misc/ich9macchange

						ich9macchange: assume that the script is being run from _util
						(act only on one ROM image, defined by a user-provided path)

Move grub-background to resources/scripts/misc/grub-background

grub-background: assume that it is being run from libreboot_util

grub-background: change only one ROM image, specified by path

build (release archives): Add the commitid file to release/

build-release: Move the release archives to release/

						Merge all build scripts into a single generic script,
						with helpers in resources/scripts/helpers/build/

						Replace getall with download, which takes as input an argument
						specifying which program the user wants to download.

Moved the get scripts to resources/scripts/helpers/download/

build-release: Remove the powertop entries

Moved powertop.trisquel7 to resources/scripts/misc/

Deleted the powertop.trisquel6 script (Trisquel 6 is obsolete)

Documentation: general improvements to the flashing instructions

Merged all flashing scripts into a single script

Updated GRUB

bucts: Make it build without git

Moved dejavu-fonts-ttf-2.34/AUTHORS to resources/grub/font/

Deleted GRUB Invaders from libreboot

Deleted SeaBIOS from libreboot

build-release: optimize use of tar (reduced file sizes)

grub.cfg: add another SYSLINUX config location (/syslinux/syslinux.cfg)

build-release: remove the bin/ directory from libreboot_util

cleandeps: delete the bin/ directory

buildrom-withgrub: create the bin directory if it does not exist

coreboot-libre: don't use git for version timestamp

i945-pwm: add clean command to Makefile

i945-pwm: add -lz to Makefile

docs/install/x200_external: Mention GPIO33 non-descriptor mode

docs/hcl/index.html: Remove redundant links

ich9macchange: Add R400

build-release: Separate ROM images into individual archives

build-release: rename libreboot_bin to libreboot_util

New board: ThinkPad R400 support added to libreboot.

bbb_setup.html: tell user to use libreboot's own flashrom

Release 20150124, 20150126 and 20150208

				Release date: 24th January 2015.

Machines supported in this release:

						Lenovo ThinkPad X60/X60s

								You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard.
								An X60 Tablet motherboard will also fit inside an X60/X60s.

						Lenovo ThinkPad X60 Tablet (1024x768 and 1400x1050) with digitizer support

See hcl/index.html#supported_x60t_list for list of supported LCD panels

It is unknown whether an X61 Tablet can have it's mainboard replaced with an X60 Tablet motherboard.

						Lenovo ThinkPad T60 (Intel GPU) (there are issuesinstall/x200_external.html; see below):

See notes below for exceptions, and hcl/index.html#supported_t60_list for known working LCD panels.

It is unknown whether a T61 can have it's mainboard replaced with a T60 motherboard.

See future/index.html#t60_cpu_microcode.

T60P (and T60 laptops with ATI GPU) will likely never be supported: hcl/index.html#t60_ati_intel

						Lenovo ThinkPad X200

X200S and X200 Tablet are also supported, conditionally; see hcl/x200.html#x200s

ME/AMT: libreboot removes this, permanently. hcl/gm45_remove_me.html

						Lenovo ThinkPad R400 (r20150208 and later, only)

ME/AMT: libreboot removes this, permanently. hcl/gm45_remove_me.html

						Apple MacBook1,1 (MA255LL/A, MA254LL/A, MA472LL/A)

See hcl/index.html#macbook11.

						Apple MacBook2,1 (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A)

See hcl/index.html#macbook21.

				Revisions for r20150208 (relative to r20150126)

					This is a maintenance release (polishing) based on r20150126. Users who installed r20150126
					don't really need to update to this release.

buildrom-withgrub: use gnulove.jpg background on 16:10 laptops (MacBook2,1 and X200)

build-release: include grub-background script in libreboot_bin

grub-background (new): lets user change GRUB background image

grub-assemble: Add link to original utility.

buildrom-withgrub: Put background.jpg in CBFS, not GRUB memdisk

grub-assemble: merge scripts into a single script gen.sh

Documentation: implement theme, drastically improve readability

docs/hcl/index.html: update list of compatible T60 LCD panels

docs/index.html: more clarification of libreboot's stated purpose.

build-release: include the commitid file in the release archives

docs/index.html: Further emphasize the GNU/Linux requirement.

lenovobios_firstflash: fix BASH errors

lenovobios_secondflash: fix BASH errors

docs/install/x200_external.html: Tell user to switch MAC address.

docs/git/index.html: Add to the list of x86_64 compatible hosts.

docs/install/index.html: Remove old (obsolete) information.

docs/git/index.html: Say that the build dependencies are for src (and not nedeed for libreboot_bin)

build: re-factor the descriptor/gbe generating loop for GM45/ICH9M

X60, X60S and X60 Tablet now the same ROM images.

Add QEMU (q35/ich9) support to libreboot.

Add QEMU (i440fx/piix4) support to libreboot

docs/index.html: Re-write the description of what libreboot is.

docs/release.html: Add notes about how to use GPG.

build-release: delete the commitid file from release archives

build-release: create file named commitid after build-release

				Revisions for r20150126 (relative to r20150124)

					This is a bug fix release based on r20150124. It contains a few small changes:

grub.cfg: hardcode the list of partitions to search (speeds up booting considerably. GRUB regexp isn't very well optimized)

Docs (x200.html hcl): Remove incorrect information

Documentation (bbb_setup.html): Fix typos

						build-release: delete ich9fdgbe_{4m,8m}.bin files from ich9gen

								These were accidentically included in the r20150124 release. They
								are generated from ich9gen so it's ok, but they don't need to be
								in the archive.

Documentation (grub_cbfs.html): Looping in libreboot_grub.cfg (Add notes about it if the user copied from grub.cfg in CBFS.)

Documentation: refer to Guix as GNU Guix System Distribution or GNU GSD per advice from the Guix project.

				Changes for this release (latest changes first, earliest changes last)

Documentation: added information about how to boot Guix GNU/Linux.

grub.cfg: Added (usb0) and (usb0,*) to the list of devices in the Search for GRUB menuentry (this is needed for Guix GNU/Linux)

grub.cfg: Added (ahci1) to list of devices for ISOLINUX parser (CD/DVD) (this is needed for the X200 docking station).

grub.cfg: ISOLINUX parsing is now done on all USB partitions.

grub.cfg: Automatically switched to /boot/grub/libreboot_grub.cfg on a partition, if it exists.

libreboot_bin: added static ARM binaries for flashrom, cbfstool, ich9gen and
					ich9deblob (tested on beaglebone black).

Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).

Flashrom: added whitelist for ThinkPad X200.

X200: fixed uneven backlight (at low levels)

ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.

ich9gen: added capability to change the default MAC address (and update the checksum)

ich9deblob: added new utility ich9gen: this can generate a descriptor+gbe image without a factory.rom dump present.

Modified ich9deblob to use a struct for Gbe, documenting everything.

Massively updated the ich9deblob utility: re-factored everything completely.

Enabled cstates 1 and 2 on macbook21. This reduces idle heat / power consumption.

buildrom-withgrub: disabled creation of *txtmode*.rom for X200 (only framebuffer graphics work)

Updated SeaBIOS (again)

docs/install/index.html#flashrom_x200: improve instructions

Updated flashrom (again) - patches updated

Updated GRUB (again)

Updated coreboot (again)

build-release: not all files were copied to libreboot_src. fix that.

build-release: include cbmem (statically compiled) in libreboot_bin

Documentation (X200): added software-based flashing instructions

Documentation: remove all references to the bus pirate (replaced with BBB flashing tutorials)

New board: ThinkPad X200S and X200 Tablet support added to libreboot

build: automatically find board names (configs) to build for

New board: ThinkPad X200 support added to libreboot

coreboot-libre config (all boards): enable USB dongle log output (for BeagleBone Black)

cleandeps: actually clean grubinvaders

.gitignore: add powertop directory

cleandeps: clean i945-pwm utility

scripts (all): fix typos

Documentation: general cleanup.

builddeps-flashrom: reduce build commands to a single for loop

scripts (all): replace unnecessary rm -Rf with rm -f

powertop.trisquel7: remove sudo (script already checks if the user is root)

docs/release.html: add lenovo g505s to the list of candidates

.gitignore: add libreboot_bin.tar.xz and libreboot_src.tar.xz

						libreboot_bin.tar.xz: Include utils as statically linked binaries

This means that the user does not have to install build dependency
							or build from source anymore.

deps-trisquel: Add binutils-source

powertop.trisquel7 (new): Setup powertop on trisquel 7

deps-trisquel,flash,lenovobios_firstflash,lenovobios_secondflash,macbook21_firstflash
					x60flashfrom5,powertop.trisquel6: check if user is root

deps-trisquel: Make GRUB build on in Trisquel 7 x86_64. (cross compile dependencies. fixes build error in GRUB)

deps-parabola (removed) Remove Parabola dependencies script. Will re-add later (properly tested)

grub.cfg: Add more path checks to isolinux parser (more ISOs should work now)

Update SeaBIOS

x60flashfrom5 (new), for X60 users upgrading from 5th/early release

Update flashrom

Update GRUB

						Updated coreboot-libre

i945: permanently set tft_brightness to 0xff (fixes bug on X60 where
							turning up brightness at max would make it loop back to low brightness)

						getcb: Revert X60/T60 to legacy backlight controls

The ACPI brightness patches were abandoned and obsolete.

grub.cfg: Only load initrd.img if it exists. Add rw to linux line (for ProteanOS)

build: Only generate the GRUB configurations once (re-use on all images)

Only build 2 GRUB payload executables, re-use on all boards.

						resources/utilities/grub-assemble/gen.txtmode.sh: Use GNU BASH

						resources/utilities/grub-assemble/gen.vesafb.sh: Use GNU BASH

scripts (error handling): Replace exit with exit 1 (make debugging easier)

						Move most files in CBFS to GRUB memdisk, except grub.cfg and grubtest.cfg

							This reduces the space used in CBFS because coreboot compresses
							its payloads with LZMA by default. grub.cfg is all that most users
							will want to modify, which remains in CBFS.

docs/release.html Add DMP vortex86ex to list of candidates.

docs/release.html Add ThinkPad X201 to list of candidates.

New links added to docs/security/x60_security and docs/security/t60_security

lenovobios_secondflash: Warn if BUCTS is not present. (not a dealbreaker. Can just pull out nvram battery/coin).

lenovobios_firstflash: Fail if BUCTS fails. (anti-bricking precaution)

Removed obnoxious warnings from flashing scripts, improved documentation instead.

scripts (all): add proper error checking (fail fast, fail early. Do not continue if there are errors)

buildrom-withgrub: rename image to boardname_layout_romtype.rom

buildrom-withgrub: don't move cbfstool, execute directly

resources/utilities/grub-assemble: add French Dvorak (BEPO) keyboard layout.

Documentation: add docs/hardware/x60_keyboard.html (show how to replace keyboard on X60/X60T)

Documentation: major cleanup (better structure, easier to find things)

						docs/release.html: Remove Acer CB5 from list of future candidates.

								Too many issues. Chromebooks are crippled (soldered RAM/storage/wifi)
								and have too many usability issues for the libreboot project.

docs/gnulinux/grub_cbfs.html Major cleanup. Usability improvements.

hocs/gnulinux/encrypted_trisquel.html: Fixed mistakes/typos. General improvements

						flash (flashrom script): remove boardmismatch=force

								 This was put there before for users upgrading from libreboot r5
								 to r6, but also allows the user to flash the wrong image. For
								 example, the user could flash a T60 image on an X60, thus
								 bricking the system. It's almost certain that most people
								 have upgraded by now, so remove this potentially dangerous
								 option.

Documentation: update compatibility list for X60T LCD panels.

docs/release.html: add note about X60 Tablet board in X60/X60s

docs/howtos/grub_boot_installer.html: small corrections

docs/howtos/grub_boot_installer.html: improved readability, fixed html errors

Documentation (macbook21 related): clean up

Release 20141015

Machines supported in this release:

						Lenovo ThinkPad X60/X60s

								You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard.
								An X60 Tablet motherboard will also fit inside an X60/X60s.

						Lenovo ThinkPad X60 Tablet (1024x768 and 1400x1050) with digitizer support

See hcl/index.html#supported_x60t_list for list of supported LCD panels

It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.

						Lenovo ThinkPad T60 (Intel GPU) (there are issues; see below):

See notes below for exceptions, and hcl/index.html#supported_t60_list for known working LCD panels.

It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.

See future/index.html#t60_cpu_microcode.

T60P (and T60s with ATI GPU) will likely never be supported: hcl/index.html#t60_ati_intel

						Apple MacBook1,1 (MA255LL/A, MA254LL/A, MA472LL/A)

See hcl/index.html#macbook11.

						Apple MacBook2,1 (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A)

See hcl/index.html#macbook21.

				Changes for this release (latest changes first, earliest changes last)

Updated coreboot (git commit 8ffc085e1affaabbe3dca8ac6a89346b71dfc02e), the latest at the time of writing.

Updated SeaBIOS (git commit 67d1fbef0f630e1e823f137d1bae7fa5790bcf4e), the latest at the time of writing.

Updated Flashrom (svn revision 1850), the latest at the time of writing.

Updated GRUB (git commit 9a67e1ac8e92cd0b7521c75a734fcaf2e58523ad), the latest at the time of writing.

Cleaned up the documentation, removed unneeded files.

ec/lenovo/h8 (x60/x60s/x60t/t60): Enable wifi/bluetooth/wwan/touchpad/trackpoint by default.

Documentation: Updated list of T60 LCDs (Samsung LTN150XG 15" XGA listed as non-working).

builddeps-coreboot: Don't build libpayload (not needed. This was leftover by mistake, when trying out the TINT payload).

Replaced most diff files (patches) for coreboot with gerrit checkouts (cherry-pick).

Documentation: x60_security.html and t60_security.html: added links to info about the ethernet controller (Intel 82573).

Documentation: x60_security.html and t60_security.html: added notes about DMA and the docking station.

						Documentation: configuring_parabola.html: basic post-install steps for Parabola GNU/Linux
						(helpful, since libreboot development is being moved to Parabola at the time of writing).

builddeps-coreboot: use 'make crossgcc-i386' instead of 'make crossgcc'. Libreboot only targets x86 at the time of writing.

ROM images no longer include SeaBIOS. Instead, the user adds it afterwards. Documentation and scripts updated.

docs/images/encrypted_parabola.html: Notes about linux-libre-grsec

Documentation: encrypted_parabola.html: add tutorial for encrypted Parabola GNU/Linux installation.

Documentation: added more info about wifi chipsets

Back to top of page.

6th release (pre-release, 7th beta)

Released 11th July 2014 (pre-release) 1st beta

Revised (pre-release, 2nd beta) 16th July 2014

Revised (pre-release, 3rd beta) 20th July 2014

Revised (pre-release, 4th beta) 29th July 2014

Revised (pre-release, 5th beta) 11th August 2014 (corrected 11th August 2014)

Revised (pre-release, 6th beta) 3rd September 2014

Revised (pre-release, 7th beta) 11th September 2014

Machines still supported (compared to previous release):

						Lenovo ThinkPad X60/X60s

								You can also remove the motherboard from an X61/X61s and replace it with an X60/X60s motherboard.

New systems supported in this release:

						Lenovo ThinkPad X60 Tablet (1024x768 and 1400x1050) with digitizer support

See hcl/index.html#supported_x60t_list for list of supported LCD panels

It is unknown whether an X61 Tablet can have its mainboard replaced with an X60 Tablet motherboard.

						Lenovo ThinkPad T60 (Intel GPU) (there are issues; see below)

See notes below for exceptions, and hcl/index.html#supported_t60_list for known working LCD panels.

It is unknown whether a T61 can have its mainboard replaced with a T60 motherboard.

T60P (and T60s with ATI GPU) will likely never be supported: hcl/index.html#t60_ati_intel

						Apple MacBook1,1 (MA255LL/A, MA254LL/A, MA472LL/A)

See hcl/index.html#macbook11.

						Apple MacBook2,1 (MA699LL/A, MA701LL/A, MB061LL/A, MA700LL/A, MB063LL/A, MB062LL/A)

See hcl/index.html#macbook21.

Machines no longer supported (compared to previous release):

All previous systems still supported!

				Revisions for r20140911 (7th beta) (11th September 2014)

The changes below were made in a git repository, unlike in previous releases. Descriptions below are copied from 'git log'.

Update .gitignore for new dependencies.

Use a submodule for i945-pwm.

Don't clean packages that fail or don't need cleaning.

Don't clean i945-pwm, it's not needed.

Regression fix: Parabola live ISO boot issues

Re-enable background images in ISOLINUX/SYSLINUX GRUB parser menus

Regression fix: Re-add CD-ROM (ata0) in GRUB

Documentation: add notes about performance penalty when using ecryptfs.

Documentation: Fixed spelling and grammatical errors.

Documentation: macbook21: add new system as tested

Documentation: macbook21: add info about improving touchpad sensitivity

Documentation: X60 Tablet: add more information about finger input

Documentation: release.html: Add information about recently merged commit in coreboot

				Revisions for r20140903 (6th beta) (3rd September 2014)

Added modified builddeb* scripts for Parabola GNU/Linux-libre: buildpac, buildpac-flashrom, buildpac-bucts (courtesy of Noah Vesely)

Documentation: updated all relevant areas to mention use of buildpac* scripts for Parabola users.

Documentation: added information showing how to enable or disable bluetooth on the X60

MacBook1,1 tested! See hcl/index.html#macbook11

Documentation: fixed typo in index.html#get_edid_panelname (get-edit changed to get-edid)

Documentation: added images/x60_lcd_change/ (pics only for now)

Added gcry_serpent and gcry_whirlpool to the GRUB module list in the 'build' script (for luks users)

						Libreboot is now based on a new coreboot version from August 23rd, 2014:

						Merged commits (relates to boards that were already supported in libreboot):

http://review.coreboot.org/#/c/6697/

http://review.coreboot.org/#/c/6698/ (merged already)

http://review.coreboot.org/#/c/6699/ (merged already)

http://review.coreboot.org/#/c/6696/ (merged already)

http://review.coreboot.org/#/c/6695/ (merged already)

http://review.coreboot.org/#/c/5927/ (merged already)

http://review.coreboot.org/#/c/6717/ (merged already)

http://review.coreboot.org/#/c/6718/ (merged already)

								http://review.coreboot.org/#/c/6723/ (merged already)
								(text-mode patch, might enable memtest. macbook21)

								http://review.coreboot.org/#/c/6732/ (MERGED)
								(remove useless ps/2 keyboard delay from macbook21. already merged)

						These were also merged in coreboot (relates to boards that libreboot already supported):

http://review.coreboot.org/#/c/5320/ (merged)

http://review.coreboot.org/#/c/5321/ (merged)

http://review.coreboot.org/#/c/5323/ (merged)

http://review.coreboot.org/#/c/6693/ (merged)

http://review.coreboot.org/#/c/6694/ (merged)

http://review.coreboot.org/#/c/5324/ (merged)

Documentation: removed the section about tft_brightness on X60 (new code makes it obsolete)

Removed all patches from resources/libreboot/patch/ and added new patch: 0000_t60_textmode.git.diff

Updated getcb script and DEBLOB script.

Updated configuration files under resources/libreboot/config/ to accomodate new coreboot version.

						Removed grub_serial*.cfg and libreboot_serial*.rom, all configs/rom files are now unified (containing same configuration as serial rom files from before).

Documentation: updated index.html#rom to reflect the above.

Updated GRUB to new version from August 14th, 2014.

Unified all grub configurations for all systems to a single grub.cfg under resources/grub/config/

Updated flashrom to new version from August 20th, 2014

						Added getseabios and builddeps-seabios (builddeps and getall were also updated)

								Added instructions to 'buildrom-withgrub' to include bios.bin.elf and vgaroms/vgabios.bin from SeaBIOS inside the ROM.

Added seabios (and sgavgabios) to grub as payload option in menu

						Disabled serial output in Memtest86+ (no longer needed) to speed up tests.

MemTest86+ now works properly, it can output on the laptop screen (no serial port needed anymore).

						Added getgrubinvaders, builddeps-grubinvaders scripts. Added these to getall and builddeps.

								Added GRUB Invaders menu entry in resources/grub/config/grub.cfg

Added rules to builddeps-coreboot to build libpayload with TinyCurses. (added appropriate instructions to cleandeps script).

Commented out lines in resources/grub/config/grub.cfg for loading font/background (not useful anymore, now that GRUB is in text-mode).

Commented out lines in buildrom-withgrub that included backgrounds/fonts (not useful anymore, now that GRUB is in text-mode).

						Added resources/utilities/i945-pwm/ (from git://git.mtjm.eu/i945-pwm), for debugging acpi brightness on i945 systems.

Added instructions for it in builddeps, builddeps-i945pwm, builddeb and cleandeps

'build' script: removed the parts that generated sha512sum manifests (not needed, since release tarballs are GPG-signed)

						'build' script: removed the parts that generated libreboot_meta directory (not needed anymore, since _meta will be hosted in git)

Updated index.html#build_meta (and other parts of documentation) to accomodate this change.

Documentation: simplified (refactored) the notes in index.html#rom

						'build' script: removed the parts that generated libreboot_bin and added them to a new script: 'build-release'

Documentation: index.html#build updated to reflect the above.

Removed 'sudo' from builddeb, builddeb-flashrom, powertop.trisquel6 and builddeb-bucts scripts (assuming that the user has it is a really bad idea).

<s>Added all gcry_* modules to grub (luks/cryptomount): gcry_arcfour gcry_camellia gcry_crc gcry_dsa gcry_md4 gcry_rfc2268 gcry_rmd160 gcry_seed gcry_sha1 gcry_sha512 gcry_twofish gcry_blowfish gcry_cast5 gcry_des gcry_idea gcry_md5 gcry_rijndael gcry_rsa gcry_serpent gcry_sha256 gcry_tiger gcry_whirlpool</s>

Added GNUtoo's list of GRUB modules (includes all of the gcry_* modules above), cryptomount should be working now.

Removed builddeb-bucts and builddeb-flashrom, merged them with builddeb (index.html updated accordingly)

Removed buildpac-bucts and buildpac-flashrom, merged them with buildpac (index.html updated accordingly)

Renamed builddeb to deps-trisquel (index.html updated accordingly)

Renamed buildpac to deps-parabola (index.html updated accordingly)

Documentation: removed all parts talking about build dependencies, replaced them with links to index.html#build_dependencies

Documentation: emphasized more strongly on the documentation, the need to re-build bucts and/or flashrom before flashing a ROM image.

build-release: flashrom, nvramtool, cbfstool and bucts are no longer provided pre-compiled in binary archives, and are now in source form only. (to maximize distro compatibility).

Documentation: added gnulinux/encrypted_trisquel.html showing how to setup a fully encrypted Trisquel installation (including /boot) and boot it from the GRUB payload.

'build' script: replaced grub.elf assembly instructons, it is now handled by a utility added under resources/utilities/grub-assemble

Moved resources/grub/keymap to resources/utilities/grub-assemble/keymap, and updated that utility to use it

Documentation: removed useless links to pictures of keyboard layouts and unmodified layouts.

Removed all unused fonts from dejavu-fonts-ttf-2.34/ directory

'buildrom-withgrub' script: updated it to create 2 sets of ROMs for each system: one with text-mode, one with coreboot framebuffer.

Documentation: updated index.html#rom to reflect the above

Deleted unused README and COPYING file from main directory

Removed some rm -Rf .git* instructions from the get* scripts and moved them to build-release script

						Split up default grub.cfg into 6 parts: extra/{common.cfg,txtmode.cfg,vesafb.cfg} and menuentries/{common.cfg,txtmode.cfg,vesafb.cfg}

buildrom-withgrub script uses these to generate the correct grub.cfg for each type of configuration.

grub_memdisk.cfg (used inside grub.elf) now only loads grub.cfg from cbfs. It no longer enables serial output or sets prefix. (menuentries/common.cfg does instead)

						resources/grub/config/extra/common.cfg, added:

insmod instructions to load those modules: nativedisk, ehci, ohci, uhci, usb, usbserial_pl2303, usbserial_ftdi, usbserial_usbdebug

set prefix=(memdisk)/boot/grub

								For native graphics (recommended by coreboot wiki):

								gfxpayload=keep

								terminal_output --append gfxterm

								Play a beep on startup:

								play 480 440 1

						Documentation: added note about 'fb=false' workaround for text-mode debian-installer (Trisquel net install) to
						gnulinux/grub_boot_installer.html

						Documentation: updated gnulinux/grub_cbfs.html to make it safer (and easier) to follow.

				Corrections to r20140811 (5th beta) (11th August 2014)

Fixed typo where revision list for 5th beta was listed as March 11th 2014, when in fact it was August 11th 2014

Fixed incorrect grub.cfg that was actually placed in resources/grub/config/x60/grub_usqwerty.cfg which broke the default GRUB menu entry on X60

				Revisions for r20140811 (5th beta) (11th August 2014)

build: added 'luks', 'lvm', 'cmosdump' and 'cmostest' to the list of modules for grub.elf

Documentation: added pics showing T60 unbricking (still need to write a tutorial)

build: include cmos.layout (coreboot/src/mainboard/manufacturer/model/cmos.layout) files in libreboot_bin

Documentation: added install/x60tablet_unbrick.html

Documentation: added install/t60_unbrick.html

Documentation: added install/t60_lcd_15.html

Documentation: added install/t60_security.html

Documentation: added install/t60_heatsink.html

Documentation: Renamed RELEASE.html to release.html

Documentation: removed pcmcia reference in x60_security.html (it's cardbus)

Documentation: added preliminary information about randomized seal (for physical intrusion detection) in x60_security.html and t60_security.html

Documentation: added preliminary information about preventing/mitigating cold-boot attack in x60_security.html and t60_security.html

Documentation: added info to index.html#macbook21 warning about issues with macbook21

						Documentation: X60/T60: added information about checking custom ROMs using dd to see whether or not the top 64K
						region is duplicated below top or not. Advise caution about this in the tutorial that deals with flashing on top
						of Lenovo BIOS, citing the correct dd commands necessary if it is confirmed that the ROM has not been applied with
						dd yet. (in the case that the user compiled their own ROMs from libreboot, without using the build scripts, or if they forgot to use dd, etc).

						Split resources/libreboot/patch/gitdiff into separate patch files (getcb script updated to accomodate this change).

Re-added .git files to bucts

Fixed the oversight where macbook21_firstflash wasn't included in binary archives

Release archives are now compressed using .tar.xz for better compression

				Revisions for r20140729 (4th beta) (29th July 2014)

Documentation: improved (more explanations, background info) in docs/security/x60_security.html (courtesy of Denis Carikli)

MacBook2,1 tested (confirmed)

macbook21: Added script 'macbook21_firstflash' for flashing libreboot while Apple EFI firmware is running.

Documentation: macbook21: added software-based flashing instructions for flashing libreboot while Apple EFI firmware is running.

						Reduced size of libreboot_src.tar.gz:

								Removed .git and .gitignore from grub directory (libreboot_src); not needed.
								Removing them reduces the size of the archive (by a lot). GRUB development should be upstream.

								Removed .git and .gitignore from bucts directory (libreboot_src); not needed.
								Removing them reduces the size of the archive. bucts development should be upstream.

								Removed .svn from flashrom directory (libreboot_src); not needed.
								Removing it reduces the size of the archive. flashrom development should be upstream.

						Added ROMs with Qwerty (Italian) layout in GRUB (libreboot*itqwerty.rom)

						Added resources/utilities/i945gpu/intel-regs.py for debugging issues related to LCD panel compatibility on X60 Tablet and T60. (courtesy of Michał Masłowski)

				Revisions for r20140720 (3rd beta) (20th July 2014)

						Fixed typo that existed in 2nd beta where the release date of the 2nd beta was listed as being in year 2016, when in actual fact it was 2014.

						Documentation: added (preliminary) details about (rare) buggy CPUs on the ThinkPad T60 that were found to fail (instability, kernel panics, etc)
						without the microcode updates.

Documentation: added docs/hardware/x60_heatsink.html for showing how to change the heatsink on the Thinkpad X60

Added ROM images for Azerty (French) keyboard layout in GRUB (courtesy of Olivier Mondoloni)

						Tidied up some scripts:

<s>Re-factored those scripts (made easier to read/maintain): build-x60, build-x60t, build-t60, build-macbook21</s>

<s>Reduced the number of grub configs to 2 (or 1, for macbook21), the build scripts now generate the other configs at build time.</s>

Deleted build-x60, build-x60t, build-t60, build-macbook21 and replaced with intelligent (generic) buildrom-withgrub script

Updated build to use buildrom-withgrub script for building the ROM images.

coreboot.rom and coreboot_serial.rom renamed to coreboot_usqwerty.rom and coreboot_serial_usqwerty.rom

coreboot_dvorak and coreboot_serial_dvorak.rom renamed to coreboot_usdvorak.rom and coreboot_serial_usdvorak.rom

Renamed coreboot*rom to libreboot*rom

Made flash, lenovobios_firstflash and lenovobios_secondflash scripts fail if the specified file does not exist.

Updated all relevant parts of the documentation to reflect the above.

Replaced background.png with background.jpg. added gnulove.jpg. (resources/grub/background/)

Updated buildrom-withgrub to use background.jpg instead of background.png

Updated buildrom-withgrub to use gnulove.jpg aswell

Updated resources/grub/config/macbook21/grub*cfg to use gnulove.jpg background.

Updated resources/grub/config/{x60,t60,x60t}/grub*cfg to use background.jpg background.

Documentation: updated docs/index.html#grub_custom_keyboard to be more generally useful.

						nvramtool:

Updated builddeps-coreboot script to build it

Updated build script to include it in libreboot_bin

						Documentation: added docs/security/x60_security.html (security hardening for X60)

				Revisions for r20140716 (2nd beta) (16th July 2014)

						Deleted all git-related files from the coreboot directory. This was necessary because
						with those it is possible to run 'git diff' which shows the changes made in the form
						of a patch (diff format); this includes the blobs that were deleted during deblobbing.

				Revisions for r20140711 (1st beta) (11th July 2014)

Initial release (new coreboot base, dated 1st June 2014. See 'getcb' script for reference)

DEBLOBBED coreboot

Removed the part from memtest86+ 'make' where it tried to connect to some scp server while compiling. (commented out line 24 in the Makefile)

X60 now uses a single .config (for coreboot)

X60 now uses a single grub.cfg (for grub memdisk)

X60 now uses a single grub.elf (payload)

Added new native graphics code for X60 (replaces the old 'replay' code) from Vladimir Serbinenko: 5320/9 from review.coreboot.org

T60 is now supported, with native graphics. (5345/4 from review.coreboot.org, cherry-picked on top of 5320/9 checkout)

						Added macbook2,1 support (from Mono Moosbart and Vladimir Serbinenko) from review.coreboot.org (see 'getcb' script to know how that was done)

Documentation: added information linking to correct page and talking about which models are supported.

Added resources/libreboot/config/macbook21config

macbook21: Added 'build-macbook21' script and linked to it in 'build' (ROMs included under bin/macbook21/)

macbook21: Removed dd instructions from build-macbook21 script (macbook21 does not need bucts when flashing libreboot while Apple EFI firmware is running)

Documentation: Added macbook21 ROMs to the list of ROMs in docs/index.html#rom

Documentation: Write documentation linking to Mono Moosbart's macbook21 and parabola page (and include a copy)

Documentation: added a copy of Mono's Parabola install guide (for macbook21 with Apple EFI firmware) and linked in in main index.

Documentation: added a copy of Mono's Coreboot page (for macbook21) and linked it in main index.

T60: Copy CD option from the grub.cfg files for T60 *serial*.rom images into the grub configs for non-serial images. (T60s have CD/DVD drive on main laptop)

macbook21: remove options in build-macbook21 for *serial*.rom (there is no dock or serial port available for macbook21)

						Added patches for backlight controls on X60 and T60 with help from Denis Carikli (see ./resources/libreboot/patch/gitdiff and ./getcb and docs/i945_backlight.html)

Documentation: added docs/i945_backlight.html showing how backlight controls were made to work on X60/T60

						Documentation: Added info about getting LCD panel name based on EDID data.

Documentation: Added a link to this from the list of supported T60s and LCD panels for T60 (so that the user can check what LCD panel they have).

						X60/T60: Merged patches for 3D fix (from Paul Menzel) when using kernel 3.12 or higher (see ./resources/libreboot/patch/gitdiff and ./getcb)

based on 5927/11 and 5932/5 from review.coreboot.org

						Improved thinkpad_acpi support (from coreboot ): xsensors shows more information.

From 4650/29 in review.coreboot.org (merged in coreboot 'master' on June 1st 2014)

						Merged changes for digitizer (X60 Tablet) and IR (X60 and T60) based on 5243/17, 5242/17 and 5239/19 from review.coreboot.org

(see ./resources/libreboot/patch/gitdiff and ./getcb)

Documentation: added information about building flashrom using 'builddeps-flashrom' script.

Re-created resources/libreboot/config/x60config

Re-created resources/libreboot/config/t60config

						Added 'x60tconfig' in resources/libreboot/config (because X60 Tablet has different information about serial/model/version in 'dmidecode')

Added 'build-x60t' script

Updated 'build' script to use 'build-x60t'

Documentation: added to #config section the section #config_x60t (libreboot configuration and dmidecode info)

Documentation: added x60t ROMs to the list of ROMs

Tidied up the 'builddeps' script (easier to read)

Tidied up the 'cleandeps' script (easier to read)

Annotated the 'buildall' script

Added 'getcb' script for getting coreboot revision used from git, and patching it.

Added 'getgrub' script for getting the GRUB revision used from git, and patching it.

Added 'getmt86' script for getting the memtest86+ version used, and patching it.

Added 'getbucts' script for getting the bucts version used.

Added 'getflashrom' script for getting the flashrom version used, and patching it

Added 'getall' script which runs all of the other 'get' scripts.

						Add instructions to the 'build' script to prepare libreboot_meta.tar.gz

New archive: libreboot_meta.tar.gz - minimal archive, using the 'get' scripts to download all the dependencies (coreboot, memtest, grub and so on).

Documentation: added information about where 'build' script prepares the libreboot_meta.tar.gz archive.

						Documentation: added information about how to use the 'get' scripts in libreboot_meta.tar.gz (to generate libreboot_src.tar.gz)

Documentation: mention that meta doesn't create libreboot_src/ directory, but that libreboot_meta itself becomes the same.

Documentation: advise to rename libreboot_meta to libreboot_src after running 'getall'.

Annotated the 'builddeb' script, to say what each set of dependencies are for.

Separated bucts/flashrom builddeb sections into separate scripts: builddeb-flashrom, builddeb-bucts.

Documentation: Updated relevant parts based on the above.

Added instructions to 'build' script for including builddeb-bucts and builddeb-flashrom in libreboot_bin

						Updated flashrom checkout (r1822 2014-06-16) from SVN (http://flashrom.org/Downloads).

Updated flashing instructions in docs/index.html for new commands needed (Macronix chip on X60/T60)

For X60/T60 (flashrom): Patched flashchips.c_lenovobios_macronix and flashchips.c_lenovobios_sst executables for SST/macronix (included in resources/flashrom/patch)

Updated builddeps to build flashrom_lenovobios_sst and flashrom_lenovobios_macronix, for X60/T60 users with Lenovo BIOS

moved the flashrom build instructions from 'builddeps' and put them in 'builddeps-flashrom', excecuting that from 'builddeps'.

Added builddeps-flashrom to libreboot_bin.tar.gz

						flashrom: added patched flashchips.c to resources/flashrom/patch (automatically use correct macronix chip on libreboot, without using '-c' switch)

removed 'MX25L1605' and 'MX25L1605A/MX25L1606E' entries in flashchips.c for the patched version of flashchips.c

added instructions to 'builddeps-flashrom' to automatically use this modified flashchips.c in the default build

Added builddeb to libreboot_bin.tar.gz

						Moved 'bucts' build instructions from builddeps to builddeps-bucts

builddeps now runs 'builddeps-bucts' instead

Added 'builddeps-bucts' to libreboot_bin.tar.gz

Documentation: Added information about using 'builddep-bucts' to build the BUC.TS utility.

						Added 'lenovobios_firstflash' and 'lenovobios_secondflash' scripts

Added instructions to 'build' script for including those files in libreboot_bin

Documentation: Add tutorial for flashing while Lenovo BIOS is running (on X60/T60)

						Added 'flash' script (make sure to run builddeps-flashrom first) which (while libreboot is already running) can use flashrom to flash a ROM

eg: "sudo ./flash bin/x60/coreboot_serial_ukdvorak.rom" equivalent to "sudo ./flashrom/flashrom -p internal -w bin/x60/coreboot_uk_dvorak.rom"

updated 'build' script to include the 'flash' script in libreboot_bin.tar.gz

Documentation: replaced default flashrom tutorial to recommend the 'flash' script instead.

						Re-add cbfstool source code back into libreboot_bin.tar.gz, as cbfstool_standalone

Patched that version to work (able to be built and used) without requiring the entire coreboot source code.

								Created patched version of the relevant source files and added it into resources/cbfstool/patch

see coreboot/util/cbfstool/rmodule.c and then the patched version in resources/cbfstool/patch/rmodule.c

see coreboot/src/include/rmodule-defs.h and the rule in 'build' for including this in ../libreboot_bin/cbfstool_standalone

Added instructions to 'build' script for applying this patch to the cbfstool_standalone source in libreboot_bin

Added instructions to 'build' script for then re-compiling cbfstool_standalone in libreboot_bin after applying the patch

Added a 'builddeps-cbfstool' script (in src, but only used in bin and put in bin by 'build') that compiles cbfstool_standalone in libreboot_bin (make), moves the cbfstool and rmodtool binaries into libreboot_bin/ and then does 'make clean' in libreboot_bin/cbfstool_standalone

Updated the 'build' script to put 'builddeps-cbfstool' in libreboot_bin

Updated the 'build' script in the cbfstool (standalone) part to accomodate the above.

Documentation: added notes about cbfstool (standalone) in libreboot_bin

Documentation: made docs/gnulinux/grub_cbfs.html slightly easier to follow.

Annotate the 'build*' scripts with 'echo' commands, to help the user understand what it actually happening during the build process.

						Documentation: added information about how 'dmidecode' data was put in the coreboot configs

Documentation: In fact, document how the 'config' files in resources/libreboot/config/ were created

Documentation: Added information about which ThinkPad T60s are supported, and which are not.

						Documentation: added information about LCD inverters (for upgrading the LCD panel on a T60 14.1' XGA or 15.1' XGA)

it's FRU P/N 41W1478 (on T60 14.1") so this was added to the docs.

it's P/N 42T0078 FRU 42T0079 or P/N 41W1338 (on T60 15.1") so this was added to the docs.

Documentation: added information about names of LCD panels for T60 to the relevant parts of the documentation.

Documentation: added information (with pictures) about the differences between T60 with Intel GPU and T60 with ATI GPU.

Documentation: added pictures of keyboard layouts (US/UK Qwerty/Dvorak) to the ROM list, to let the user compare with their own keyboard.

						Move the coreboot build instructions in 'builddeps' into 'builddeps-coreboot' and link it in 'builddeps'

Link to 'builddeps-coreboot' in final stage of 'getcb'

						Move GRUB build instructions from 'builddeps' into 'builddeps-grub', link from 'builddeps'

Link to 'builddeps-grub' in final stage of 'getgrub'

						Move MemTest86+ build instructions from 'builddeps' into 'builddeps-memtest86', link from 'builddeps'

Link to 'builddeps-memtest86' in final stage of 'getmt86'

made 'build' script put resources/ directory in libreboot_bin, to make builddeps-flashrom work in libreboot_bin

Removed instructions for building source code in the 'get' script (they don't really belong there)

Added libfuse-dev and liblzma-dev to the list of GRUB dependencies in 'builddeb' script.

Converted the 'RELEASE' file to 'docs/RELEASE.html'

Added those dependencies to builddeb script (for GRUB part): gawk libdevmapper-dev libtool libfreetype6-dev

Added to build script the instruction at the end to create a sha512sum.txt with a file manifest plus checksums.

Deleted the RELEASE and BACKPORT files (no longer needed)

						Documentation: added information about X60/T60 dock (ultrabase x6 and advanced mini dock) to relevant sections.

Added to docs/index.html#serial

Back to top of page.

Release 20140622 (5th release)

7th March 2014

revised 22nd June 2014

Officially supported

ThinkPad X60

ThinkPad X60s

Revision (22nd June 2014 - extra)

Documentation: added X60 Unbricking tutorial

Documentation: added info about enabling or disabling wifi

Documentation: added info about enabling or disabling trackpoint

Revision (22nd June 2014 - extra)

Documentation: Improved the instructions for using flashrom

Documentation: Improved the instructions for using cbfstool (to change the default GRUB menu)

Documentation: Numerous small fixes.

Revision notes (22nd June 2014)

updated GRUB (git 4b8b9135f1676924a8458da528d264bbc7bbb301, 20th April 2014)

Made "DeJavu Sans Mono" the default font in GRUB (fixes border corruption).

re-added background image in GRUB (meditating GNU)

						added 6 more images:

coreboot_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)

coreboot_serial_ukqwerty.rom (UK Qwerty keyboard layout in GRUB)

coreboot_dvorak.rom (US Dvorak keyboard layout in GRUB)

coreboot_serial_dvorak.rom (US Dvorak keyboard layout in GRUB)

coreboot_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)

coreboot_serial_ukdvorak.rom (UK Dvorak keyboard layout in GRUB)

(coreboot.rom and coreboot_serial.rom have US Qwerty keyboard layout in GRUB, as usual)

						improved the documentation:

removed FLASH_INSTRUCTION and README.powertop and merged them with README

removed obsolete info from README and tidied it up

deleted README (replaced with docs/index.html)

tidied up the menu entries in GRUB

tidied up the root directory of X60_source/, sorted more files into subdirectories

added 'pkg-config' to the list of dependencies for building powertop on Trisquel

wrote a script (powertop.trisquel6) to automatically setup Powertop to run at boot time (for Trisquel 6 users)

improved the commenting inside the 'build' script (should make modifying it easier)

Renamed X60_binary.tar.gz and X60_source.tar.gz to libreboot_bin.tar.gz and libreboot_src.tar.gz, respectively.

Replaced "GNU GRUB version" with "FREE AS IN FREEDOM" on GNU GRUB start screen.

Added sha512.txt files in libreboot_src and libreboot_bin. (inside the archives)

Added libreboot_bin.tar.gz.sha512.txt and libreboot_src.tar.gz.sha512.txt files (outside of the archives)

Revision notes (11th June 2014):

removed 'CD' boot option from coreboot.rom (not needed)

removed 'processor.max_cstate=2' and 'idle=halt' options (see README.powertop file)

Revision notes (5th June 2014):

added backlight support (Fn+Home and Fn+End) on X60

fixed broken/unstable 3D when using kernel 3.12 or higher

(see 'BACKPORT' file)

Revision notes (9th March 2015):

recreated coreboot config from scratch

GRUB loads even faster now (less than 2 seconds).

Total boot time reduced by further ~5 seconds.

Added crypto and cryptodisk modules to GRUB

cbfstool now included in the binary archives

Development notes

						Binary archive now have 2 images:

With serial output enabled and memtest86+ included (debug level 8 in coreboot)

With serial output disabled and memtest86+ excluded (faster boot speeds) (debugging disabled)

						Reduced impact on battery life:

'processor.max_cstate=2' instead of 'idle=halt' for booting default kernel

						coreboot.rom (faster boot speeds, debugging disabled):

Disabled coreboot serial output (Console-> in "make menuconfig")

Set coreboot debug level to 0 instead of 8 (Console-> in "make menuconfig")

Changed GRUB timeout to 1 second instead of 2 (in grub.cfg

Removed background image in GRUB.

Removed memtest86+ payload (since it relies on serial output)

						coreboot_serial.rom (slower boot speeds, debugging enabled):

Boot time still reduced, but only by ~2 seconds

has the memtest86+ payload included in the ROM

has serial port enabled. How this is achieved (from X60_source): Turn on debugging level to 8, and enable serial output

(in Console-> in coreboot "make menuconfig")

(and build with grub_serial.cfg and grub_memdisk_serial.cfg)

Back to top of page.

Release 20140221 (4th release)

21st February 2014

Officially supported

ThinkPad X60

ThinkPad X60s

Development notes

Removed SeaBIOS (redundant)

						New GRUB version (2.02~beta2)

Fixes some USB issues

Includes ISOLINUX/SYSLINUX parser

New grub.cfg

						Removed useless options:

options for booting sda 2/3/4

seabios boot option

						Added new menu entries:

Parse ISOLINUX config (USB)

Parse ISOLINUX config (CD)

Added 'cat' module for use on GRUB command line.

"set pager=1" is set in grub.cfg, for less-like functionality

					The "Parse" options read ./isolinux/isolinux.cfg on a CD or USB,
					and automatically converts it to a grub config and switches to the boot menu of that distro.
					This makes booting ISOs *much* easier than before.

Back to top of page.

r20131214 (3rd release)

14th December 2013

Supported:

ThinkPad X60

ThinkPad X60s

Development notes

Added SeaBIOS payload to GRUB2 (for booting USB drives)

new grub.cfg

Back to top of page.

r20131213 (2nd release)

13th December 2013

Supported:

ThinkPad X60

ThinkPad X60s

Development notes

added background image to GRUB2

added memtest86+ payload to grub2

improvements to the documentation

new grub.cfg

Back to top of page.

r20131212 (1st release)

12th December 2013

Supported:

ThinkPad X60

ThinkPad X60s

Development notes

initial release

source code deblobbed

Back to top of page.

			Copyright ©  2014, 2015 Francis Rowe <info@gluglug.org.uk>

			Permission is granted to copy, distribute and/or modify this document
			under the terms of the GNU Free Documentation License, Version 1.3
			or any later version published by the Free Software Foundation;
			with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
			A copy of the license can be found at gfdl-1.3.txt

			Updated versions of the license (when available) can be found at
			https://www.gnu.org/licenses/licenses.html

			UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
			EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
			AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
			ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
			IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
			WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
			PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
			ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
			KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
			ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.

			TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
			TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
			NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
			INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
			COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
			USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
			ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
			DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
			IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.

			The disclaimer of warranties and limitation of liability provided
			above shall be interpreted in a manner that, to the extent
			possible, most closely approximates an absolute disclaimer and
			waiver of all liability.


code:
/*

  Main CSS stylesheet for libreboot.org (documentation section)

	Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

body {
	background:#dfdfdf;
	color:#2B2B2B;
	font-family:Lato,sans-serif;
	font-size:0.92em;
	font-weight:400;
	padding:0px;
	margin:0px;
}
div.section {
	background:#FFF;
	border-radius:0.5em;
	box-shadow:         0px 0px 5px 0px rgba(50, 50, 50, 0.75);
	padding:1em;
	margin:1em;
}
p, aside, li {
    margin: 0.33em 0px 0.6em;
    text-align:justify;
}
a {
	color:#2B2BAA;
	font-size:1.1em;
}
a:hover {
	text-decoration:none;
}
h1,h2,h3 {
	margin-bottom:0.2em;
	margin-top:0.2em;
}
img {
	max-width:100%;
	height:auto;
	border:solid 0.5em #fff;
	border-radius:0.25em;
	box-shadow:         0px 0px 5px 0px rgba(50, 50, 50, 0.75);
	margin:0px;
	padding:0px;
	margin-right:1em;
	margin-bottom:1em;
}

p.lenovobios {
	font-weight:bold; color:#f00; font-style:italic; font-size:1.2em;
}
p.lenovobios:hover {
	color: #000;
}
div.important, pre, div.subsection {
	padding:1em;
	margin-bottom:1em;
	background-color:#ece0e2;
	border-radius:0.25em;
	box-shadow:         0px 0px 5px 0px rgba(50, 50, 50, 0.75);
}

.photos p {
	text-align:left;
}


code:
diff --git a/src/mainboard/apple/macbook21/mainboard.c b/src/mainboard/apple/macbook21/mainboard.c
index 9a025dd..a2adb76 100644
--- a/src/mainboard/apple/macbook21/mainboard.c
+++ b/src/mainboard/apple/macbook21/mainboard.c
@@ -40,6 +40,12 @@
 extern const u32 *cim_verb_data;
 extern u32 cim_verb_data_size;

+static acpi_cstate_t cst_entries[] = {
+        { 1,  1, 1000, { 0x7f, 1, 2, { 0 }, 1, 0 } },
+        { 2,  1,  500, { 0x01, 8, 0, { 0 }, DEFAULT_PMBASE + LV2, 0 } },
+        { 2, 17,  250, { 0x01, 8, 0, { 0 }, DEFAULT_PMBASE + LV3, 0 } },
+};
+
 #if CONFIG_PCI_OPTION_ROM_RUN_YABEL || CONFIG_PCI_OPTION_ROM_RUN_REALMODE
 static int int15_handler(void)
 {
@@ -73,7 +79,8 @@ static int int15_handler(void)

 int get_cst_entries(acpi_cstate_t **entries)
 {
-       return 0;
+        *entries = cst_entries;
+        return ARRAY_SIZE(cst_entries);
 }

 static void mainboard_init(device_t dev)