diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-16 14:02:32 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-16 14:02:32 +0100 |
commit | 9749c2f16f61048a66a98a95b6a1e88d4f491cf0 (patch) | |
tree | 529b4a220e337e6450d810b88c49c08c32f65ed6 /arch | |
parent | 856f60dbd157126241cf9033514137849bb5ca22 (diff) | |
parent | 4104dd917388943f5b0ae87d1360738675c338b0 (diff) | |
download | barebox-9749c2f16f61048a66a98a95b6a1e88d4f491cf0.tar.gz barebox-9749c2f16f61048a66a98a95b6a1e88d4f491cf0.tar.xz |
Merge branch 'for-next/mtd'
Conflicts:
arch/arm/configs/at91sam9x5ek_defconfig
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boards/at91sam9x5ek/init.c | 3 | ||||
-rw-r--r-- | arch/arm/boards/usb-a926x/init.c | 21 | ||||
-rw-r--r-- | arch/arm/configs/at91sam9x5ek_defconfig | 12 | ||||
-rw-r--r-- | arch/arm/configs/usb_a9263_128mib_defconfig | 3 | ||||
-rw-r--r-- | arch/arm/configs/usb_a9263_defconfig | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9x5_devices.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/board.h | 4 |
7 files changed, 53 insertions, 9 deletions
diff --git a/arch/arm/boards/at91sam9x5ek/init.c b/arch/arm/boards/at91sam9x5ek/init.c index 2536477316..562657751a 100644 --- a/arch/arm/boards/at91sam9x5ek/init.c +++ b/arch/arm/boards/at91sam9x5ek/init.c @@ -56,6 +56,9 @@ static struct atmel_nand_data nand_pdata = { .det_pin = 0, .rdy_pin = AT91_PIN_PD5, .enable_pin = AT91_PIN_PD4, + .ecc_mode = NAND_ECC_HW, + .pmecc_sector_size = 512, + .pmecc_corr_cap = 2, #if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16) .bus_width_16 = 1, #endif diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c index 7b946a37d2..9708aaa277 100644 --- a/arch/arm/boards/usb-a926x/init.c +++ b/arch/arm/boards/usb-a926x/init.c @@ -39,6 +39,7 @@ #include <mach/at91_rstc.h> #include <gpio_keys.h> #include <readkey.h> +#include <spi/spi.h> static void usb_a9260_set_board_type(void) { @@ -148,6 +149,25 @@ static void usb_a9260_phy_reset(void) AT91_RSTC_URSTEN); } +static const struct spi_board_info usb_a9263_spi_devices[] = { + { + .name = "mtd_dataflash", + .chip_select = 0, + .max_speed_hz = 15 * 1000 * 1000, + .bus_num = 0, + } +}; + +static void usb_a9260_add_spi(void) +{ + if (!machine_is_usb_a9263()) + return; + + spi_register_board_info(usb_a9263_spi_devices, + ARRAY_SIZE(usb_a9263_spi_devices)); + at91_add_device_spi(0, NULL); +} + #if defined(CONFIG_MCI_ATMEL) static struct atmel_mci_platform_data __initdata usb_a9260_mci_data = { .bus_width = 4, @@ -314,6 +334,7 @@ static int usb_a9260_devices_init(void) usb_a9260_phy_reset(); at91_add_device_eth(0, &macb_pdata); usb_a9260_add_device_mci(); + usb_a9260_add_spi(); at91_add_device_usbh_ohci(&ek_usbh_data); ek_add_device_udc(); ek_add_led(); diff --git a/arch/arm/configs/at91sam9x5ek_defconfig b/arch/arm/configs/at91sam9x5ek_defconfig index 6c3534849b..0df86310ab 100644 --- a/arch/arm/configs/at91sam9x5ek_defconfig +++ b/arch/arm/configs/at91sam9x5ek_defconfig @@ -24,11 +24,10 @@ CONFIG_CMD_SAVEENV=y CONFIG_CMD_EXPORT=y CONFIG_CMD_PRINTENV=y CONFIG_CMD_READLINE=y +CONFIG_CMD_TFTP=y CONFIG_CMD_ECHO_E=y CONFIG_CMD_LOADB=y CONFIG_CMD_MEMINFO=y -CONFIG_CMD_MTEST=y -CONFIG_CMD_MTEST_ALTERNATIVE=y CONFIG_CMD_FLASH=y CONFIG_CMD_BOOTM_SHOW_TYPE=y CONFIG_CMD_BOOTM_INITRD=y @@ -39,6 +38,8 @@ CONFIG_CMD_UIMAGE=y CONFIG_CMD_RESET=y CONFIG_CMD_GO=y CONFIG_CMD_OFTREE=y +CONFIG_CMD_MTEST=y +CONFIG_CMD_MTEST_ALTERNATIVE=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_PARTITION=y CONFIG_CMD_GPIO=y @@ -49,8 +50,6 @@ CONFIG_NET=y CONFIG_NET_DHCP=y CONFIG_NET_NFS=y CONFIG_NET_PING=y -CONFIG_CMD_TFTP=y -CONFIG_FS_TFTP=y CONFIG_NET_NETCONSOLE=y CONFIG_DRIVER_NET_MACB=y CONFIG_DRIVER_SPI_ATMEL=y @@ -61,10 +60,11 @@ CONFIG_MTD=y # CONFIG_MTD_OOB_DEVICE is not set CONFIG_MTD_DATAFLASH=y CONFIG_NAND=y -# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_SOFT is not set # CONFIG_NAND_ECC_HW_SYNDROME is not set # CONFIG_NAND_ECC_HW_NONE is not set CONFIG_NAND_ATMEL=y +CONFIG_NAND_ATMEL_PMECC=y CONFIG_UBI=y CONFIG_MCI=y CONFIG_MCI_STARTUP=y @@ -78,6 +78,8 @@ CONFIG_W1=y CONFIG_W1_MASTER_GPIO=y CONFIG_W1_SLAVE_DS2431=y CONFIG_W1_SLAVE_DS2433=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_FS_TFTP=y CONFIG_FS_FAT=y CONFIG_FS_FAT_WRITE=y CONFIG_FS_FAT_LFN=y diff --git a/arch/arm/configs/usb_a9263_128mib_defconfig b/arch/arm/configs/usb_a9263_128mib_defconfig index 87f708f0b1..71774f9bee 100644 --- a/arch/arm/configs/usb_a9263_128mib_defconfig +++ b/arch/arm/configs/usb_a9263_128mib_defconfig @@ -64,9 +64,10 @@ CONFIG_FS_TFTP=y CONFIG_NET_NETCONSOLE=y CONFIG_NET_RESOLV=y CONFIG_DRIVER_NET_MACB=y -# CONFIG_SPI is not set +CONFIG_DRIVER_SPI_ATMEL=y CONFIG_MTD=y # CONFIG_MTD_OOB_DEVICE is not set +CONFIG_MTD_DATAFLASH=y CONFIG_NAND=y # CONFIG_NAND_ECC_HW is not set # CONFIG_NAND_ECC_HW_SYNDROME is not set diff --git a/arch/arm/configs/usb_a9263_defconfig b/arch/arm/configs/usb_a9263_defconfig index 9bfb7e79b2..251c654af1 100644 --- a/arch/arm/configs/usb_a9263_defconfig +++ b/arch/arm/configs/usb_a9263_defconfig @@ -63,9 +63,10 @@ CONFIG_FS_TFTP=y CONFIG_NET_NETCONSOLE=y CONFIG_NET_RESOLV=y CONFIG_DRIVER_NET_MACB=y -# CONFIG_SPI is not set +CONFIG_DRIVER_SPI_ATMEL=y CONFIG_MTD=y # CONFIG_MTD_OOB_DEVICE is not set +CONFIG_MTD_DATAFLASH=y CONFIG_NAND=y # CONFIG_NAND_ECC_HW is not set # CONFIG_NAND_ECC_HW_SYNDROME is not set diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c index 14fcb1e6af..b804b41344 100644 --- a/arch/arm/mach-at91/at91sam9x5_devices.c +++ b/arch/arm/mach-at91/at91sam9x5_devices.c @@ -198,9 +198,19 @@ static struct resource nand_resources[] = { }, [1] = { .start = AT91_BASE_SYS + AT91_PMECC, - .end = AT91_BASE_SYS + AT91_PMECC + 512 - 1, + .end = AT91_BASE_SYS + AT91_PMECC + 0x600 - 1, .flags = IORESOURCE_MEM, - } + }, + [2] = { + .start = AT91_BASE_SYS + AT91_PMERRLOC, + .end = AT91_BASE_SYS + AT91_PMERRLOC + 0x200 - 1, + .flags = IORESOURCE_MEM, + }, + [3] = { + .start = AT91SAM9X5_ROM_BASE, + .end = AT91SAM9X5_ROM_BASE + AT91SAM9X5_ROM_SIZE - 1, + .flags = IORESOURCE_MEM, + }, }; void __init at91_add_device_nand(struct atmel_nand_data *data) @@ -213,6 +223,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) csa = at91_sys_read(AT91_MATRIX_EBICSA); at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_NANDFLASH); + data->pmecc_lookup_table_offset = 0x8000; + /* enable pin */ if (data->enable_pin) at91_set_gpio_output(data->enable_pin, 1); diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index 1ce07628e9..dcea9f3954 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h @@ -54,6 +54,10 @@ struct atmel_nand_data { u8 bus_width_16; /* buswidth is 16 bit */ u8 ecc_mode; /* NAND_ECC_* */ u8 on_flash_bbt; /* Use flash based bbt */ + + u8 pmecc_corr_cap; + u16 pmecc_sector_size; + u32 pmecc_lookup_table_offset; }; void at91_add_device_nand(struct atmel_nand_data *data); |