Vaibhav Shankar (vaibhav.shankar(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18251
-gerrit
commit 6f6f00210ec334d2119e37877e28281e2b51b26d
Author: Vaibhav Shankar <vaibhav.shankar(a)intel.com>
Date: Fri Jan 27 11:37:30 2017 -0800
mainboard/google/reef: Set IOSSTATE for trackpad I2C GPIOs
I2C data (GPIO_132) and Clk (GPIO_133) lines are pulled low during
standby states S3/S0ix. This causes leakage of power. To reduce the
leakage, we have to pull these lines high during S3/S0ix. This is
done by programming the IOSSTATE to HIz. Also note that we are using
the internal pull ups to keep at SOC at 1.8V and the I2C lines are
not floating.
BUG=chrome-os-partner:62428,chrome-os-partner:61651
TEST=Enter S3/S0ix. Measure trackpad power. It should be less
than 4mW. Also I2c lines should be pulled high in S3/S0ix.
Change-Id: I5570ac37ec3cc41f6463dd6b858fdb56a20a1733
Signed-off-by: Vaibhav Shankar <vaibhav.shankar(a)intel.com>
---
src/mainboard/google/reef/variants/baseboard/gpio.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/mainboard/google/reef/variants/baseboard/gpio.c b/src/mainboard/google/reef/variants/baseboard/gpio.c
index 390ef0f..3bb9a5f 100644
--- a/src/mainboard/google/reef/variants/baseboard/gpio.c
+++ b/src/mainboard/google/reef/variants/baseboard/gpio.c
@@ -101,8 +101,10 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPIO_131, UP_2K, DEEP, NF1), /* LPSS_I2C3_SCL */
/* I2C4 - trackpad */
- PAD_CFG_NF(GPIO_132, UP_2K, DEEP, NF1), /* LPSS_I2C4_SDA */
- PAD_CFG_NF(GPIO_133, UP_2K, DEEP, NF1), /* LPSS_I2C4_SCL */
+ /* LPSS_I2C4_SDA */
+ PAD_CFG_NF_IOSSTATE(GPIO_132, UP_2K, DEEP, NF1, HIZCRx1),
+ /* LPSS_I2C4_SCL */
+ PAD_CFG_NF_IOSSTATE(GPIO_133, UP_2K, DEEP, NF1, HIZCRx1),
/* I2C5 -- pen with external pulls */
PAD_CFG_NF(GPIO_134, NONE, DEEP, NF1), /* LPSS_I2C5_SDA */
Vaibhav Shankar (vaibhav.shankar(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18251
-gerrit
commit 444de9b452a6e4d6a32e362f3d3f4daa1e6def8f
Author: Vaibhav Shankar <vaibhav.shankar(a)intel.com>
Date: Fri Jan 27 11:37:30 2017 -0800
mainboard/google/reef: Set IOSSTATE for trackpad I2C GPIOs
I2C data (GPIO_132) and Clk (GPIO_133) lines are pulled low during
standby states S3/S0ix. This causes leakage of power. To reduce the
leakage, we have to pull these lines high during S3/S0ix. This is
done by programming the IOSSTATE to HIz. Also note that we are using
the internal pull ups to keep at SOC at 1.8V and the I2C lines are
not floating.
BUG=chrome-os-partner:62428
TEST=Enter S3/S0ix. Measure trackpad power. It should be less
than 4mW. Also I2c lines should be pulled high in S3/S0ix.
Change-Id: I5570ac37ec3cc41f6463dd6b858fdb56a20a1733
Signed-off-by: Vaibhav Shankar <vaibhav.shankar(a)intel.com>
---
src/mainboard/google/reef/variants/baseboard/gpio.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/mainboard/google/reef/variants/baseboard/gpio.c b/src/mainboard/google/reef/variants/baseboard/gpio.c
index 390ef0f..3bb9a5f 100644
--- a/src/mainboard/google/reef/variants/baseboard/gpio.c
+++ b/src/mainboard/google/reef/variants/baseboard/gpio.c
@@ -101,8 +101,10 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPIO_131, UP_2K, DEEP, NF1), /* LPSS_I2C3_SCL */
/* I2C4 - trackpad */
- PAD_CFG_NF(GPIO_132, UP_2K, DEEP, NF1), /* LPSS_I2C4_SDA */
- PAD_CFG_NF(GPIO_133, UP_2K, DEEP, NF1), /* LPSS_I2C4_SCL */
+ /* LPSS_I2C4_SDA */
+ PAD_CFG_NF_IOSSTATE(GPIO_132, UP_2K, DEEP, NF1, HIZCRx1),
+ /* LPSS_I2C4_SCL */
+ PAD_CFG_NF_IOSSTATE(GPIO_133, UP_2K, DEEP, NF1, HIZCRx1),
/* I2C5 -- pen with external pulls */
PAD_CFG_NF(GPIO_134, NONE, DEEP, NF1), /* LPSS_I2C5_SDA */
the following patch was just integrated into master:
commit 8556db35e0626d252af8aee30e2c9c597302664e
Author: Martin Roth <martinroth(a)google.com>
Date: Mon Jan 23 14:56:55 2017 -0700
SeaBIOS Kconfig: Update logging
The SeaBIOS and coreboot log levels don't really align, so setting the
SeaBIOS log level to the same as coreboot's isn't really what we want.
- Update default log level to use the default SeaBIOS log level.
- Update the current help text to match the new defaults.
- Add help text for what is displayed at various levels.
- Get rid of separate type & prompt lines.
- Add comments for default seabios level & logging disabled
Change-Id: I5a8b75bd44748cb94a83a77ac3a379c8a9587e7b
Signed-off-by: Martin Roth <martinroth(a)google.com>
Reviewed-on: https://review.coreboot.org/18210
Tested-by: build bot (Jenkins)
Reviewed-by: Nico Huber <nico.h(a)gmx.de>
Reviewed-by: Kevin O'Connor <kevin(a)koconnor.net>
See https://review.coreboot.org/18210 for details.
-gerrit
the following patch was just integrated into master:
commit 20aa043b449dc68379f4b64c257a066e17fda4b8
Author: Martin Roth <martinroth(a)google.com>
Date: Thu Jan 26 10:51:43 2017 -0700
Makefile: Just error out if no .config exists
Currently coreboot runs the 'config' command if no .config file exists.
This isn't what anyone wants, and is particularly frustrating for tools
that automate the build, where the build just hangs waiting for input.
Instead, just show an error message and then exit the build.
Change-Id: If9e0c2c26f8273814518589a2f94c5b00fc4cefe
Signed-off-by: Martin Roth <martinroth(a)google.com>
Reviewed-on: https://review.coreboot.org/18245
Tested-by: build bot (Jenkins)
Reviewed-by: Nico Huber <nico.h(a)gmx.de>
See https://review.coreboot.org/18245 for details.
-gerrit
the following patch was just integrated into master:
commit 017b56558f36540e9e1d9736c9716cbedcc6a729
Author: Arthur Heymans <arthur(a)aheymans.xyz>
Date: Wed Jan 25 18:38:36 2017 +0100
board_status/towiki.sh: Add socket LGA775
Intel Core 2 is not further specified since not all chipsets support
quad cores, which could confuse users.
Change-Id: I86c0a41743fe784f432347fa639d3c26604e058e
Signed-off-by: Arthur Heymans <arthur(a)aheymans.xyz>
Reviewed-on: https://review.coreboot.org/18235
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth(a)google.com>
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/18235 for details.
-gerrit
Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18235
-gerrit
commit 310a450321bc6b59b69133a3687521750519e813
Author: Arthur Heymans <arthur(a)aheymans.xyz>
Date: Wed Jan 25 18:38:36 2017 +0100
board_status/towiki.sh: Add socket LGA775
Intel Core 2 is not further specified since not all chipsets support
quad cores, which could confuse users.
Change-Id: I86c0a41743fe784f432347fa639d3c26604e058e
Signed-off-by: Arthur Heymans <arthur(a)aheymans.xyz>
---
util/board_status/to-wiki/towiki.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/util/board_status/to-wiki/towiki.sh b/util/board_status/to-wiki/towiki.sh
index 2e458c6..8b2d1af 100755
--- a/util/board_status/to-wiki/towiki.sh
+++ b/util/board_status/to-wiki/towiki.sh
@@ -307,6 +307,9 @@ EOF
INTEL_SOCKET_LGA771)
cpu_nice="Intel Xeon™ 5000 series";
socket_nice="Socket LGA771";;
+ INTEL_SOCKET_LGA775)
+ cpu_nice="Intel® Core 2, Pentium 4/D";
+ socket_nice="Socket LGA775";;
INTEL_SOCKET_PGA370)
cpu_nice="Intel® Pentium® III-800, Celeron®"
socket_nice="Socket 370";;
Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18001
-gerrit
commit 93d7bb71278bc722327c4eaef54326c8076b5f68
Author: Martin Roth <gaumless(a)gmail.com>
Date: Fri Dec 30 17:00:19 2016 -0700
util/docker: Update dockerfiles & build method
All files:
- Previously, various things were hardcoded into the docker containers
that made it necessary to update the Dockerfile files for each new
version of the sdk. Turn those into 'Variables" that are updated during
the build step. Because the makefile is piping the dockerfile through
the sed command and back into the docker build command, the normal
docker "COPY" keyword doesn't work.
coreboot-jenkins-node changes:
- Run ssh-keygen -A to explicitly generate the ssh keys. This fixes an
error: Could not load host key: /etc/ssh/ssh_host_dsa_key
coreboot-sdk changes:
- Remove apt-get upgrade command - The Dockerfile guide recommends
not to run this.
- Change libssl-dev to libssl1.0-dev. libssl-dev's header files won't
build the Chrome-EC codebase.
- Add libisl-dev, needed to build the riscv toolchain.
- Build the toolchain using the -b option
- Add environment variables containing the version and commit that the
coreboot-sdk was built from.
Makefile:
- Update targets to use the version and commit variables
Change-Id: I2c1376fe4b791da2a62fca11bc92c4774cbef1c8
Signed-off-by: Martin Roth <gaumless(a)gmail.com>
---
util/docker/Makefile | 31 +++++++++++++++++++++-------
util/docker/coreboot-jenkins-node/Dockerfile | 30 +++++++++++++++++++++------
util/docker/coreboot-sdk/Dockerfile | 27 ++++++++++++++++++------
3 files changed, 69 insertions(+), 19 deletions(-)
diff --git a/util/docker/Makefile b/util/docker/Makefile
index f669b93..7df6851 100644
--- a/util/docker/Makefile
+++ b/util/docker/Makefile
@@ -14,7 +14,13 @@
##
export top=$(abspath $(CURDIR)/../..)
export crossgcc_version=$(shell $(top)/util/crossgcc/buildgcc --version | grep 'cross toolchain' | sed 's/^.*\sv//' | sed 's/\s.*$$//')
-export DOCKER:=$(shell env sh -c "command -v docker")
+export DOCKER:=$(shell $(SHELL) -c "command -v docker")
+
+# Version of the jenkins / sdk container
+export COREBOOT_CONTAINER_VERSION?=$(crossgcc_version)
+
+# Commit id to build from
+export DOCKER_COMMIT?=$(shell git log -n 1 --pretty=%h)
test-docker:
$(if $(DOCKER),,\
@@ -28,16 +34,23 @@ test-docker-login: test-docker
$(error Docker authentication file not found. Run 'docker login'))
coreboot-sdk: test-docker
- $(DOCKER) build -t coreboot/coreboot-sdk:$(crossgcc_version) coreboot-sdk
+ @echo "Building coreboot SDK $(crossgcc_version) from commit $(DOCKER_COMMIT)"
+ cat coreboot-sdk/Dockerfile | \
+ sed "s/{{DOCKER_COMMIT}}/$(DOCKER_COMMIT)/" | \
+ sed "s/{{SDK_VERSION}}/$(COREBOOT_CONTAINER_VERSION)/" | \
+ $(DOCKER) build -t coreboot/coreboot-sdk:$(COREBOOT_CONTAINER_VERSION) -
upload-coreboot-sdk: test-docker-login
- $(DOCKER) push coreboot/coreboot-sdk:$(crossgcc_version)
+ $(DOCKER) push coreboot/coreboot-sdk:$(COREBOOT_CONTAINER_VERSION)
coreboot-jenkins-node: test-docker
- $(DOCKER) build -t coreboot/coreboot-jenkins-node:$(crossgcc_version) coreboot-jenkins-node
+ cat coreboot-jenkins-node/Dockerfile | \
+ sed "s/{{SDK_VERSION}}/$(COREBOOT_CONTAINER_VERSION)/" | \
+ sed "s|{{SSH_KEY}}|$$(cat coreboot-jenkins-node/authorized_keys)|" | \
+ $(DOCKER) build -t coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION) -
upload-coreboot-jenkins-node: test-docker-login
- $(DOCKER) push coreboot/coreboot-jenkins-node:$(crossgcc_version)
+ $(DOCKER) push coreboot/coreboot-jenkins-node:$(COREBOOT_CONTAINER_VERSION)
docker-killall: test-docker
@if [ -n "$$($(DOCKER) ps | grep 'coreboot')" ]; then \
@@ -52,7 +65,7 @@ clean-coreboot-images: docker-killall
docker-build-coreboot: test-docker
$(DOCKER) run -u root -it -v $(top):/home/coreboot/coreboot \
- --rm coreboot/coreboot-sdk:$(crossgcc_version) \
+ --rm coreboot/coreboot-sdk:$(COREBOOT_CONTAINER_VERSION) \
/bin/bash -c "cd /home/coreboot/coreboot && \
make clean && \
make $(BUILD_CMD)"
@@ -62,7 +75,7 @@ docker-build-coreboot: test-docker
docker-abuild: test-docker
$(DOCKER) run -u root -it -v $(top):/home/coreboot/coreboot \
- --rm coreboot/coreboot-sdk:$(crossgcc_version) \
+ --rm coreboot/coreboot-sdk:$(COREBOOT_CONTAINER_VERSION) \
/bin/bash -c "cd /home/coreboot/coreboot && \
make clean && \
util/abuild/abuild $(ABUILD_ARGS)"
@@ -82,6 +95,10 @@ help:
@echo "Commands for using docker images"
@echo " docker-build-coreboot <BUILD_CMD=target> - Build coreboot under coreboot-sdk"
@echo " docker-abuild <ABUILD_ARGS='-a -B'> - Run abuild under coreboot-sdk"
+ @echo
+ @echo "Variables:"
+ @echo " COREBOOT_CONTAINER_VERSION = $(COREBOOT_CONTAINER_VERSION)"
+ @echo " DOCKER_COMMIT = $(DOCKER_COMMIT)"
.PHONY: test-docker test-docker-login
.PHONY: coreboot-jenkins-node upload-coreboot-jenkins-node
diff --git a/util/docker/coreboot-jenkins-node/Dockerfile b/util/docker/coreboot-jenkins-node/Dockerfile
index b60466d..230842c 100644
--- a/util/docker/coreboot-jenkins-node/Dockerfile
+++ b/util/docker/coreboot-jenkins-node/Dockerfile
@@ -1,5 +1,20 @@
-FROM coreboot/coreboot-sdk:1.42
-MAINTAINER Martin Roth <gaumless(a)gmail.com>
+# This dockerfile is not meant to be used directly by docker. The
+# {{}} varibles are replaced with values by the makefile. Please generate
+# the docker image for this file by running:
+#
+# make coreboot-jenkins-node
+#
+# Variables can be updated on the make command line or left blank to use
+# the default values set by the makefile.
+#
+# SDK_VERSION is used to name the version of the coreboot sdk to use.
+# Typically, this corresponds to the toolchain version.
+# SSH_KEY is the contents of the file coreboot-jenkins-node/authorized_keys
+# Because we're piping the contents of the dockerfile into the
+# docker build command, the 'COPY' keyword isn't valid.
+
+FROM coreboot/coreboot-sdk:{{SDK_VERSION}}
+MAINTAINER Martin Roth <martin(a)coreboot.org>
USER root
# Check to make sure /dev is a tmpfs file system
@@ -10,13 +25,17 @@ RUN apt-get -y update && \
lua5.3 liblua5.3-dev openjdk-8-jre-headless openssh-server && \
apt-get clean
-COPY authorized_keys /home/coreboot/.ssh/authorized_keys
-RUN chown -R coreboot /home/coreboot/.ssh && \
+# Because of the way that the variables are being replaced, docker's 'COPY'
+# command does not work
+RUN mkdir -p /home/coreboot/.ssh && \
+ echo "{{SSH_KEY}}" > /home/coreboot/.ssh/authorized_keys && \
+ chown -R coreboot:coreboot /home/coreboot/.ssh && \
chmod 0700 /home/coreboot/.ssh && \
chmod 0600 /home/coreboot/.ssh/authorized_keys
RUN mkdir /var/run/sshd && \
- chmod 0755 /var/run/sshd
+ chmod 0755 /var/run/sshd && \
+ /usr/bin/ssh-keygen -A
# Build encapsulate tool
ADD https://raw.githubusercontent.com/pgeorgi/encapsulate/master/encapsulate.c /tmp/encapsulate.c
@@ -24,7 +43,6 @@ RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
chown root /usr/sbin/encapsulate && \
chmod +s /usr/sbin/encapsulate
-
VOLUME /data/cache
ENTRYPOINT mkdir /dev/cb-build && chown coreboot /dev/cb-build && /usr/sbin/sshd -p 49151 -D
EXPOSE 49151
diff --git a/util/docker/coreboot-sdk/Dockerfile b/util/docker/coreboot-sdk/Dockerfile
index cb0023c..feaf843 100644
--- a/util/docker/coreboot-sdk/Dockerfile
+++ b/util/docker/coreboot-sdk/Dockerfile
@@ -1,26 +1,39 @@
+# This dockerfile is not meant to be used directly by docker. The
+# {{}} varibles are replaced with values by the makefile. Please generate
+# the docker image for this file by running:
+#
+# make coreboot-sdk
+#
+# Variables can be updated on the make command line or left blank to use
+# the default values set by the makefile.
+#
+# SDK_VERSION is used to name the version of the coreboot sdk to use.
+# Typically, this corresponds to the toolchain version. This
+# is used to identify this docker image.
+# DOCKER_COMMIT is the coreboot Commit-ID to build the toolchain from.
+
FROM debian:sid
-MAINTAINER Martin Roth <gaumless(a)gmail.com>
+MAINTAINER Martin Roth <martin(a)coreboot.org>
RUN \
useradd -p locked -m coreboot && \
apt-get -qq update && \
- apt-get -qq upgrade && \
apt-get -qqy install gcc g++ make patch python diffutils bison flex \
git doxygen ccache subversion p7zip-full unrar-free \
m4 wget curl bzip2 vim-common cmake xz-utils pkg-config \
dh-autoreconf unifont \
- libssl-dev libgmp-dev zlib1g-dev libpci-dev liblzma-dev \
+ libssl1.0-dev libgmp-dev zlib1g-dev libpci-dev liblzma-dev \
libyaml-dev libncurses5-dev uuid-dev libusb-dev libftdi-dev \
libusb-1.0-0-dev libreadline-dev libglib2.0-dev libgmp-dev \
- libelf-dev libxml2-dev libfreetype6-dev && \
+ libelf-dev libxml2-dev libfreetype6-dev libisl-dev && \
apt-get clean
RUN \
cd /root && \
git clone http://review.coreboot.org/coreboot && \
cd coreboot/util/crossgcc && \
- git checkout 589ef9de8fa && \
- make all_without_gdb CPUS=$(nproc) DEST=/opt/xgcc && \
+ git checkout {{DOCKER_COMMIT}} && \
+ make all_without_gdb CPUS=$(nproc) DEST=/opt/xgcc BUILDGCC_OPTIONS=-b && \
cd /root && \
rm -rf coreboot
@@ -31,4 +44,6 @@ RUN mkdir /home/coreboot/.ccache && \
VOLUME /home/coreboot/.ccache
ENV PATH $PATH:/opt/xgcc/bin
+ENV SDK_VERSION={{SDK_VERSION}}
+ENV SDK_COMMIT={{DOCKER_COMMIT}}
USER coreboot
the following patch was just integrated into master:
commit 9ee70ce5873e7f93c60ea969b388d4027ae6aba8
Author: Martin Roth <gaumless(a)gmail.com>
Date: Fri Dec 30 16:26:13 2016 -0700
util/docker: Update makefile target names
- Use dashes instead of underscores for consistency and to match other
coreboot targets
- Fix a couple of places where old target names were referenced
- Remove double 'help' target from .PHONEY target list
Change-Id: I3b464ebf74653a8cc880e982316fd883757ec728
Signed-off-by: Martin Roth <gaumless(a)gmail.com>
Reviewed-on: https://review.coreboot.org/18000
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Patrick Georgi <pgeorgi(a)google.com>
See https://review.coreboot.org/18000 for details.
-gerrit
the following patch was just integrated into master:
commit af25fd78e8edcf0d46acdd5f45d1379770753b30
Author: Martin Roth <gaumless(a)gmail.com>
Date: Fri Dec 30 16:12:30 2016 -0700
util/docker: Update makefile with command to kill docker images
Kill running docker containers before trying to remove images or
containers.
Change-Id: Id2de90edbe5d0dc6ecb906be7101ad9744dbd11e
Signed-off-by: Martin Roth <gaumless(a)gmail.com>
Reviewed-on: https://review.coreboot.org/17999
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Patrick Georgi <pgeorgi(a)google.com>
See https://review.coreboot.org/17999 for details.
-gerrit
Nico Huber (nico.h(a)gmx.de) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18250
-gerrit
commit 96e2f885c196913cd1aebe43f6fc9c0f0b31df78
Author: Nico Huber <nico.h(a)gmx.de>
Date: Fri Jan 27 15:55:28 2017 +0100
WIP Documentation/backlight-pwm: Gather backlight PWM infos
Change-Id: I3a3456cee8ed053db13b4b9d2d3f5a8fc04bb7ff
Signed-off-by: Nico Huber <nico.h(a)gmx.de>
---
Documentation/backlight-pwm.md | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/Documentation/backlight-pwm.md b/Documentation/backlight-pwm.md
new file mode 100644
index 0000000..970646f
--- /dev/null
+++ b/Documentation/backlight-pwm.md
@@ -0,0 +1,25 @@
+# PWM frequencies for display backlights
+
+## Values found in use by vendors
+
+* `Lenovo ThinkPad X60`: 0x879e/180Hz (@200MHz CDClk)
+
+* `Lenovo ThinkPad X200s`: 0x0cf8/753Hz (@320MHz CDClk)
+ LED backlight, panel:
+ Manufacturer: LEN Model 4014 Serial Number 0
+ ASCII string: LTD121EQ3B
+
+* `Lenovo ThinkPad X301`: 0x24fc/264Hz (@320MHz CDClk)
+ LED backlight, panel:
+ Manufacturer: LEN Model 4074 Serial Number 0
+ ASCII string: LTD133EQ1B
+
+## Often copy-pasted constants
+
+* `0x0610 for gm45`: First seen in commit 6481e10
+ "gma45: Ensure that brightness register in gma contains a sane vaule"
+ Depending on the CDClk frequency (222MHz .. 333MHz) 1.12kHz .. 1.61kHz
+
+* `0x0128 for i945`: First seen for lenovo/x60 in commit 26ca08c
+ "i945: Replace video gfx init."
+ With a CDClk of 200MHz it gives a 21.1kHz PWM.