/* linux/arch/arm/plat-s3c24xx/common-smdk.c * * Copyright (c) 2006 Simtec Electronics * Ben Dooks * * Common code for SMDK2410 and SMDK2440 boards * * http://www.fluff.org/ben/smdk2440/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* LED devices */ static struct s3c24xx_led_platdata smdk_pdata_led4 = { .gpio = S3C2410_GPF4, .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led4", .def_trigger = "timer", }; static struct s3c24xx_led_platdata smdk_pdata_led5 = { .gpio = S3C2410_GPF5, .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led5", .def_trigger = "nand-disk", }; static struct s3c24xx_led_platdata smdk_pdata_led6 = { .gpio = S3C2410_GPF6, .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led6", }; static struct s3c24xx_led_platdata smdk_pdata_led7 = { .gpio = S3C2410_GPF7, .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led7", }; static struct platform_device smdk_led4 = { .name = "s3c24xx_led", .id = 0, .dev = { .platform_data = &smdk_pdata_led4, }, }; static struct platform_device smdk_led5 = { .name = "s3c24xx_led", .id = 1, .dev = { .platform_data = &smdk_pdata_led5, }, }; static struct platform_device smdk_led6 = { .name = "s3c24xx_led", .id = 2, .dev = { .platform_data = &smdk_pdata_led6, }, }; static struct platform_device smdk_led7 = { .name = "s3c24xx_led", .id = 3, .dev = { .platform_data = &smdk_pdata_led7, }, }; /* NAND parititon from 2.4.18-swl5 */ // static struct mtd_partition smdk_default_nand_part[] = { // [0] = { // .name = "Boot Agent", // .size = SZ_16K, // .offset = 0, // }, // [1] = { // .name = "S3C2410 flash partition 1", // .offset = 0, // .size = SZ_2M, // }, // [2] = { // .name = "S3C2410 flash partition 2", // .offset = SZ_4M, // .size = SZ_4M, // }, // [3] = { // .name = "S3C2410 flash partition 3", // .offset = SZ_8M, // .size = SZ_2M, // }, // [4] = { // .name = "S3C2410 flash partition 4", // .offset = SZ_1M * 10, // .size = SZ_4M, // }, // [5] = { // .name = "S3C2410 flash partition 5", // .offset = SZ_1M * 14, // .size = SZ_1M * 10, // }, // [6] = { // .name = "S3C2410 flash partition 6", // .offset = SZ_1M * 24, // .size = SZ_1M * 24, // }, // [7] = { // .name = "S3C2410 flash partition 7", // .offset = SZ_1M * 48, // .size = SZ_16M, // } // }; /* ZhangHoujin Edited in 2020.06.29 */ static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "Bootloader", .size = 0x80000, .offset = 0, }, [1] = { .name = "Linux Kernel", .offset = 0x80000, .size = SZ_2M, }, [2] = { .name = "Root File System", .offset = 0x280000, .size = SZ_4M, }, [3] = { .name = "User Space", .offset = 0x680000, .size = 0x3980000, }, }; static struct s3c2410_nand_set smdk_nand_sets[] = { [0] = { .name = "NAND", .nr_chips = 1, .nr_partitions = ARRAY_SIZE(smdk_default_nand_part), .partitions = smdk_default_nand_part, }, }; /* choose a set of timings which should suit most 512Mbit * chips and beyond. */ static struct s3c2410_platform_nand smdk_nand_info = { .tacls = 20, .twrph0 = 60, .twrph1 = 20, .nr_sets = ARRAY_SIZE(smdk_nand_sets), .sets = smdk_nand_sets, }; /* devices we initialise */ static struct platform_device __initdata *smdk_devs[] = { &s3c_device_nand, &smdk_led4, &smdk_led5, &smdk_led6, &smdk_led7, }; void __init smdk_machine_init(void) { /* Configure the LEDs (even if we have no LED support)*/ s3c2410_gpio_cfgpin(S3C2410_GPF4, S3C2410_GPF4_OUTP); s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_OUTP); s3c2410_gpio_cfgpin(S3C2410_GPF6, S3C2410_GPF6_OUTP); s3c2410_gpio_cfgpin(S3C2410_GPF7, S3C2410_GPF7_OUTP); s3c2410_gpio_setpin(S3C2410_GPF4, 1); s3c2410_gpio_setpin(S3C2410_GPF5, 1); s3c2410_gpio_setpin(S3C2410_GPF6, 1); s3c2410_gpio_setpin(S3C2410_GPF7, 1); if (machine_is_smdk2443()) smdk_nand_info.twrph0 = 50; s3c_device_nand.dev.platform_data = &smdk_nand_info; platform_add_devices(smdk_devs, ARRAY_SIZE(smdk_devs)); s3c2410_pm_init(); }