ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
Subsystems (3)
PATCH 1/1 ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
This patch adds WIZnet W5300E01 board. I tested this code in the board. Please review this patch and apply it if do not have any problems.
Taehun kim
--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 186 +++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.c
arch/arm/mach-s3c24xx/Kconfig +5 -0
@@ -248,6 +248,11 @@ config MACH_VR1000 help Say Y here if you are using the Thorcom VR1000 board. +config MACH_W5300E01 + bool "WIZnet W5300E01-ARM Board" + help + Say Y here if you are using the Wiznet W5300E01-ARM board. + endif # CPU_S3C2410 config S3C2412_PM_SLEEP
arch/arm/mach-s3c24xx/Makefile +1 -0
@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o obj-$(CONFIG_MACH_TCT_HAMMER) += mach-tct_hammer.o obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o +obj-$(CONFIG_MACH_W5300E01) += mach-w5300e01.o obj-$(CONFIG_MACH_JIVE) += mach-jive.o obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.o
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +186 -0
186 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Quoted 2 lines · Taehun Kim
This patch adds WIZnet W5300E01 board. I tested this code in the board. Please review this patch and apply it if do not have any problems.
Hi,
Quoted 210 lines
Taehun kim
Signed-off-by Taehun Kim <[email protected]>--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 186 +++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.carch/arm/mach-s3c24xx/Kconfig +5
-0@@ -248,6 +248,11 @@ config MACH_VR1000 help Say Y here if you are using the Thorcom VR1000 board. +config MACH_W5300E01 + bool "WIZnet W5300E01-ARM Board" + help + Say Y here if you are using the Wiznet W5300E01-ARM board. + endif # CPU_S3C2410 config S3C2412_PM_SLEEParch/arm/mach-s3c24xx/Makefile +1
-0@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o obj-$(CONFIG_MACH_TCT_HAMMER) += mach-tct_hammer.o obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o +obj-$(CONFIG_MACH_W5300E01) += mach-w5300e01.o obj-$(CONFIG_MACH_JIVE) += mach-jive.o obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.oarch/arm/mach-s3c24xx/mach-w5300e01.c new file +166
-0@@ -0,0 +1,186 @@ +/* linux/arch/arm/mach-s3c24xx/mach-w5300e01.c +* +* Copyright (c) 2012 Taehun Kim <[email protected]> +* +* For product information, visit http://www.wiznet.co.kr/ +* +* 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. +* +* @History: +* derived from linux/arch/arm/mach-s3c24xx/mach-bast.c, written by +* Ben Dooks <[email protected]> +*/ + +#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/gpio.h> +#include <linux/io.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/nand.h> +#include <linux/mtd/map.h> +#include <linux/mtd/partitions.h> + +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/mach/irq.h> +#include <asm/mach-types.h> + +#include <mach/regs-gpio.h> +#include <plat/gpio-cfg.h> +#include <plat/cpu.h> +#include <plat/devs.h> +#include <plat/regs-serial.h> +#include <plat/nand.h> +#include <plat/pm.h> + +static struct map_desc w5300e01_iodesc[]__initdata = { +/* Character LCD register map. */ + {0xf8000000 ,__phys_to_pfn (S3C2410_CS3 ),SZ_1M ,MT_DEVICE } +}; + +#define UCON S3C2410_UCON_DEFAULT +#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB) +#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE) + +static struct s3c2410_uartcfg w5300e01_uartcfgs[]__initdata = { + [0 ] = { + .hwport =0 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + }, + [1 ] = { + .hwport =1 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + }, + [2 ] = { + .hwport =2 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + } +}; + +static struct mtd_partition w5300e01_mtd_partitions[] = { + [0 ] = { + .name ="Bootloader" , + .size =0x20000 , + .offset =0 , + .mask_flags =MTD_WRITEABLE , + }, + [1 ] = { + .name ="Boot Param" , + .size =0x20000 , + .offset =MTDPART_OFS_APPEND , + }, + [2 ] = { + .name ="Kernel" , + .size =0x3C0000 , + .offset =MTDPART_OFS_APPEND , + }, + [3 ] = { + .name ="Ramdisk" , + .size =0x1000000 , + .offset =MTDPART_OFS_APPEND , + }, + [4 ] = { + .name ="JFFS2 FileSystem" , + .size =MTDPART_SIZ_FULL , + .offset =MTDPART_OFS_APPEND , + }, +}; + +static struct resource w5300_resources[] = { + [0 ] = { + .start =S3C2410_CS2 , + .end =S3C2410_CS2 +SZ_1M , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =IRQ_EINT0 , + .end =IRQ_EINT0 , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device w5300_device = { + .name ="w5300" , + .num_resources =ARRAY_SIZE (w5300_resources), + .resource = w5300_resources, +}; + +static struct s3c2410_nand_set w5300e01_nand_sets[] = { + [0 ] = { + .name ="W5300E01" , + .nr_chips =1 , + .nr_partitions =ARRAY_SIZE (w5300e01_mtd_partitions), + .partitions = w5300e01_mtd_partitions, + }, +}; + +static struct s3c2410_platform_nand w5300e01_nand_info = { + .tacls =20 , + .twrph0 =60 , + .twrph1 =30 , + .nr_sets =ARRAY_SIZE (w5300e01_nand_sets), + .sets = w5300e01_nand_sets, +}; + +static struct platform_device *w5300e01_devices[]__initdata = { + &s3c_device_nand, + &s3c_device_usbgadget, + &s3c_device_wdt, + &s3c_device_i2c0, + &s3c_device_iis, + &w5300_device, +}; + +static void __init w5300e01_map_io (void ) +{ +s3c24xx_init_io (w5300e01_iodesc,ARRAY_SIZE (w5300e01_iodesc)); +s3c24xx_init_clocks (0 ); +s3c24xx_init_uarts (w5300e01_uartcfgs,ARRAY_SIZE (w5300e01_uartcfgs)); +} + +static void __init w5300e01_init (void ) +{ +s3c_nand_set_platdata (&w5300e01_nand_info); +platform_add_devices (w5300e01_devices,ARRAY_SIZE (w5300e01_devices)); + +/* W5300 interrupt pin. */ +s3c2410_gpio_cfgpin (S3C2410_GPF (0 ),S3C2410_GPIO_IRQ ); + +s3c2410_gpio_cfgpin (S3C2410_GPF (4 ),S3C2410_GPIO_OUTPUT );
arch/arm/mach-s3c24xx/mach-w5300e01.c line 176
Quoted 10 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +10
-0+s3c2410_gpio_cfgpin (S3C2410_GPF (5 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (6 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (7 ),S3C2410_GPIO_OUTPUT ); + +s3c2410_gpio_setpin (S3C2410_GPF (0 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (4 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (5 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (6 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (7 ),1 ); +
Please use gpiolib API, legacy s3c2410_gpio_* API will be removed soon.
Quoted 14 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +10
-1+s3c_pm_init (); +} + +MACHINE_START (W5300E01 ,"WIZnet W5300E01-ARM" ) + .atag_offset = S3C2410_SDRAM_PA + 0x100, + .map_io = w5300e01_map_io, + .init_irq = s3c24xx_init_irq, + .init_machine = w5300e01_init, + .timer = &s3c24xx_timer, +MACHINE_END --1.7.9.5
Quoted 4 lines
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Looks OK for me.
Regards
Vasily
Hi,
Quoted 13 lines · Vasily Khoruzhick
Quoted 13 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +13
-0+static void __init w5300e01_init (void ) +{ +s3c_nand_set_platdata (&w5300e01_nand_info); +platform_add_devices (w5300e01_devices,ARRAY_SIZE (w5300e01_devices)); + +/* W5300 interrupt pin. */ +s3c2410_gpio_cfgpin (S3C2410_GPF (0 ),S3C2410_GPIO_IRQ ); + +s3c2410_gpio_cfgpin (S3C2410_GPF (4 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (5 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (6 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (7 ),S3C2410_GPIO_OUTPUT ); +
Quoted 8 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c line 176
Quoted 6 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +6
-0+s3c2410_gpio_setpin (S3C2410_GPF (0 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (4 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (5 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (6 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (7 ),1 ); +Please use gpiolib API, legacy s3c2410_gpio_* API will be removed soon.
Right, you'll find some information about this inDocumentation/arm/Samsung-S3C24XX/GPIO.txt.
These links may be useful as well:
http://www.mail-archive.com/linux-samsung-soc at vger.kernel.org/msg11985.html
http://www.spinics.net/lists/arm-kernel/msg192119.html
--
Regards,
Sylwester
2012/9/3 Sylwester Nawrocki <[email protected]>:
Quoted 28 lines
Hi,
Quoted 13 lines · Vasily Khoruzhick
Quoted 13 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +13
-0+static void __init w5300e01_init (void ) +{ +s3c_nand_set_platdata (&w5300e01_nand_info); +platform_add_devices (w5300e01_devices,ARRAY_SIZE (w5300e01_devices)); + +/* W5300 interrupt pin. */ +s3c2410_gpio_cfgpin (S3C2410_GPF (0 ),S3C2410_GPIO_IRQ ); + +s3c2410_gpio_cfgpin (S3C2410_GPF (4 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (5 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (6 ),S3C2410_GPIO_OUTPUT ); +s3c2410_gpio_cfgpin (S3C2410_GPF (7 ),S3C2410_GPIO_OUTPUT ); +Quoted 8 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c line 176
Quoted 6 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +6
-0+s3c2410_gpio_setpin (S3C2410_GPF (0 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (4 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (5 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (6 ),1 ); +s3c2410_gpio_setpin (S3C2410_GPF (7 ),1 ); +Please use gpiolib API, legacy s3c2410_gpio_* API will be removed soon.
Right, you'll find some information about this in
Documentation/arm/Samsung-S3C24XX/GPIO.txt.
Quoted 8 lines
These links may be useful as well:
http://www.mail-archive.com/linux-samsung-soc at vger.kernel.org/msg11985.html
http://www.spinics.net/lists/arm-kernel/msg192119.html--
Regards,
Sylwester
Thank you for the feedback. I will rewrite the gpio functions and propose the new patch soon.
PATCH v2 1/1 ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
In reply to Taehun KimThis patch adds WIZnet W5300E01 board changed to the new gpio functions. Please review this patch and apply it if do not have any problems.
--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 186 +++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.c
(quoted diff) +0 -0
b/arch/arm/mach-s3c24xx/Kconfig
index d56b0f7..94b60ca 100644
arch/arm/mach-s3c24xx/Kconfig +5 -0
@@ -248,6 +248,11 @@ config MACH_VR1000 help Say Y here if you are using the Thorcom VR1000 board. +config MACH_W5300E01 + bool "WIZnet W5300E01-ARM Board" + help + Say Y here if you are using the Wiznet W5300E01-ARM board. + endif # CPU_S3C2410 config S3C2412_PM_SLEEP
(quoted diff) +0 -0
b/arch/arm/mach-s3c24xx/Makefile
index 0ab6ab1..fc1a89e 100644
arch/arm/mach-s3c24xx/Makefile +1 -0
@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o obj-$(CONFIG_MACH_TCT_HAMMER) += mach-tct_hammer.o obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o +obj-$(CONFIG_MACH_W5300E01) += mach-w5300e01.o obj-$(CONFIG_MACH_JIVE) += mach-jive.o obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.o
(quoted diff) +0 -0
b/arch/arm/mach-s3c24xx/mach-w5300e01.c
new file mode 100644
index 0000000..7daf82e
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +50 -0
50 lines not on this page · raw message
S3C2410_LCON_STOPB)
+#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE) +
+static struct s3c2410_uartcfg w5300e01_uartcfgs[] __initdata = {
+ [0] = {
+ .hwport = 0,
+ .flags = 0,
+ .ucon = UCON,
+ .ulcon = ULCON,
+ .ufcon = UFCON,
+ },
+ [1] = {
+ .hwport = 1,
+ .flags = 0,
+ .ucon = UCON,
+ .ulcon = ULCON,
+ .ufcon = UFCON,
+ },
+ [2] = {
+ .hwport = 2,
+ .flags = 0,
+ .ucon = UCON,
+ .ulcon = ULCON,
+ .ufcon = UFCON,
+ }
+};
+
+static struct mtd_partition w5300e01_mtd_partitions[] = {
+ [0] = {
+ .name = "Bootloader",
+ .size = 0x20000,
+ .offset = 0,
+ .mask_flags = MTD_WRITEABLE,
+ },
+ [1] = {
+ .name = "Boot Param",
+ .size = 0x20000,
+ .offset = MTDPART_OFS_APPEND,
+ },
+ [2] = {
+ .name = "Kernel",
+ .size = 0x3C0000,
+ .offset = MTDPART_OFS_APPEND,
+ },
+ [3] = {
+ .name = "Ramdisk",
+ .size = 0x1000000,
+ .offset = MTDPART_OFS_APPEND,
+ },
+ [4] = {
+ .name = "JFFS2 FileSystem",
+ .size = MTDPART_SIZ_FULL,
+ .offset = MTDPART_OFS_APPEND,
+ },
+};
+
+static struct resource w5300_resources[] = {
+ [0] = {
+ .start = S3C2410_CS2,
+ .end = S3C2410_CS2 + SZ_1M,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_EINT0,
+ .end = IRQ_EINT0,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device w5300_device = {
+ .name = "w5300",
+ .num_resources = ARRAY_SIZE(w5300_resources),
+ .resource = w5300_resources,
+};
+
+static struct s3c2410_nand_set w5300e01_nand_sets[] = {
+ [0] = {
+ .name = "W5300E01",
+ .nr_chips = 1,
+ .nr_partitions = ARRAY_SIZE(w5300e01_mtd_partitions),
+ .partitions = w5300e01_mtd_partitions,
+ },
+};
+
+static struct s3c2410_platform_nand w5300e01_nand_info = {
+ .tacls = 20,
+ .twrph0 = 60,
+ .twrph1 = 30,
+ .nr_sets = ARRAY_SIZE(w5300e01_nand_sets),
+ .sets = w5300e01_nand_sets,
+};
+
+static struct platform_device *w5300e01_devices[] __initdata = {
+ &s3c_device_nand,
+ &s3c_device_usbgadget,
+ &s3c_device_wdt,
+ &s3c_device_i2c0,
+ &s3c_device_iis,
+ &w5300_device,
+};
+
+static void __init w5300e01_map_io(void)
+{
+ s3c24xx_init_io(w5300e01_iodesc, ARRAY_SIZE(w5300e01_iodesc));
+ s3c24xx_init_clocks(0);
+ s3c24xx_init_uarts(w5300e01_uartcfgs, ARRAY_SIZE(w5300e01_uartcfgs));
+}
+
+static void __init w5300e01_init(void)
+{
+ s3c_nand_set_platdata(&w5300e01_nand_info);
+ platform_add_devices(w5300e01_devices, ARRAY_SIZE(w5300e01_devices));
+
+ /* W5300 interrupt pin. */
+ s3c_gpio_cfgpin(S3C2410_GPF(0), S3C2410_GPIO_IRQ);
+
+ s3c_gpio_cfgpin(S3C2410_GPF(4), S3C2410_GPIO_OUTPUT);
+ s3c_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT);
+ s3c_gpio_cfgpin(S3C2410_GPF(6), S3C2410_GPIO_OUTPUT);
+ s3c_gpio_cfgpin(S3C2410_GPF(7), S3C2410_GPIO_OUTPUT);
+
+ gpio_set_value(S3C2410_GPF(0), 1);
+ gpio_set_value(S3C2410_GPF(4), 1);
+ gpio_set_value(S3C2410_GPF(5), 1);
+ gpio_set_value(S3C2410_GPF(6), 1);
+ gpio_set_value(S3C2410_GPF(7), 1);
+
+ s3c_pm_init();
+}
+
+MACHINE_START(W5300E01, "WIZnet W5300E01-ARM")
+ .atag_offset = S3C2410_SDRAM_PA + 0x100,
+ .map_io = w5300e01_map_io,
+ .init_irq = s3c24xx_init_irq,
+ .init_machine = w5300e01_init,
+ .timer = &s3c24xx_timer,
+MACHINE_END
Signature · 1 line
1.7.9.5
Quoted 215 lines · Taehun Kim
This patch adds WIZnet W5300E01 board changed to the new gpio functions. Please review this patch and apply it if do not have any problems.
Signed-off-by Taehun Kim <[email protected]>--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 186 +++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.carch/arm/mach-s3c24xx/Kconfig +5
-0@@ -248,6 +248,11 @@ config MACH_VR1000 help Say Y here if you are using the Thorcom VR1000 board. +config MACH_W5300E01 + bool "WIZnet W5300E01-ARM Board" + help + Say Y here if you are using the Wiznet W5300E01-ARM board. + endif # CPU_S3C2410 config S3C2412_PM_SLEEParch/arm/mach-s3c24xx/Makefile +1
-0@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o obj-$(CONFIG_MACH_TCT_HAMMER) += mach-tct_hammer.o obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o +obj-$(CONFIG_MACH_W5300E01) += mach-w5300e01.o obj-$(CONFIG_MACH_JIVE) += mach-jive.o obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.oarch/arm/mach-s3c24xx/mach-w5300e01.c new file +50
-0@@ -0,0 +1,186 @@ +/* linux/arch/arm/mach-s3c24xx/mach-w5300e01.c +* +* Copyright (c) 2012 Taehun Kim <[email protected]> +* +* For product information, visit http://www.wiznet.co.kr/ +* +* 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. +* +* @History: +* derived from linux/arch/arm/mach-s3c24xx/mach-bast.c, written by +* Ben Dooks <[email protected]> +*/ + +#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/gpio.h> +#include <linux/io.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/nand.h> +#include <linux/mtd/map.h> +#include <linux/mtd/partitions.h> + +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/mach/irq.h> +#include <asm/mach-types.h> + +#include <mach/regs-gpio.h> +#include <plat/gpio-cfg.h> +#include <plat/cpu.h> +#include <plat/devs.h> +#include <plat/regs-serial.h> +#include <plat/nand.h> +#include <plat/pm.h> + +static struct map_desc w5300e01_iodesc[]__initdata = { +/* Character LCD register map. */ + {0xf8000000 ,__phys_to_pfn (S3C2410_CS3 ),SZ_1M ,MT_DEVICE } +}; + +#define UCON S3C2410_UCON_DEFAULT +#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE |
S3C2410_LCON_STOPB)arch/arm/mach-s3c24xx/mach-w5300e01.c new file +115
-0+#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE) + +static struct s3c2410_uartcfg w5300e01_uartcfgs[]__initdata = { + [0 ] = { + .hwport =0 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + }, + [1 ] = { + .hwport =1 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + }, + [2 ] = { + .hwport =2 , + .flags =0 , + .ucon =UCON , + .ulcon =ULCON , + .ufcon =UFCON , + } +}; + +static struct mtd_partition w5300e01_mtd_partitions[] = { + [0 ] = { + .name ="Bootloader" , + .size =0x20000 , + .offset =0 , + .mask_flags =MTD_WRITEABLE , + }, + [1 ] = { + .name ="Boot Param" , + .size =0x20000 , + .offset =MTDPART_OFS_APPEND , + }, + [2 ] = { + .name ="Kernel" , + .size =0x3C0000 , + .offset =MTDPART_OFS_APPEND , + }, + [3 ] = { + .name ="Ramdisk" , + .size =0x1000000 , + .offset =MTDPART_OFS_APPEND , + }, + [4 ] = { + .name ="JFFS2 FileSystem" , + .size =MTDPART_SIZ_FULL , + .offset =MTDPART_OFS_APPEND , + }, +}; + +static struct resource w5300_resources[] = { + [0 ] = { + .start =S3C2410_CS2 , + .end =S3C2410_CS2 +SZ_1M , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =IRQ_EINT0 , + .end =IRQ_EINT0 , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device w5300_device = { + .name ="w5300" , + .num_resources =ARRAY_SIZE (w5300_resources), + .resource = w5300_resources, +}; + +static struct s3c2410_nand_set w5300e01_nand_sets[] = { + [0 ] = { + .name ="W5300E01" , + .nr_chips =1 , + .nr_partitions =ARRAY_SIZE (w5300e01_mtd_partitions), + .partitions = w5300e01_mtd_partitions, + }, +}; + +static struct s3c2410_platform_nand w5300e01_nand_info = { + .tacls =20 , + .twrph0 =60 , + .twrph1 =30 , + .nr_sets =ARRAY_SIZE (w5300e01_nand_sets), + .sets = w5300e01_nand_sets, +}; + +static struct platform_device *w5300e01_devices[]__initdata = { + &s3c_device_nand, + &s3c_device_usbgadget, + &s3c_device_wdt, + &s3c_device_i2c0, + &s3c_device_iis, + &w5300_device, +}; + +static void __init w5300e01_map_io (void ) +{ +s3c24xx_init_io (w5300e01_iodesc,ARRAY_SIZE (w5300e01_iodesc)); +s3c24xx_init_clocks (0 ); +s3c24xx_init_uarts (w5300e01_uartcfgs,ARRAY_SIZE (w5300e01_uartcfgs)); +} + +static void __init w5300e01_init (void ) +{ +s3c_nand_set_platdata (&w5300e01_nand_info); +platform_add_devices (w5300e01_devices,ARRAY_SIZE (w5300e01_devices)); + +/* W5300 interrupt pin. */ +s3c_gpio_cfgpin (S3C2410_GPF (0 ),S3C2410_GPIO_IRQ ); +
arch/arm/mach-s3c24xx/mach-w5300e01.c
Quoted 10 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +10
-0+s3c_gpio_cfgpin (S3C2410_GPF (4 ),S3C2410_GPIO_OUTPUT ); +s3c_gpio_cfgpin (S3C2410_GPF (5 ),S3C2410_GPIO_OUTPUT ); +s3c_gpio_cfgpin (S3C2410_GPF (6 ),S3C2410_GPIO_OUTPUT ); +s3c_gpio_cfgpin (S3C2410_GPF (7 ),S3C2410_GPIO_OUTPUT ); + +gpio_set_value (S3C2410_GPF (0 ),1 ); +gpio_set_value (S3C2410_GPF (4 ),1 ); +gpio_set_value (S3C2410_GPF (5 ),1 ); +gpio_set_value (S3C2410_GPF (6 ),1 ); +gpio_set_value (S3C2410_GPF (7 ),1 );
You need to call gpio_request() (or gpio_request_{one,array}) before using pin. Please look atDocumentation/gpio.txt
Quoted 11 lines
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +10
-1+s3c_pm_init (); +} + +MACHINE_START (W5300E01 ,"WIZnet W5300E01-ARM" ) + .atag_offset = S3C2410_SDRAM_PA + 0x100, + .map_io = w5300e01_map_io, + .init_irq = s3c24xx_init_irq, + .init_machine = w5300e01_init, + .timer = &s3c24xx_timer, +MACHINE_END --
Quoted 1 line
1.7.9.5
Regards
Vasily
Review
Quoted 12 lines · Taehun Kim
(quoted diff) +12
-0+static void __init w5300e01_init(void) +{ + s3c_nand_set_platdata(&w5300e01_nand_info); + platform_add_devices(w5300e01_devices, ARRAY_SIZE(w5300e01_devices)); + + /* W5300 interrupt pin. */ + s3c_gpio_cfgpin(S3C2410_GPF(0), S3C2410_GPIO_IRQ); + + s3c_gpio_cfgpin(S3C2410_GPF(4), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(6), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(7), S3C2410_GPIO_OUTPUT);
Please don't use these obsolete S3C2410_GPIO_* defines, they will be gone soon, if aren't yet.
Review
Quoted 5 lines
(quoted diff) +5
-0+ gpio_set_value(S3C2410_GPF(0), 1); + gpio_set_value(S3C2410_GPF(4), 1); + gpio_set_value(S3C2410_GPF(5), 1); + gpio_set_value(S3C2410_GPF(6), 1); + gpio_set_value(S3C2410_GPF(7), 1);
Instead I would do something like:
8<-----------------------------------------------------------------
static const struct gpio gpios[] = {
{ S3C2410_GPF(4), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(5), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(6), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(7), GPIOF_OUT_INIT_HIGH, NULL },
};if (!WARN_ON(gpio_request_array(gpios, ARRAY_SIZE(gpios)))
gpios_free_array(gpios);
/* W5300 interrupt pin. */
if (!WARN_ON(gpio_request(S3C2410_GPF(0), GPIOF_IN, NULL))) {
s3c_gpio_cfgpin(S3C2410_GPF(0), S3C_GPIO_SFN(2)); /* EINT0 */
gpio_free(S3C2410_GPF(0));
}8<-----------------------------------------------------------------
--
Regards,
Sylwester
2012/9/4 Sylwester Nawrocki <[email protected]>:
Quoted 43 lines · Taehun Kim
Review
Quoted 12 lines
(quoted diff) +12
-0+static void __init w5300e01_init(void) +{ + s3c_nand_set_platdata(&w5300e01_nand_info); + platform_add_devices(w5300e01_devices, ARRAY_SIZE(w5300e01_devices)); + + /* W5300 interrupt pin. */ + s3c_gpio_cfgpin(S3C2410_GPF(0), S3C2410_GPIO_IRQ); + + s3c_gpio_cfgpin(S3C2410_GPF(4), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(6), S3C2410_GPIO_OUTPUT); + s3c_gpio_cfgpin(S3C2410_GPF(7), S3C2410_GPIO_OUTPUT);Please don't use these obsolete S3C2410_GPIO_* defines, they will be gone soon, if aren't yet.
Review
Quoted 5 lines
(quoted diff) +5
-0+ gpio_set_value(S3C2410_GPF(0), 1); + gpio_set_value(S3C2410_GPF(4), 1); + gpio_set_value(S3C2410_GPF(5), 1); + gpio_set_value(S3C2410_GPF(6), 1); + gpio_set_value(S3C2410_GPF(7), 1);Instead I would do something like:
8<-----------------------------------------------------------------
static const struct gpio gpios[] = { { S3C2410_GPF(4), GPIOF_OUT_INIT_HIGH, NULL }, { S3C2410_GPF(5), GPIOF_OUT_INIT_HIGH, NULL }, { S3C2410_GPF(6), GPIOF_OUT_INIT_HIGH, NULL }, { S3C2410_GPF(7), GPIOF_OUT_INIT_HIGH, NULL }, };if (!WARN_ON(gpio_request_array(gpios,
ARRAY_SIZE(gpios)))gpios_free_array(gpios);/* W5300 interrupt pin. */
if (!WARN_ON(gpio_request(S3C2410_GPF(0), GPIOF_IN, NULL))) { s3c_gpio_cfgpin(S3C2410_GPF(0), S3C_GPIO_SFN(2)); /* EINT0 */ gpio_free(S3C2410_GPF(0)); }
Quoted 6 lines
8<-----------------------------------------------------------------
--
Regards,
Sylwester
Thank you for your feedback. I will change the gpio routine as follows:
-----------------------------------------------------------------
static const struct gpio w5300e01_gpios[] = {
{ S3C2410_GPF(4), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(5), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(6), GPIOF_OUT_INIT_HIGH, NULL },
{ S3C2410_GPF(7), GPIOF_OUT_INIT_HIGH, NULL },
};static void __init w5300_init(void)
{
/* W5300 interrupt pin. */
if (WARN_ON(gpio_request(S3C2410_GPF(0), "W5300 irq"))) {
pr_err("%s: GPIO request failed.\n", __func__);
return;
}
s3c_gpio_cfgpin(S3C2410_GPF(0), S3C_GPIO_SFN(2)); /* EINT0 */
}static void __init w5300e01_init(void)
{
s3c_nand_set_platdata(&w5300e01_nand_info);
platform_add_devices(w5300e01_devices, ARRAY_SIZE(w5300e01_devices));
if (WARN_ON(gpio_request_array(w5300e01_gpios, ARRAY_SIZE(w5300e01_gpios))))
pr_err("%s: GPIO request failed\n", __func__);
w5300_init();
s3c_pm_init();
}-----------------------------------------------------------------
Does anybody have a other comments?
PATCH v3 1/1 ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
In reply to Taehun Kim- The gpio routines are changed to use the gpio_request() functions from comments of Vasily and Sylwester.
- The mistake of adding a character by my email client automatically is fixed.
Please review this patch and apply it if do not have any problems.
--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 193 +++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.c
arch/arm/mach-s3c24xx/Kconfig +5 -0
@@ -248,6 +248,11 @@ config MACH_VR1000 help Say Y here if you are using the Thorcom VR1000 board. +config MACH_W5300E01 + bool "WIZnet W5300E01-ARM Board" + help + Say Y here if you are using the Wiznet W5300E01-ARM board. + endif # CPU_S3C2410 config S3C2412_PM_SLEEP
arch/arm/mach-s3c24xx/Makefile +1 -0
@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o obj-$(CONFIG_MACH_TCT_HAMMER) += mach-tct_hammer.o obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o +obj-$(CONFIG_MACH_W5300E01) += mach-w5300e01.o obj-$(CONFIG_MACH_JIVE) += mach-jive.o obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.o
arch/arm/mach-s3c24xx/mach-w5300e01.c new file +193 -0
193 lines not on this page · raw message
Signature · 1 line
1.7.9.5
PATCH v3 1/1 ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
Quoted 8 lines · Taehun Kim
- The gpio routines are changed to use the
gpio_request()functions from comments of Vasily and Sylwester.
- The mistake of adding a character by my email client automatically is fixed.Please review this patch and apply it if do not have any problems.
Taehun,
Above area is for adding comments like 'This patch adds WIZnet W5300E01 board' because it will be remained in its git log and nobody want to see your old request in there. If any comments which are not related to changes just put it after '---' around your sign. It doesn't hurt your patch.
And you need to update this against on for-next of my tree because some S3C2410 gpio APIs have been gone.(See the Sylwester's comments) Please re-send this.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Quoted 9 lines
Signed-off-by Taehun Kim <[email protected]>--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 193 +++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.c
[snip]
PATCH v3 1/1 ARM: S3C24XX: Add WIZnet W5300E01-ARM board support
In reply to Taehun KimQuoted 19 lines · Kukjin Kim
Quoted 8 lines · Taehun Kim
- The gpio routines are changed to use the
gpio_request()functions from comments of Vasily and Sylwester.
- The mistake of adding a character by my email client automatically is fixed.Please review this patch and apply it if do not have any problems.
Taehun,
Above area is for adding comments like 'This patch adds WIZnet W5300E01 board' because it will be remained in its git log and nobody want to see your old request in there. If any comments which are not related to changes just put it after '---' around your sign. It doesn't hurt your patch.
Quoted 4 lines
And you need to update this against on for-next of my tree because some S3C2410 gpio APIs have been gone.(See the Sylwester's comments) Please re- send this.
Any updates on this?
K-Gene <[email protected]>
Quoted 12 lines
Quoted 11 lines
Signed-off-by Taehun Kim <[email protected]>--- arch/arm/mach-s3c24xx/Kconfig | 5 + arch/arm/mach-s3c24xx/Makefile | 1 + arch/arm/mach-s3c24xx/mach-w5300e01.c | 193 +++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 arch/arm/mach-s3c24xx/mach-w5300e01.c[snip]