Linux OMAP Kernel Project

= About Linux OMAP Kernel tree =

This project is to support OMAP3 processors and future OMAP platform generations.

= Getting Started with Linux OMAP (LO) Kernel =

A high level overview video presentation on Linux-OMAP kernel development is available here (skip to 27 min:14sec)

Migration to open source kernel
TI is migrating its OMAP Linux offering to the linux-omap kernel. This Linux kernel project has had an active open source community for several years, and is a downstream of the Linux mainline kernel. That way, TI can fully leverage the existing open source communities around the Linux kernel, and ensure that OMAP platform is fully supported in the mainline kernel. This is an advantage for both TI and TI's customers. As a consequence OMAP3 and OMAP4 support will be soon fully enabled in the mainline Linux kernel releases.

There are some very important notes regarding this migration that need to be understood by all Linux OMAP stakeholders:


 * TI is no longer developing a custom linux kernel for OMAP. The so-called omapzoom kernel that is hosted here is deprecated and no longer maintained. It was used in previous TI Android releases. This kernel was customized by TI and was following a distinct development path from the community-supported linux-omap kernel.


 * TI software offering is now based on the open source community linux OMAP kernel. TI is committed to supporting the open source community linux-omap kernel. This kernel is hosted here. This tree is maintained by Tony Lindgren, Kevin Hilman and Paul Walmsley and the following mailing list can be used to submit/get patches [mailto:linux-omap@vger.kernel.org linux-omap@vger.kernel.org]. This tree is always following Linus Torvalds official Linux releases.


 * TI software development teams will submit their changes (bug fixes, new features, ... ) to the open source community: linux-omap for core platform, but also linux-usb or linux-audio, ...


 * Since TI is making Linux kernel releases at its own rate, and since it does not follow mainstream releases rate but rather customers requests, TI has created integration trees for OMAP3 and OMAP4 product lines. These trees are used to host TI Linux kernel software releases.


 * The following process has been put in place regarding TI integration trees:
 * each kernel feature, such as core platform, DSP Bridge, camera, ... is developed in a specific kernel tree, usually hosted at http://dev.omapzoom.org
 * some kernel features, like DSS2 are not maintained by TI
 * each so-called feature branch tree is regularly rebased from latest linux-omap tree. It is important to note that this is done using a git-rebase, as such every pending commits on each feature branch tree is regularly re-written.
 * for every new TI kernel release, all feature branch trees are merged together into the appropriate integration tree.
 * TI releases are made out of the integration tree. The branch master on these integration trees always contains the most recent integration release. For each TI kernel release:
 * the branch master is reset with latest linux-omap version
 * all feature branch trees are rebased on this version of linux-omap
 * all feature branch trees are merged into the master branch
 * a release tag is applied to keep track of all releases
 * each feature branch tree maintainer responsibilities are:
 * to submit their patches upstream to the relevant open source community, and track these patches until their final acceptance


 * The TI kernel integration trees are here: OMAP3 and OMAP4
 * Integration tree follows a monthly release cycle
 * Description of git trees hosted on dev.omapzoom.org

Management of kernel integration tree
For more information on how to maintain a kernel integration tree, please refer to Linux OMAP integration tree

Linux OMAP kernel on Android git repositories
Android project is also hosting a Linux OMAP kernel here. This Linux kernel is also considered as a downstream of mainline Linux kernel. The main difference between this tree and the linux-omap tree is that the Android OMAP tree is frozen on a specific version of the Linux kernel. It is currently based on v2.6.29. This tree is owned by Android engineers and includes contributions from linux-omap tree, TI software development teams, as well as many other open source partners.

Where to get the source code?
Based on the above discussions, there are various versions of Linux OMAP kernel that can be used: mainline Linux kernel, linux-omap tree, Android project or TI integration tree. You need to make sure you understand the various states of each project and pick the most appropriate one. In general you can use the following rules:
 * mainline Linux kernel is stable, but not the most up-to-date version
 * linux-omap is stable, and up-to-date for core platforms features and bug fixes. However some non linux-omap sub systems such as USB, audio, or display might not be up-to-date
 * TI integration tree is in general the most up-to-date version of the kernel for a TI platform since all necessary sub systems have been pre-integrated. Most of the patches in this tree will end up in linux-omap, then in mainline kernel at some point of time.
 * Android OMAP kernel should be used if you plan to work on Android for OMAP. Usually it is frozen on a given kernel release.

Building for Zoom2
Once you have downloaded the appropriate Linux kernel source code for your OMAP platform, such as:

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git

You can build the kernel for any supported platform. To build for Zoom2:

$ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap_zoom2_defconfig $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage

Note: uImage is an image format used by the u-boot bootloader, uImage is created by a tool called mkimage which is generated by u-boot. Make sure that you have mkimage</tt> in your $PATH</tt>. Check Bootloader_Project for more information.

Building Kernel Modules

$ make CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH= modules $ make CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH= modules_install

Building for Zoom36x
Kernel code can be obtained from OMAP3 git tree

The build instructions for kernel are the same except that the config to be used is omap_zoom3_defconfig

= Bridge ARM side driver =

This kernel project contains ARM side driver for the DSP (often called as MPU or ARM side Bridge) under driver/dsp/dspbridge. The user space Bridge components, DSP executables are available in the DSPBridge Project.

= Power Management =

Please see OMAP Power Management page on eLinux wiki.

= OMAP patch merging process = The merging process on the Linux-Omap tree is described here.

= How to submit patches =

OMAP platform linux mailing list [mailto:linux-omap@vger.kernel.org linux-omap@vger.kernel.org] can be used for patch submissions and discussions. Click here to subscribe to the list or/and get more information.

We recommend the use of git-format-patch</tt> and git-send-email</tt> to generate and submit patches.

More detailed information here: Releasing to Linux kernel using patches and emails

= OMAP3 (work in progress) =

Patches pending upstream submissions
1. Patches on linux-omap-sync tree under internal review

2. Patches sent to open source mailing lists

3. Patches planned for development

4. Ideas under consideration

Patches Accepted in open source mailing lists
Patches Accepted

Patches pending upstream submissions
Here are the Patches being done on 2.6.29 Android kernel not yet submitted

Patches Accepted in open source mailing lists
Accepted Patches

= OMAP4 (work in progress) = OMAP4430

 Patches merged in kernel.org prior to 2.6.33:

Patches merged in kernel.org

Patches recently accepted (merged in maintainer's trees):

1. omap4 updates for 2.6.34 http://permalink.gmane.org/gmane.linux.ports.arm.omap/31570

2. cache-l2x0 and omap4 l2 support http://www.mail-archive.com/linux-omap@vger.kernel.org/msg23315.html

Patches submitted, but not yet accepted:

1. Clock fixes http://www.mail-archive.com/linux-omap@vger.kernel.org/msg24542.html Abhijit Pagare (1): ARM: OMAP4 clock domain: Add check for avoiding dependency related update.

Rajendra Nayak (1): OMAP4: clock: Rename leaf clock nodes to end with a _ick or _fck

Santosh Shilimkar (2): OMAP4: clock: Add dummy clock nodes for interface clocks OMAP4: clock: Remove clock hacks from timer-gp.c

2. omap4: Add i2c board support for omap4 platform http://www.mail-archive.com/linux-omap@vger.kernel.org/msg23930.html

3. DMA descriptors http://marc.info/?l=linux-omap&m=125012097403050&w=2  OMAP4 Display 

1. OMAP4: Patches sent to open source mailing lists

2. OMAP4: Patches planned for development

3. OMAP4: Ideas under consideration

 OMAP4 PM 

1. HWMOD Schedule & Status

OMAP4 : Open Source Aligned Development Model
The git trees are hosted publicly by TI at dev.omapzoom.org

Each Feature Tree is based of linux-omap git tree.

Heads in each Feature Tree:

master --> //tracks linux-omap master

omap4_dev --> //this is the core patches for the feature for which the tree is intended

omap4_upstream --> //this is based of linus kernel.org latest and used for submitting to upstream

=Added Features on LO kernel= This section details on community efforts to enable USB keyboard and mouse and also HDMI on LO kernel.

= Tools & Debugging =

SystemTap
Systemtap is a tracing & probing tool to analyse Linux (particularly kernel) problems. Here are instructions on how to use it on OMAP.