[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*
* arch / arm / mach - kirkwood / common . c
*
* Core functions for Marvell Kirkwood SoCs
*
* 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/serial_8250.h>
# include <linux/mbus.h>
# include <linux/ata_platform.h>
2009-06-01 23:36:36 +04:00
# include <linux/mtd/nand.h>
2011-05-15 15:32:48 +04:00
# include <linux/dma-mapping.h>
2008-09-25 18:23:48 +04:00
# include <net/dsa.h>
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
# include <asm/page.h>
# include <asm/timex.h>
2011-02-03 01:16:11 +03:00
# include <asm/kexec.h>
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
# include <asm/mach/map.h>
# include <asm/mach/time.h>
2008-08-05 19:14:15 +04:00
# include <mach/kirkwood.h>
2009-04-22 23:08:17 +04:00
# include <mach/bridge-regs.h>
2010-05-31 15:49:12 +04:00
# include <plat/audio.h>
2008-08-09 15:44:58 +04:00
# include <plat/cache-feroceon-l2.h>
2009-02-14 11:15:55 +03:00
# include <plat/mvsdio.h>
2008-08-09 15:44:58 +04:00
# include <plat/orion_nand.h>
2011-05-15 15:32:41 +04:00
# include <plat/common.h>
2008-08-09 15:44:58 +04:00
# include <plat/time.h>
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
# include "common.h"
/*****************************************************************************
* I / O Address Mapping
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static struct map_desc kirkwood_io_desc [ ] __initdata = {
{
. virtual = KIRKWOOD_PCIE_IO_VIRT_BASE ,
. pfn = __phys_to_pfn ( KIRKWOOD_PCIE_IO_PHYS_BASE ) ,
. length = KIRKWOOD_PCIE_IO_SIZE ,
. type = MT_DEVICE ,
2010-06-08 15:21:34 +04:00
} , {
. virtual = KIRKWOOD_PCIE1_IO_VIRT_BASE ,
. pfn = __phys_to_pfn ( KIRKWOOD_PCIE1_IO_PHYS_BASE ) ,
. length = KIRKWOOD_PCIE1_IO_SIZE ,
. type = MT_DEVICE ,
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
} , {
. virtual = KIRKWOOD_REGS_VIRT_BASE ,
. pfn = __phys_to_pfn ( KIRKWOOD_REGS_PHYS_BASE ) ,
. length = KIRKWOOD_REGS_SIZE ,
. type = MT_DEVICE ,
} ,
} ;
void __init kirkwood_map_io ( void )
{
iotable_init ( kirkwood_io_desc , ARRAY_SIZE ( kirkwood_io_desc ) ) ;
}
2009-03-22 18:30:32 +03:00
/*
* Default clock control bits . Any bit _not_ set in this variable
* will be cleared from the hardware after platform devices have been
* registered . Some reserved bits must be set to 1.
*/
unsigned int kirkwood_clk_ctrl = CGC_DUNIT | CGC_RESERVED ;
2011-05-15 15:32:44 +04:00
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*****************************************************************************
* EHCI0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_ehci_init ( void )
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_USB0 ;
2011-05-15 15:32:49 +04:00
orion_ehci_init ( & kirkwood_mbus_dram_info ,
USB_PHYS_BASE , IRQ_KIRKWOOD_USB ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
/*****************************************************************************
* GE00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_ge00_init ( struct mv643xx_eth_platform_data * eth_data )
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_GE0 ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
2011-05-15 15:32:44 +04:00
orion_ge00_init ( eth_data , & kirkwood_mbus_dram_info ,
GE00_PHYS_BASE , IRQ_KIRKWOOD_GE00_SUM ,
IRQ_KIRKWOOD_GE00_ERR , kirkwood_tclk ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
2008-10-20 01:10:14 +04:00
/*****************************************************************************
* GE01
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_ge01_init ( struct mv643xx_eth_platform_data * eth_data )
{
2011-05-15 15:32:44 +04:00
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_GE1 ;
2008-10-20 01:10:14 +04:00
2011-05-15 15:32:44 +04:00
orion_ge01_init ( eth_data , & kirkwood_mbus_dram_info ,
GE01_PHYS_BASE , IRQ_KIRKWOOD_GE01_SUM ,
IRQ_KIRKWOOD_GE01_ERR , kirkwood_tclk ) ;
2008-10-20 01:10:14 +04:00
}
2008-09-25 18:23:48 +04:00
/*****************************************************************************
* Ethernet switch
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_ge00_switch_init ( struct dsa_platform_data * d , int irq )
{
2011-05-15 15:32:44 +04:00
orion_ge00_switch_init ( d , irq ) ;
2008-09-25 18:23:48 +04:00
}
2009-06-01 23:36:36 +04:00
/*****************************************************************************
* NAND flash
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static struct resource kirkwood_nand_resource = {
. flags = IORESOURCE_MEM ,
. start = KIRKWOOD_NAND_MEM_PHYS_BASE ,
. end = KIRKWOOD_NAND_MEM_PHYS_BASE +
KIRKWOOD_NAND_MEM_SIZE - 1 ,
} ;
static struct orion_nand_data kirkwood_nand_data = {
. cle = 0 ,
. ale = 1 ,
. width = 8 ,
} ;
static struct platform_device kirkwood_nand_flash = {
. name = " orion_nand " ,
. id = - 1 ,
. dev = {
. platform_data = & kirkwood_nand_data ,
} ,
. resource = & kirkwood_nand_resource ,
. num_resources = 1 ,
} ;
void __init kirkwood_nand_init ( struct mtd_partition * parts , int nr_parts ,
int chip_delay )
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_RUNIT ;
2009-06-01 23:36:36 +04:00
kirkwood_nand_data . parts = parts ;
kirkwood_nand_data . nr_parts = nr_parts ;
kirkwood_nand_data . chip_delay = chip_delay ;
platform_device_register ( & kirkwood_nand_flash ) ;
}
2010-04-20 13:26:19 +04:00
void __init kirkwood_nand_init_rnb ( struct mtd_partition * parts , int nr_parts ,
int ( * dev_ready ) ( struct mtd_info * ) )
{
kirkwood_clk_ctrl | = CGC_RUNIT ;
kirkwood_nand_data . parts = parts ;
kirkwood_nand_data . nr_parts = nr_parts ;
kirkwood_nand_data . dev_ready = dev_ready ;
platform_device_register ( & kirkwood_nand_flash ) ;
}
2009-06-01 23:36:36 +04:00
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*****************************************************************************
* SoC RTC
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-02-27 06:55:59 +03:00
static void __init kirkwood_rtc_init ( void )
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
{
2011-05-15 15:32:43 +04:00
orion_rtc_init ( RTC_PHYS_BASE , IRQ_KIRKWOOD_RTC ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
/*****************************************************************************
* SATA
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_sata_init ( struct mv_sata_platform_data * sata_data )
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_SATA0 ;
if ( sata_data - > n_ports > 1 )
kirkwood_clk_ctrl | = CGC_SATA1 ;
2011-05-15 15:32:50 +04:00
orion_sata_init ( sata_data , & kirkwood_mbus_dram_info ,
SATA_PHYS_BASE , IRQ_KIRKWOOD_SATA ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
2009-02-14 11:15:55 +03:00
/*****************************************************************************
* SD / SDIO / MMC
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static struct resource mvsdio_resources [ ] = {
[ 0 ] = {
. start = SDIO_PHYS_BASE ,
. end = SDIO_PHYS_BASE + SZ_1K - 1 ,
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. start = IRQ_KIRKWOOD_SDIO ,
. end = IRQ_KIRKWOOD_SDIO ,
. flags = IORESOURCE_IRQ ,
} ,
} ;
2011-05-15 15:32:40 +04:00
static u64 mvsdio_dmamask = DMA_BIT_MASK ( 32 ) ;
2009-02-14 11:15:55 +03:00
static struct platform_device kirkwood_sdio = {
. name = " mvsdio " ,
. id = - 1 ,
. dev = {
. dma_mask = & mvsdio_dmamask ,
2011-05-15 15:32:40 +04:00
. coherent_dma_mask = DMA_BIT_MASK ( 32 ) ,
2009-02-14 11:15:55 +03:00
} ,
. num_resources = ARRAY_SIZE ( mvsdio_resources ) ,
. resource = mvsdio_resources ,
} ;
void __init kirkwood_sdio_init ( struct mvsdio_platform_data * mvsdio_data )
{
u32 dev , rev ;
kirkwood_pcie_id ( & dev , & rev ) ;
2010-06-01 19:09:27 +04:00
if ( rev = = 0 & & dev ! = MV88F6282_DEV_ID ) /* catch all Kirkwood Z0's */
2009-02-14 11:15:55 +03:00
mvsdio_data - > clock = 100000000 ;
else
mvsdio_data - > clock = 200000000 ;
mvsdio_data - > dram = & kirkwood_mbus_dram_info ;
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_SDIO ;
2009-02-14 11:15:55 +03:00
kirkwood_sdio . dev . platform_data = mvsdio_data ;
platform_device_register ( & kirkwood_sdio ) ;
}
2008-08-09 17:38:18 +04:00
/*****************************************************************************
* SPI
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_spi_init ( )
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_RUNIT ;
2011-05-15 15:32:46 +04:00
orion_spi_init ( SPI_PHYS_BASE , kirkwood_tclk ) ;
2008-08-09 17:38:18 +04:00
}
2009-03-23 21:13:21 +03:00
/*****************************************************************************
* I2C
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_i2c_init ( void )
{
2011-05-15 15:32:45 +04:00
orion_i2c_init ( I2C_PHYS_BASE , IRQ_KIRKWOOD_TWSI , 8 ) ;
2009-03-23 21:13:21 +03:00
}
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*****************************************************************************
* UART0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_uart0_init ( void )
{
2011-05-15 15:32:41 +04:00
orion_uart0_init ( UART0_VIRT_BASE , UART0_PHYS_BASE ,
IRQ_KIRKWOOD_UART_0 , kirkwood_tclk ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
/*****************************************************************************
* UART1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_uart1_init ( void )
{
2011-05-15 15:32:41 +04:00
orion_uart1_init ( UART1_VIRT_BASE , UART1_PHYS_BASE ,
IRQ_KIRKWOOD_UART_1 , kirkwood_tclk ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
2009-06-03 23:24:36 +04:00
/*****************************************************************************
* Cryptographic Engines and Security Accelerator ( CESA )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void __init kirkwood_crypto_init ( void )
{
kirkwood_clk_ctrl | = CGC_CRYPTO ;
2011-05-15 15:32:51 +04:00
orion_crypto_init ( CRYPTO_PHYS_BASE , KIRKWOOD_SRAM_PHYS_BASE ,
KIRKWOOD_SRAM_SIZE , IRQ_KIRKWOOD_CRYPTO ) ;
2009-06-03 23:24:36 +04:00
}
2008-06-23 19:26:07 +04:00
/*****************************************************************************
* XOR0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-02-27 06:55:59 +03:00
static void __init kirkwood_xor0_init ( void )
2008-06-23 19:26:07 +04:00
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_XOR0 ;
2011-05-15 15:32:48 +04:00
orion_xor0_init ( & kirkwood_mbus_dram_info ,
XOR0_PHYS_BASE , XOR0_HIGH_PHYS_BASE ,
IRQ_KIRKWOOD_XOR_00 , IRQ_KIRKWOOD_XOR_01 ) ;
2008-06-23 19:26:07 +04:00
}
/*****************************************************************************
* XOR1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-02-27 06:55:59 +03:00
static void __init kirkwood_xor1_init ( void )
2008-06-23 19:26:07 +04:00
{
2009-03-22 18:30:32 +03:00
kirkwood_clk_ctrl | = CGC_XOR1 ;
2011-05-15 15:32:48 +04:00
orion_xor1_init ( XOR1_PHYS_BASE , XOR1_HIGH_PHYS_BASE ,
IRQ_KIRKWOOD_XOR_10 , IRQ_KIRKWOOD_XOR_11 ) ;
2008-06-23 19:26:07 +04:00
}
2009-06-01 15:38:34 +04:00
/*****************************************************************************
* Watchdog
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static void __init kirkwood_wdt_init ( void )
{
2011-05-15 15:32:47 +04:00
orion_wdt_init ( kirkwood_tclk ) ;
2009-06-01 15:38:34 +04:00
}
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*****************************************************************************
* Time handling
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-10-15 18:50:26 +04:00
void __init kirkwood_init_early ( void )
{
orion_time_set_base ( TIMER_VIRT_BASE ) ;
}
2008-09-15 02:56:38 +04:00
int kirkwood_tclk ;
2011-03-03 23:08:53 +03:00
static int __init kirkwood_find_tclk ( void )
2008-09-15 02:56:38 +04:00
{
2008-09-15 11:40:35 +04:00
u32 dev , rev ;
kirkwood_pcie_id ( & dev , & rev ) ;
2010-06-01 19:09:27 +04:00
2010-10-21 13:42:28 +04:00
if ( dev = = MV88F6281_DEV_ID | | dev = = MV88F6282_DEV_ID )
if ( ( ( readl ( SAMPLE_AT_RESET ) > > 21 ) & 1 ) = = 0 )
return 200000000 ;
2008-09-15 11:40:35 +04:00
2008-09-15 02:56:38 +04:00
return 166666667 ;
}
2009-11-05 18:29:54 +03:00
static void __init kirkwood_timer_init ( void )
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
{
2008-09-15 02:56:38 +04:00
kirkwood_tclk = kirkwood_find_tclk ( ) ;
2010-10-15 18:50:26 +04:00
orion_time_init ( BRIDGE_VIRT_BASE , BRIDGE_INT_TIMER1_CLR ,
IRQ_KIRKWOOD_BRIDGE , kirkwood_tclk ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
struct sys_timer kirkwood_timer = {
. init = kirkwood_timer_init ,
} ;
2010-05-31 15:49:12 +04:00
/*****************************************************************************
* Audio
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static struct resource kirkwood_i2s_resources [ ] = {
[ 0 ] = {
. start = AUDIO_PHYS_BASE ,
. end = AUDIO_PHYS_BASE + SZ_16K - 1 ,
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. start = IRQ_KIRKWOOD_I2S ,
. end = IRQ_KIRKWOOD_I2S ,
. flags = IORESOURCE_IRQ ,
} ,
} ;
static struct kirkwood_asoc_platform_data kirkwood_i2s_data = {
. dram = & kirkwood_mbus_dram_info ,
. burst = 128 ,
} ;
static struct platform_device kirkwood_i2s_device = {
. name = " kirkwood-i2s " ,
. id = - 1 ,
. num_resources = ARRAY_SIZE ( kirkwood_i2s_resources ) ,
. resource = kirkwood_i2s_resources ,
. dev = {
. platform_data = & kirkwood_i2s_data ,
} ,
} ;
2010-03-17 23:15:21 +03:00
static struct platform_device kirkwood_pcm_device = {
2010-08-30 18:00:05 +04:00
. name = " kirkwood-pcm-audio " ,
2010-03-17 23:15:21 +03:00
. id = - 1 ,
} ;
2010-05-31 15:49:12 +04:00
void __init kirkwood_audio_init ( void )
{
kirkwood_clk_ctrl | = CGC_AUDIO ;
platform_device_register ( & kirkwood_i2s_device ) ;
2010-03-17 23:15:21 +03:00
platform_device_register ( & kirkwood_pcm_device ) ;
2010-05-31 15:49:12 +04:00
}
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
/*****************************************************************************
* General
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-09-15 11:40:35 +04:00
/*
* Identify device ID and revision .
*/
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
static char * __init kirkwood_id ( void )
{
2008-09-15 11:40:35 +04:00
u32 dev , rev ;
kirkwood_pcie_id ( & dev , & rev ) ;
if ( dev = = MV88F6281_DEV_ID ) {
if ( rev = = MV88F6281_REV_Z0 )
return " MV88F6281-Z0 " ;
else if ( rev = = MV88F6281_REV_A0 )
return " MV88F6281-A0 " ;
2009-06-09 13:11:02 +04:00
else if ( rev = = MV88F6281_REV_A1 )
return " MV88F6281-A1 " ;
2008-09-15 11:40:35 +04:00
else
return " MV88F6281-Rev-Unsupported " ;
} else if ( dev = = MV88F6192_DEV_ID ) {
if ( rev = = MV88F6192_REV_Z0 )
return " MV88F6192-Z0 " ;
else if ( rev = = MV88F6192_REV_A0 )
return " MV88F6192-A0 " ;
2010-06-01 19:09:26 +04:00
else if ( rev = = MV88F6192_REV_A1 )
return " MV88F6192-A1 " ;
2008-09-15 11:40:35 +04:00
else
return " MV88F6192-Rev-Unsupported " ;
} else if ( dev = = MV88F6180_DEV_ID ) {
if ( rev = = MV88F6180_REV_A0 )
return " MV88F6180-Rev-A0 " ;
2010-06-01 19:09:26 +04:00
else if ( rev = = MV88F6180_REV_A1 )
return " MV88F6180-Rev-A1 " ;
2008-09-15 11:40:35 +04:00
else
return " MV88F6180-Rev-Unsupported " ;
2010-06-01 19:09:27 +04:00
} else if ( dev = = MV88F6282_DEV_ID ) {
if ( rev = = MV88F6282_REV_A0 )
return " MV88F6282-Rev-A0 " ;
else
return " MV88F6282-Rev-Unsupported " ;
2008-09-15 11:40:35 +04:00
} else {
return " Device-Unknown " ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
}
2008-09-23 16:28:10 +04:00
static void __init kirkwood_l2_init ( void )
2008-06-23 16:05:08 +04:00
{
2008-09-23 16:28:10 +04:00
# ifdef CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH
writel ( readl ( L2_CONFIG_REG ) | L2_WRITETHROUGH , L2_CONFIG_REG ) ;
feroceon_l2_init ( 1 ) ;
# else
writel ( readl ( L2_CONFIG_REG ) & ~ L2_WRITETHROUGH , L2_CONFIG_REG ) ;
feroceon_l2_init ( 0 ) ;
# endif
2008-06-23 16:05:08 +04:00
}
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
void __init kirkwood_init ( void )
{
printk ( KERN_INFO " Kirkwood: %s, TCLK=%d. \n " ,
2008-09-15 02:56:38 +04:00
kirkwood_id ( ) , kirkwood_tclk ) ;
2010-05-31 15:49:12 +04:00
kirkwood_i2s_data . tclk = kirkwood_tclk ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
2009-11-12 22:31:14 +03:00
/*
* Disable propagation of mbus errors to the CPU local bus ,
* as this causes mbus errors ( which can occur for example
* for PCI aborts ) to throw CPU aborts , which we ' re not set
* up to deal with .
*/
writel ( readl ( CPU_CONFIG ) & ~ CPU_CONFIG_ERROR_PROP , CPU_CONFIG ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
kirkwood_setup_cpu_mbus ( ) ;
# ifdef CONFIG_CACHE_FEROCEON_L2
2008-09-23 16:28:10 +04:00
kirkwood_l2_init ( ) ;
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
# endif
2009-02-27 06:55:59 +03:00
/* internal devices that every board has */
kirkwood_rtc_init ( ) ;
2009-06-01 15:38:34 +04:00
kirkwood_wdt_init ( ) ;
2009-02-27 06:55:59 +03:00
kirkwood_xor0_init ( ) ;
kirkwood_xor1_init ( ) ;
2009-06-03 23:24:36 +04:00
kirkwood_crypto_init ( ) ;
2011-02-03 01:16:11 +03:00
# ifdef CONFIG_KEXEC
kexec_reinit = kirkwood_enable_pcie ;
# endif
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
}
2009-03-22 18:30:32 +03:00
static int __init kirkwood_clock_gate ( void )
{
unsigned int curr = readl ( CLOCK_GATING_CTRL ) ;
2010-06-08 15:21:34 +04:00
u32 dev , rev ;
2009-03-22 18:30:32 +03:00
2010-06-08 15:21:34 +04:00
kirkwood_pcie_id ( & dev , & rev ) ;
2009-03-22 18:30:32 +03:00
printk ( KERN_DEBUG " Gating clock of unused units \n " ) ;
printk ( KERN_DEBUG " before: 0x%08x \n " , curr ) ;
/* Make sure those units are accessible */
2010-06-08 15:21:34 +04:00
writel ( curr | CGC_SATA0 | CGC_SATA1 | CGC_PEX0 | CGC_PEX1 , CLOCK_GATING_CTRL ) ;
2009-03-22 18:30:32 +03:00
/* For SATA: first shutdown the phy */
if ( ! ( kirkwood_clk_ctrl & CGC_SATA0 ) ) {
/* Disable PLL and IVREF */
writel ( readl ( SATA0_PHY_MODE_2 ) & ~ 0xf , SATA0_PHY_MODE_2 ) ;
/* Disable PHY */
writel ( readl ( SATA0_IF_CTRL ) | 0x200 , SATA0_IF_CTRL ) ;
}
if ( ! ( kirkwood_clk_ctrl & CGC_SATA1 ) ) {
/* Disable PLL and IVREF */
writel ( readl ( SATA1_PHY_MODE_2 ) & ~ 0xf , SATA1_PHY_MODE_2 ) ;
/* Disable PHY */
writel ( readl ( SATA1_IF_CTRL ) | 0x200 , SATA1_IF_CTRL ) ;
}
/* For PCIe: first shutdown the phy */
if ( ! ( kirkwood_clk_ctrl & CGC_PEX0 ) ) {
writel ( readl ( PCIE_LINK_CTRL ) | 0x10 , PCIE_LINK_CTRL ) ;
while ( 1 )
if ( readl ( PCIE_STATUS ) & 0x1 )
break ;
writel ( readl ( PCIE_LINK_CTRL ) & ~ 0x10 , PCIE_LINK_CTRL ) ;
}
2010-06-08 15:21:34 +04:00
/* For PCIe 1: first shutdown the phy */
if ( dev = = MV88F6282_DEV_ID ) {
if ( ! ( kirkwood_clk_ctrl & CGC_PEX1 ) ) {
writel ( readl ( PCIE1_LINK_CTRL ) | 0x10 , PCIE1_LINK_CTRL ) ;
while ( 1 )
if ( readl ( PCIE1_STATUS ) & 0x1 )
break ;
writel ( readl ( PCIE1_LINK_CTRL ) & ~ 0x10 , PCIE1_LINK_CTRL ) ;
}
} else /* keep this bit set for devices that don't have PCIe1 */
kirkwood_clk_ctrl | = CGC_PEX1 ;
2009-03-22 18:30:32 +03:00
/* Now gate clock the required units */
writel ( kirkwood_clk_ctrl , CLOCK_GATING_CTRL ) ;
printk ( KERN_DEBUG " after: 0x%08x \n " , readl ( CLOCK_GATING_CTRL ) ) ;
return 0 ;
}
late_initcall ( kirkwood_clock_gate ) ;