Add support for w25q64 SPI NOR flash. Signed-off-by: Teresa Gámez <t.gamez@xxxxxxxxx> --- changes since v2: - changed partition size to 512kb - added spi-nor boot option arch/arm/boards/pcm051/board.c | 41 ++++++++++++++++++++++++++ arch/arm/boards/pcm051/env/boot/spi-nor | 12 +++++++ arch/arm/boards/pcm051/env/init/mtdparts-nor | 12 +++++++ arch/arm/configs/pcm051_defconfig | 3 +- 4 files changed, 67 insertions(+), 1 deletions(-) create mode 100644 arch/arm/boards/pcm051/env/boot/spi-nor create mode 100644 arch/arm/boards/pcm051/env/init/mtdparts-nor diff --git a/arch/arm/boards/pcm051/board.c b/arch/arm/boards/pcm051/board.c index 8754ba5..f0eaa01 100644 --- a/arch/arm/boards/pcm051/board.c +++ b/arch/arm/boards/pcm051/board.c @@ -26,6 +26,8 @@ #include <mach/am33xx-devices.h> #include <mach/am33xx-mux.h> #include <mach/am33xx-silicon.h> +#include <spi/spi.h> +#include <spi/flash.h> #include "mux.h" @@ -52,12 +54,51 @@ static int pcm051_mem_init(void) } mem_initcall(pcm051_mem_init); +static struct flash_platform_data pcm051_spi_flash = { + .name = "nor", + .type = "w25q64", +}; + +/* +* SPI Flash works at 80Mhz however the SPI controller runs with 48MHz. +* So setup Max speed to be less than the controller speed. +*/ +static struct spi_board_info pcm051_spi_board_info[] = { + { + .name = "m25p80", + .platform_data = &pcm051_spi_flash, + .max_speed_hz = 24000000, + .bus_num = 0, + .chip_select = 0, + }, +}; + +static void pcm051_spi_init(void) +{ + int ret; + + am33xx_enable_spi0_pin_mux(); + + ret = spi_register_board_info(pcm051_spi_board_info, + ARRAY_SIZE(pcm051_spi_board_info)); + am33xx_add_spi0(); +} + static int pcm051_devices_init(void) { pcm051_enable_mmc0_pin_mux(); am33xx_add_mmc0(NULL); + pcm051_spi_init(); + + devfs_add_partition("nor0", 0x00000, SZ_128K, + DEVFS_PARTITION_FIXED, "xload"); + devfs_add_partition("nor0", SZ_128K, SZ_512K, + DEVFS_PARTITION_FIXED, "self0"); + devfs_add_partition("nor0", SZ_128K + SZ_512K, SZ_128K, + DEVFS_PARTITION_FIXED, "env0"); + armlinux_set_bootparams((void *)(AM33XX_DRAM_ADDR_SPACE_START + 0x100)); armlinux_set_architecture(MACH_TYPE_PCM051); diff --git a/arch/arm/boards/pcm051/env/boot/spi-nor b/arch/arm/boards/pcm051/env/boot/spi-nor new file mode 100644 index 0000000..d5f77c8 --- /dev/null +++ b/arch/arm/boards/pcm051/env/boot/spi-nor @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ "$1" = menu ]; then + boot-menu-add-entry "$0" "SPI NOR Flash" + exit +fi + +global.bootm.image="/dev/nor0.kernel" + +# Use rootfs form SD-Card for now as rootfs partition < 4MB +global.linux.bootargs.dyn.root="root=/dev/mmcblk0p2 rootfstype=ext3 rootwait" + diff --git a/arch/arm/boards/pcm051/env/init/mtdparts-nor b/arch/arm/boards/pcm051/env/init/mtdparts-nor new file mode 100644 index 0000000..91aa847 --- /dev/null +++ b/arch/arm/boards/pcm051/env/init/mtdparts-nor @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ "$1" = menu ]; then + init-menu-add-entry "$0" "NOR partitions" + exit +fi + +mtdparts="128k(nor0.xload),512k(nor0.barebox),128k(nor0.bareboxenv),4M(nor0.kernel),-(nor0.root)" +kernelname="spi_flash" + +mtdparts-add -d nor0 -k ${kernelname} -p ${mtdparts} + diff --git a/arch/arm/configs/pcm051_defconfig b/arch/arm/configs/pcm051_defconfig index 4da0ed4..90c2b50 100644 --- a/arch/arm/configs/pcm051_defconfig +++ b/arch/arm/configs/pcm051_defconfig @@ -44,8 +44,9 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_UNCOMPRESS=y CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y -# CONFIG_SPI is not set +CONFIG_DRIVER_SPI_OMAP3=y CONFIG_MTD=y +CONFIG_MTD_M25P80=y CONFIG_NAND=y CONFIG_USB=y CONFIG_MCI=y -- 1.7.0.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox