Linux Kernel 2.6.35.y
From IGEP - ISEE Wiki
Contents
These series are EOL, move to a newer version of the Linux Kernel. Read the Linux Kernel 2.6.37.y page. |
Introduction
The currently supported machines are as follows:
- IGEP0020
- IGEP0030
- IGEP0032
The currently supported expansion boards are as follows:
- IGEP0022
- BASE0010 (Rev. A & Rev. B)
Binaries: latest stable kernel version is: 2.6.35.13-5 (20110927)
Platform | Sources | uImage binary | zImage binary | Modules binaries |
---|---|---|---|---|
IGEP00x0 | 2.6.35.13-5 (md5sum) | uImage-2.6.35.13-5.bin (md5sum) | zImage-2.6.35.13-5.bin (md5sum) | modules-2.6.35.13-5 (md5sum) |
Build kernel from sources
Download the latest stable version sources and follow next steps:
wget http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.35.13-5/linux-omap-2.6.35.13-5.tar.gz tar xzf linux-omap-2.6.35.tar.gz cd [kernel version]
A generic configuration is provided for all IGEP machines, and can be used as the default by
make ARCH=arm CROSS_COMPILE=[your cross compiler] igep00x0_defconfig
Then build the kernel with:
make ARCH=arm CROSS_COMPILE=[your cross compiler] uImage zImage modules
The result will be an uImage file in arch/arm/boot directory. You can install the kernel modules to your target rootfs
make ARCH=arm CROSS_COMPILE=[your cross compiler] modules_install INSTALL_MOD_PATH=[path to your target rootfs]
Kernel Parameters
This chapter describes some kernel command line parameters you can pass to the kernel during system startup. They also depend on the presence of the hardware with which they are associated.
The board.ei485 parameter allows to use UART1 as RS232 port instead of EI485
board.ei485= [yes, no] Format: <string> no: disable ei485, use UART1 as RS232, supported by igep0020 default: yes
The buddy parameter allows enable or disable expansion boards
buddy= [igep0022, base0010] Format: <string> igep0022: enable expansion board, supported by igep0020 board base0010: enable expansion board, supported by igep0030 board and igep0032 (only rev. B) default: none
The buddy.revision parameter allows to pass hardware revision for buddy boards
buddy.revision= [A, B] Format: <string> A: enable hardware buddy revision A, only available for base0010 B: enable hardware buddy revision B, only available for base0010 default: A
The buddy.modem parameter allows enable or disable modem
buddy.modem= [yes] Format: <string> yes: enable modem on buddy board, supported by igep0022 expansion board. default: none
Scenarios
Consider the following situations:
Scenario A. You have and IGEP0020 board plus IGEP0022 expansion board, then you should add in your kernel command line
buddy=igep0022
Optionally, to enable the IGEP0022 modem which is disabled by default you should add in your kernel command line
buddy=igep0022 buddy.modem=yes
NOTE: UART2 can be used for bluetooth OR modem in expansion board but NOT at same time. They are INCOMPATIBLE.
Scenario B. You have and IGEP0030 board plus BASE0010 expansion board, then you should add in your kernel command line
buddy=base0010
Scenario C. You have and IGEP0030 board plus BASE0010 Rev. B expansion board, then you should add in your kernel command line
buddy=base0010 buddy.revision=B
Scenario D. You have and IGEP0032 board plus BASE0010 Rev. B expansion board, then you should add in your kernel command line
buddy=base0010 buddy.revision=B
Layout
Machine specific files are located in arch/arm/mach-omap2/ directory with name board-igep*.c. Like :
- board-igep0020.c : For IGEP0020 machine
- board-igep0030.c : For IGEP0030 machine
- board-igep0032.c : For IGEP0032 machine
Expansion board files, also are located in arch/arm/mach-omap2/ directory with name exp-*.c. Like :
- exp-igep0022.c : For IGEP0022 expansion board
- exp-base0010.c : For BASE0010 expansion board
Adding New Expansion Boards
This chapter is meant to be a starting point for people to learn how to add your own expansion board in three steps.
Step 1: Add new expansion board file
As you can see in Layout chapter, an expansion board is called exp-<your board name>.c and should be located in arch/arm/mach-omap2 directory, so the first step will be add a new file for your new expansion board. Following example creates a new expansion board file called exp-dummy.c (arch/arm/mach-omap2/exp-dummy.c)
#include <linux/kernel.h> #include <linux/init.h> void __init dummy_init(void) { pr_info("Initializing expansion board ... \n"); }
next, add the new file to be built
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 7505be9..a6572f2 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -156,6 +156,7 @@ obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o \ obj-$(CONFIG_MACH_IGEP0030) += board-igep0030.o \ board-igep00x0.o \ exp-base0010.o \ + exp-dummy.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o \ hsmmc.o
Step 2: Register new expansion board
Now, edit board-igep00x0.h and add an identifier for the new expansion board, for example,
diff --git a/arch/arm/mach-omap2/board-igep00x0.h b/arch/arm/mach-omap2/board-igep00x0.h index 6b9b677..a2325d7 100644 --- a/arch/arm/mach-omap2/board-igep00x0.h +++ b/arch/arm/mach-omap2/board-igep00x0.h @@ -15,6 +15,7 @@ #define IGEP00X0_BUDDY_NONE 0x01 #define IGEP00X0_BUDDY_IGEP0022 0x01 #define IGEP00X0_BUDDY_BASE0010 0x02 +#define IGEP00X0_BUDDY_DUMMY 0x03 #define IGEP00X0_BUDDY_HWREV_A (1 << 0) #define IGEP00X0_BUDDY_HWREV_B (1 << 1)
also, edit in board-igep00x0.c the buddy_early_param to add the new expansion board,
diff --git a/arch/arm/mach-omap2/board-igep00x0.c b/arch/arm/mach-omap2/board-igep00x0.c index 2a2d8eb..f2b5b27 100644 --- a/arch/arm/mach-omap2/board-igep00x0.c +++ b/arch/arm/mach-omap2/board-igep00x0.c @@ -192,6 +192,9 @@ static int __init buddy_early_param(char *str) if (!strcmp(name, "base0010")) { igep00x0_buddy_pdata.model = IGEP00X0_BUDDY_BASE0010; pr_info("IGEP: IGEP0030 machine + BASE0010 (buddy)\n"); + } else if (!strcmp(name, "dummy")) { + igep00x0_buddy_pdata.model = IGEP00X0_BUDDY_DUMMY; + pr_info("IGEP: IGEP0030 machine + DUMMY (buddy)\n"); } else pr_err("IGEP: Unknown buddy for IGEP0030 machine\n"); }
Step 3: Run expansion board initialization
Finally, modify the machine file and add support for the new expansion board, for example:
diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c index 2b97257..44b319d 100644 --- a/arch/arm/mach-omap2/board-igep0030.c +++ b/arch/arm/mach-omap2/board-igep0030.c @@ -204,6 +204,8 @@ static struct omap_board_mux board_mux[] __initdata = { /* Expansion board: BASE0010 */ extern void __init base0010_init(struct twl4030_platform_data *pdata); +/* Expansion board: DUMMY */ +extern void __init dummy_init(void); static void __init igep0030_init(void) { @@ -223,6 +225,10 @@ static void __init igep0030_init(void) /* - BASE0010 (adds twl4030_pdata) */ if (igep00x0_buddy_pdata.model == IGEP00X0_BUDDY_BASE0010) base0010_init(&twl4030_pdata); + /* - DUMMY */ + if (igep00x0_buddy_pdata.model == IGEP00X0_BUDDY_DUMMY) + dummy_init(); + /* Add twl4030 common data */ omap3_pmic_get_config(&twl4030_pdata, TWL_COMMON_PDATA_USB |
Changelog
- 2011-09-27 Release 2.6.35.13-5
- Fix mux handling for UART2
- Add support for IGEP0032 COM
- Support for BASE0010 Rev. B
- 2011-09-12 Release 2.6.35.13-4
- Fix MCP251X initialitzation.
- Fix various build problems when a CONFIG option is not selected
- Fix mux when using board.ei485 kernel parameter
- 2011-08-29 Release 2.6.35.13-3
- Fix buddy initialization.
- Add Invertra dma workaround for DM3730
- 2011-07-28 Release 2.6.35.13-2
- Major rework to support IGEP boards and expansion boards
- Add support for hardware rev. E for IGEP0030
- Add support for OMAP3 ISP
- Fix musb issue, set has_tt flag
- Use IGEP x-loader partition scheme
- 2011-05-26 Release 2.6.35.13-1
- Fix failed to setup omapfb
- Add support for expansion board BASE0010
- Rename expansion boards to exp-<expansion name>.c
- 2011-05-02 Release 2.6.35.13-0
- Rebased with longterm/linux-2.6.35.y (2.6.35.13)
- 2011-04-08 Release 2.6.35.12-0
- Rebased with longterm/linux-2.6.35.y (2.6.35.12)
- 2011-03-08 Release 2.6.35.11-0
- Rebased with longterm/linux-2.6.35.y (2.6.35.11)
- Fix conflict between bluetooth and modem
- Fix missing omap_reserve functionality in IGEP module
- Fix IRQ for MCP251x driver
- 2011-01-17 Release 2.6.35.10-0
- Rebased with longterm/linux-2.6.35.y (2.6.35.10)
- Add MADC driver
- Add TIDSPBRIDGE driver
- Fix MCSPI, disable channel after TX_ONLY transfer in PIO mode
- 2010-11-23 Release 2.6.35.9-0
- Rebased with stable/2.6.35.9
- Add IGEP0022 expansion support by default
- Add EHCI support on OMAP3 IGEP module.
- Fix modem GPIO for IGEP v2 expansion board
- 2010-11-05 Release 2.6.35.8-0
- Rebased with stable/2.6.35.8
- Fix libertas driver with SDIO IRQ
- 2010-10-28 Release 2.6.35.7-1
- Add support for SDIO IRQ
- Fix onenand bufferram management
- Improve IGEP0020 expansion board support
- Add support for 4.3 inch and 7.0 inch display panels
- Fix CAN probe oops
- 2010-10-19 Release 2.6.35.7-0
- First release for 2.6.35 series