linux/arch/arm/mach-dove/cm-a510.c
<<
>>
Prefs
   1/*
   2 * arch/arm/mach-dove/cm-a510.c
   3 *
   4 * Copyright (C) 2010 CompuLab, Ltd.
   5 * Konstantin Sinyuk <kostyas@compulab.co.il>
   6 *
   7 * Based on Marvell DB-MV88AP510-BP Development Board Setup
   8 *
   9 * This file is licensed under the terms of the GNU General Public
  10 * License version 2.  This program is licensed "as is" without any
  11 * warranty of any kind, whether express or implied.
  12 */
  13
  14#include <linux/kernel.h>
  15#include <linux/init.h>
  16#include <linux/platform_device.h>
  17#include <linux/ata_platform.h>
  18#include <linux/mv643xx_eth.h>
  19#include <linux/spi/spi.h>
  20#include <linux/spi/flash.h>
  21
  22#include <asm/mach-types.h>
  23#include <asm/mach/arch.h>
  24
  25#include <mach/dove.h>
  26
  27#include "common.h"
  28
  29static struct mv643xx_eth_platform_data cm_a510_ge00_data = {
  30        .phy_addr       = MV643XX_ETH_PHY_ADDR_DEFAULT,
  31};
  32
  33static struct mv_sata_platform_data cm_a510_sata_data = {
  34        .n_ports        = 1,
  35};
  36
  37/*
  38 * SPI Devices:
  39 * SPI0: 1M Flash Winbond w25q32bv
  40 */
  41static const struct flash_platform_data cm_a510_spi_flash_data = {
  42        .type           = "w25q32bv",
  43};
  44
  45static struct spi_board_info __initdata cm_a510_spi_flash_info[] = {
  46        {
  47                .modalias       = "m25p80",
  48                .platform_data  = &cm_a510_spi_flash_data,
  49                .irq            = -1,
  50                .max_speed_hz   = 20000000,
  51                .bus_num        = 0,
  52                .chip_select    = 0,
  53        },
  54};
  55
  56static int __init cm_a510_pci_init(void)
  57{
  58        if (machine_is_cm_a510())
  59                dove_pcie_init(1, 1);
  60
  61        return 0;
  62}
  63
  64subsys_initcall(cm_a510_pci_init);
  65
  66/* Board Init */
  67static void __init cm_a510_init(void)
  68{
  69        /*
  70         * Basic Dove setup. Needs to be called early.
  71         */
  72        dove_init();
  73
  74        dove_ge00_init(&cm_a510_ge00_data);
  75        dove_ehci0_init();
  76        dove_ehci1_init();
  77        dove_sata_init(&cm_a510_sata_data);
  78        dove_sdio0_init();
  79        dove_sdio1_init();
  80        dove_spi0_init();
  81        dove_spi1_init();
  82        dove_uart0_init();
  83        dove_uart1_init();
  84        dove_i2c_init();
  85        spi_register_board_info(cm_a510_spi_flash_info,
  86                                ARRAY_SIZE(cm_a510_spi_flash_info));
  87}
  88
  89MACHINE_START(CM_A510, "Compulab CM-A510 Board")
  90        .atag_offset    = 0x100,
  91        .nr_irqs        = DOVE_NR_IRQS,
  92        .init_machine   = cm_a510_init,
  93        .map_io         = dove_map_io,
  94        .init_early     = dove_init_early,
  95        .init_irq       = dove_init_irq,
  96        .init_time      = dove_timer_init,
  97        .restart        = dove_restart,
  98MACHINE_END
  99