Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * arch/arm/mach-dove/cm-a510.c
0004  *
0005  * Copyright (C) 2010 CompuLab, Ltd.
0006  * Konstantin Sinyuk <kostyas@compulab.co.il>
0007  *
0008  * Based on Marvell DB-MV88AP510-BP Development Board Setup
0009  */
0010 
0011 #include <linux/kernel.h>
0012 #include <linux/init.h>
0013 #include <linux/platform_device.h>
0014 #include <linux/ata_platform.h>
0015 #include <linux/mv643xx_eth.h>
0016 #include <linux/spi/spi.h>
0017 #include <linux/spi/flash.h>
0018 
0019 #include <asm/mach-types.h>
0020 #include <asm/mach/arch.h>
0021 
0022 #include "dove.h"
0023 #include "common.h"
0024 
0025 static struct mv643xx_eth_platform_data cm_a510_ge00_data = {
0026     .phy_addr   = MV643XX_ETH_PHY_ADDR_DEFAULT,
0027 };
0028 
0029 static struct mv_sata_platform_data cm_a510_sata_data = {
0030     .n_ports        = 1,
0031 };
0032 
0033 /*
0034  * SPI Devices:
0035  * SPI0: 1M Flash Winbond w25q32bv
0036  */
0037 static const struct flash_platform_data cm_a510_spi_flash_data = {
0038     .type       = "w25q32bv",
0039 };
0040 
0041 static struct spi_board_info __initdata cm_a510_spi_flash_info[] = {
0042     {
0043         .modalias       = "m25p80",
0044         .platform_data  = &cm_a510_spi_flash_data,
0045         .irq            = -1,
0046         .max_speed_hz   = 20000000,
0047         .bus_num        = 0,
0048         .chip_select    = 0,
0049     },
0050 };
0051 
0052 static int __init cm_a510_pci_init(void)
0053 {
0054     if (machine_is_cm_a510())
0055         dove_pcie_init(1, 1);
0056 
0057     return 0;
0058 }
0059 
0060 subsys_initcall(cm_a510_pci_init);
0061 
0062 /* Board Init */
0063 static void __init cm_a510_init(void)
0064 {
0065     /*
0066      * Basic Dove setup. Needs to be called early.
0067      */
0068     dove_init();
0069 
0070     dove_ge00_init(&cm_a510_ge00_data);
0071     dove_ehci0_init();
0072     dove_ehci1_init();
0073     dove_sata_init(&cm_a510_sata_data);
0074     dove_sdio0_init();
0075     dove_sdio1_init();
0076     dove_spi0_init();
0077     dove_spi1_init();
0078     dove_uart0_init();
0079     dove_uart1_init();
0080     dove_i2c_init();
0081     spi_register_board_info(cm_a510_spi_flash_info,
0082                 ARRAY_SIZE(cm_a510_spi_flash_info));
0083 }
0084 
0085 MACHINE_START(CM_A510, "Compulab CM-A510 Board")
0086     .atag_offset    = 0x100,
0087     .nr_irqs    = DOVE_NR_IRQS,
0088     .init_machine   = cm_a510_init,
0089     .map_io     = dove_map_io,
0090     .init_early = dove_init_early,
0091     .init_irq   = dove_init_irq,
0092     .init_time  = dove_timer_init,
0093     .restart    = dove_restart,
0094 MACHINE_END