1.まず、今現在のmini2440ターゲットでビルド成功してるか確認してみる。
http://armlinux.simtec.co.uk/kautobuild/mini2440_defconfig.html
2.新Kernelについて話題の上がっているスレッドに
Mini2440用のパッチ1~11まで抜き出した添付ファイルがあるので眺めてみる。
http://www.friendlyarm.net/forum/topic/1094
(何箇所か重複してる箇所はあるので注意)
http://lkml.org/lkml/2010/11/8/121
http://lkml.org/lkml/2010/11/8/114
http://lkml.org/lkml/2010/11/8/106
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030950.html
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030848.html
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030861.html
---
0001-S3C-Add-a-flag-to-allow-leds-to-start-on.patch
0002-MINI2440-Enable-the-backlight-LED-earlier-at-boot-ti.patch
0003-920T-Use-specific-920t-mtune.patch
0004-S3C-Backported-the-s3c2410-touchscreen-from-openmoko.patch
0005-S3C-Backported-openmoko-s-touchscreen-filters.patch
0006-MINI2440-Updated-machine-defconfig-for-2.6.32.patch
0007-MINI2440-Added-missing-config-flag.patch
0008-MINI2440-Added-new-T35-QVGA-and-Innolux-5.6-VGA-TFTs.patch
0009-MINI2440-Rename-the-SoC-tty-names.patch
0010-MINI2440-Add-touchscreen-support.patch
0011-MINI2440-remove-__initdata-from-some-structs.patch
---
3.パッチ当て
http://www.kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.37-rc1
これを見る限りメインラインにもMini2440用パッチが何かしら入っているので、
1つずつ自分で当てていく。
・パッチメモ
マージする:1~3
(OpenMokoのライセンス知らないので)マージしない:4~5
パッチ済:7
マージする:8~11
4.ビルド
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ mini2440_defconfig $ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ menuconfig $ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ $ ~/emv/uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage uImage $ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-modules modules_install
Kernelイメージ作成完了。
確認したKernelバージョンは2.6.36、2.6.37-rc1
-----
追記
2.6.37RC2が出たので早速ビルド。
細かいパッチはタッチパネル以外
1~3、9、11と、メインラインに報告済みパッチを当てた。
当たっていないパッチは4~6,10で6はdefconfigなのであまり気にしなくておk。
今回あてたパッチ内容はこんな感じ。
・T35液晶と5.6インチ液晶対応
・起動時バックライトON
・シリアルコンソールのデバイス名変更(ttySAC)
・__initdataの削除
(タッチパネル対応パッチは除いてある)
diff -crN ./linux-2.6.37-rc2-orig/arch/arm/Makefile ./linux-2.6.37-rc2/arch/arm/Makefile *** ./linux-2.6.37-rc2-orig/arch/arm/Makefile 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/arch/arm/Makefile 2010-11-16 23:52:28.904009998 -0800 *************** *** 78,84 **** tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi) ! tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi --- 78,84 ---- tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi) ! tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm920t tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi diff -crN ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2410/include/mach/leds-gpio.h ./linux-2.6.37-rc2/arch/arm/mach-s3c2410/include/mach/leds-gpio.h *** ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2410/include/mach/leds-gpio.h 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/arch/arm/mach-s3c2410/include/mach/leds-gpio.h 2010-11-16 23:58:02.868010000 -0800 *************** *** 16,21 **** --- 16,22 ---- #define S3C24XX_LEDF_ACTLOW (1<<0) /* LED is on when GPIO low */ #define S3C24XX_LEDF_TRISTATE (1<<1) /* tristate to turn off */ + #define S3C24XX_LEDF_STARTON (1<<2) /* Initialise 'on' */ struct s3c24xx_led_platdata { unsigned int gpio; diff -crN ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2440/mach-mini2440.c ./linux-2.6.37-rc2/arch/arm/mach-s3c2440/mach-mini2440.c *** ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2440/mach-mini2440.c 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/arch/arm/mach-s3c2440/mach-mini2440.c 2010-11-17 02:01:55.304009999 -0800 *************** *** 47,52 **** --- 47,53 ---- #include <plat/iic.h> #include <plat/mci.h> #include <plat/udc.h> + #include <plat/ts.h> #include <linux/mtd/mtd.h> #include <linux/mtd/nand.h> *************** *** 62,68 **** #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) ! static struct map_desc mini2440_iodesc[] __initdata = { /* nothing to declare, move along */ }; --- 63,69 ---- #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) ! static struct map_desc mini2440_iodesc[] = { /* nothing to declare, move along */ }; *************** *** 71,77 **** #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE ! static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = { [0] = { .hwport = 0, .flags = 0, --- 72,78 ---- #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE ! static struct s3c2410_uartcfg mini2440_uartcfgs[] = { [0] = { .hwport = 0, .flags = 0, *************** *** 115,121 **** } } ! static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = { .udc_command = mini2440_udc_pullup, }; --- 116,122 ---- } } ! static struct s3c2410_udc_mach_info mini2440_udc_cfg = { .udc_command = mini2440_udc_pullup, }; *************** *** 185,190 **** --- 186,215 ---- .lcdcon5 = (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_HWSWP), }, + [3] = { /* mini2440 + 3.5" TFT + TS -- New model as Nov 2009 "T35" */ + _LCD_DECLARE( + 7, /* The 3.5 is quite fast */ + 240, 21, 25, 6, /* x timing */ + 320, 2, 4, 2, /* y timing */ + 40), /* refresh rate */ + .lcdcon5 = (S3C2410_LCDCON5_FRM565 | + S3C2410_LCDCON5_INVVLINE | + S3C2410_LCDCON5_INVVFRAME | + S3C2410_LCDCON5_INVVDEN | + S3C2410_LCDCON5_PWREN), + }, + [4] = { /* mini2440 + 5.6" TFT + touchscreen -- Innolux AT056TN52 */ + /* be sure the "power" jumper is set accordingly ! */ + _LCD_DECLARE( + 10, /* the 5.3" runs slower */ + 640, 41, 68, 22, /* x timing */ + 480, 26, 6, 2, /* y timing */ + 40), /* refresh rate */ + .lcdcon5 = (S3C2410_LCDCON5_FRM565 | + S3C2410_LCDCON5_INVVLINE | + S3C2410_LCDCON5_INVVFRAME | + S3C2410_LCDCON5_PWREN), + }, }; /* todo - put into gpio header */ *************** *** 234,240 **** /* MMC/SD */ ! static struct s3c24xx_mci_pdata mini2440_mmc_cfg __initdata = { .gpio_detect = S3C2410_GPG(8), .gpio_wprotect = S3C2410_GPH(8), .set_power = NULL, --- 259,265 ---- /* MMC/SD */ ! static struct s3c24xx_mci_pdata mini2440_mmc_cfg = { .gpio_detect = S3C2410_GPG(8), .gpio_wprotect = S3C2410_GPH(8), .set_power = NULL, *************** *** 243,249 **** /* NAND Flash on MINI2440 board */ ! static struct mtd_partition mini2440_default_nand_part[] __initdata = { [0] = { .name = "u-boot", .size = SZ_256K, --- 268,274 ---- /* NAND Flash on MINI2440 board */ ! static struct mtd_partition mini2440_default_nand_part[] = { [0] = { .name = "u-boot", .size = SZ_256K, *************** *** 268,274 **** }, }; ! static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = { [0] = { .name = "nand", .nr_chips = 1, --- 293,299 ---- }, }; ! static struct s3c2410_nand_set mini2440_nand_sets[] = { [0] = { .name = "nand", .nr_chips = 1, *************** *** 431,436 **** --- 456,462 ---- static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = { .name = "backlight", .gpio = S3C2410_GPG(4), + .flags = S3C24XX_LEDF_STARTON, .def_trigger = "backlight", }; *************** *** 499,512 **** .page_size = 16, }; ! static struct i2c_board_info mini2440_i2c_devs[] __initdata = { { I2C_BOARD_INFO("24c08", 0x50), .platform_data = &at24c08, }, }; ! static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_wdt, &s3c_device_i2c0, --- 525,543 ---- .page_size = 16, }; ! static struct i2c_board_info mini2440_i2c_devs[] = { { I2C_BOARD_INFO("24c08", 0x50), .platform_data = &at24c08, }, }; ! static struct s3c2410_ts_mach_info mini2440_ts_cfg = { ! .delay = 10000, ! .presc = 0xff, /* slow as we can go */ ! }; ! ! static struct platform_device *mini2440_devices[] = { &s3c_device_ohci, &s3c_device_wdt, &s3c_device_i2c0, *************** *** 522,527 **** --- 553,559 ---- &s3c_device_sdi, &s3c_device_iis, &mini2440_audio, + &s3c_device_adc, }; static void __init mini2440_map_io(void) *************** *** 605,612 **** features->done |= FEATURE_BACKLIGHT; break; case 't': ! printk(KERN_INFO "MINI2440: '%c' ignored, " ! "touchscreen not compiled in\n", f); break; case 'c': if (features->done & FEATURE_CAMERA) --- 637,649 ---- features->done |= FEATURE_BACKLIGHT; break; case 't': ! if (features->done & FEATURE_TOUCH) ! printk(KERN_INFO "MINI2440: '%c' ignored, " ! "touchscreen already set\n", f); ! else ! features->optional[features->count++] = ! &s3c_device_ts; ! features->done |= FEATURE_TOUCH; break; case 'c': if (features->done & FEATURE_CAMERA) *************** *** 677,682 **** --- 714,720 ---- s3c24xx_mci_set_platdata(&mini2440_mmc_cfg); s3c_nand_set_platdata(&mini2440_nand_info); s3c_i2c0_set_platdata(NULL); + s3c24xx_ts_set_platdata(&mini2440_ts_cfg); i2c_register_board_info(0, mini2440_i2c_devs, ARRAY_SIZE(mini2440_i2c_devs)); diff -crN ./linux-2.6.37-rc2-orig/drivers/leds/leds-s3c24xx.c ./linux-2.6.37-rc2/drivers/leds/leds-s3c24xx.c *** ./linux-2.6.37-rc2-orig/drivers/leds/leds-s3c24xx.c 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/drivers/leds/leds-s3c24xx.c 2010-11-16 23:51:47.716010000 -0800 *************** *** 85,90 **** --- 85,91 ---- led->cdev.default_trigger = pdata->def_trigger; led->cdev.name = pdata->name; led->cdev.flags |= LED_CORE_SUSPENDRESUME; + led->cdev.brightness = pdata->flags & S3C24XX_LEDF_STARTON ? 1 : 0; led->pdata = pdata; *************** *** 95,101 **** s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_INPUT); } else { s3c2410_gpio_pullup(pdata->gpio, 0); ! s3c2410_gpio_setpin(pdata->gpio, 0); s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_OUTPUT); } --- 96,103 ---- s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_INPUT); } else { s3c2410_gpio_pullup(pdata->gpio, 0); ! /* backlight led needs to be turned on early on */ ! s3c2410_gpio_setpin(pdata->gpio, led->cdev.brightness); s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_OUTPUT); } diff -crN ./linux-2.6.37-rc2-orig/drivers/serial/samsung.c ./linux-2.6.37-rc2/drivers/serial/samsung.c *** ./linux-2.6.37-rc2-orig/drivers/serial/samsung.c 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/drivers/serial/samsung.c 2010-11-17 01:54:39.248009997 -0800 *************** *** 883,889 **** static struct uart_driver s3c24xx_uart_drv = { .owner = THIS_MODULE, ! .dev_name = "s3c2410_serial", .nr = CONFIG_SERIAL_SAMSUNG_UARTS, .cons = S3C24XX_SERIAL_CONSOLE, .driver_name = S3C24XX_SERIAL_NAME, --- 883,889 ---- static struct uart_driver s3c24xx_uart_drv = { .owner = THIS_MODULE, ! .dev_name = S3C24XX_SERIAL_NAME, .nr = CONFIG_SERIAL_SAMSUNG_UARTS, .cons = S3C24XX_SERIAL_CONSOLE, .driver_name = S3C24XX_SERIAL_NAME, diff -crN ./linux-2.6.37-rc2-orig/sound/soc/s3c24xx/Kconfig ./linux-2.6.37-rc2/sound/soc/s3c24xx/Kconfig *** ./linux-2.6.37-rc2-orig/sound/soc/s3c24xx/Kconfig 2010-11-15 18:31:02.000000000 -0800 --- ./linux-2.6.37-rc2/sound/soc/s3c24xx/Kconfig 2010-11-16 17:32:14.572010082 -0800 *************** *** 2,7 **** --- 2,8 ---- tristate "SoC Audio for the Samsung S3CXXXX chips" depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210 select S3C64XX_DMA if ARCH_S3C64XX + select S3C2410_DMA if ARCH_S3C2410 help Say Y or M if you want to add support for codecs attached to the S3C24XX AC97 or I2S interfaces. You will also need to
0 件のコメント:
コメントを投稿