1.About the document I am a newbie to linux kernel! But maybe some people need this,so ... 2.What did I do to "get places on the E2" ? The biggest difficulty is howto debug the kernel before it can print messeges on the screen or to UART.The MBM module has initiate the LCD,so I tried to get the start address of LCD framebuffer and then I can put strings onto LCD.(the address is got via a program that read some LCD controller registers,the address is:0xa0080000,that's why we will see random pixels when we boot kernel via boot_usb) Now we can track the kernel code step by step,by adding codes which can display useful information into the kernel.The kernel boot sequence: arch/arm/boot/compressed/head.S: start arch/arm/boot/compressed/head-xscale.S: * arch/arm/boot/compressed/head.S * arch/arm/boot/compressed/misc.c: decompress_kernel arch/arm/boot/compressed/head.S: call_kernel arch/arm/kernel/head.S: stext arch/arm/kernel/head-common.S: __lookup_processor_type __lookup_machine_type arch/arm/kernel/head.S: __create_page_tables arch/arm/mm/proc-xscale.S: __xscale_setup arch/arm/kernel/head.S: __enable_mmu arch/arm/kernel/head-common.S: __mmap_switched init/main.c: start_kernel arch/arm/kernel/setup.c: setup_arch kernel/sched.c: sched_init arch/arm/kernel/irq.c: init_IRQ init/main.c: rest_init Then "init" is excuted by rest_init. There are some crital codes to make the phone boots,you should read the ezx-core.patch in ezx7 or my r0 patch(it's very small,but enough to make E2 boots,maybe it's better for you if you want to make your NEW phone booting). 3.Notes on porting the driver Understand the driver from moto and get enough hardware information first! There are hardware differences between EZX phones,E2 have another UDC:ISP 1583,and use SSP SPI of PXA27x(A780/E680 use bit-bang spi).The spi driver has unneeded uncomplexity,the pxa2xx-spi driver in original 2.6 kernel is much simplier,PCAP has just 32 25-bits register,so it's much better than moto's driver.