06 August 2010 1. Introduction ---------------- This document accompanies OMAP(TM) Software Release L24.8 for Linux 2.6.34 on OMAP4430 SDP. The document specifies: - Instructions for unpacking the release - New features and features the release supports - Planned future features - Postponed features 2. Release Summary ------------------ This is a release of the Linux Baseport for OMAP4430. It supports the OMAP4 Wakeup SDP board. The kernel is based on Linux-omap version 2.6.34 from open source. U-boot is based on open-source version 1.1.4. The u-boot source can be obtained via GIT from: http://dev.omapzoom.org/?p=bootloader/u-boot.git;a=shortlog;h=refs/heads/omap4_dev The x-loader source can be obtained via GIT from: http://dev.omapzoom.org/?p=bootloader/x-loader.git;a=shortlog;h=refs/heads/omap4_dev The kernel source can be obtained via GIT from: http://dev.omapzoom.org/?p=integration/kernel-omap4.git;a=shortlog;h=refs/heads/L24.8 Components that are supported in the release: X-loader, U-Boot, OS Kernel (SMP), Phoenix power IC, UART, GP Timer, GPIO, Watchdog, Neon, I2C, MMC/SD/eMMC, Ethernet, RTC, SDMA (including descriptor loading), Keypad, Touch screen, McSPI, McBSP, Mentor USB, Phoenix General Purpose ADC, Battery Charging, Power Management Frameworks, Sensors (Proximity, Accelerometer, Ambient Light, Temperature) Audio (Phoenix Audio IC, ABE, AESS), Display driver (TAAL based), Basic display (DSS2 migration, FB dev), Tiler memory manager. WLAN support FM/Bluetooth support 3. Instructions ---------------- 3.1 Board setup Please refer to the OMAP4430 SDP guide for instructions on setting up the OMAP4 board. 3.2 Compiling Images 3.2.1 Compiling U-boot Set the environment variable PATH such that cross compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. To select the default configuration for U-Boot type: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config To build the U-Boot image type: # make CROSS_COMPILE=arm-none-linux-gnueabi- 3.2.2 Compiling X-loader (for booting from external/removable MMC) Set the environment variable PATH such that cross compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. U-boot needs to be placed in a directory parallel to x-loader and compiled first. E.g.: [DIR] omap4 +-- u-boot +-- x-loader To select the default configuration for X-loader type: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config To build the X-loader image type: # make CROSS_COMPILE=arm-none-linux-gnueabi- # make ift CROSS_COMPILE=arm-none-linux-gnueabi- The above step will create a MLO image, which can be copied into the MMC card for booting via MMC. 3.2.3 Compiling X-loader (for booting from eMMC) Follow same steps as above to create an MLO image. A configuration header needs to be added at the begining of this MLO to create an image 'x-load.ch.bin' that can be written to the eMMC for eMMC-booting. Please contact your TI representative for obtaining the configuration header. 3.2.4 Compiling the Kernel Set the environment variable PATH such that cross-compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. The default configuration file for OMAP 4430 is present at arch/arm/configs/omap_4430sdp_defconfig. To work with the default configuration file, run following commands: # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap_4430sdp_defconfig Build kernel with: # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage NOTE: The above steps will create arch/arm/boot/uImage in the kernel directory which is the binary used for booting. 3.3 Flashing and Booting 3.3.1 Booting from removable MMC Use the MLO (ref: section 3.2.2) and u-boot.bin (ref: section 3.2.1) binaries and follow the instructions at http://elinux.org/BeagleBoard#MMC.2FSD_boot to boot the board from removable MMC. Set the board switch settings as follows to boot the board from removable MMC: S9 - 1-off, 2-on, 3-on, 4-on S8 - 1-off, 2-on, 3-off, 4-on, 5-on, 6-on, 7-on, 8-on 3.3.2 Flashing and booting from eMMC Follow the instructions below to save x-loader and u-boot binaries to eMMC and subsequently boot from eMMC. Get the x-loader and u-boot binaries (that you want to flash to eMMC) into RAM using one of the following options. Option 1: Use a debugger or OMAPFlasher tool to download x-loader (with configuration header, e.g. x-load.ch.bin) as well as u-boot.bin into SDRAM and run u-boot from SDRAM. Option 2: Boot via a removable MMC card following the instructions in section 3.3.1, but additionally keep the x-load.ch.bin that you want to flash to eMMC in the same removable MMC card. After booting from removable MMC, copy the x-load.ch.bin and u-boot.bin from the MMC to RAM using the following commands: OMAP44XX SDP # mmcinit 0 OMAP44XX SDP # fatload mmc 0 [Ram Address X] x-load.ch.bin OMAP44XX SDP # fatload mmc 0 [Ram Address Y] u-boot.bin Once the x-loader and u-boot binaries are in RAM, use the following commands to copy them to eMMC. 1) Erase all EMMC contents OMAP44XX SDP # mmcinit 1 OMAP44XX SDP # mmc 1 erase 0x0 0x800000 2) Flash x-loader OMAP44XX SDP # mmc 1 erase 0x100 [size of x-loader in hex] OMAP44XX SDP # mmc 1 write [Ram Address X] 0x100 [size of x-loader in hex] Note: Ram address X is address where x-loader is downloaded in RAM using either the debugger, OMAPFlasher or removable MMC. 3) Flash u-boot.bin OMAP44XX SDP # mmc 1 erase 0x400 [size] OMAP44XX SDP # mmc 1 write [Ram Address Y] 0x400 [size] Note: Ram address Y is address where u-boot is downloaded in RAM using either the debugger, OMAPFlasher or removable MMC. Set the board switch settings as follows to boot the board from eMMC: S9 - 1-off, 2-on, 3-on, 4-on S8 - 1-on, 2-on, 3-on, 4-on, 5-on, 6-off, 7-on, 8-on 3.3.3 Using Filesystem from eMMC Use fdisk to create an ext2 partition (/dev/mmcblk0p2) in eMMC leaving 2MB of space at the top. Use the following commands to flash the filesystem to eMMC partition 1) Bootup with a known good kernel and filesystem from RAM 2) Use a filesystem which has USB Gadget filestorage module g_filestorage.ko 3) Connect the usb cable from the board to the PC 4) Load the USB filestorage gadget module as: insmod g_filestorage.ko file=/dev/mmcblk0p2 stall=0 removable=1 5) When the USB drive enumerates on the Linux PC, mount the drive 6) Add ext2 filesystem to the mounted drive 7) sync and then mount the drive. 8) Add the following in bootargs "root=/dev/mmcblk0p2 rw rootdelay=1" to be able to use the eMMC based FS as rootfs. 3.3.4 Bootargs Since UART3 is used as the console on OMAP4 Wakeup board, you need to set 'console=ttyO2,115200n8' in the bootargs While using a filesystem from MMC or eMMC, you may use params such as: 'root=/dev/mmcblk1p2 rw rootdelay=1'. The rootdelay is required because removable cards may take a few seconds to be detected. Also note that 'root=/dev/mmcblkXp2' where "x" means 1 or 2 depending if you use MMC as default this should be 1 or eMMC should be 0. While using a filesystem via NFS, you may use params such as: 'root=/dev/nfs rw nfsroot=<serverip>:<mount-partition>,nolock' Refer to section 3.4.2 for display related bootargs options For detailed list and explaination of the various boot parameters, please refer http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch09.pdf 3.4 Using FB and V4L2 Display driver For details please refer to: http://omappedia.org/wiki/Bootargs_for_enabling_display 3.5 Enabling Power Management Features All PM features are disabled in the default OMAP4 kernel configuration (omap_4430sdp_defconfig). All clocks are still kept enabled on bootloader. To test PM features please use omap4_pm_defconfig. Note that PM features on OMAP4430 ES1.0 can only be verified on a EMU device. The EMU device needs the x-loader signed with the right PPA release. omap4_pm_defconfig does not enable Tick suppression. To do so enable these options manually. Enable the following options in menuconfig Kernel Features ---> Use local timer interrupts Kernel Features ---> Tickless System Kernel Features ---> High Resolution Timer support omap4_pm_defconfig has VFP support disabled due to a know issue with enabling FPU on ES1. Please do not enable VFP support. 3.5.1 CPU Hotplug To hotplug out CPU1 use the following command echo 0 > /sys/devices/system/cpu/cpu1/online To bring back CPU1 online use the following command echo 1 > /sys/devices/system/cpu/cpu1/online Note that CPU0 cannot be offlined due to hardware limitation. Currenlty CPU1 transitions to CSWR state when offlined. This can only be verified using OBS signals. 3.5.2 CPUIdle To test cpuidle, it's necessary that CPU1 is hotplugged out. Use the below command to hotplug out CPU1 echo 0 > /sys/devices/system/cpu/cpu1/online Once CPU1 is hotplugged out, OBS signals can be used to verify MPU/CPU0/CPU1 transtitions. Currently only sleep state of MPU CSWR is supported. 3.5.3 System Suspend To test system suspend, use the following command echo mem > /sys/power/state Use OBS signals to verify MPU/CPU0/CPU1 transitions. Currently only sleep state of MPU CSWR is supported. Please use a ramdisk inorder to test system suspend feature 3.6 Using Audio Driver Include the asound.conf file in /etc directory in your FS. It maps the different audio devices Usage: aplay -D mm file.wav aplay -D tones file.wav aplay -D vx file.wav aplay -D hd_audio file.wav 4. Features ----------- 4.1 New Features - Sensors: - Ambient Light Sensor - Temperature Sensor 4.2 Supported Features - Boot-loader: X-loader with MMC/eMMC/SD support U-boot with USB, MMC/eMMC/SD and Ethernet support - Adding feature for saving environment Vairables which stores them permanently to persistent storage device which is currently eMMC on OMAP4430SDP and doesn't save on removable MMC. The environment variables are stored on RAW partition of size 1MB on eMMC starting from sector 0x700 to sector 0x7FF. Saveenv is restored back and the usage is as below: -- Just typing saveenv prompts user to press 'y' or 'Y' once user confirms env is saved to eMMC or else throws message "Cannot save env to eMMC' -- typing "saveenv -f" doesn't forcefully updates env without user intervention - OS Kernel OS Kernel (SMP) Phoenix power IC, UART, GP Timer, GPIO, Watchdog, NEON, I2C, MMC/SD/eMMC , Ethernet, RTC, SDMA (including descriptor loading), Keypad, Touch screen, McSPI, McBSP, Mentor USB, Phoenix General Purpose ADC, Battery Charging. - Power Management Frameworks - Clock framework - Clockdomain framework - Powerdomain framework - Regulator framework - CPUidle with support upto MPU CSWR - System wide suspend with support upto MPU CSWR - CPU1 hotplug with support upto CPU1 CSWR NOTE: - All PM features are disabled in the default OMAP4 kernel configuration. - All clocks are still kept enabled on bootloader. - These features can only be validated on EMU devices with omap4_pm_defconfig - Sensors - Proximity sensor - Accelerometer sensor - Ambient Light sensor - Temperature sensor - Audio Audio playback to Phoenix Hand-free, Head set output devices. HDMI audio playback Audio record through Phoenix analog MIC input. Simultaneous audio playback and capture. Audio Playback to Phoenix Earphone Audio Playback using Tones port ALSA controls for ABE mixers Add McPDM power management support - Video Display driver - FBdev and V4L2 API support - Primary and Secondary DSI and HDMI displays - Simultaneous rendering on all 3 displays Tiler memory manager. - WLAN - FM/Bluetooth 4.3 Postponed Features -none 4.4 Future Planned Features Refer to Program schedule. 4.5 Defects Fixed in This Release OMAPS00216585 V4L2 Rotation ioctls rotate 90 degrees when set to 270 degress and vice versa OMAPS00219999 AVI checksum not set by HDMI driver: not working on some TVs OMAPS00216010 DSS display->sync function is not working properly on DSI panels OMAPS00211276 On L24.2, if all display are working there is flicker on one of the display OMAPS00219576 Kernel build error if DEBUG support is removed from OMAP2/3/4 Display Subsystem support OMAPS00219724 MMC: Warning seen occassionaly - kmmcd: blocked for 120 seconds OMAPS00219713 ADMA feature on external MMC/SD card results in kernel crash OMAPS00219659 u-boot regression in L24.6: not handling platforms not built with eMMC OMAPS00221839 MUSB (OTG) in Host mode: enumeration failure if USB device connected before blaze boot OMAPS00221528 MUSB Host :- Fix the default DMA mapping of control transfer buffers OMAPS00215668 MUSB driver in device mode has problems with unaligned DMA. OMAPS00219671 Serial O2 driver in L24.7 causes hang in running multiple V4l2 streaming tests 4.6 Open Defects OMAPS00219723 MMC: sometimes the order of detection of eMMC and external SD card is wrong OMAPS00221558 HSMMC : Copying same file twice on MMC and when run "cmp" will throw error OMAPS00218060 omap-serial is not stable during bluetooth file transfer(sdp4430 to remote BT device) operation. OMAPS00218589 MCBSP: for some word lengths the transmission fails. OMAPS00215651 MUSB driver in host mode has problems with unaligned DMA OMAPS00219087 MUSB: there is no MUSB_INTR_DISCONNECT interrupt on DETACH OMAPS00217993 Display on Primary LCD does not wakeup when USB is active OMAPS00219663 1080p to WVGA downscaling of YUYV does not work OMAPS00221067 omaplfb relies on the FB2OFB definition, which is not defined by the headers of the Ubuntu kernel headers OMAPS00220816 PicoDLP shows a junk buffer at the bottom of the frame OMAPS00219789 V4L2 error observed when rendering frames from Video decode testcases OMAPS00219388 Secondary display corruption with L24.6 OMAPS00218554 HDMI panel shows tearing when 3 different 3D apps are executed OMAPS00218312 PT_FUNCTIONAL: HDMI output not working properly with a HDMI Video Capture PCI card OMAPS00216592 There is no way available for dynamically setting/resetting dithering bit OMAPS00213906 180 degree rotation of yuv format shows a bluish tinge OMAPS00221554 watchdog: the timeout and set not working OMAPS00221542 Timers: the clock is not able to switch the test code needs to be fixed to request correct clock. OMAPS00221541 UART trasfers fails at 3.5Mbps baudrate with DMA mode. 4.7 Open Change Requests None 4.8 Rejected Defects OMAPS00219666 90 and 270 video rotations are interchanged (Duplicate defect) OMAPS00220581 L_JPEGDEC_FUNCTIONAL_001: multiple dark lines are seen when image is displayed OMAPS00216361 Distinguish omap v4l2 display device between omap3 and omap4 driver OMAPS00213840 sometimes QBUF ioctl() doesn't return in threaded application OMAPS00218813 60fps drops to 30fps only when 1080p-WVGA rescaling in DSS OMAPS00217970 Tearing effect on display in Android OMAPS00215672 Video DQBUF function takes more than 1s (framedone timeout) when called the first time for playing 1080p on DSI OMAPS00213907 With omapfb.numfb=1 in bootargs , the rest of pipelines are not given to v4l2 4.9 Postponed Defects OMAPS00216446 Disabling "auto update" on DSI would impact the V4l2 drivers that have the ISRs hooked up for FRAMEDONE already. 4.10 Limitations 1) MAC address reading from ethernet EEPROM is not supported. 5. Tool Chain ------------- The toolchain used to build the code can be obtained from CodeSourcery at the following URL: http://www.codesourcery.com/sgpp/lite/arm/portal/release858 The tool chain version is Sourcery G++ Lite 2009q1-203 for ARM GNU/Linux. The tool chain requires glibc 2.3.0 or higher to compile the source code on the host machine. -------------------------------------------------------------------------------- OMAP(TM) is a Trademark of Texas Instruments Incorporated Innovator(TM) is a Trademark of Texas Instruments Incorporated Code Composer Studio(TM) is a Trademark of Texas Instruments Incorporated DSP/BIOS(TM) is a Trademark of Texas Instruments Incorporated All other trademarks are the property of the respective owner.