lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 9 Jun 2011 14:47:03 +0800
From:	Barry Song <21cnbao@...il.com>
To:	Wu DaoGuang <wdgvip@...il.com>
Cc:	ben-linux@...ff.org, linux@....linux.org.uk,
	linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH 1/4] This patch adds ok2440 development board support.

2011/6/9 Wu DaoGuang <wdgvip@...il.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@...tec.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@...il.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@...tec.co.uk>
> + *
> + *     Wu DaoGuang <wdgvip@...il.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@...il.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@...ts.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Powered by blists - more mailing lists