]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'l2-mtd/master'
authorStephen Rothwell <sfr@canb.auug.org.au>
Mon, 7 Nov 2011 00:50:43 +0000 (11:50 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 7 Nov 2011 00:50:43 +0000 (11:50 +1100)
Conflicts:
arch/arm/mach-at91/board-afeb-9260v1.c
arch/arm/mach-at91/board-neocore926.c
arch/arm/mach-at91/board-rm9200dk.c
arch/arm/mach-at91/board-sam9g20ek.c
arch/arm/mach-at91/board-sam9m10g45ek.c
arch/arm/mach-at91/board-usb-a9260.c
drivers/mtd/maps/lantiq-flash.c

42 files changed:
1  2 
arch/arm/mach-at91/board-afeb-9260v1.c
arch/arm/mach-at91/board-cam60.c
arch/arm/mach-at91/board-cap9adk.c
arch/arm/mach-at91/board-kb9202.c
arch/arm/mach-at91/board-neocore926.c
arch/arm/mach-at91/board-qil-a9260.c
arch/arm/mach-at91/board-rm9200dk.c
arch/arm/mach-at91/board-sam9-l9260.c
arch/arm/mach-at91/board-sam9260ek.c
arch/arm/mach-at91/board-sam9261ek.c
arch/arm/mach-at91/board-sam9263ek.c
arch/arm/mach-at91/board-sam9g20ek.c
arch/arm/mach-at91/board-sam9m10g45ek.c
arch/arm/mach-at91/board-sam9rlek.c
arch/arm/mach-at91/board-snapper9260.c
arch/arm/mach-at91/board-usb-a926x.c
arch/arm/mach-at91/board-yl-9200.c
arch/arm/mach-at91/include/mach/board.h
arch/arm/mach-davinci/board-da830-evm.c
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-dm355-evm.c
arch/arm/mach-davinci/board-dm355-leopard.c
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-davinci/board-mityomapl138.c
arch/arm/mach-davinci/board-neuros-osd2.c
arch/arm/mach-davinci/board-tnetv107x-evm.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-mmp/aspenite.c
arch/arm/mach-orion5x/ts78xx-setup.c
arch/arm/mach-pxa/cm-x300.c
arch/arm/mach-pxa/littleton.c
arch/arm/mach-pxa/raumfeld.c
arch/arm/mach-pxa/zylonite.c
drivers/mtd/Kconfig
drivers/mtd/maps/lantiq-flash.c
drivers/mtd/mtdchar.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/atmel_nand.c
drivers/mtd/nand/au1550nd.c
drivers/mtd/onenand/omap2.c
fs/jffs2/fs.c

index 2d92043308dce086717cab3195b3ae49df437616,a053e915c27942224ae87158aa1ecf60a0c8414e..8c755c6fdbe2c1715158d7eb1c2db04ff33e8a82
@@@ -142,9 -135,9 +136,10 @@@ static struct atmel_nand_data __initdat
        .cle            = 22,
        .rdy_pin        = AT91_PIN_PC13,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
        .bus_width_16   = 0,
 +      .det_pin        = -EINVAL,
+       .parts          = afeb9260_nand_partition,
+       .num_parts      = ARRAY_SIZE(afeb9260_nand_partition),
  };
  
  
index 951e1d9f88301cfccf58f131cde985ee29ed3573,46f8bab9c94387450de9579791b4b273ac782d5f..08a136b039e2a4b038e0e388c34ed86f4db4a39d
@@@ -136,16 -135,11 +136,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata cam60_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -      // .det_pin     = ... not there
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PA9,
        .enable_pin     = AT91_PIN_PA7,
-       .partition_info = nand_partitions,
+       .parts          = cam60_nand_partition,
+       .num_parts      = ARRAY_SIZE(cam60_nand_partition),
  };
  
  static struct sam9_smc_config __initdata cam60_nand_smc_config = {
index ab1bb479501005265b7cf7dfa3835d743bf58978,858927e2aff5436ee26bc9d40e81a7b7d06ba744..3b48829f0c3f99fdbf04cf00c029898e368e9be2
@@@ -174,16 -172,11 +174,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata cap9adk_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 -//    .rdy_pin        = ... not connected
 +      .det_pin        = -EINVAL,
 +      .rdy_pin        = -EINVAL,
        .enable_pin     = AT91_PIN_PD15,
-       .partition_info = nand_partitions,
+       .parts          = cap9adk_nand_partitions,
+       .num_parts      = ARRAY_SIZE(cap9adk_nand_partitions),
  };
  
  static struct sam9_smc_config __initdata cap9adk_nand_smc_config = {
index fcbe247bb5b2708f59391b5e7864449c82193ce4,94372441c1aa29978d4cb3395db469b899f51e6d..39933efcd1741fa79b8ef46cbea2052685d27914
@@@ -103,16 -100,11 +103,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata kb9202_nand_data = {
        .ale            = 22,
        .cle            = 21,
 -      // .det_pin     = ... not there
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC29,
        .enable_pin     = AT91_PIN_PC28,
-       .partition_info = nand_partitions,
+       .parts          = kb9202_nand_partition,
+       .num_parts      = ARRAY_SIZE(kb9202_nand_partition),
  };
  
  static void __init kb9202_board_init(void)
index 0e6b86ee049e0352c86c4faba20e9d8a27812e35,60f0cee074dcc7341210589c516fe2882451e178..d80ec7390880093b867f0d16d5de6e241284c59a
@@@ -195,8 -188,8 +189,9 @@@ static struct atmel_nand_data __initdat
        .rdy_pin                = AT91_PIN_PB19,
        .rdy_pin_active_low     = 1,
        .enable_pin             = AT91_PIN_PD15,
-       .partition_info         = nand_partitions,
 +      .det_pin                = -EINVAL,
+       .parts                  = neocore926_nand_partition,
+       .num_parts              = ARRAY_SIZE(neocore926_nand_partition),
  };
  
  static struct sam9_smc_config __initdata neocore926_nand_smc_config = {
index 04cba2f3dda0b6be1aff7a0b56331f6668173c43,78d71e45d744660f5d633d7dc0c830d4b04ce9d6..c123c6f9085bc777a9573bee071a93948747c99d
@@@ -134,16 -133,11 +134,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC13,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index e34e84e158355b1ff8fcb4251f47b5be699a2b0c,b5f2faf479f6d91c74f25796a944da7ff3e054a1..fe16c27f7c559e5c427c492f2a15725f2d6f4085
@@@ -153,8 -143,9 +147,9 @@@ static struct atmel_nand_data __initdat
        .cle            = 21,
        .det_pin        = AT91_PIN_PB1,
        .rdy_pin        = AT91_PIN_PC2,
 -      // .enable_pin  = ... not there
 +      .enable_pin     = -EINVAL,
-       .partition_info = nand_partitions,
+       .parts          = dk_nand_partition,
+       .num_parts      = ARRAY_SIZE(dk_nand_partition),
  };
  
  #define DK_FLASH_BASE AT91_CHIPSELECT_0
index dad4be4d218629455f8863e8901eb48ff7222241,4128f6d8e902118626f170ba78c28c442bba12f6..d8e9cdcbf9f4e032f55f8f2aa3836c8512460d95
@@@ -135,16 -134,11 +135,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC13,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 7463db376c204fe3b0c4fa57d4dfd138effeeceb,2cf7ce25a33eb0a9f71e70308cf7f542b6f99522..605dc0165ff73758b9a70e6ac93cc1a7b1fd3deb
@@@ -177,16 -176,11 +177,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC13,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 0fd2e125ec9f26cc612d00a3443c19eb7727a654,b7f35d0e9e54bff7812ea5bfd241dc1d3bb00eac..364f762d7077bf3edb6e3eb14e810a7d4ff19b20
@@@ -183,16 -182,11 +183,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 22,
        .cle            = 21,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC15,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index aa22eb036b2d25664d3dddd01738c38d9a5e93e7,5d2bd12b41a8f9c4ee58bc6a385df01e5966447b..a3dbdae8a989370be0f8912502895c1db57ffbf5
@@@ -183,16 -183,11 +183,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PA22,
        .enable_pin     = AT91_PIN_PD15,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 6f11db3c96249fe193edbba8fb4d3ac8439dd66f,003122772e6390c91bb124f0962a22be1430e4b0..5206701b5ce9f80a074b06c57d56117efe3a83f5
@@@ -170,8 -163,8 +164,9 @@@ static struct atmel_nand_data __initdat
        .cle            = 22,
        .rdy_pin        = AT91_PIN_PC13,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
 +      .det_pin        = -EINVAL,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 43a071eae430227f9cc6b0491add82d0138db6cd,00d041ca8dbe1d224613dee0130ccc59d06887a4..9ba1adbdc57c1495c71e58b7452accada82205c0
@@@ -150,8 -143,8 +144,9 @@@ static struct atmel_nand_data __initdat
        .cle            = 22,
        .rdy_pin        = AT91_PIN_PC8,
        .enable_pin     = AT91_PIN_PC14,
-       .partition_info = nand_partitions,
 +      .det_pin        = -EINVAL,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 5d9a31d86666a01419079c9078f3e453917179b5,6178b4e7f1aaab98127edbfb351ab7004ef099b2..0d5ef5c65753698dd7a6cdf84e1307ff4814a34c
@@@ -91,16 -91,11 +91,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata ek_nand_data = {
        .ale            = 21,
        .cle            = 22,
 -//    .det_pin        = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PD17,
        .enable_pin     = AT91_PIN_PB6,
-       .partition_info = nand_partitions,
+       .parts          = ek_nand_partition,
+       .num_parts      = ARRAY_SIZE(ek_nand_partition),
  };
  
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
index 17dae5003c333fc344437bd91481703ba31dcf0b,0df01c6e2d0c1b458bc89ac41e46740302eda69b..95b403113558d728a7cc0434e58b59ea03da8754
@@@ -111,10 -101,9 +104,11 @@@ static struct atmel_nand_data __initdat
        .ale            = 21,
        .cle            = 22,
        .rdy_pin        = AT91_PIN_PC13,
-       .partition_info = snapper9260_nand_partition_info,
+       .parts          = snapper9260_nand_partitions,
+       .num_parts      = ARRAY_SIZE(snapper9260_nand_partitions),
        .bus_width_16   = 0,
 +      .enable_pin     = -EINVAL,
 +      .det_pin        = -EINVAL,
  };
  
  static struct sam9_smc_config __initdata snapper9260_nand_smc_config = {
index 4f57a33275e8c4b233df45ccaed66caf865962b1,0000000000000000000000000000000000000000..c9cff9ce1683f61167ca4ca434b5bcb7b0b64c66
mode 100644,000000..100644
--- /dev/null
@@@ -1,384 -1,0 +1,379 @@@
- static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
- {
-       *num_partitions = ARRAY_SIZE(ek_nand_partition);
-       return ek_nand_partition;
- }
 +/*
 + * linux/arch/arm/mach-at91/board-usb-a926x.c
 + *
 + *  Copyright (C) 2005 SAN People
 + *  Copyright (C) 2007 Atmel Corporation.
 + *  Copyright (C) 2007 Calao-systems
 + *  Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 + */
 +
 +#include <linux/types.h>
 +#include <linux/init.h>
 +#include <linux/mm.h>
 +#include <linux/module.h>
 +#include <linux/platform_device.h>
 +#include <linux/spi/spi.h>
 +#include <linux/gpio_keys.h>
 +#include <linux/gpio.h>
 +#include <linux/input.h>
 +#include <linux/spi/mmc_spi.h>
 +
 +#include <asm/setup.h>
 +#include <asm/mach-types.h>
 +#include <asm/irq.h>
 +
 +#include <asm/mach/arch.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/irq.h>
 +
 +#include <mach/hardware.h>
 +#include <mach/board.h>
 +#include <mach/at91sam9_smc.h>
 +#include <mach/at91_shdwc.h>
 +
 +#include "sam9_smc.h"
 +#include "generic.h"
 +
 +
 +static void __init ek_init_early(void)
 +{
 +      /* Initialize processor: 12.00 MHz crystal */
 +      at91_initialize(12000000);
 +
 +      /* DBGU on ttyS0. (Rx & Tx only) */
 +      at91_register_uart(0, 0, 0);
 +
 +      /* set serial console to ttyS0 (ie, DBGU) */
 +      at91_set_serial_console(0);
 +}
 +
 +/*
 + * USB Host port
 + */
 +static struct at91_usbh_data __initdata ek_usbh_data = {
 +      .ports          = 2,
 +      .vbus_pin       = {-EINVAL, -EINVAL},
 +};
 +
 +/*
 + * USB Device port
 + */
 +static struct at91_udc_data __initdata ek_udc_data = {
 +      .vbus_pin       = AT91_PIN_PB11,
 +      .pullup_pin     = -EINVAL,              /* pull-up driven by UDC */
 +};
 +
 +static void __init ek_add_device_udc(void)
 +{
 +      if (machine_is_usb_a9260() || machine_is_usb_a9g20())
 +              ek_udc_data.vbus_pin = AT91_PIN_PC5;
 +
 +      at91_add_device_udc(&ek_udc_data);
 +}
 +
 +#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
 +#define MMC_SPI_CARD_DETECT_INT AT91_PIN_PC4
 +static int at91_mmc_spi_init(struct device *dev,
 +      irqreturn_t (*detect_int)(int, void *), void *data)
 +{
 +      /* Configure Interrupt pin as input, no pull-up */
 +      at91_set_gpio_input(MMC_SPI_CARD_DETECT_INT, 0);
 +      return request_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), detect_int,
 +              IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
 +              "mmc-spi-detect", data);
 +}
 +
 +static void at91_mmc_spi_exit(struct device *dev, void *data)
 +{
 +      free_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), data);
 +}
 +
 +static struct mmc_spi_platform_data at91_mmc_spi_pdata = {
 +      .init = at91_mmc_spi_init,
 +      .exit = at91_mmc_spi_exit,
 +      .detect_delay = 100, /* msecs */
 +};
 +#endif
 +
 +/*
 + * SPI devices.
 + */
 +static struct spi_board_info usb_a9263_spi_devices[] = {
 +#if !defined(CONFIG_MMC_AT91)
 +      {       /* DataFlash chip */
 +              .modalias       = "mtd_dataflash",
 +              .chip_select    = 0,
 +              .max_speed_hz   = 15 * 1000 * 1000,
 +              .bus_num        = 0,
 +      }
 +#endif
 +};
 +
 +static struct spi_board_info usb_a9g20_spi_devices[] = {
 +#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
 +      {
 +              .modalias = "mmc_spi",
 +              .max_speed_hz = 20000000,       /* max spi clock (SCK) speed in HZ */
 +              .bus_num = 1,
 +              .chip_select = 0,
 +              .platform_data = &at91_mmc_spi_pdata,
 +              .mode = SPI_MODE_3,
 +      },
 +#endif
 +};
 +
 +static void __init ek_add_device_spi(void)
 +{
 +      if (machine_is_usb_a9263())
 +              at91_add_device_spi(usb_a9263_spi_devices, ARRAY_SIZE(usb_a9263_spi_devices));
 +      else if (machine_is_usb_a9g20())
 +              at91_add_device_spi(usb_a9g20_spi_devices, ARRAY_SIZE(usb_a9g20_spi_devices));
 +}
 +
 +/*
 + * MACB Ethernet device
 + */
 +static struct at91_eth_data __initdata ek_macb_data = {
 +      .phy_irq_pin    = AT91_PIN_PE31,
 +      .is_rmii        = 1,
 +};
 +
 +static void __init ek_add_device_eth(void)
 +{
 +      if (machine_is_usb_a9260() || machine_is_usb_a9g20())
 +              ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
 +
 +      at91_add_device_eth(&ek_macb_data);
 +}
 +
 +/*
 + * NAND flash
 + */
 +static struct mtd_partition __initdata ek_nand_partition[] = {
 +      {
 +              .name   = "barebox",
 +              .offset = 0,
 +              .size   = 3 * SZ_128K,
 +      }, {
 +              .name   = "bareboxenv",
 +              .offset = MTDPART_OFS_NXTBLK,
 +              .size   = SZ_128K,
 +      }, {
 +              .name   = "bareboxenv2",
 +              .offset = MTDPART_OFS_NXTBLK,
 +              .size   = SZ_128K,
 +      }, {
 +              .name   = "kernel",
 +              .offset = MTDPART_OFS_NXTBLK,
 +              .size   = 4 * SZ_1M,
 +      }, {
 +              .name   = "rootfs",
 +              .offset = MTDPART_OFS_NXTBLK,
 +              .size   = 120 * SZ_1M,
 +      }, {
 +              .name   = "data",
 +              .offset = MTDPART_OFS_NXTBLK,
 +              .size   = MTDPART_SIZ_FULL,
 +      }
 +};
 +
-       .partition_info = nand_partitions,
 +static struct atmel_nand_data __initdata ek_nand_data = {
 +      .ale            = 21,
 +      .cle            = 22,
 +      .det_pin        = -EINVAL,
 +      .rdy_pin        = AT91_PIN_PA22,
 +      .enable_pin     = AT91_PIN_PD15,
++      .parts          = ek_nand_partition,
++      .num_parts      = ARRAY_SIZE(ek_nand_partition),
 +};
 +
 +static struct sam9_smc_config __initdata usb_a9260_nand_smc_config = {
 +      .ncs_read_setup         = 0,
 +      .nrd_setup              = 1,
 +      .ncs_write_setup        = 0,
 +      .nwe_setup              = 1,
 +
 +      .ncs_read_pulse         = 3,
 +      .nrd_pulse              = 3,
 +      .ncs_write_pulse        = 3,
 +      .nwe_pulse              = 3,
 +
 +      .read_cycle             = 5,
 +      .write_cycle            = 5,
 +
 +      .mode                   = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
 +      .tdf_cycles             = 2,
 +};
 +
 +static struct sam9_smc_config __initdata usb_a9g20_nand_smc_config = {
 +      .ncs_read_setup         = 0,
 +      .nrd_setup              = 2,
 +      .ncs_write_setup        = 0,
 +      .nwe_setup              = 2,
 +
 +      .ncs_read_pulse         = 4,
 +      .nrd_pulse              = 4,
 +      .ncs_write_pulse        = 4,
 +      .nwe_pulse              = 4,
 +
 +      .read_cycle             = 7,
 +      .write_cycle            = 7,
 +
 +      .mode                   = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
 +      .tdf_cycles             = 3,
 +};
 +
 +static void __init ek_add_device_nand(void)
 +{
 +      if (machine_is_usb_a9260() || machine_is_usb_a9g20()) {
 +              ek_nand_data.rdy_pin    = AT91_PIN_PC13;
 +              ek_nand_data.enable_pin = AT91_PIN_PC14;
 +      }
 +
 +      /* configure chip-select 3 (NAND) */
 +      if (machine_is_usb_a9g20())
 +              sam9_smc_configure(3, &usb_a9g20_nand_smc_config);
 +      else
 +              sam9_smc_configure(3, &usb_a9260_nand_smc_config);
 +
 +      at91_add_device_nand(&ek_nand_data);
 +}
 +
 +
 +/*
 + * GPIO Buttons
 + */
 +#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
 +static struct gpio_keys_button ek_buttons[] = {
 +      {       /* USER PUSH BUTTON */
 +              .code           = KEY_ENTER,
 +              .gpio           = AT91_PIN_PB10,
 +              .active_low     = 1,
 +              .desc           = "user_pb",
 +              .wakeup         = 1,
 +      }
 +};
 +
 +static struct gpio_keys_platform_data ek_button_data = {
 +      .buttons        = ek_buttons,
 +      .nbuttons       = ARRAY_SIZE(ek_buttons),
 +};
 +
 +static struct platform_device ek_button_device = {
 +      .name           = "gpio-keys",
 +      .id             = -1,
 +      .num_resources  = 0,
 +      .dev            = {
 +              .platform_data  = &ek_button_data,
 +      }
 +};
 +
 +static void __init ek_add_device_buttons(void)
 +{
 +      at91_set_GPIO_periph(AT91_PIN_PB10, 1); /* user push button, pull up enabled */
 +      at91_set_deglitch(AT91_PIN_PB10, 1);
 +
 +      platform_device_register(&ek_button_device);
 +}
 +#else
 +static void __init ek_add_device_buttons(void) {}
 +#endif
 +
 +/*
 + * LEDs
 + */
 +static struct gpio_led ek_leds[] = {
 +      {       /* user_led (green) */
 +              .name                   = "user_led",
 +              .gpio                   = AT91_PIN_PB21,
 +              .active_low             = 1,
 +              .default_trigger        = "heartbeat",
 +      }
 +};
 +
 +static struct i2c_board_info __initdata ek_i2c_devices[] = {
 +      {
 +              I2C_BOARD_INFO("rv3029c2", 0x56),
 +      },
 +};
 +
 +static void __init ek_add_device_leds(void)
 +{
 +      if (machine_is_usb_a9260() || machine_is_usb_a9g20())
 +              ek_leds[0].active_low = 0;
 +
 +      at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
 +}
 +
 +static void __init ek_board_init(void)
 +{
 +      /* Serial */
 +      at91_add_device_serial();
 +      /* USB Host */
 +      at91_add_device_usbh(&ek_usbh_data);
 +      /* USB Device */
 +      ek_add_device_udc();
 +      /* SPI */
 +      ek_add_device_spi();
 +      /* Ethernet */
 +      ek_add_device_eth();
 +      /* NAND */
 +      ek_add_device_nand();
 +      /* Push Buttons */
 +      ek_add_device_buttons();
 +      /* LEDs */
 +      ek_add_device_leds();
 +
 +      if (machine_is_usb_a9g20()) {
 +              /* I2C */
 +              at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
 +      } else {
 +              /* I2C */
 +              at91_add_device_i2c(NULL, 0);
 +              /* shutdown controller, wakeup button (5 msec low) */
 +              at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10)
 +                              | AT91_SHDW_WKMODE0_LOW
 +                              | AT91_SHDW_RTTWKEN);
 +      }
 +}
 +
 +MACHINE_START(USB_A9263, "CALAO USB_A9263")
 +      /* Maintainer: calao-systems */
 +      .timer          = &at91sam926x_timer,
 +      .map_io         = at91_map_io,
 +      .init_early     = ek_init_early,
 +      .init_irq       = at91_init_irq_default,
 +      .init_machine   = ek_board_init,
 +MACHINE_END
 +
 +MACHINE_START(USB_A9260, "CALAO USB_A9260")
 +      /* Maintainer: calao-systems */
 +      .timer          = &at91sam926x_timer,
 +      .map_io         = at91_map_io,
 +      .init_early     = ek_init_early,
 +      .init_irq       = at91_init_irq_default,
 +      .init_machine   = ek_board_init,
 +MACHINE_END
 +
 +MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
 +      /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
 +      .timer          = &at91sam926x_timer,
 +      .map_io         = at91_map_io,
 +      .init_early     = ek_init_early,
 +      .init_irq       = at91_init_irq_default,
 +      .init_machine   = ek_board_init,
 +MACHINE_END
index 87aff91f5cdeeb97f544d32eedca1546d6e4fba4,7511fb83865a00aa2487a377c71bec0453eb67e2..1e83a62d717727603313366727d17f634f4131c9
@@@ -177,16 -175,11 +177,11 @@@ static struct mtd_partition __initdata 
  static struct atmel_nand_data __initdata yl9200_nand_data = {
        .ale            = 6,
        .cle            = 7,
 -      // .det_pin     = ... not connected
 +      .det_pin        = -EINVAL,
        .rdy_pin        = AT91_PIN_PC14,        /* R/!B (Sheet10) */
        .enable_pin     = AT91_PIN_PC15,        /* !CE  (Sheet10) */
-       .partition_info = nand_partitions,
+       .parts          = yl9200_nand_partition,
+       .num_parts      = ARRAY_SIZE(yl9200_nand_partition),
  };
  
  /*
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/jffs2/fs.c
Simple merge