09 October 2010 1. Introduction ---------------- This document accompanies OMAP(TM) Software Release L24.11 based on Linux 2.6.35 on OMAP4430 SDP, Blaze and Panda boards. The document specifies details about: - downloading the source code and building the images - supported features - defects fixed and defects existing in the release. 2. Release Summary ------------------ This is a release of the Linux Baseport for OMAP4430. It supports the OMAP4 SDP, Blaze and Panda boards. The kernel is based on Linux version 2.6.35 from open source. U-boot is based on open-source version v2010-09 NOTE that the Kernel for SDP, Blaze and Panda boards is the same. However the bootloaders for Panda are in separate GITs compared to the ones for SDP and Blaze. L24.10 onwards the same bootloader codebase will support all the boards. 2.1 Bootloaders for SDP, Blaze, and Panda boards The u-boot source can be obtained via GIT from: http://dev.omapzoom.org/?p=bootloader/u-boot.git;a=shortlog;h=refs/heads/omap_upstream 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 2.3 Kernel for all boards (SDP, Blaze, Panda) The kernel source can be obtained via GIT from: http://dev.omapzoom.org/?p=integration/kernel-omap4.git;a=shortlog;h=refs/heads/L24.11 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, Digital Compass,Pressure) LED (PWM and GPIO), EHCI, OHCI. 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 While building u-boot and x-loader, please note the difference in config files used for SDP/Blaze versus Panda. For building the kernel, the config file is same for all boards. 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: For SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4_sdp4430_config For Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4_panda_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/SD) Set the environment variable PATH such that cross compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. Please note that the restriction requiring x-loader to be in the same directory as u-boot has been removed. Now x-loader can be built independently. You need not even have a u-boot directory to build x-loader. To select the default configuration for X-loader type: For ES1.0 SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_MPU_600MHz_config For ES2.0 SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config For ES1.0 Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430panda_MPU_600MHz_config For ES2.0 Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430panda_config To build the X-loader image type: # make ift CROSS_COMPILE=arm-none-linux-gnueabi- The above step will create a MLO image, which can be copied into the MMC/SD card for booting via MMC/SD. For booting from eMMC flash this MLO at sector 0x100(Address: 0x20000). See section 3.3.2 for detailed instructions for flashing and booting from eMMC. 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 For booting the kernel on OMAP4430 ES1.0, additionally enable CONFIG_OMAP4_ES1 in the kernel config. 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. MLO) 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. After booting from removable MMC, copy the MLO and u-boot.bin from the MMC to RAM using the following u-boot commands: 1. MMC initialization mmc rescan 2. FAT read fatload mmc 3. raw write mmc write Device numbers: External SD/MMC card => MMC 1 => device = 0 eMMC => MMC 2 => device = 1 Number of bytes per sector: 512 All parameters should be in hex Example flashing sequence: OMAP4430 SDP # mmc rescan 0 OMAP4430 SDP # fatls mmc 0 OMAP4430 SDP # fatload mmc 0 80000000 MLO reading mlo 20104 bytes read OMAP4430 SDP # mmc write 1 80000000 0x100 0x28 OMAP4430 SDP # fatload mmc 0 80000000 u-boot.bin reading u-boot.bin 146652 bytes read OMAP4430 SDP # mmc write 1 80000000 0x400 0x11F Please note that 0x28 above is the number of sectors in 20104 rounded up => RU(20104/512) Similarly 0x11F is number of sectors in 146652 bytes rounded up. 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 If your board has 1GB memory, add "mem=1G" in the bootargs. Most OMAP4430 ES2.0 SDP and Blaze boards have 1GB RAM. OMAP4 ES1.0 boards have 512 MB RAM. 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/SD/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. On SDP and Blaze boards, eMMC block device will always be available at /dev/mmcblk0 while removable MMC/SD block device will be available at /dev/mmcblk1. 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.3.5 Saving environment variables in u-boot The 'saveenv' command in u-boot saves the environment variables in eMMC on OMAP4 SDP and Blaze boards. This is not supported on Panda boards as eMMC is not available on Panda boards. On SDP and Blaze, the environment variables are stored on a RAW partition of size 128KB on eMMC starting from sector 0x700 to sector 0x7FF. 3.4 Using FB and V4L2 Display driver For details please refer to: http://omappedia.org/wiki/Bootargs_for_enabling_display Write Back usage guide is available at: http://omappedia.org/wiki/Write_Back_pipeline_usage_guide 3.5 Enabling Power Management Features All PM features are enabled by default in OMAP4 kernel configuration (omap_4430sdp_defconfig). Note that PM features on OMAP4430 ES1.0 are not supported and hence all PM features are disabled once CONFIG_OMAP4_ES1 is selected. 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. Alternatively debug counters can also be used from /debug/pm_debug/count The deepest sleep state supported in cpuidle is CHIP/DEVICE retention. The retention voltage is set to 0.83v 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. Alternatively use debug counters from /debug/pm_debug/count The sleep state supported in System suspend is CHIP/DEVICE retention. The retention voltage is set to 0.83v 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 - Power management to achieve CHIP retention. - Mainline version of u-boot. - SDP, Blaze and Panda supported in the same codebase of x-loader and u-boot. 4.2 Supported Features - Boot-loader: X-loader with MMC/eMMC/SD support U-boot with USB, MMC/eMMC/SD and Ethernet support - 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, EHCI, OHCI, Phoenix General Purpose ADC, Battery Charging. Proximity sensor Accelerometer sensor Ambient Light sensor Temperature sensor Digital Compass Pressure Sensor LED (PWM and GPIO) - 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: - Power management (CONFIG_PM) is enabled by default for OMAP4430 ES2.0, while it is disabled for OMAP4430 ES1.0. - Most of the unused clocks are now disabled in bootloader. - 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 - Blanking of display after inactivity timer - Suspend and Resume on all the displays - Primary LCD - Secondary LCD - HDMI - Pico DLP - Tiler memory manager - Write-Back - Interlacing support - WLAN - FM/Bluetooth 4.3 Postponed Features -none 4.4 Future Planned Features Refer to Program schedule. 4.5 Defects Fixed in This Release OMAPS00222989 Random failures in the Mass storage (thumbdrive) detection by OHCI controller OMAPS00223646 PM Suspend last power state traces are not valid for DSS, CAM, EMU and SGX. OMAPS00224011 HWMOD: Smart-Reflex is broken on L24.9-pm branch (IVA-VCORE2, SR disable) OMAPS00224083 Kernel Hang on L24.9-pm branch with ubuntu filesystem when cpufreq is enabled OMAPS00224605 The USB keyboard and mouse are not working in OHCI OMAPS00225610 HDMI conformance: need to change video format twice to get correct video timing (custom_edid_timing) OMAPS00224263 HDMI hotplug detection doesn't work consistently in some TVs OMAPS00224153 HPD with DVI is not working properly OMAPS00224600 FB not resizing based on the HDMI timing update OMAPS00225319 No display on pandaboard OMAPS00224770 fbsize is not working OMAPS00224769 When Num of Fb = 4, doesnt return error OMAPS00224763 FB Replication is not working OMAPS00224692 Reboot fails due to crash/errors in DSS files OMAPS00223435 Display unblank takes to much time ~10 sec. OMAPS00224767 Wait For Vysnc Results in crash when suspended OMAPS00222834 HDMI as a default device is giving OCP errors OMAPS00221067 omaplfb relies on the FB2OFB definition, which is not defined by the headers of the Ubuntu kernel headers OMAPS00220581 L_JPEGDEC_FUNCTIONAL_001: multiple dark lines are seen when image is displayed OMAPS00223050 White screen on HDMI TV OMAPS00225816 Touch Screen Wake up fails in cpuidle with blanking and Streaming Tests 4.6 Open Defects OMAPS00222079 MMC corruption on reading when ADMA is used OMAPS00222347 [PT][Endurance] Transfer: PTLv1.4: Dxfer failed after some iterations OMAPS00223678 PT Robustness, Image Display + Data transfer : Data Transfer gives kernel panic after 450~950 iterations OMAPS00224802 OPROFILE option breaks power management OMAPS00213906 180 degree rotation of yuv format shows a bluish tinge OMAPS00223203 Writeback color conversion and upscaling is not working OMAPS00223490 Upscaling 512*612 resolution to 1080p for formats RGB/NV12/YUV fails OMAPS00223493 Support for 4/8/12/18 bpp mode is not working for framebuffer OMAPS00224611 DSI errors are seen while system wide suspend and resume OMAPS00224765 Pico Enable /Disable results in crash OMAPS00224766 Rotation & Mirroring not working with FB mode 16 OMAPS00224768 Flip buffer is not working with HDMI OMAPS00224771 Switching back to Lcd gives "omapdss MANAGER error" OMAPS00224772 WB on HDMI is not working OMAPS00224773 flip buffer crashed with suspend/resume OMAPS00224777 Rotation & Mirroring not working with Interlacing OMAPS00224778 Interlace to progressive display not working on LCD1/2 OMAPS00224818 If one hot plugs out one CPU and then try display blanking; then subsequently CORE CSWR is not entered OMAPS00225370 [DRV-LCD] Some FRAMEDONE interrupts are missed leading to video frame being played during 3*16.6ms instead of 2*16.6 OMAPS00225548 Source and destination transparency key test cases do not give desired output OMAPS00225551 Display does not resume after suspend, while playing back video using ffmpeg on GUI Ubuntu FS OMAPS00225600 setterm binary not available to test the FB functionality OMAPS00225606 HDMI conformance: Bad HSYNC polarity in 480p and 576p OMAPS00225608 HDMI conformance: hot plug not working when the sink modify E-EDID OMAPS00225611 HDMI conformance: 4 blocks EDID reading is not working OMAPS00225809 YUV is not working higher resolutions OMAPS00225815 Mulitple Trails of Suspend Resume Fails with blanking OMAPS00225829 Interlace is not working OMAPS00225832 Crash is observed when pico is enabled using sysfs. OMAPS00225833 ES1 Bootup - Penguins dont get displayed OMAPS00225834 Issue in scaling 720p YUYV samples OMAPS00225837 Occasionally scaling results in continous error stating "omapdss DISPC error: OCP_ERR" OMAPS00225827 Tocuhscreen tap does not wakeup from suspend state 4.7 Open Change Requests None 4.8 Rejected Defects OMAPS00224258 PT Automation: Kernel BUG message appears when doing file transfer while other MM operation is performed OMAPS00225607 SD fatls showing 0 bytes for image file OMAPS00218312 PT_FUNCTIONAL: HDMI output not working properly with a HDMI Video Capture PCI card OMAPS00224344 Add support for horizontal flip in DSS driver 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. 2) Touchscreen not being able to wakeup from suspend if Sensor Sleep mode is enabled 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/release1293 The tool chain version is Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux. -------------------------------------------------------------------------------- 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.