2010-02-23 14:51:24 +01:00
/*
* arch / arm / mach - mv78xx0 / buffalo - wxl - setup . c
*
* Buffalo WXL ( Terastation Duo ) Setup routines
*
* sebastien requiem < sebastien @ requiem . fr >
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed " as is " without any
* warranty of any kind , whether express or implied .
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/ata_platform.h>
# include <linux/mv643xx_eth.h>
# include <linux/ethtool.h>
# include <linux/i2c.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
2015-12-02 22:27:06 +01:00
# include "mv78xx0.h"
2010-02-23 14:51:24 +01:00
# include "common.h"
# include "mpp.h"
/* This arch has 2 Giga Ethernet */
static struct mv643xx_eth_platform_data db78x00_ge00_data = {
. phy_addr = MV643XX_ETH_PHY_ADDR ( 0 ) ,
} ;
static struct mv643xx_eth_platform_data db78x00_ge01_data = {
. phy_addr = MV643XX_ETH_PHY_ADDR ( 8 ) ,
} ;
/* 2 SATA controller supporting HotPlug */
static struct mv_sata_platform_data db78x00_sata_data = {
. n_ports = 2 ,
} ;
static struct i2c_board_info __initdata db78x00_i2c_rtc = {
I2C_BOARD_INFO ( " ds1338 " , 0x68 ) ,
} ;
static unsigned int wxl_mpp_config [ ] __initdata = {
MPP0_GE1_TXCLK ,
MPP1_GE1_TXCTL ,
MPP2_GE1_RXCTL ,
MPP3_GE1_RXCLK ,
MPP4_GE1_TXD0 ,
MPP5_GE1_TXD1 ,
MPP6_GE1_TXD2 ,
MPP7_GE1_TXD3 ,
MPP8_GE1_RXD0 ,
MPP9_GE1_RXD1 ,
MPP10_GE1_RXD2 ,
MPP11_GE1_RXD3 ,
MPP12_GPIO ,
MPP13_SYSRST_OUTn ,
MPP14_SATA1_ACTn ,
MPP15_SATA0_ACTn ,
MPP16_GPIO ,
MPP17_GPIO ,
MPP18_GPIO ,
MPP19_GPIO ,
MPP20_GPIO ,
MPP21_GPIO ,
MPP22_GPIO ,
MPP23_GPIO ,
MPP24_UA2_TXD ,
MPP25_UA2_RXD ,
MPP26_UA2_CTSn ,
MPP27_UA2_RTSn ,
MPP28_GPIO ,
MPP29_SYSRST_OUTn ,
MPP30_GPIO ,
MPP31_GPIO ,
MPP32_GPIO ,
MPP33_GPIO ,
MPP34_GPIO ,
MPP35_GPIO ,
MPP36_GPIO ,
MPP37_GPIO ,
MPP38_GPIO ,
MPP39_GPIO ,
MPP40_UNUSED ,
MPP41_UNUSED ,
MPP42_UNUSED ,
MPP43_UNUSED ,
MPP44_UNUSED ,
MPP45_UNUSED ,
MPP46_UNUSED ,
MPP47_UNUSED ,
MPP48_SATA1_ACTn ,
MPP49_SATA0_ACTn ,
0
} ;
static void __init wxl_init ( void )
{
/*
* Basic MV78xx0 setup . Needs to be called early .
*/
mv78xx0_init ( ) ;
mv78xx0_mpp_conf ( wxl_mpp_config ) ;
/*
* Partition on - chip peripherals between the two CPU cores .
*/
mv78xx0_ehci0_init ( ) ;
mv78xx0_ehci1_init ( ) ;
mv78xx0_ehci2_init ( ) ;
mv78xx0_ge00_init ( & db78x00_ge00_data ) ;
mv78xx0_ge01_init ( & db78x00_ge01_data ) ;
mv78xx0_sata_init ( & db78x00_sata_data ) ;
mv78xx0_uart0_init ( ) ;
mv78xx0_uart1_init ( ) ;
mv78xx0_uart2_init ( ) ;
mv78xx0_uart3_init ( ) ;
mv78xx0_i2c_init ( ) ;
i2c_register_board_info ( 0 , & db78x00_i2c_rtc , 1 ) ;
}
static int __init wxl_pci_init ( void )
{
if ( machine_is_terastation_wxl ( ) ) {
/*
* Assign the x16 PCIe slot on the board to CPU core
* # 0 , and let CPU core # 1 have the four x1 slots .
*/
if ( mv78xx0_core_index ( ) = = 0 )
mv78xx0_pcie_init ( 0 , 1 ) ;
else
mv78xx0_pcie_init ( 1 , 0 ) ;
}
return 0 ;
}
subsys_initcall ( wxl_pci_init ) ;
MACHINE_START ( TERASTATION_WXL , " Buffalo Nas WXL " )
/* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */
2011-07-05 22:38:14 -04:00
. atag_offset = 0x100 ,
2015-12-02 22:27:05 +01:00
. nr_irqs = MV78XX0_NR_IRQS ,
2010-02-23 14:51:24 +01:00
. init_machine = wxl_init ,
. map_io = mv78xx0_map_io ,
2010-10-15 16:50:26 +02:00
. init_early = mv78xx0_init_early ,
2010-02-23 14:51:24 +01:00
. init_irq = mv78xx0_init_irq ,
2012-11-08 12:40:59 -07:00
. init_time = mv78xx0_timer_init ,
2011-11-05 10:09:15 +00:00
. restart = mv78xx0_restart ,
2010-02-23 14:51:24 +01:00
MACHINE_END