18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * arch/arm/mach-dove/dove-db-setup.c
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Marvell DB-MV88AP510-BP Development Board Setup
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * This file is licensed under the terms of the GNU General Public
78c2ecf20Sopenharmony_ci * License version 2.  This program is licensed "as is" without any
88c2ecf20Sopenharmony_ci * warranty of any kind, whether express or implied.
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/kernel.h>
128c2ecf20Sopenharmony_ci#include <linux/init.h>
138c2ecf20Sopenharmony_ci#include <linux/platform_device.h>
148c2ecf20Sopenharmony_ci#include <linux/irq.h>
158c2ecf20Sopenharmony_ci#include <linux/mtd/physmap.h>
168c2ecf20Sopenharmony_ci#include <linux/mtd/rawnand.h>
178c2ecf20Sopenharmony_ci#include <linux/timer.h>
188c2ecf20Sopenharmony_ci#include <linux/ata_platform.h>
198c2ecf20Sopenharmony_ci#include <linux/mv643xx_eth.h>
208c2ecf20Sopenharmony_ci#include <linux/i2c.h>
218c2ecf20Sopenharmony_ci#include <linux/pci.h>
228c2ecf20Sopenharmony_ci#include <linux/spi/spi.h>
238c2ecf20Sopenharmony_ci#include <linux/spi/flash.h>
248c2ecf20Sopenharmony_ci#include <linux/gpio.h>
258c2ecf20Sopenharmony_ci#include <asm/mach-types.h>
268c2ecf20Sopenharmony_ci#include <asm/mach/arch.h>
278c2ecf20Sopenharmony_ci#include "dove.h"
288c2ecf20Sopenharmony_ci#include "common.h"
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cistatic struct mv643xx_eth_platform_data dove_db_ge00_data = {
318c2ecf20Sopenharmony_ci	.phy_addr	= MV643XX_ETH_PHY_ADDR_DEFAULT,
328c2ecf20Sopenharmony_ci};
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_cistatic struct mv_sata_platform_data dove_db_sata_data = {
358c2ecf20Sopenharmony_ci	.n_ports        = 1,
368c2ecf20Sopenharmony_ci};
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci/*****************************************************************************
398c2ecf20Sopenharmony_ci * SPI Devices:
408c2ecf20Sopenharmony_ci * 	SPI0: 4M Flash ST-M25P32-VMF6P
418c2ecf20Sopenharmony_ci ****************************************************************************/
428c2ecf20Sopenharmony_cistatic const struct flash_platform_data dove_db_spi_flash_data = {
438c2ecf20Sopenharmony_ci	.type		= "m25p64",
448c2ecf20Sopenharmony_ci};
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_cistatic struct spi_board_info __initdata dove_db_spi_flash_info[] = {
478c2ecf20Sopenharmony_ci	{
488c2ecf20Sopenharmony_ci		.modalias       = "m25p80",
498c2ecf20Sopenharmony_ci		.platform_data  = &dove_db_spi_flash_data,
508c2ecf20Sopenharmony_ci		.irq            = -1,
518c2ecf20Sopenharmony_ci		.max_speed_hz   = 20000000,
528c2ecf20Sopenharmony_ci		.bus_num        = 0,
538c2ecf20Sopenharmony_ci		.chip_select    = 0,
548c2ecf20Sopenharmony_ci	},
558c2ecf20Sopenharmony_ci};
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci/*****************************************************************************
588c2ecf20Sopenharmony_ci * PCI
598c2ecf20Sopenharmony_ci ****************************************************************************/
608c2ecf20Sopenharmony_cistatic int __init dove_db_pci_init(void)
618c2ecf20Sopenharmony_ci{
628c2ecf20Sopenharmony_ci	if (machine_is_dove_db())
638c2ecf20Sopenharmony_ci		dove_pcie_init(1, 1);
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci	return 0;
668c2ecf20Sopenharmony_ci}
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_cisubsys_initcall(dove_db_pci_init);
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci/*****************************************************************************
718c2ecf20Sopenharmony_ci * Board Init
728c2ecf20Sopenharmony_ci ****************************************************************************/
738c2ecf20Sopenharmony_cistatic void __init dove_db_init(void)
748c2ecf20Sopenharmony_ci{
758c2ecf20Sopenharmony_ci	/*
768c2ecf20Sopenharmony_ci	 * Basic Dove setup. Needs to be called early.
778c2ecf20Sopenharmony_ci	 */
788c2ecf20Sopenharmony_ci	dove_init();
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci	dove_ge00_init(&dove_db_ge00_data);
818c2ecf20Sopenharmony_ci	dove_ehci0_init();
828c2ecf20Sopenharmony_ci	dove_ehci1_init();
838c2ecf20Sopenharmony_ci	dove_sata_init(&dove_db_sata_data);
848c2ecf20Sopenharmony_ci	dove_sdio0_init();
858c2ecf20Sopenharmony_ci	dove_sdio1_init();
868c2ecf20Sopenharmony_ci	dove_spi0_init();
878c2ecf20Sopenharmony_ci	dove_spi1_init();
888c2ecf20Sopenharmony_ci	dove_uart0_init();
898c2ecf20Sopenharmony_ci	dove_uart1_init();
908c2ecf20Sopenharmony_ci	dove_i2c_init();
918c2ecf20Sopenharmony_ci	spi_register_board_info(dove_db_spi_flash_info,
928c2ecf20Sopenharmony_ci				ARRAY_SIZE(dove_db_spi_flash_info));
938c2ecf20Sopenharmony_ci}
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ciMACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
968c2ecf20Sopenharmony_ci	.atag_offset	= 0x100,
978c2ecf20Sopenharmony_ci	.nr_irqs	= DOVE_NR_IRQS,
988c2ecf20Sopenharmony_ci	.init_machine	= dove_db_init,
998c2ecf20Sopenharmony_ci	.map_io		= dove_map_io,
1008c2ecf20Sopenharmony_ci	.init_early	= dove_init_early,
1018c2ecf20Sopenharmony_ci	.init_irq	= dove_init_irq,
1028c2ecf20Sopenharmony_ci	.init_time	= dove_timer_init,
1038c2ecf20Sopenharmony_ci	.restart	= dove_restart,
1048c2ecf20Sopenharmony_ciMACHINE_END
105