linux/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
<<
>>
Prefs
   1/*
   2 * arch/arm/mach-kirkwood/db88f6281-bp-setup.c
   3 *
   4 * Marvell DB-88F6281-BP Development Board Setup
   5 *
   6 * This file is licensed under the terms of the GNU General Public
   7 * License version 2.  This program is licensed "as is" without any
   8 * warranty of any kind, whether express or implied.
   9 */
  10
  11#include <linux/kernel.h>
  12#include <linux/init.h>
  13#include <linux/sizes.h>
  14#include <linux/platform_device.h>
  15#include <linux/mtd/partitions.h>
  16#include <linux/ata_platform.h>
  17#include <linux/mv643xx_eth.h>
  18#include <asm/mach-types.h>
  19#include <asm/mach/arch.h>
  20#include <mach/kirkwood.h>
  21#include <plat/mvsdio.h>
  22#include "common.h"
  23#include "mpp.h"
  24
  25static struct mtd_partition db88f6281_nand_parts[] = {
  26        {
  27                .name = "u-boot",
  28                .offset = 0,
  29                .size = SZ_1M
  30        }, {
  31                .name = "uImage",
  32                .offset = MTDPART_OFS_NXTBLK,
  33                .size = SZ_4M
  34        }, {
  35                .name = "root",
  36                .offset = MTDPART_OFS_NXTBLK,
  37                .size = MTDPART_SIZ_FULL
  38        },
  39};
  40
  41static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
  42        .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
  43};
  44
  45static struct mv_sata_platform_data db88f6281_sata_data = {
  46        .n_ports        = 2,
  47};
  48
  49static struct mvsdio_platform_data db88f6281_mvsdio_data = {
  50        .gpio_write_protect     = 37,
  51        .gpio_card_detect       = 38,
  52};
  53
  54static unsigned int db88f6281_mpp_config[] __initdata = {
  55        MPP0_NF_IO2,
  56        MPP1_NF_IO3,
  57        MPP2_NF_IO4,
  58        MPP3_NF_IO5,
  59        MPP4_NF_IO6,
  60        MPP5_NF_IO7,
  61        MPP18_NF_IO0,
  62        MPP19_NF_IO1,
  63        MPP37_GPIO,
  64        MPP38_GPIO,
  65        0
  66};
  67
  68static void __init db88f6281_init(void)
  69{
  70        /*
  71         * Basic setup. Needs to be called early.
  72         */
  73        kirkwood_init();
  74        kirkwood_mpp_conf(db88f6281_mpp_config);
  75
  76        kirkwood_nand_init(ARRAY_AND_SIZE(db88f6281_nand_parts), 25);
  77        kirkwood_ehci_init();
  78        kirkwood_ge00_init(&db88f6281_ge00_data);
  79        kirkwood_sata_init(&db88f6281_sata_data);
  80        kirkwood_uart0_init();
  81        kirkwood_sdio_init(&db88f6281_mvsdio_data);
  82}
  83
  84static int __init db88f6281_pci_init(void)
  85{
  86        if (machine_is_db88f6281_bp()) {
  87                u32 dev, rev;
  88
  89                kirkwood_pcie_id(&dev, &rev);
  90                if (dev == MV88F6282_DEV_ID)
  91                        kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0);
  92                else
  93                        kirkwood_pcie_init(KW_PCIE0);
  94        }
  95        return 0;
  96}
  97subsys_initcall(db88f6281_pci_init);
  98
  99MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
 100        /* Maintainer: Saeed Bishara <saeed@marvell.com> */
 101        .atag_offset    = 0x100,
 102        .init_machine   = db88f6281_init,
 103        .map_io         = kirkwood_map_io,
 104        .init_early     = kirkwood_init_early,
 105        .init_irq       = kirkwood_init_irq,
 106        .timer          = &kirkwood_timer,
 107        .restart        = kirkwood_restart,
 108MACHINE_END
 109