diff options
Diffstat (limited to 'arch/arm/mach-davinci/board-da830-evm.c')
-rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index b52a3a1abd94..8bc3701aa05c 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include <linux/i2c/at24.h> | 20 | #include <linux/i2c/at24.h> |
21 | #include <linux/mtd/mtd.h> | 21 | #include <linux/mtd/mtd.h> |
22 | #include <linux/mtd/partitions.h> | 22 | #include <linux/mtd/partitions.h> |
23 | #include <linux/spi/spi.h> | ||
24 | #include <linux/spi/flash.h> | ||
23 | 25 | ||
24 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
25 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
@@ -30,6 +32,7 @@ | |||
30 | #include <mach/da8xx.h> | 32 | #include <mach/da8xx.h> |
31 | #include <mach/usb.h> | 33 | #include <mach/usb.h> |
32 | #include <mach/aemif.h> | 34 | #include <mach/aemif.h> |
35 | #include <mach/spi.h> | ||
33 | 36 | ||
34 | #define DA830_EVM_PHY_ID "" | 37 | #define DA830_EVM_PHY_ID "" |
35 | /* | 38 | /* |
@@ -534,6 +537,64 @@ static struct edma_rsv_info da830_edma_rsv[] = { | |||
534 | }, | 537 | }, |
535 | }; | 538 | }; |
536 | 539 | ||
540 | static struct mtd_partition da830evm_spiflash_part[] = { | ||
541 | [0] = { | ||
542 | .name = "DSP-UBL", | ||
543 | .offset = 0, | ||
544 | .size = SZ_8K, | ||
545 | .mask_flags = MTD_WRITEABLE, | ||
546 | }, | ||
547 | [1] = { | ||
548 | .name = "ARM-UBL", | ||
549 | .offset = MTDPART_OFS_APPEND, | ||
550 | .size = SZ_16K + SZ_8K, | ||
551 | .mask_flags = MTD_WRITEABLE, | ||
552 | }, | ||
553 | [2] = { | ||
554 | .name = "U-Boot", | ||
555 | .offset = MTDPART_OFS_APPEND, | ||
556 | .size = SZ_256K - SZ_32K, | ||
557 | .mask_flags = MTD_WRITEABLE, | ||
558 | }, | ||
559 | [3] = { | ||
560 | .name = "U-Boot-Environment", | ||
561 | .offset = MTDPART_OFS_APPEND, | ||
562 | .size = SZ_16K, | ||
563 | .mask_flags = 0, | ||
564 | }, | ||
565 | [4] = { | ||
566 | .name = "Kernel", | ||
567 | .offset = MTDPART_OFS_APPEND, | ||
568 | .size = MTDPART_SIZ_FULL, | ||
569 | .mask_flags = 0, | ||
570 | }, | ||
571 | }; | ||
572 | |||
573 | static struct flash_platform_data da830evm_spiflash_data = { | ||
574 | .name = "m25p80", | ||
575 | .parts = da830evm_spiflash_part, | ||
576 | .nr_parts = ARRAY_SIZE(da830evm_spiflash_part), | ||
577 | .type = "w25x32", | ||
578 | }; | ||
579 | |||
580 | static struct davinci_spi_config da830evm_spiflash_cfg = { | ||
581 | .io_type = SPI_IO_TYPE_DMA, | ||
582 | .c2tdelay = 8, | ||
583 | .t2cdelay = 8, | ||
584 | }; | ||
585 | |||
586 | static struct spi_board_info da830evm_spi_info[] = { | ||
587 | { | ||
588 | .modalias = "m25p80", | ||
589 | .platform_data = &da830evm_spiflash_data, | ||
590 | .controller_data = &da830evm_spiflash_cfg, | ||
591 | .mode = SPI_MODE_0, | ||
592 | .max_speed_hz = 30000000, | ||
593 | .bus_num = 0, | ||
594 | .chip_select = 0, | ||
595 | }, | ||
596 | }; | ||
597 | |||
537 | static __init void da830_evm_init(void) | 598 | static __init void da830_evm_init(void) |
538 | { | 599 | { |
539 | struct davinci_soc_info *soc_info = &davinci_soc_info; | 600 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
@@ -590,6 +651,12 @@ static __init void da830_evm_init(void) | |||
590 | ret = da8xx_register_rtc(); | 651 | ret = da8xx_register_rtc(); |
591 | if (ret) | 652 | if (ret) |
592 | pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); | 653 | pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); |
654 | |||
655 | ret = da8xx_register_spi(0, da830evm_spi_info, | ||
656 | ARRAY_SIZE(da830evm_spi_info)); | ||
657 | if (ret) | ||
658 | pr_warning("da830_evm_init: spi 0 registration failed: %d\n", | ||
659 | ret); | ||
593 | } | 660 | } |
594 | 661 | ||
595 | #ifdef CONFIG_SERIAL_8250_CONSOLE | 662 | #ifdef CONFIG_SERIAL_8250_CONSOLE |