diff options
Diffstat (limited to 'arch/arm/mach-s3c6410/mach-smdk6410.c')
-rw-r--r-- | arch/arm/mach-s3c6410/mach-smdk6410.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c index d0b9f09b726..dfd84d00f8d 100644 --- a/arch/arm/mach-s3c6410/mach-smdk6410.c +++ b/arch/arm/mach-s3c6410/mach-smdk6410.c @@ -24,6 +24,7 @@ #include <linux/fb.h> #include <linux/gpio.h> #include <linux/delay.h> +#include <linux/smsc911x.h> #include <video/platform_lcd.h> @@ -44,6 +45,7 @@ #include <plat/regs-sys.h> #include <plat/iic.h> #include <plat/fb.h> +#include <plat/gpio-cfg.h> #include <plat/s3c6410.h> #include <plat/clock.h> @@ -132,6 +134,37 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = { .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, }; +static struct resource smdk6410_smsc911x_resources[] = { + [0] = { + .start = 0x18000000, + .end = 0x18000000 + SZ_64K - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = S3C_EINT(10), + .end = S3C_EINT(10), + .flags = IORESOURCE_IRQ | IRQ_TYPE_LEVEL_LOW, + }, +}; + +static struct smsc911x_platform_config smdk6410_smsc911x_pdata = { + .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, + .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, + .flags = SMSC911X_USE_32BIT | SMSC911X_FORCE_INTERNAL_PHY, + .phy_interface = PHY_INTERFACE_MODE_MII, +}; + + +static struct platform_device smdk6410_smsc911x = { + .name = "smsc911x", + .id = -1, + .num_resources = ARRAY_SIZE(smdk6410_smsc911x_resources), + .resource = &smdk6410_smsc911x_resources[0], + .dev = { + .platform_data = &smdk6410_smsc911x_pdata, + }, +}; + static struct map_desc smdk6410_iodesc[] = {}; static struct platform_device *smdk6410_devices[] __initdata = { @@ -145,6 +178,8 @@ static struct platform_device *smdk6410_devices[] __initdata = { &s3c_device_i2c1, &s3c_device_fb, &smdk6410_lcd_powerdev, + + &smdk6410_smsc911x, }; static struct i2c_board_info i2c_devs0[] __initdata = { |