Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * arch/arm/mach-dove/dove-db-setup.c
0004  *
0005  * Marvell DB-MV88AP510-BP Development Board Setup
0006  */
0007 
0008 #include <linux/kernel.h>
0009 #include <linux/init.h>
0010 #include <linux/platform_device.h>
0011 #include <linux/irq.h>
0012 #include <linux/mtd/physmap.h>
0013 #include <linux/mtd/rawnand.h>
0014 #include <linux/timer.h>
0015 #include <linux/ata_platform.h>
0016 #include <linux/mv643xx_eth.h>
0017 #include <linux/i2c.h>
0018 #include <linux/pci.h>
0019 #include <linux/spi/spi.h>
0020 #include <linux/spi/flash.h>
0021 #include <linux/gpio.h>
0022 #include <asm/mach-types.h>
0023 #include <asm/mach/arch.h>
0024 #include "dove.h"
0025 #include "common.h"
0026 
0027 static struct mv643xx_eth_platform_data dove_db_ge00_data = {
0028     .phy_addr   = MV643XX_ETH_PHY_ADDR_DEFAULT,
0029 };
0030 
0031 static struct mv_sata_platform_data dove_db_sata_data = {
0032     .n_ports        = 1,
0033 };
0034 
0035 /*****************************************************************************
0036  * SPI Devices:
0037  *  SPI0: 4M Flash ST-M25P32-VMF6P
0038  ****************************************************************************/
0039 static const struct flash_platform_data dove_db_spi_flash_data = {
0040     .type       = "m25p64",
0041 };
0042 
0043 static struct spi_board_info __initdata dove_db_spi_flash_info[] = {
0044     {
0045         .modalias       = "m25p80",
0046         .platform_data  = &dove_db_spi_flash_data,
0047         .irq            = -1,
0048         .max_speed_hz   = 20000000,
0049         .bus_num        = 0,
0050         .chip_select    = 0,
0051     },
0052 };
0053 
0054 /*****************************************************************************
0055  * PCI
0056  ****************************************************************************/
0057 static int __init dove_db_pci_init(void)
0058 {
0059     if (machine_is_dove_db())
0060         dove_pcie_init(1, 1);
0061 
0062     return 0;
0063 }
0064 
0065 subsys_initcall(dove_db_pci_init);
0066 
0067 /*****************************************************************************
0068  * Board Init
0069  ****************************************************************************/
0070 static void __init dove_db_init(void)
0071 {
0072     /*
0073      * Basic Dove setup. Needs to be called early.
0074      */
0075     dove_init();
0076 
0077     dove_ge00_init(&dove_db_ge00_data);
0078     dove_ehci0_init();
0079     dove_ehci1_init();
0080     dove_sata_init(&dove_db_sata_data);
0081     dove_sdio0_init();
0082     dove_sdio1_init();
0083     dove_spi0_init();
0084     dove_spi1_init();
0085     dove_uart0_init();
0086     dove_uart1_init();
0087     dove_i2c_init();
0088     spi_register_board_info(dove_db_spi_flash_info,
0089                 ARRAY_SIZE(dove_db_spi_flash_info));
0090 }
0091 
0092 MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
0093     .atag_offset    = 0x100,
0094     .nr_irqs    = DOVE_NR_IRQS,
0095     .init_machine   = dove_db_init,
0096     .map_io     = dove_map_io,
0097     .init_early = dove_init_early,
0098     .init_irq   = dove_init_irq,
0099     .init_time  = dove_timer_init,
0100     .restart    = dove_restart,
0101 MACHINE_END