Adding USB SVGA

From OLPC
Revision as of 13:00, 27 January 2008 by FlorianFainelli (talk | contribs) (Compiling the kernel module)
Jump to: navigation, search

Adding an USB-SVGA adapter

It is possible to make use of the USB connectors on the XO to plug in an USB-SVGA adapter. Note that Linux supports these kind of chips with the sisusbvga driver for the kernel side and sisusb module for the Xorg side.

Compiling the kernel module

You will need to follow the instructions about rebuilding your kernel at

Modify the olpc_defconfig to include the SiS USB-SVGA driver :

diff --git a/arch/i386/configs/olpc_defconfig b/arch/i386/configs/olpc_defconfig
index 8439431..74abf3b 100644
--- a/arch/i386/configs/olpc_defconfig
+++ b/arch/i386/configs/olpc_defconfig
@@ -215,7 +215,6 @@ CONFIG_NR_QUICK=1
 # CONFIG_MATH_EMULATION is not set
 # CONFIG_MTRR is not set
 # CONFIG_SECCOMP is not set
-# CONFIG_VGA_NOPROBE is not set
 CONFIG_HZ_100=y
 # CONFIG_HZ_250 is not set
 # CONFIG_HZ_300 is not set
@@ -1711,7 +1710,8 @@ CONFIG_USB_SERIAL_PL2303=m
 # CONFIG_USB_IDMOUSE is not set
 # CONFIG_USB_FTDI_ELAN is not set
 # CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_LD is not set
 # CONFIG_USB_TRANCEVIBRATOR is not set
 # CONFIG_USB_IOWARRIOR is not set

Note that we actually chose to have support for the console on the driver, which is not mandatory but can be convenient when testing.

Now recompile your kernel using this olpc_defconfig. The newly generated kernel RPM package will include this driver.

Including the driver in the OLPC development image

Now that you compiled the kernel it would be good to have it included into a testing image. Assuming that you use pilgrim, apply the following patch to get the xorg module installed as well as the kernel module not being removed by the installer script :

diff --git a/streams.d/olpc-development.stream b/streams.d/olpc-development.stream
index 58fdd0b..5a8c608 100755
--- a/streams.d/olpc-development.stream
+++ b/streams.d/olpc-development.stream
@@ -70,6 +70,7 @@ xorg-x11-drv-evdev
 xorg-x11-drv-keyboard
 xorg-x11-drv-mouse
 xorg-x11-drv-cirrus
+xorg-x11-drv-sisusb
 xorg-x11-utils
 xorg-x11-xinit
 xorg-x11-xauth
@@ -535,7 +536,7 @@ EOF
     mkdir -p $INSTALL_ROOT/etc/sysconfig/modules
     cat <<EOF > $INSTALL_ROOT/etc/sysconfig/modules/olpc-1.modules
 #!/bin/sh
-module_list="i8042 i2c-dev sdhci dcon_bl gxfb_dcon psmouse ovcamchip cafe_ccic cafe-nand battery-class olpc-battery mousedev evdev atkbd leds-olpc"
+module_list="i8042 i2c-dev sdhci dcon_bl gxfb_dcon psmouse ovcamchip cafe_ccic cafe-nand battery-class olpc-battery mousedev evdev atkbd leds-olpc sisusb"
 for i in \$module_list ; do
         modprobe \$i >/dev/null 2>&1
 done
@@ -1315,6 +1316,10 @@ EOF
        lib/modules/*/kernel/net/ieee80211/ieee80211*.ko \
        lib/firmware/*.bin | \
        cpio -O boot/olpcrd -o -A -c
+   # add the sisusb driver
+   echo " - Adding sisusb SVGA adapter driver"
+   ls  lib/modules/*/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko | \
+       cpio -O boot/olpcrd -o -A -c
     case $VARIANT in
        ext3|devel_ext3)
            # the piix ide drivers are only needed for emulation