]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'kirkwood_boards_for_v3.5' of git://git.infradead.org/users/jcooper...
authorArnd Bergmann <arnd@arndb.de>
Tue, 15 May 2012 08:41:07 +0000 (10:41 +0200)
committerArnd Bergmann <arnd@arndb.de>
Tue, 15 May 2012 08:41:07 +0000 (10:41 +0200)
* 'kirkwood_boards_for_v3.5' of git://git.infradead.org/users/jcooper/linux:
  ARM: kirkwood: Add support for RaidSonic IB-NAS6210/6220 using devicetree
  kirkwood: Add iconnect support
  orion/kirkwood: create a generic function for gpio led blinking
  kirkwood/orion: fix orion_gpio_set_blink
  ARM: kirkwood: Define DNS-320/DNS-325 NAND in fdt
  kirkwood: Allow nand to be configured via. devicetree
  mtd: Add orion_nand devicetree bindings
  ARM: kirkwood: Basic support for DNS-320 and DNS-325

Includes an update to v3.4-rc7

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1  2 
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-omap2/board-igep0020.c

index 366daff79458a33d88edd1b7abdb7f4c53081969,b8df521fb68ec83c077681b2fc8cf155de55758f..2808e471cdcca805fb15c6e8c12f0306b672cd86
@@@ -200,7 -200,6 +200,7 @@@ config MACH_SMDKV31
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select SAMSUNG_DEV_BACKLIGHT
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_DEV_AHCI
        select SAMSUNG_DEV_KEYPAD
        select EXYNOS4_DEV_DMA
@@@ -233,6 -232,9 +233,9 @@@ config MACH_ARMLEX421
  config MACH_UNIVERSAL_C210
        bool "Mobile UNIVERSAL_C210 Board"
        select CPU_EXYNOS4210
+       select S5P_HRT
+       select CLKSRC_MMIO
+       select HAVE_SCHED_CLOCK
        select S5P_GPIO_INT
        select S5P_DEV_FIMC0
        select S5P_DEV_FIMC1
        select S5P_DEV_ONENAND
        select S5P_DEV_TV
        select EXYNOS4_DEV_DMA
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_I2C3
@@@ -290,7 -291,6 +293,7 @@@ config MACH_NUR
        select S5P_DEV_USB_EHCI
        select S5P_SETUP_MIPIPHY
        select EXYNOS4_DEV_DMA
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_SETUP_FIMC
        select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
@@@ -325,7 -325,6 +328,7 @@@ config MACH_ORIGE
        select S5P_DEV_USB_EHCI
        select SAMSUNG_DEV_BACKLIGHT
        select SAMSUNG_DEV_PWM
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_DEV_DMA
        select EXYNOS4_DEV_USB_OHCI
        select EXYNOS4_SETUP_FIMD0
@@@ -346,11 -345,6 +349,11 @@@ config MACH_SMDK421
        select S3C_DEV_I2C7
        select S3C_DEV_RTC
        select S3C_DEV_WDT
 +      select S5P_DEV_FIMC0
 +      select S5P_DEV_FIMC1
 +      select S5P_DEV_FIMC2
 +      select S5P_DEV_FIMC3
 +      select S5P_DEV_MFC
        select SAMSUNG_DEV_BACKLIGHT
        select SAMSUNG_DEV_KEYPAD
        select SAMSUNG_DEV_PWM
index a6959bbfef8966f7b4ddb0059e642734bb8ea417,a34036eb8ba26942d9859f9e574013c355e510c4..08e5a8e45bdb8aaf3937ecca417ead26fdab014f
@@@ -23,7 -23,6 +23,7 @@@
  #include <linux/i2c-gpio.h>
  #include <linux/i2c/mcs.h>
  #include <linux/i2c/atmel_mxt_ts.h>
 +#include <drm/exynos_drm.h>
  
  #include <asm/mach/arch.h>
  #include <asm/hardware/gic.h>
@@@ -41,6 -40,7 +41,7 @@@
  #include <plat/pd.h>
  #include <plat/regs-fb-v4.h>
  #include <plat/fimc-core.h>
+ #include <plat/s5p-time.h>
  #include <plat/camport.h>
  #include <plat/mipi_csis.h>
  
@@@ -813,29 -813,6 +814,29 @@@ static struct i2c_board_info i2c1_devs[
        /* Gyro, To be updated */
  };
  
 +#ifdef CONFIG_DRM_EXYNOS
 +static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
 +      .panel = {
 +              .timing = {
 +                      .left_margin    = 16,
 +                      .right_margin   = 16,
 +                      .upper_margin   = 2,
 +                      .lower_margin   = 28,
 +                      .hsync_len      = 2,
 +                      .vsync_len      = 1,
 +                      .xres           = 480,
 +                      .yres           = 800,
 +                      .refresh        = 55,
 +              },
 +      },
 +      .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB |
 +                        VIDCON0_CLKSEL_LCD,
 +      .vidcon1        = VIDCON1_INV_VCLK | VIDCON1_INV_VDEN
 +                        | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
 +      .default_win    = 3,
 +      .bpp            = 32,
 +};
 +#else
  /* Frame Buffer */
  static struct s3c_fb_pd_win universal_fb_win0 = {
        .win_mode = {
@@@ -863,7 -840,6 +864,7 @@@ static struct s3c_fb_platdata universal
                          | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
        .setup_gpio     = exynos4_fimd0_gpio_setup_24bpp,
  };
 +#endif
  
  static struct regulator_consumer_supply cam_vt_dio_supply =
        REGULATOR_SUPPLY("vdd_core", "0-003c");
@@@ -1073,9 -1049,6 +1074,9 @@@ static struct platform_device *universa
        &s5p_device_onenand,
        &s5p_device_fimd0,
        &s5p_device_jpeg,
 +#ifdef CONFIG_DRM_EXYNOS
 +      &exynos_device_drm,
 +#endif
        &s5p_device_mfc,
        &s5p_device_mfc_l,
        &s5p_device_mfc_r,
@@@ -1091,6 -1064,7 +1092,7 @@@ static void __init universal_map_io(voi
        exynos_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));
+       s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
  }
  
  static void s5p_tv_setup(void)
@@@ -1122,12 -1096,7 +1124,12 @@@ static void __init universal_machine_in
        s5p_i2c_hdmiphy_set_platdata(NULL);
        i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs));
  
 +#ifdef CONFIG_DRM_EXYNOS
 +      s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
 +      exynos4_fimd0_gpio_setup_24bpp();
 +#else
        s5p_fimd0_set_platdata(&universal_lcd_pdata);
 +#endif
  
        universal_touchkey_init();
        i2c_register_board_info(I2C_GPIO_BUS_12, i2c_gpio12_devs,
@@@ -1146,7 -1115,7 +1148,7 @@@ MACHINE_START(UNIVERSAL_C210, "UNIVERSA
        .map_io         = universal_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = universal_machine_init,
-       .timer          = &exynos4_timer,
+       .timer          = &s5p_timer,
        .reserve        = &universal_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
index 16ec5c89e0352bc95aeeb7b9fb69acf4996b5d6c,740cee9369bae3c0eeff216aa967b0deb37a33b7..55dfcccf1a8a2ecc2f197ec1fcee7d568cd7e944
@@@ -24,8 -24,6 +24,8 @@@
  #include <linux/i2c/twl.h>
  #include <linux/mmc/host.h>
  
 +#include <linux/mtd/nand.h>
 +
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  
@@@ -41,8 -39,6 +41,8 @@@
  #include "hsmmc.h"
  #include "sdram-numonyx-m65kxxxxam.h"
  #include "common-board-devices.h"
 +#include "board-flash.h"
 +#include "control.h"
  
  #define IGEP2_SMSC911X_CS       5
  #define IGEP2_SMSC911X_GPIO     176
  #define IGEP3_GPIO_LED1_RED   16
  #define IGEP3_GPIO_USBH_NRESET  183
  
 +#define IGEP_SYSBOOT_MASK           0x1f
 +#define IGEP_SYSBOOT_NAND           0x0f
 +#define IGEP_SYSBOOT_ONENAND        0x10
 +
  /*
   * IGEP2 Hardware Revision Table
   *
@@@ -118,10 -110,8 +118,10 @@@ static void __init igep2_get_revision(v
        gpio_free(IGEP2_GPIO_LED1_RED);
  }
  
 -#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
 -      defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
 +#if defined(CONFIG_MTD_ONENAND_OMAP2) ||              \
 +      defined(CONFIG_MTD_ONENAND_OMAP2_MODULE) ||     \
 +      defined(CONFIG_MTD_NAND_OMAP2) ||               \
 +      defined(CONFIG_MTD_NAND_OMAP2_MODULE)
  
  #define ONENAND_MAP             0x20000000
  
   * So MTD regards it as 4KiB page size and 256KiB block size 64*(2*2048)
   */
  
 -static struct mtd_partition igep_onenand_partitions[] = {
 +static struct mtd_partition igep_flash_partitions[] = {
        {
                .name           = "X-Loader",
                .offset         = 0,
        },
  };
  
 -static struct omap_onenand_platform_data igep_onenand_data = {
 -      .parts = igep_onenand_partitions,
 -      .nr_parts = ARRAY_SIZE(igep_onenand_partitions),
 -      .dma_channel    = -1,   /* disable DMA in OMAP OneNAND driver */
 -};
 -
 -static struct platform_device igep_onenand_device = {
 -      .name           = "omap2-onenand",
 -      .id             = -1,
 -      .dev = {
 -              .platform_data = &igep_onenand_data,
 -      },
 -};
 +static inline u32 igep_get_sysboot_value(void)
 +{
 +      return omap_ctrl_readl(OMAP343X_CONTROL_STATUS) & IGEP_SYSBOOT_MASK;
 +}
  
  static void __init igep_flash_init(void)
  {
 -      u8 cs = 0;
 -      u8 onenandcs = GPMC_CS_NUM + 1;
 -
 -      for (cs = 0; cs < GPMC_CS_NUM; cs++) {
 -              u32 ret;
 -              ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
 -
 -              /* Check if NAND/oneNAND is configured */
 -              if ((ret & 0xC00) == 0x800)
 -                      /* NAND found */
 -                      pr_err("IGEP: Unsupported NAND found\n");
 -              else {
 -                      ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG7);
 -                      if ((ret & 0x3F) == (ONENAND_MAP >> 24))
 -                              /* ONENAND found */
 -                              onenandcs = cs;
 -              }
 -      }
 -
 -      if (onenandcs > GPMC_CS_NUM) {
 -              pr_err("IGEP: Unable to find configuration in GPMC\n");
 -              return;
 +      u32 mux;
 +      mux = igep_get_sysboot_value();
 +
 +      if (mux == IGEP_SYSBOOT_NAND) {
 +              pr_info("IGEP: initializing NAND memory device\n");
 +              board_nand_init(igep_flash_partitions,
 +                              ARRAY_SIZE(igep_flash_partitions),
 +                              0, NAND_BUSWIDTH_16);
 +      } else if (mux == IGEP_SYSBOOT_ONENAND) {
 +              pr_info("IGEP: initializing OneNAND memory device\n");
 +              board_onenand_init(igep_flash_partitions,
 +                                 ARRAY_SIZE(igep_flash_partitions), 0);
 +      } else {
 +              pr_err("IGEP: Flash: unsupported sysboot sequence found\n");
        }
 -
 -      igep_onenand_data.cs = onenandcs;
 -
 -      if (platform_device_register(&igep_onenand_device) < 0)
 -              pr_err("IGEP: Unable to register OneNAND device\n");
  }
  
  #else
@@@ -629,7 -641,7 +629,7 @@@ static struct regulator_consumer_suppl
  
  static void __init igep_init(void)
  {
-       regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
+       regulator_register_fixed(1, dummy_supplies, ARRAY_SIZE(dummy_supplies));
        omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
  
        /* Get IGEP2 hardware revision */