I would like to know the possibilities of using the mainline kernel for our platform.
We have a platform with an IMX35 processor. It is a custom board, based on the MX35 3DS (v1.5), some differences:
- NOR flash
- FEC ethernet
and last but not least: the usage of pinning is different.
For now we use a kernel based on the SDK1_5 (2.6.26 kernel) from Freescale with our own patches (and bugfixes). For that we added to arch/arm/mach-mx35/ our board specific files (stored in our own svn repository).
We would like to update our kernel, for that we could merge our changes into the new SDK's from Freescale, but I prefer to use the mainline kernel with our changes in git (with which I have not more experience than 'git clone'). That leaves me a few questions:
1. do you think is it worth the effort to try the mainline kernel for our platform?
2. how do we store our board specific files in a local git?
3. how can we suggest bug fixes (we sent them to Freescale but without result)?
4. is the toolchain from Freescale with GCC 4.1 sufficient?
Thank you for your fast reply.
The chips we use are already defined (the board is in production, with an 2.6.26 kernel). For NOR flash we use Numonyx Strata P30 (32MB), which is surely supported by the kernel. The 'difficult' part is to make the BSP.
Unfortunately I can not request for commercial support, the interest in a newer kernel is not (yet) from within the company but personal interest to try and learn.
I asked about the toolchain because when I take a vanilla kernel and I load arch/arm/mx3_defconfig as config I got the following error on compilation:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- [...] LD arch/arm/plat-mxc/devices/built-in.o LD arch/arm/plat-mxc/built-in.o CC kernel/sched.o kernel/sched_idletask.c: In function 'pick_next_task_idle': /mnt/sandbox/Projects/MB2/linux-2.6/arch/arm/include/asm/atomic.h:42: error: impossible constraint in 'asm' make: *** [kernel/sched.o] Error 1 make: *** [kernel] Error 2
This error I get when compiling the 3.0, the 2.6.35 and the 2.6.39 kernel (with the standard arch/arm/mx3_defconfig config). What can cause the error?
This should be an easy target: MX35 is well supported in the mainline!
The pin differences are no problem at all - they just have to be specified when defining the board specific port in the kernel.
If you have your own changes separated nicely, it is no problem at all to port them to a recent kernel. I would suggest that you start with a recent kernel - 3.0 works quite fine on MX35.
Regarding your questions: