diff mbox

[1/4] This patch adds ok2440 development board support.

Message ID 1307581402-3808-1-git-send-email-wdgvip@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wu DaoGuang June 9, 2011, 1:03 a.m. UTC
The ok2440 development board is based on SAMSUNG's S3C2440
microprocessor,which is developed with ARM920T core.

The file is modified from arch/arm/mach-s3c2440/mach-smdk2440.c
that maintained by Ben Dooks <ben@simtec.co.uk>
I modified it to fit the ok2440 development board.

The following patches are against v3.0-rc2.

Signed-off-by: Wu DaoGuang <wdgvip@gmail.com>
---
 arch/arm/mach-s3c2440/mach-ok2440.c |  404 +++++++++++++++++++++++++++++++++++
 1 files changed, 404 insertions(+), 0 deletions(-)
 create mode 100755 arch/arm/mach-s3c2440/mach-ok2440.c

Comments

Barry Song June 9, 2011, 6:47 a.m. UTC | #1
2011/6/9 Wu DaoGuang <wdgvip@gmail.com>:
> The ok2440 development board is based on SAMSUNG's S3C2440
> microprocessor,which is developed with ARM920T core.
>
> The file is modified from arch/arm/mach-s3c2440/mach-smdk2440.c
> that maintained by Ben Dooks <ben@simtec.co.uk>
> I modified it to fit the ok2440 development board.
>
> The following patches are against v3.0-rc2.
>
> Signed-off-by: Wu DaoGuang <wdgvip@gmail.com>
> ---
>  arch/arm/mach-s3c2440/mach-ok2440.c |  404 +++++++++++++++++++++++++++++++++++
>  1 files changed, 404 insertions(+), 0 deletions(-)
>  create mode 100755 arch/arm/mach-s3c2440/mach-ok2440.c

i think at least your patch 1,2,3 should not three patches, and should
be one as "add ok2440 board support" or something like that. and your
patch subjects should be same with commit.

>
> diff --git a/arch/arm/mach-s3c2440/mach-ok2440.c b/arch/arm/mach-s3c2440/mach-ok2440.c
> new file mode 100755
> index 0000000..8c858f1
> --- /dev/null
> +++ b/arch/arm/mach-s3c2440/mach-ok2440.c
> @@ -0,0 +1,404 @@
> +/* linux/arch/arm/mach-s3c2440/mach-ok2440.c
> + *
> + *     Copyright (c) 2011  Feiling Embedded
> + *     Base on mach-smdk2440.c by Ben Dooks <ben@simtec.co.uk>
> + *
> + *     Wu DaoGuang <wdgvip@gmail.com>
> + *
> + * Thanks to Dimity Andric and TomTom for the loan of an 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 <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/list.h>
> +#include <linux/timer.h>
> +#include <linux/init.h>
> +#include <linux/serial_core.h>
> +#include <linux/platform_device.h>
> +#include <linux/input.h>
> +#include <linux/io.h>
> +#include <linux/dm9000.h>
> +#include <linux/i2c.h>
> +#include <linux/i2c/at24.h>
> +#include <linux/mmc/host.h>
> +#include <linux/clk.h>
> +#include <linux/syscore_ops.h>
> +
> +#include <linux/gpio.h>
> +#include <linux/gpio_keys.h>
> +
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/nand.h>
> +#include <linux/mtd/nand_ecc.h>
> +#include <linux/mtd/partitions.h>
> +
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/map.h>
> +#include <asm/mach/irq.h>
> +
> +#include <mach/hardware.h>
> +#include <asm/irq.h>
> +#include <asm/sizes.h>
> +
> +#include <asm/mach-types.h>
> +
> +#include <plat/regs-serial.h>
> +#include <plat/nand.h>
> +#include <plat/iic.h>
> +#include <plat/udc.h>
> +#include <plat/mci.h>
> +
> +#include <mach/regs-gpio.h>
> +#include <mach/leds-gpio.h>
> +#include <mach/regs-lcd.h>
> +#include <mach/regs-mem.h>
> +#include <mach/irqs.h>
> +
> +
> +#include <mach/idle.h>
> +#include <mach/fb.h>
> +#include <plat/gpio-core.h>
> +#include <plat/gpio-cfg-helpers.h>
> +#include <plat/gpio-cfg.h>
> +#include <plat/usb-control.h>
> +
> +#include <plat/s3c2410.h>
> +#include <plat/s3c244x.h>
> +#include <plat/clock.h>
> +#include <plat/devs.h>
> +#include <plat/cpu.h>
> +#include <plat/pm.h>
> +
> +#include <plat/common-smdk.h>
> +#include <sound/s3c24xx_uda134x.h>
> +
> +#define MACH_OK2440_DM9K_BASE (S3C2410_CS4 + 0x300)
> +
> +static struct map_desc ok2440_iodesc[] __initdata = {
> +       /* ISA IO Space map (memory space selected by A24) */
> +
> +       {
> +               .virtual        = (u32)S3C24XX_VA_ISA_WORD,
> +               .pfn            = __phys_to_pfn(S3C2410_CS2),
> +               .length         = 0x10000,
> +               .type           = MT_DEVICE,
> +       }, {
> +               .virtual        = (u32)S3C24XX_VA_ISA_WORD + 0x10000,
> +               .pfn            = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
> +               .length         = SZ_4M,
> +               .type           = MT_DEVICE,
> +       }, {
> +               .virtual        = (u32)S3C24XX_VA_ISA_BYTE,
> +               .pfn            = __phys_to_pfn(S3C2410_CS2),
> +               .length         = 0x10000,
> +               .type           = MT_DEVICE,
> +       }, {
> +               .virtual        = (u32)S3C24XX_VA_ISA_BYTE + 0x10000,
> +               .pfn            = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
> +               .length         = SZ_4M,
> +               .type           = MT_DEVICE,
> +       }
> +};
> +
> +#define UCON   (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
> +#define ULCON  (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
> +#define UFCON  (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE)
> +
> +static struct s3c2410_uartcfg ok2440_uartcfgs[] __initdata = {
> +       [0] = {
> +               .hwport      = 0,
> +               .flags       = 0,
> +               .ucon        = 0x3c5,
> +               .ulcon       = 0x03,
> +               .ufcon       = 0x51,
> +       },
> +       [1] = {
> +               .hwport      = 1,
> +               .flags       = 0,
> +               .ucon        = 0x3c5,
> +               .ulcon       = 0x03,
> +               .ufcon       = 0x51,
> +       },
> +       /* IR port */
> +       [2] = {
> +               .hwport      = 2,
> +               .flags       = 0,
> +               .ucon        = 0x3c5,
> +               .ulcon       = 0x43,
> +               .ufcon       = 0x51,
> +       }
> +};
> +
> +/* LCD driver info */
> +
> +static struct s3c2410fb_display ok2440_lcd_cfg __initdata = {
> +
> +       .lcdcon5        = S3C2410_LCDCON5_FRM565 |
> +                         S3C2410_LCDCON5_INVVLINE |
> +                         S3C2410_LCDCON5_INVVFRAME |
> +                         S3C2410_LCDCON5_PWREN |
> +                         S3C2410_LCDCON5_HWSWP,
> +
> +       .type           = S3C2410_LCDCON1_TFT,
> +
> +       .width          = 320,
> +       .height         = 240,
> +
> +       .pixclock       = 270000, /* HCLK 60 MHz, divisor 10 */
> +       .xres           = 320,
> +       .yres           = 240,
> +       .bpp            = 16,
> +       .left_margin    = 8,
> +       .right_margin   = 5,
> +       .hsync_len      = 16,
> +       .upper_margin   = 8,
> +       .lower_margin   = 5,
> +       .vsync_len      = 2,
> +};
> +
> +static struct s3c2410fb_mach_info ok2440_fb_info __initdata = {
> +       .displays       = &ok2440_lcd_cfg,
> +       .num_displays   = 1,
> +       .default_display = 0,
> +
> +#if 0
> +       /* currently setup by downloader */
> +       .gpccon         = 0xaa940659,
> +       .gpccon_mask    = 0xffffffff,
> +       .gpcup          = 0x0000ffff,
> +       .gpcup_mask     = 0xffffffff,
> +       .gpdcon         = 0xaa84aaa0,
> +       .gpdcon_mask    = 0xffffffff,
> +       .gpdup          = 0x0000faff,
> +       .gpdup_mask     = 0xffffffff,
> +#endif
> +
> +       .lpcsel         = ((0xCE6) & ~7) | 1<<4,
> +};
> +
> +/* Nand flash partitions on ok2440 */
> +static struct mtd_partition ok2440_default_nand_part[] = {
> +       [0] = {
> +               .name   = "u-boot",
> +               .size   = SZ_1M,
> +               .offset = 0,
> +       },
> +       [1] = {
> +               .name   = "App",
> +               .size   = SZ_2M,
> +               .offset = SZ_1M,
> +       },
> +       [2] = {
> +               .name   = "Kernel",
> +               .size   = SZ_1M*4,
> +               .offset = SZ_1M*3,
> +       },
> +       [3] = {
> +               .name   = "Ramdisk",
> +               .size   = SZ_16M,
> +               .offset = SZ_1M*7,
> +       },
> +       [3] = {
> +               .name   = "Rootfs",
> +               .size   = MTDPART_SIZ_FULL,
> +               .offset = SZ_1M*23,
> +       },
> +};
> +static struct s3c2410_nand_set ok2440_nand_sets[] = {
> +       [0] = {
> +               .name           = "nand",
> +               .nr_chips       = 1,
> +               .nr_partitions  = ARRAY_SIZE(ok2440_default_nand_part),
> +               .partitions     = ok2440_default_nand_part,
> +               .flash_bbt      = 1, /* We use u-boot to creat a BBT*/
> +       }
> +};
> +
> +static struct s3c2410_platform_nand ok2440_nand_info __initdata = {
> +       .tacls          = 20,
> +       .twrph0         = 60,
> +       .twrph1         = 20,
> +       .nr_sets        = ARRAY_SIZE(ok2440_nand_sets),
> +       .sets           = ok2440_nand_sets,
> +       .ignore_unset_ecc = 1,
> +};
> +
> +
> +/* DM9000AEP 10/100 ethernet controller */
> +static struct resource ok2440_dm9k_resource[] = {
> +       [0] = {
> +               .start = MACH_OK2440_DM9K_BASE,
> +               .end   = MACH_OK2440_DM9K_BASE + 3,
> +               .flags = IORESOURCE_MEM
> +       },
> +       [1] = {
> +               .start = MACH_OK2440_DM9K_BASE + 4,
> +               .end   = MACH_OK2440_DM9K_BASE + 7,
> +               .flags = IORESOURCE_MEM
> +       },
> +       [2] = {
> +               .start = IRQ_EINT7,
> +               .end   = IRQ_EINT7,
> +               .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
> +       }
> +};
> +/* The DM9000 has no eeprom ,and it's MAC address is set by
> + * the bootloader before starting the kernel.
> + */
> +static struct dm9000_plat_data ok2440_dm9k_pdata = {
> +       .flags          = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
> +};
> +static struct platform_device ok2440_device_eth = {
> +       .name           = "dm9000",
> +       .id             = -1,
> +       .num_resources  = ARRAY_SIZE(ok2440_dm9k_resource),
> +       .resource       = ok2440_dm9k_resource,
> +       .dev            = {
> +               .platform_data  = &ok2440_dm9k_pdata,
> +       },
> +};
> +
> +/* LEDS sourport */
> +static struct s3c24xx_led_platdata ok2440_led0_pdata = {
> +       .name           = "led0",
> +       .gpio           = S3C2410_GPF(5),
> +       .flags          = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
> +       .def_trigger    = "heartbeat",
> +};
> +
> +static struct platform_device ok2440_led0 = {
> +       .name           = "s3c24xx_led",
> +       .id             = 0,
> +       .dev            = {
> +               .platform_data = &ok2440_led0_pdata,
> +       }
> +};
> +
> +/* AUDIO */
> +static struct s3c24xx_uda134x_platform_data ok2440_audio_pins = {
> +       .l3_clk = S3C2410_GPB(4),
> +       .l3_mode = S3C2410_GPB(2),
> +       .l3_data = S3C2410_GPB(3),
> +       .model   = UDA134X_UDA1341
> +};
> +
> +static struct platform_device ok2440_audio = {
> +       .name           = "s3c24xx_uda134x",
> +       .id             = 0,
> +       .dev            = {
> +               .platform_data  = &ok2440_audio_pins,
> +       }
> +};
> +
> +static struct platform_device uda1340_codec = {
> +       .name = "uda134x-codec",
> +       .id   = -1,
> +};
> +
> +/*
> + * I2C devices
> + */
> +static struct at24_platform_data at24c08 = {
> +       .byte_len       = SZ_8K / 8,
> +       .page_size      = 16,
> +};
> +
> +static struct i2c_board_info ok2440_i2c_devs[] __initdata = {
> +       {
> +               I2C_BOARD_INFO("24c08", 0x50),
> +               .platform_data  = &at24c08,
> +       },
> +};
> +
> +/*  USB device UDC support */
> +static struct s3c2410_udc_mach_info ok2440_udc_cfg __initdata = {
> +       .pullup_pin = S3C2410_GPG(9),
> +};
> +
> +/* USB */
> +static struct s3c2410_hcd_info ok2440_usb_info __initdata = {
> +       .port[0]        = {
> +               .flags  = S3C_HCDFLG_USED,
> +       },
> +       .port[1]        = {
> +               .flags  = 0,
> +       },
> +};
> +
> +/* MMC/SD */
> +static struct s3c24xx_mci_pdata ok2440_mmc_cfg __initdata = {
> +       .gpio_detect    = S3C2410_GPG(10),
> +       .gpio_wprotect  = S3C2410_GPH(8),
> +       .set_power      = NULL,
> +       .ocr_avail      = MMC_VDD_32_33 | MMC_VDD_33_34,
> +};
> +
> +
> +struct syscore_ops s3c24xx_irq_syscore_ops = {
> +       .suspend        = s3c24xx_irq_suspend,
> +       .resume         = s3c24xx_irq_resume,
> +};
> +
> +static struct platform_device *ok2440_devices[] __initdata = {
> +       &s3c_device_ohci,
> +       &s3c_device_lcd,
> +       &s3c_device_wdt,
> +       &s3c_device_i2c0,
> +       &s3c_device_iis,
> +       &s3c_device_sdi,
> +       &s3c_device_nand,
> +       &s3c_device_rtc,
> +       &s3c_device_usbgadget,
> +       &uda1340_codec,
> +       &ok2440_device_eth,
> +       &ok2440_audio,
> +       &ok2440_led0,
> +       &samsung_asoc_dma,
> +
> +};
> +
> +static void __init ok2440_map_io(void)
> +{
> +       s3c24xx_init_io(ok2440_iodesc, ARRAY_SIZE(ok2440_iodesc));
> +       s3c24xx_init_clocks(12000000);
> +       s3c24xx_init_uarts(ok2440_uartcfgs, ARRAY_SIZE(ok2440_uartcfgs));
> +}
> +
> +static void __init ok2440_machine_init(void)
> +{
> +       s3c2410_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT);
> +       s3c2410_gpio_setpin(S3C2410_GPF(5), 1);
> +       /*configure the mmc protect to pull high . */
> +       s3c2410_gpio_cfgpin(S3C2410_GPG(8), S3C2410_GPIO_OUTPUT);
> +       s3c2410_gpio_setpin(S3C2410_GPG(8), 1);
> +       s3c24xx_fb_set_platdata(&ok2440_fb_info);
> +       s3c_i2c0_set_platdata(NULL);
> +
> +       s3c_ohci_set_platdata(&ok2440_usb_info);
> +
> +       s3c_nand_set_platdata(&ok2440_nand_info);
> +       s3c24xx_udc_set_platdata(&ok2440_udc_cfg);
> +       s3c24xx_mci_set_platdata(&ok2440_mmc_cfg);
> +       i2c_register_board_info(0, ok2440_i2c_devs,
> +                               ARRAY_SIZE(ok2440_i2c_devs));
> +
> +       platform_add_devices(ok2440_devices, ARRAY_SIZE(ok2440_devices));
> +       s3c_pm_init();
> +}
> +
> +MACHINE_START(S3C2440, "OK2440 development board.")
> +       /* Maintainer: Wu DaoGuang <wdgvip@gmail.com> */
> +       .boot_params    = S3C2410_SDRAM_PA + 0x100,
> +
> +       .init_irq       = s3c24xx_init_irq,
> +       .map_io         = ok2440_map_io,
> +       .init_machine   = ok2440_machine_init,
> +       .timer          = &s3c24xx_timer,
> +MACHINE_END
> --
> 1.7.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Vasily Khoruzhick June 9, 2011, 6:54 a.m. UTC | #2
On Thursday 09 June 2011 04:03:19 Wu DaoGuang wrote:
> The ok2440 development board is based on SAMSUNG's S3C2440
> microprocessor,which is developed with ARM920T core.
> 
> The file is modified from arch/arm/mach-s3c2440/mach-smdk2440.c
> that maintained by Ben Dooks <ben@simtec.co.uk>
> I modified it to fit the ok2440 development board.
> 
> The following patches are against v3.0-rc2.
> 
> Signed-off-by: Wu DaoGuang <wdgvip@gmail.com>
> ---
>  arch/arm/mach-s3c2440/mach-ok2440.c |  404
> +++++++++++++++++++++++++++++++++++ 1 files changed, 404 insertions(+), 0
> deletions(-)
>  create mode 100755 arch/arm/mach-s3c2440/mach-ok2440.c
> 
> diff --git a/arch/arm/mach-s3c2440/mach-ok2440.c
> b/arch/arm/mach-s3c2440/mach-ok2440.c new file mode 100755

Do not set execute permissions for source files

> index 0000000..8c858f1
> --- /dev/null
> +++ b/arch/arm/mach-s3c2440/mach-ok2440.c
> @@ -0,0 +1,404 @@
> +/* linux/arch/arm/mach-s3c2440/mach-ok2440.c
> + *
> + *	Copyright (c) 2011  Feiling Embedded
> + *	Base on mach-smdk2440.c by Ben Dooks <ben@simtec.co.uk>
> + *
> + *	Wu DaoGuang <wdgvip@gmail.com>
> + *
> + * Thanks to Dimity Andric and TomTom for the loan of an 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 <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/list.h>
> +#include <linux/timer.h>
> +#include <linux/init.h>
> +#include <linux/serial_core.h>
> +#include <linux/platform_device.h>
> +#include <linux/input.h>
> +#include <linux/io.h>
> +#include <linux/dm9000.h>
> +#include <linux/i2c.h>
> +#include <linux/i2c/at24.h>
> +#include <linux/mmc/host.h>
> +#include <linux/clk.h>
> +#include <linux/syscore_ops.h>
> +
> +#include <linux/gpio.h>
> +#include <linux/gpio_keys.h>
> +
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/nand.h>
> +#include <linux/mtd/nand_ecc.h>
> +#include <linux/mtd/partitions.h>
> +
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/map.h>
> +#include <asm/mach/irq.h>
> +
> +#include <mach/hardware.h>
> +#include <asm/irq.h>
> +#include <asm/sizes.h>
> +
> +#include <asm/mach-types.h>
> +
> +#include <plat/regs-serial.h>
> +#include <plat/nand.h>
> +#include <plat/iic.h>
> +#include <plat/udc.h>
> +#include <plat/mci.h>
> +
> +#include <mach/regs-gpio.h>
> +#include <mach/leds-gpio.h>
> +#include <mach/regs-lcd.h>
> +#include <mach/regs-mem.h>
> +#include <mach/irqs.h>
> +
> +
> +#include <mach/idle.h>
> +#include <mach/fb.h>
> +#include <plat/gpio-core.h>
> +#include <plat/gpio-cfg-helpers.h>
> +#include <plat/gpio-cfg.h>
> +#include <plat/usb-control.h>
> +
> +#include <plat/s3c2410.h>
> +#include <plat/s3c244x.h>
> +#include <plat/clock.h>
> +#include <plat/devs.h>
> +#include <plat/cpu.h>
> +#include <plat/pm.h>
> +
> +#include <plat/common-smdk.h>
> +#include <sound/s3c24xx_uda134x.h>
> +
> +#define MACH_OK2440_DM9K_BASE (S3C2410_CS4 + 0x300)
> +
> +static struct map_desc ok2440_iodesc[] __initdata = {
> +	/* ISA IO Space map (memory space selected by A24) */
> +
> +	{
> +		.virtual	= (u32)S3C24XX_VA_ISA_WORD,
> +		.pfn		= __phys_to_pfn(S3C2410_CS2),
> +		.length		= 0x10000,
> +		.type		= MT_DEVICE,
> +	}, {
> +		.virtual	= (u32)S3C24XX_VA_ISA_WORD + 0x10000,
> +		.pfn		= __phys_to_pfn(S3C2410_CS2 + (1<<24)),
> +		.length		= SZ_4M,
> +		.type		= MT_DEVICE,
> +	}, {
> +		.virtual	= (u32)S3C24XX_VA_ISA_BYTE,
> +		.pfn		= __phys_to_pfn(S3C2410_CS2),
> +		.length		= 0x10000,
> +		.type		= MT_DEVICE,
> +	}, {
> +		.virtual	= (u32)S3C24XX_VA_ISA_BYTE + 0x10000,
> +		.pfn		= __phys_to_pfn(S3C2410_CS2 + (1<<24)),
> +		.length		= SZ_4M,
> +		.type		= MT_DEVICE,
> +	}
> +};
> +
> +#define UCON	(S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
> +#define ULCON	(S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
> +#define UFCON	(S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE)
> +
> +static struct s3c2410_uartcfg ok2440_uartcfgs[] __initdata = {
> +	[0] = {
> +		.hwport	     = 0,
> +		.flags	     = 0,
> +		.ucon	     = 0x3c5,
> +		.ulcon	     = 0x03,
> +		.ufcon	     = 0x51,
> +	},
> +	[1] = {
> +		.hwport	     = 1,
> +		.flags	     = 0,
> +		.ucon	     = 0x3c5,
> +		.ulcon	     = 0x03,
> +		.ufcon	     = 0x51,
> +	},
> +	/* IR port */
> +	[2] = {
> +		.hwport	     = 2,
> +		.flags	     = 0,
> +		.ucon	     = 0x3c5,
> +		.ulcon	     = 0x43,
> +		.ufcon	     = 0x51,
> +	}
> +};
> +
> +/* LCD driver info */
> +
> +static struct s3c2410fb_display ok2440_lcd_cfg __initdata = {
> +
> +	.lcdcon5	= S3C2410_LCDCON5_FRM565 |
> +			  S3C2410_LCDCON5_INVVLINE |
> +			  S3C2410_LCDCON5_INVVFRAME |
> +			  S3C2410_LCDCON5_PWREN |
> +			  S3C2410_LCDCON5_HWSWP,
> +
> +	.type		= S3C2410_LCDCON1_TFT,
> +
> +	.width		= 320,
> +	.height		= 240,
> +
> +	.pixclock	= 270000, /* HCLK 60 MHz, divisor 10 */
> +	.xres		= 320,
> +	.yres		= 240,
> +	.bpp		= 16,
> +	.left_margin	= 8,
> +	.right_margin	= 5,
> +	.hsync_len	= 16,
> +	.upper_margin	= 8,
> +	.lower_margin	= 5,
> +	.vsync_len	= 2,
> +};
> +
> +static struct s3c2410fb_mach_info ok2440_fb_info __initdata = {
> +	.displays	= &ok2440_lcd_cfg,
> +	.num_displays	= 1,
> +	.default_display = 0,
> +
> +#if 0
> +	/* currently setup by downloader */
> +	.gpccon		= 0xaa940659,
> +	.gpccon_mask	= 0xffffffff,
> +	.gpcup		= 0x0000ffff,
> +	.gpcup_mask	= 0xffffffff,
> +	.gpdcon		= 0xaa84aaa0,
> +	.gpdcon_mask	= 0xffffffff,
> +	.gpdup		= 0x0000faff,
> +	.gpdup_mask	= 0xffffffff,
> +#endif

This dead code is not necessary.

> +	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
> +};
> +
> +/* Nand flash partitions on ok2440 */
> +static struct mtd_partition ok2440_default_nand_part[] = {
> +	[0] = {
> +		.name	= "u-boot",
> +		.size	= SZ_1M,
> +		.offset	= 0,
> +	},
> +	[1] = {
> +		.name	= "App",
> +		.size	= SZ_2M,
> +		.offset	= SZ_1M,

Use MTDPART_OFS_APPEND instead of calculating offset manually (same for other 
partitions)

> +	},
> +	[2] = {
> +		.name	= "Kernel",
> +		.size	= SZ_1M*4,
> +		.offset	= SZ_1M*3,
> +	},
> +	[3] = {
> +		.name	= "Ramdisk",
> +		.size	= SZ_16M,
> +		.offset	= SZ_1M*7,
> +	},
> +	[3] = {
> +		.name	= "Rootfs",
> +		.size	= MTDPART_SIZ_FULL,
> +		.offset	= SZ_1M*23,
> +	},
> +};
> +static struct s3c2410_nand_set ok2440_nand_sets[] = {
> +	[0] = {
> +		.name		= "nand",
> +		.nr_chips	= 1,
> +		.nr_partitions	= ARRAY_SIZE(ok2440_default_nand_part),
> +		.partitions	= ok2440_default_nand_part,
> +		.flash_bbt	= 1, /* We use u-boot to creat a BBT*/
> +	}
> +};
> +
> +static struct s3c2410_platform_nand ok2440_nand_info __initdata = {
> +	.tacls		= 20,
> +	.twrph0		= 60,
> +	.twrph1		= 20,
> +	.nr_sets	= ARRAY_SIZE(ok2440_nand_sets),
> +	.sets		= ok2440_nand_sets,
> +	.ignore_unset_ecc = 1,
> +};
> +
> +
> +/* DM9000AEP 10/100 ethernet controller */
> +static struct resource ok2440_dm9k_resource[] = {
> +	[0] = {
> +		.start = MACH_OK2440_DM9K_BASE,
> +		.end   = MACH_OK2440_DM9K_BASE + 3,
> +		.flags = IORESOURCE_MEM
> +	},
> +	[1] = {
> +		.start = MACH_OK2440_DM9K_BASE + 4,
> +		.end   = MACH_OK2440_DM9K_BASE + 7,
> +		.flags = IORESOURCE_MEM
> +	},
> +	[2] = {
> +		.start = IRQ_EINT7,
> +		.end   = IRQ_EINT7,
> +		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
> +	}
> +};
> +/* The DM9000 has no eeprom ,and it's MAC address is set by
> + * the bootloader before starting the kernel.
> + */
> +static struct dm9000_plat_data ok2440_dm9k_pdata = {
> +	.flags		= (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
> +};
> +static struct platform_device ok2440_device_eth = {
> +	.name		= "dm9000",
> +	.id		= -1,
> +	.num_resources	= ARRAY_SIZE(ok2440_dm9k_resource),
> +	.resource	= ok2440_dm9k_resource,
> +	.dev		= {
> +		.platform_data	= &ok2440_dm9k_pdata,
> +	},
> +};
> +
> +/* LEDS sourport */
> +static struct s3c24xx_led_platdata ok2440_led0_pdata = {
> +	.name		= "led0",
> +	.gpio		= S3C2410_GPF(5),
> +	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
> +	.def_trigger	= "heartbeat",
> +};

Please, use leds-gpio driver instead of s3c24xx_led

> +static struct platform_device ok2440_led0 = {
> +	.name		= "s3c24xx_led",
> +	.id		= 0,
> +	.dev		= {
> +		.platform_data = &ok2440_led0_pdata,
> +	}
> +};
> +
> +/* AUDIO */
> +static struct s3c24xx_uda134x_platform_data ok2440_audio_pins = {
> +	.l3_clk = S3C2410_GPB(4),
> +	.l3_mode = S3C2410_GPB(2),
> +	.l3_data = S3C2410_GPB(3),
> +	.model   = UDA134X_UDA1341
> +};
> +
> +static struct platform_device ok2440_audio = {
> +	.name		= "s3c24xx_uda134x",
> +	.id		= 0,
> +	.dev		= {
> +		.platform_data	= &ok2440_audio_pins,
> +	}
> +};
> +
> +static struct platform_device uda1340_codec = {
> +	.name = "uda134x-codec",
> +	.id   = -1,
> +};
> +
> +/*
> + * I2C devices
> + */
> +static struct at24_platform_data at24c08 = {
> +	.byte_len	= SZ_8K / 8,
> +	.page_size	= 16,
> +};
> +
> +static struct i2c_board_info ok2440_i2c_devs[] __initdata = {
> +	{
> +		I2C_BOARD_INFO("24c08", 0x50),
> +		.platform_data	= &at24c08,
> +	},
> +};
> +
> +/*  USB device UDC support */
> +static struct s3c2410_udc_mach_info ok2440_udc_cfg __initdata = {
> +	.pullup_pin = S3C2410_GPG(9),
> +};
> +
> +/* USB */
> +static struct s3c2410_hcd_info ok2440_usb_info __initdata = {
> +	.port[0]	= {
> +		.flags	= S3C_HCDFLG_USED,
> +	},
> +	.port[1]	= {
> +		.flags	= 0,
> +	},
> +};
> +
> +/* MMC/SD */
> +static struct s3c24xx_mci_pdata ok2440_mmc_cfg __initdata = {
> +	.gpio_detect	= S3C2410_GPG(10),
> +	.gpio_wprotect	= S3C2410_GPH(8),
> +	.set_power	= NULL,
> +	.ocr_avail	= MMC_VDD_32_33 | MMC_VDD_33_34,
> +};
> +
> +
> +struct syscore_ops s3c24xx_irq_syscore_ops = {
> +	.suspend	= s3c24xx_irq_suspend,
> +	.resume		= s3c24xx_irq_resume,
> +};
> +
> +static struct platform_device *ok2440_devices[] __initdata = {
> +	&s3c_device_ohci,
> +	&s3c_device_lcd,
> +	&s3c_device_wdt,
> +	&s3c_device_i2c0,
> +	&s3c_device_iis,
> +	&s3c_device_sdi,
> +	&s3c_device_nand,
> +	&s3c_device_rtc,
> +	&s3c_device_usbgadget,
> +	&uda1340_codec,
> +	&ok2440_device_eth,
> +	&ok2440_audio,
> +	&ok2440_led0,
> +	&samsung_asoc_dma,
> +
> +};
> +
> +static void __init ok2440_map_io(void)
> +{
> +	s3c24xx_init_io(ok2440_iodesc, ARRAY_SIZE(ok2440_iodesc));
> +	s3c24xx_init_clocks(12000000);
> +	s3c24xx_init_uarts(ok2440_uartcfgs, ARRAY_SIZE(ok2440_uartcfgs));
> +}
> +
> +static void __init ok2440_machine_init(void)
> +{
> +	s3c2410_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT);
> +	s3c2410_gpio_setpin(S3C2410_GPF(5), 1);

Don't use deprecated samsung-specific gpio API, use gpiolib instead.

> +	/*configure the mmc protect to pull high . */
> +	s3c2410_gpio_cfgpin(S3C2410_GPG(8), S3C2410_GPIO_OUTPUT);
> +	s3c2410_gpio_setpin(S3C2410_GPG(8), 1);
> +	s3c24xx_fb_set_platdata(&ok2440_fb_info);
> +	s3c_i2c0_set_platdata(NULL);
> +
> +	s3c_ohci_set_platdata(&ok2440_usb_info);
> +
> +	s3c_nand_set_platdata(&ok2440_nand_info);
> +	s3c24xx_udc_set_platdata(&ok2440_udc_cfg);
> +	s3c24xx_mci_set_platdata(&ok2440_mmc_cfg);
> +	i2c_register_board_info(0, ok2440_i2c_devs,
> +				ARRAY_SIZE(ok2440_i2c_devs));
> +
> +	platform_add_devices(ok2440_devices, ARRAY_SIZE(ok2440_devices));
> +	s3c_pm_init();
> +}
> +
> +MACHINE_START(S3C2440, "OK2440 development board.")
> +	/* Maintainer: Wu DaoGuang <wdgvip@gmail.com> */
> +	.boot_params	= S3C2410_SDRAM_PA + 0x100,
> +
> +	.init_irq	= s3c24xx_init_irq,
> +	.map_io		= ok2440_map_io,
> +	.init_machine	= ok2440_machine_init,
> +	.timer		= &s3c24xx_timer,
> +MACHINE_END
diff mbox

Patch

diff --git a/arch/arm/mach-s3c2440/mach-ok2440.c b/arch/arm/mach-s3c2440/mach-ok2440.c
new file mode 100755
index 0000000..8c858f1
--- /dev/null
+++ b/arch/arm/mach-s3c2440/mach-ok2440.c
@@ -0,0 +1,404 @@ 
+/* linux/arch/arm/mach-s3c2440/mach-ok2440.c
+ *
+ *	Copyright (c) 2011  Feiling Embedded
+ *	Base on mach-smdk2440.c by Ben Dooks <ben@simtec.co.uk>
+ *
+ *	Wu DaoGuang <wdgvip@gmail.com>
+ *
+ * Thanks to Dimity Andric and TomTom for the loan of an 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 <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/interrupt.h>
+#include <linux/list.h>
+#include <linux/timer.h>
+#include <linux/init.h>
+#include <linux/serial_core.h>
+#include <linux/platform_device.h>
+#include <linux/input.h>
+#include <linux/io.h>
+#include <linux/dm9000.h>
+#include <linux/i2c.h>
+#include <linux/i2c/at24.h>
+#include <linux/mmc/host.h>
+#include <linux/clk.h>
+#include <linux/syscore_ops.h>
+
+#include <linux/gpio.h>
+#include <linux/gpio_keys.h>
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/nand_ecc.h>
+#include <linux/mtd/partitions.h>
+
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/irq.h>
+
+#include <mach/hardware.h>
+#include <asm/irq.h>
+#include <asm/sizes.h>
+
+#include <asm/mach-types.h>
+
+#include <plat/regs-serial.h>
+#include <plat/nand.h>
+#include <plat/iic.h>
+#include <plat/udc.h>
+#include <plat/mci.h>
+
+#include <mach/regs-gpio.h>
+#include <mach/leds-gpio.h>
+#include <mach/regs-lcd.h>
+#include <mach/regs-mem.h>
+#include <mach/irqs.h>
+
+
+#include <mach/idle.h>
+#include <mach/fb.h>
+#include <plat/gpio-core.h>
+#include <plat/gpio-cfg-helpers.h>
+#include <plat/gpio-cfg.h>
+#include <plat/usb-control.h>
+
+#include <plat/s3c2410.h>
+#include <plat/s3c244x.h>
+#include <plat/clock.h>
+#include <plat/devs.h>
+#include <plat/cpu.h>
+#include <plat/pm.h>
+
+#include <plat/common-smdk.h>
+#include <sound/s3c24xx_uda134x.h>
+
+#define MACH_OK2440_DM9K_BASE (S3C2410_CS4 + 0x300)
+
+static struct map_desc ok2440_iodesc[] __initdata = {
+	/* ISA IO Space map (memory space selected by A24) */
+
+	{
+		.virtual	= (u32)S3C24XX_VA_ISA_WORD,
+		.pfn		= __phys_to_pfn(S3C2410_CS2),
+		.length		= 0x10000,
+		.type		= MT_DEVICE,
+	}, {
+		.virtual	= (u32)S3C24XX_VA_ISA_WORD + 0x10000,
+		.pfn		= __phys_to_pfn(S3C2410_CS2 + (1<<24)),
+		.length		= SZ_4M,
+		.type		= MT_DEVICE,
+	}, {
+		.virtual	= (u32)S3C24XX_VA_ISA_BYTE,
+		.pfn		= __phys_to_pfn(S3C2410_CS2),
+		.length		= 0x10000,
+		.type		= MT_DEVICE,
+	}, {
+		.virtual	= (u32)S3C24XX_VA_ISA_BYTE + 0x10000,
+		.pfn		= __phys_to_pfn(S3C2410_CS2 + (1<<24)),
+		.length		= SZ_4M,
+		.type		= MT_DEVICE,
+	}
+};
+
+#define UCON	(S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
+#define ULCON	(S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
+#define UFCON	(S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE)
+
+static struct s3c2410_uartcfg ok2440_uartcfgs[] __initdata = {
+	[0] = {
+		.hwport	     = 0,
+		.flags	     = 0,
+		.ucon	     = 0x3c5,
+		.ulcon	     = 0x03,
+		.ufcon	     = 0x51,
+	},
+	[1] = {
+		.hwport	     = 1,
+		.flags	     = 0,
+		.ucon	     = 0x3c5,
+		.ulcon	     = 0x03,
+		.ufcon	     = 0x51,
+	},
+	/* IR port */
+	[2] = {
+		.hwport	     = 2,
+		.flags	     = 0,
+		.ucon	     = 0x3c5,
+		.ulcon	     = 0x43,
+		.ufcon	     = 0x51,
+	}
+};
+
+/* LCD driver info */
+
+static struct s3c2410fb_display ok2440_lcd_cfg __initdata = {
+
+	.lcdcon5	= S3C2410_LCDCON5_FRM565 |
+			  S3C2410_LCDCON5_INVVLINE |
+			  S3C2410_LCDCON5_INVVFRAME |
+			  S3C2410_LCDCON5_PWREN |
+			  S3C2410_LCDCON5_HWSWP,
+
+	.type		= S3C2410_LCDCON1_TFT,
+
+	.width		= 320,
+	.height		= 240,
+
+	.pixclock	= 270000, /* HCLK 60 MHz, divisor 10 */
+	.xres		= 320,
+	.yres		= 240,
+	.bpp		= 16,
+	.left_margin	= 8,
+	.right_margin	= 5,
+	.hsync_len	= 16,
+	.upper_margin	= 8,
+	.lower_margin	= 5,
+	.vsync_len	= 2,
+};
+
+static struct s3c2410fb_mach_info ok2440_fb_info __initdata = {
+	.displays	= &ok2440_lcd_cfg,
+	.num_displays	= 1,
+	.default_display = 0,
+
+#if 0
+	/* currently setup by downloader */
+	.gpccon		= 0xaa940659,
+	.gpccon_mask	= 0xffffffff,
+	.gpcup		= 0x0000ffff,
+	.gpcup_mask	= 0xffffffff,
+	.gpdcon		= 0xaa84aaa0,
+	.gpdcon_mask	= 0xffffffff,
+	.gpdup		= 0x0000faff,
+	.gpdup_mask	= 0xffffffff,
+#endif
+
+	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
+};
+
+/* Nand flash partitions on ok2440 */
+static struct mtd_partition ok2440_default_nand_part[] = {
+	[0] = {
+		.name	= "u-boot",
+		.size	= SZ_1M,
+		.offset	= 0,
+	},
+	[1] = {
+		.name	= "App",
+		.size	= SZ_2M,
+		.offset	= SZ_1M,
+	},
+	[2] = {
+		.name	= "Kernel",
+		.size	= SZ_1M*4,
+		.offset	= SZ_1M*3,
+	},
+	[3] = {
+		.name	= "Ramdisk",
+		.size	= SZ_16M,
+		.offset	= SZ_1M*7,
+	},
+	[3] = {
+		.name	= "Rootfs",
+		.size	= MTDPART_SIZ_FULL,
+		.offset	= SZ_1M*23,
+	},
+};
+static struct s3c2410_nand_set ok2440_nand_sets[] = {
+	[0] = {
+		.name		= "nand",
+		.nr_chips	= 1,
+		.nr_partitions	= ARRAY_SIZE(ok2440_default_nand_part),
+		.partitions	= ok2440_default_nand_part,
+		.flash_bbt	= 1, /* We use u-boot to creat a BBT*/
+	}
+};
+
+static struct s3c2410_platform_nand ok2440_nand_info __initdata = {
+	.tacls		= 20,
+	.twrph0		= 60,
+	.twrph1		= 20,
+	.nr_sets	= ARRAY_SIZE(ok2440_nand_sets),
+	.sets		= ok2440_nand_sets,
+	.ignore_unset_ecc = 1,
+};
+
+
+/* DM9000AEP 10/100 ethernet controller */
+static struct resource ok2440_dm9k_resource[] = {
+	[0] = {
+		.start = MACH_OK2440_DM9K_BASE,
+		.end   = MACH_OK2440_DM9K_BASE + 3,
+		.flags = IORESOURCE_MEM
+	},
+	[1] = {
+		.start = MACH_OK2440_DM9K_BASE + 4,
+		.end   = MACH_OK2440_DM9K_BASE + 7,
+		.flags = IORESOURCE_MEM
+	},
+	[2] = {
+		.start = IRQ_EINT7,
+		.end   = IRQ_EINT7,
+		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
+	}
+};
+/* The DM9000 has no eeprom ,and it's MAC address is set by
+ * the bootloader before starting the kernel.
+ */
+static struct dm9000_plat_data ok2440_dm9k_pdata = {
+	.flags		= (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
+};
+static struct platform_device ok2440_device_eth = {
+	.name		= "dm9000",
+	.id		= -1,
+	.num_resources	= ARRAY_SIZE(ok2440_dm9k_resource),
+	.resource	= ok2440_dm9k_resource,
+	.dev		= {
+		.platform_data	= &ok2440_dm9k_pdata,
+	},
+};
+
+/* LEDS sourport */
+static struct s3c24xx_led_platdata ok2440_led0_pdata = {
+	.name		= "led0",
+	.gpio		= S3C2410_GPF(5),
+	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
+	.def_trigger	= "heartbeat",
+};
+
+static struct platform_device ok2440_led0 = {
+	.name		= "s3c24xx_led",
+	.id		= 0,
+	.dev		= {
+		.platform_data = &ok2440_led0_pdata,
+	}
+};
+
+/* AUDIO */
+static struct s3c24xx_uda134x_platform_data ok2440_audio_pins = {
+	.l3_clk = S3C2410_GPB(4),
+	.l3_mode = S3C2410_GPB(2),
+	.l3_data = S3C2410_GPB(3),
+	.model   = UDA134X_UDA1341
+};
+
+static struct platform_device ok2440_audio = {
+	.name		= "s3c24xx_uda134x",
+	.id		= 0,
+	.dev		= {
+		.platform_data	= &ok2440_audio_pins,
+	}
+};
+
+static struct platform_device uda1340_codec = {
+	.name = "uda134x-codec",
+	.id   = -1,
+};
+
+/*
+ * I2C devices
+ */
+static struct at24_platform_data at24c08 = {
+	.byte_len	= SZ_8K / 8,
+	.page_size	= 16,
+};
+
+static struct i2c_board_info ok2440_i2c_devs[] __initdata = {
+	{
+		I2C_BOARD_INFO("24c08", 0x50),
+		.platform_data	= &at24c08,
+	},
+};
+
+/*  USB device UDC support */
+static struct s3c2410_udc_mach_info ok2440_udc_cfg __initdata = {
+	.pullup_pin = S3C2410_GPG(9),
+};
+
+/* USB */
+static struct s3c2410_hcd_info ok2440_usb_info __initdata = {
+	.port[0]	= {
+		.flags	= S3C_HCDFLG_USED,
+	},
+	.port[1]	= {
+		.flags	= 0,
+	},
+};
+
+/* MMC/SD */
+static struct s3c24xx_mci_pdata ok2440_mmc_cfg __initdata = {
+	.gpio_detect	= S3C2410_GPG(10),
+	.gpio_wprotect	= S3C2410_GPH(8),
+	.set_power	= NULL,
+	.ocr_avail	= MMC_VDD_32_33 | MMC_VDD_33_34,
+};
+
+
+struct syscore_ops s3c24xx_irq_syscore_ops = {
+	.suspend	= s3c24xx_irq_suspend,
+	.resume		= s3c24xx_irq_resume,
+};
+
+static struct platform_device *ok2440_devices[] __initdata = {
+	&s3c_device_ohci,
+	&s3c_device_lcd,
+	&s3c_device_wdt,
+	&s3c_device_i2c0,
+	&s3c_device_iis,
+	&s3c_device_sdi,
+	&s3c_device_nand,
+	&s3c_device_rtc,
+	&s3c_device_usbgadget,
+	&uda1340_codec,
+	&ok2440_device_eth,
+	&ok2440_audio,
+	&ok2440_led0,
+	&samsung_asoc_dma,
+
+};
+
+static void __init ok2440_map_io(void)
+{
+	s3c24xx_init_io(ok2440_iodesc, ARRAY_SIZE(ok2440_iodesc));
+	s3c24xx_init_clocks(12000000);
+	s3c24xx_init_uarts(ok2440_uartcfgs, ARRAY_SIZE(ok2440_uartcfgs));
+}
+
+static void __init ok2440_machine_init(void)
+{
+	s3c2410_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT);
+	s3c2410_gpio_setpin(S3C2410_GPF(5), 1);
+	/*configure the mmc protect to pull high . */
+	s3c2410_gpio_cfgpin(S3C2410_GPG(8), S3C2410_GPIO_OUTPUT);
+	s3c2410_gpio_setpin(S3C2410_GPG(8), 1);
+	s3c24xx_fb_set_platdata(&ok2440_fb_info);
+	s3c_i2c0_set_platdata(NULL);
+
+	s3c_ohci_set_platdata(&ok2440_usb_info);
+
+	s3c_nand_set_platdata(&ok2440_nand_info);
+	s3c24xx_udc_set_platdata(&ok2440_udc_cfg);
+	s3c24xx_mci_set_platdata(&ok2440_mmc_cfg);
+	i2c_register_board_info(0, ok2440_i2c_devs,
+				ARRAY_SIZE(ok2440_i2c_devs));
+
+	platform_add_devices(ok2440_devices, ARRAY_SIZE(ok2440_devices));
+	s3c_pm_init();
+}
+
+MACHINE_START(S3C2440, "OK2440 development board.")
+	/* Maintainer: Wu DaoGuang <wdgvip@gmail.com> */
+	.boot_params	= S3C2410_SDRAM_PA + 0x100,
+
+	.init_irq	= s3c24xx_init_irq,
+	.map_io		= ok2440_map_io,
+	.init_machine	= ok2440_machine_init,
+	.timer		= &s3c24xx_timer,
+MACHINE_END