Hi there. X35 screen of mini2440 seems not to be supported by default kernel, so we have to re-built it by our own. This article I will show the way to build Android Kernel for mini2440 which has X35 screen.
I suppose your Android Kernel is in directory "/usr/local/android/kernel"
1. # cd /usr/local/android/kernel
# cd drivers/video/
# gedit Kconfig
Start from the line 1896, change those lines:
choice
prompt "LCD select"
depends on FB_S3C2410
help
S3C24x0 LCD size select
config FB_S3C2410_T240320
boolean "3.5 inch 240X320 Toppoly LCD"
depends on FB_S3C2410
help
3.5 inch 240X320 Toppoly LCD
-----into------>>>
choice
prompt "LCD select"
depends on FB_S3C2410
help
S3C24x0 LCD size select
config FB_S3C2410_X240320
boolean "3.5 inch 240X320 SONY LCD"
depends on FB_S3C2410
help
3.5 inch 240x320 SONY LCD
Save and then close the file, we continue with the following file:
2. # cd /usr/local/android/kernel/arch/arm/mach-s3c2440/
# gedit mach-mini2440.c
From the line 169
Replace those lines:
#elif defined(CONFIG_FB_S3C2410_T240320)
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
#define LCD_PIXCLOCK 170000
#define LCD_RIGHT_MARGIN 68
#define LCD_LEFT_MARGIN 4
#define LCD_HSYNC_LEN 5
#define LCD_UPPER_MARGIN 10
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 1
------by----->>>
#elif defined(CONFIG_FB_S3C2410_X240320)
#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000
#define LCD_RIGHT_MARGIN 25
#define LCD_LEFT_MARGIN 0
#define LCD_HSYNC_LEN 4
#define LCD_UPPER_MARGIN 0
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 9
#define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVDEN | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVCLK | S3C2410_LCDCON5_HWSWP | S3C2410_LCDCON5_PWREN)
Save it and contiue:
3. # cd /usr/local/android/kernel/arch/arm/mach-s3c2440/
# gedit mach-mini2440.c
Replace this (starting from the line 322)
static void __init smdk2440_machine_init(void)
{
//s3c24xx_fb_set_platdata(&smdk2440_fb_info);
#if defined (LCD_WIDTH)
s3c24xx_fb_set_platdata(&mini2440_fb_info);
#endif
platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
smdk_machine_init();
}
------by------>>>
static void __init smdk2440_machine_init(void)
{
//s3c24xx_fb_set_platdata(&smdk2440_fb_info);
#if defined (LCD_WIDTH)
s3c24xx_fb_set_platdata(&mini2440_fb_info);
#endif
platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
s3c2410_gpio_cfgpin(S3C2410_GPG4, S3C2410_GPG4_OUTP);
s3c2410_gpio_setpin(S3C2410_GPG4, 1);
smdk_machine_init();
}
Ok, now build the kernel android as normally, the kernel will work with x35 screen. For more information of building Android kernel, please refer here (at section 2). If you need Android Kernel of X35 screen now, please download kernel which already had cross-compiled by myself at here
0 Comments: