root/arch/arm/mach-s3c24xx/common-smdk.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. smdk_machine_init

   1 // SPDX-License-Identifier: GPL-2.0
   2 //
   3 // Copyright (c) 2006 Simtec Electronics
   4 //      Ben Dooks <ben@simtec.co.uk>
   5 //
   6 // Common code for SMDK2410 and SMDK2440 boards
   7 //
   8 // http://www.fluff.org/ben/smdk2440/
   9 
  10 #include <linux/kernel.h>
  11 #include <linux/types.h>
  12 #include <linux/interrupt.h>
  13 #include <linux/list.h>
  14 #include <linux/timer.h>
  15 #include <linux/init.h>
  16 #include <linux/gpio.h>
  17 #include <linux/device.h>
  18 #include <linux/platform_device.h>
  19 
  20 #include <linux/mtd/mtd.h>
  21 #include <linux/mtd/rawnand.h>
  22 #include <linux/mtd/nand_ecc.h>
  23 #include <linux/mtd/partitions.h>
  24 #include <linux/io.h>
  25 
  26 #include <asm/mach/arch.h>
  27 #include <asm/mach/map.h>
  28 #include <asm/mach/irq.h>
  29 
  30 #include <asm/mach-types.h>
  31 #include <mach/hardware.h>
  32 #include <asm/irq.h>
  33 
  34 #include <mach/regs-gpio.h>
  35 #include <mach/gpio-samsung.h>
  36 #include <linux/platform_data/leds-s3c24xx.h>
  37 #include <linux/platform_data/mtd-nand-s3c2410.h>
  38 
  39 #include <plat/gpio-cfg.h>
  40 #include <plat/devs.h>
  41 #include <plat/pm.h>
  42 
  43 #include "common-smdk.h"
  44 
  45 /* LED devices */
  46 
  47 static struct s3c24xx_led_platdata smdk_pdata_led4 = {
  48         .gpio           = S3C2410_GPF(4),
  49         .flags          = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
  50         .name           = "led4",
  51         .def_trigger    = "timer",
  52 };
  53 
  54 static struct s3c24xx_led_platdata smdk_pdata_led5 = {
  55         .gpio           = S3C2410_GPF(5),
  56         .flags          = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
  57         .name           = "led5",
  58         .def_trigger    = "nand-disk",
  59 };
  60 
  61 static struct s3c24xx_led_platdata smdk_pdata_led6 = {
  62         .gpio           = S3C2410_GPF(6),
  63         .flags          = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
  64         .name           = "led6",
  65 };
  66 
  67 static struct s3c24xx_led_platdata smdk_pdata_led7 = {
  68         .gpio           = S3C2410_GPF(7),
  69         .flags          = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
  70         .name           = "led7",
  71 };
  72 
  73 static struct platform_device smdk_led4 = {
  74         .name           = "s3c24xx_led",
  75         .id             = 0,
  76         .dev            = {
  77                 .platform_data = &smdk_pdata_led4,
  78         },
  79 };
  80 
  81 static struct platform_device smdk_led5 = {
  82         .name           = "s3c24xx_led",
  83         .id             = 1,
  84         .dev            = {
  85                 .platform_data = &smdk_pdata_led5,
  86         },
  87 };
  88 
  89 static struct platform_device smdk_led6 = {
  90         .name           = "s3c24xx_led",
  91         .id             = 2,
  92         .dev            = {
  93                 .platform_data = &smdk_pdata_led6,
  94         },
  95 };
  96 
  97 static struct platform_device smdk_led7 = {
  98         .name           = "s3c24xx_led",
  99         .id             = 3,
 100         .dev            = {
 101                 .platform_data = &smdk_pdata_led7,
 102         },
 103 };
 104 
 105 /* NAND parititon from 2.4.18-swl5 */
 106 
 107 static struct mtd_partition smdk_default_nand_part[] = {
 108         [0] = {
 109                 .name   = "Boot Agent",
 110                 .size   = SZ_16K,
 111                 .offset = 0,
 112         },
 113         [1] = {
 114                 .name   = "S3C2410 flash partition 1",
 115                 .offset = 0,
 116                 .size   = SZ_2M,
 117         },
 118         [2] = {
 119                 .name   = "S3C2410 flash partition 2",
 120                 .offset = SZ_4M,
 121                 .size   = SZ_4M,
 122         },
 123         [3] = {
 124                 .name   = "S3C2410 flash partition 3",
 125                 .offset = SZ_8M,
 126                 .size   = SZ_2M,
 127         },
 128         [4] = {
 129                 .name   = "S3C2410 flash partition 4",
 130                 .offset = SZ_1M * 10,
 131                 .size   = SZ_4M,
 132         },
 133         [5] = {
 134                 .name   = "S3C2410 flash partition 5",
 135                 .offset = SZ_1M * 14,
 136                 .size   = SZ_1M * 10,
 137         },
 138         [6] = {
 139                 .name   = "S3C2410 flash partition 6",
 140                 .offset = SZ_1M * 24,
 141                 .size   = SZ_1M * 24,
 142         },
 143         [7] = {
 144                 .name   = "S3C2410 flash partition 7",
 145                 .offset = SZ_1M * 48,
 146                 .size   = MTDPART_SIZ_FULL,
 147         }
 148 };
 149 
 150 static struct s3c2410_nand_set smdk_nand_sets[] = {
 151         [0] = {
 152                 .name           = "NAND",
 153                 .nr_chips       = 1,
 154                 .nr_partitions  = ARRAY_SIZE(smdk_default_nand_part),
 155                 .partitions     = smdk_default_nand_part,
 156         },
 157 };
 158 
 159 /* choose a set of timings which should suit most 512Mbit
 160  * chips and beyond.
 161 */
 162 
 163 static struct s3c2410_platform_nand smdk_nand_info = {
 164         .tacls          = 20,
 165         .twrph0         = 60,
 166         .twrph1         = 20,
 167         .nr_sets        = ARRAY_SIZE(smdk_nand_sets),
 168         .sets           = smdk_nand_sets,
 169         .ecc_mode       = NAND_ECC_SOFT,
 170 };
 171 
 172 /* devices we initialise */
 173 
 174 static struct platform_device __initdata *smdk_devs[] = {
 175         &s3c_device_nand,
 176         &smdk_led4,
 177         &smdk_led5,
 178         &smdk_led6,
 179         &smdk_led7,
 180 };
 181 
 182 static const struct gpio smdk_led_gpios[] = {
 183         { S3C2410_GPF(4), GPIOF_OUT_INIT_HIGH, NULL },
 184         { S3C2410_GPF(5), GPIOF_OUT_INIT_HIGH, NULL },
 185         { S3C2410_GPF(6), GPIOF_OUT_INIT_HIGH, NULL },
 186         { S3C2410_GPF(7), GPIOF_OUT_INIT_HIGH, NULL },
 187 };
 188 
 189 void __init smdk_machine_init(void)
 190 {
 191         /* Configure the LEDs (even if we have no LED support)*/
 192 
 193         int ret = gpio_request_array(smdk_led_gpios,
 194                                      ARRAY_SIZE(smdk_led_gpios));
 195         if (!WARN_ON(ret < 0))
 196                 gpio_free_array(smdk_led_gpios, ARRAY_SIZE(smdk_led_gpios));
 197 
 198         if (machine_is_smdk2443())
 199                 smdk_nand_info.twrph0 = 50;
 200 
 201         s3c_nand_set_platdata(&smdk_nand_info);
 202 
 203         platform_add_devices(smdk_devs, ARRAY_SIZE(smdk_devs));
 204 
 205         s3c_pm_init();
 206 }

/* [<][>][^][v][top][bottom][index][help] */