Merge branch 'next-s5pv210' into for-next-new
authorKukjin Kim <kgene.kim@samsung.com>
Thu, 30 Dec 2010 01:52:32 +0000 (10:52 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Thu, 30 Dec 2010 01:52:32 +0000 (10:52 +0900)
Conflicts:
arch/arm/mach-s5pv210/mach-smdkv210.c

1  2 
arch/arm/mach-s5pv210/mach-smdkv210.c

  #include <linux/init.h>
  #include <linux/serial_core.h>
  #include <linux/sysdev.h>
 +#include <linux/dm9000.h>
+ #include <linux/fb.h>
  #include <linux/gpio.h>
+ #include <linux/delay.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/setup.h>
  #include <asm/mach-types.h>
  
+ #include <video/platform_lcd.h>
  #include <mach/map.h>
  #include <mach/regs-clock.h>
+ #include <mach/regs-fb.h>
  
  #include <plat/regs-serial.h>
 +#include <plat/regs-srom.h>
 +#include <plat/gpio-cfg.h>
  #include <plat/s5pv210.h>
  #include <plat/devs.h>
  #include <plat/cpu.h>
@@@ -106,45 -109,76 +112,106 @@@ static struct samsung_keypad_platdata s
        .cols           = 8,
  };
  
 +static struct resource smdkv210_dm9000_resources[] = {
 +      [0] = {
 +              .start  = S5PV210_PA_SROM_BANK5,
 +              .end    = S5PV210_PA_SROM_BANK5,
 +              .flags  = IORESOURCE_MEM,
 +      },
 +      [1] = {
 +              .start  = S5PV210_PA_SROM_BANK5 + 2,
 +              .end    = S5PV210_PA_SROM_BANK5 + 2,
 +              .flags  = IORESOURCE_MEM,
 +      },
 +      [2] = {
 +              .start  = IRQ_EINT(9),
 +              .end    = IRQ_EINT(9),
 +              .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
 +      },
 +};
 +
 +static struct dm9000_plat_data smdkv210_dm9000_platdata = {
 +      .flags          = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
 +      .dev_addr       = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 },
 +};
 +
 +struct platform_device smdkv210_dm9000 = {
 +      .name           = "dm9000",
 +      .id             = -1,
 +      .num_resources  = ARRAY_SIZE(smdkv210_dm9000_resources),
 +      .resource       = smdkv210_dm9000_resources,
 +      .dev            = {
 +              .platform_data  = &smdkv210_dm9000_platdata,
 +      },
 +};
 +
+ static void smdkv210_lte480wv_set_power(struct plat_lcd_data *pd,
+                                       unsigned int power)
+ {
+       if (power) {
+ #if !defined(CONFIG_BACKLIGHT_PWM)
+               gpio_request(S5PV210_GPD0(3), "GPD0");
+               gpio_direction_output(S5PV210_GPD0(3), 1);
+               gpio_free(S5PV210_GPD0(3));
+ #endif
+               /* fire nRESET on power up */
+               gpio_request(S5PV210_GPH0(6), "GPH0");
+               gpio_direction_output(S5PV210_GPH0(6), 1);
+               gpio_set_value(S5PV210_GPH0(6), 0);
+               mdelay(10);
+               gpio_set_value(S5PV210_GPH0(6), 1);
+               mdelay(10);
+               gpio_free(S5PV210_GPH0(6));
+       } else {
+ #if !defined(CONFIG_BACKLIGHT_PWM)
+               gpio_request(S5PV210_GPD0(3), "GPD0");
+               gpio_direction_output(S5PV210_GPD0(3), 0);
+               gpio_free(S5PV210_GPD0(3));
+ #endif
+       }
+ }
+ static struct plat_lcd_data smdkv210_lcd_lte480wv_data = {
+       .set_power      = smdkv210_lte480wv_set_power,
+ };
+ static struct platform_device smdkv210_lcd_lte480wv = {
+       .name                   = "platform-lcd",
+       .dev.parent             = &s3c_device_fb.dev,
+       .dev.platform_data      = &smdkv210_lcd_lte480wv_data,
+ };
+ static struct s3c_fb_pd_win smdkv210_fb_win0 = {
+       .win_mode = {
+               .left_margin    = 13,
+               .right_margin   = 8,
+               .upper_margin   = 7,
+               .lower_margin   = 5,
+               .hsync_len      = 3,
+               .vsync_len      = 1,
+               .xres           = 800,
+               .yres           = 480,
+       },
+       .max_bpp        = 32,
+       .default_bpp    = 24,
+ };
+ static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
+       .win[0]         = &smdkv210_fb_win0,
+       .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
+       .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
+       .setup_gpio     = s5pv210_fb_gpio_setup_24bpp,
+ };
  static struct platform_device *smdkv210_devices[] __initdata = {
--      &s5pv210_device_iis0,
--      &s5pv210_device_ac97,
--      &s5pv210_device_spdif,
        &s3c_device_adc,
        &s3c_device_cfcon,
+       &s3c_device_fb,
        &s3c_device_hsmmc0,
        &s3c_device_hsmmc1,
        &s3c_device_hsmmc2,
        &s3c_device_i2c0,
        &s3c_device_i2c1,
        &s3c_device_i2c2,
--      &samsung_device_keypad,
        &s3c_device_rtc,
        &s3c_device_ts,
        &s3c_device_wdt,
++      &s5pv210_device_ac97,
++      &s5pv210_device_iis0,
++      &s5pv210_device_spdif,
++      &samsung_device_keypad,
 +      &smdkv210_dm9000,
+       &smdkv210_lcd_lte480wv,
  };
  
 +static void __init smdkv210_dm9000_init(void)
 +{
 +      unsigned int tmp;
 +
 +      gpio_request(S5PV210_MP01(5), "nCS5");
 +      s3c_gpio_cfgpin(S5PV210_MP01(5), S3C_GPIO_SFN(2));
 +      gpio_free(S5PV210_MP01(5));
 +
 +      tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);
 +      __raw_writel(tmp, S5P_SROM_BC5);
 +
 +      tmp = __raw_readl(S5P_SROM_BW);
 +      tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT);
 +      tmp |= (1 << S5P_SROM_BW__NCS5__SHIFT);
 +      __raw_writel(tmp, S5P_SROM_BW);
 +}
 +
  static struct i2c_board_info smdkv210_i2c_devs0[] __initdata = {
        { I2C_BOARD_INFO("24c08", 0x50), },     /* Samsung S524AD0XD1 */
 +      { I2C_BOARD_INFO("wm8580", 0x1b), },
  };
  
  static struct i2c_board_info smdkv210_i2c_devs1[] __initdata = {