On Sun, Dec 12, 2010 at 5:41 AM, Arnd Bergmann arnd@arndb.de wrote:
Following a discussion we had on the Freescale BSP, I started a tree at http://git.linaro.org/gitweb?p=people/arnd/imx.git%3Ba=summary that has the same contents as the tree on the freescale git server, but splits them into six branches at this time, though the number should increase.
And in addition to Arnd's great analysis, by looking at the statistics of the differences as a whole based on each directory, here are some more insights:
NOTE: FSL's latest imx_2.6.35_10.10.01 release is based on v2.6.35.3.
1. arch/arm
$> git diff --shortstat v2.6.35.3.. arch/arm
378 files changed, 140310 insertions(+), 1969 deletions(-)
However, not all of these changes are i.MX 51 or i.MX 53 based,
$> git diff --dirstat v2.6.35.3.. arch/arm
10.2% arch/arm/configs/ 5.6% arch/arm/mach-mx23/include/mach/ 8.3% arch/arm/mach-mx23/ 5.2% arch/arm/mach-mx25/ 5.4% arch/arm/mach-mx28/include/mach/ 11.4% arch/arm/mach-mx28/ 5.6% arch/arm/mach-mx3/ 21.3% arch/arm/mach-mx5/ 10.7% arch/arm/plat-mxc/include/mach/ 3.9% arch/arm/plat-mxc/sdma/iapi/ 5.6% arch/arm/plat-mxc/ 6.0% arch/arm/plat-mxs/
Excluding arch/arm/configs, which we need to sort out a bit for a more structural Kconfig scheme
- the i.MX 5 related changes are basically:
arch/arm/mach-mx5/ 53 files changed, 31554 insertions(+), 1221 deletions(-) arch/arm/plat-mxc/ 109 files changed, 26618 insertions(+), 381 deletions(-)
- The number of total of patches involved in the above changes is 132:
$> git log --pretty=oneline 6d23f50.. arch/arm/mach-mx5 arch/arm/plat-mxc | wc -l 132
- Of all the changes to arch/arm/mach-mx5 and arch/arm/plat-mxc, some are more significant, esp. the files below:
arch/arm/mach-mx5/clock.c | 5098 ++ arch/arm/mach-mx5/clock_mx50.c | 3435 ++ arch/arm/plat-mxc/include/mach/pmic_audio.h | 2315 + arch/arm/plat-mxc/include/mach/pmic_convity.h | 873 + arch/arm/plat-mxc/include/mach/pmic_power.h | 1358 + arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c | 2750 + arch/arm/plat-mxc/sdma/sdma.c | 1551 +
However, the changes above are mostly trivial definitions.
- The change to generic ARM architecture code is actually not much, excluding those SoC specific, here's the summary:
arch/arm/Kconfig | 39 +- arch/arm/Makefile | 3 + arch/arm/boot/compressed/Makefile | 1 + arch/arm/boot/compressed/head.S | 53 + arch/arm/kernel/head.S | 31 +- arch/arm/kernel/setup.c | 10 +- arch/arm/mm/cache-l2x0.c | 34 + arch/arm/mm/proc-v6.S | 16 + arch/arm/tools/mach-types | 161 +-
The changes to above are relatively trivial, including an early patch of dynamic PHYS_OFFSET offset (not yet merged in mainline), Catalin's patch of partial low interrupt latency mode for ARM1136, enabling/disabling of L2 cache, and the change to mach-types as always.
- As a result, the components need love are highlighted below, some of the code should have already been merged since Amit pushed the first base port of i.MX 51:
* bus_freq.c [1] * clocks and devices * DMA * USB * SDMA
[1] it seems to be a workaround of having the bus frequency stays somewhere before suspend
For the peripheral driver specific changes, a preliminary scan resulted in a list of the drivers below:
- crypto driver (DCP) - PATA driver - Random Number Generator - One-Time-Programming Fuse - SIM controller - Internal Memory (IIM) - I2C master/slave - Keypad - Power Management IC (MC13892 and else?) - Camera Capture - OPL (An in-kernel software rotation library?) - IPU Post-Processing Unit - MMC - NAND - ADC - CAN Bus - Ethernet - InfraRed - RTC - UART (should have been supported already in mainline) - USB Host/Gadget/OTG - Framebuffer - EPD (E-Ink controller) ?? - Audio controller (AC97/SSI)
As Arnd has pointed out, the drivers/mxc/* directory contains those code that is very freescale specific and needs special love to get them into individual drivers, including the GPU driver.
And some of the drivers have two versions, one FSL version and one mainline version, we need to figure out and fill the gaps.
For those off-chip/on-board peripherals, below drivers need love:
- Si4702 (FM radio), there is driver already there supporting this in drivers/media/radio/si470x/ - hwmon (isl29003, max17135, mma7450) - MC9S08DZ60 Keypad module - MPR084 Touch Sensor Keypad module - TSC2007 (there is already support in upstream) - Various audio codecs
The off-chip peripherals are not necessary part of Freescale code , but needs to be there in our kernel for a complete support of the boards.