You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-rmk' of git://git.marvell.com/orion
Merge branch 'orion-devel' into devel
This commit is contained in:
+1
-1
@@ -441,7 +441,7 @@ config ARCH_ORION5X
|
||||
help
|
||||
Support for the following Marvell Orion 5x series SoCs:
|
||||
Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
|
||||
Orion-2 (5281).
|
||||
Orion-2 (5281), Orion-1-90 (6183).
|
||||
|
||||
config ARCH_PNX4008
|
||||
bool "Philips Nexperia PNX4008 Mobile"
|
||||
|
||||
@@ -176,14 +176,17 @@ CONFIG_MACH_KUROBOX_PRO=y
|
||||
CONFIG_MACH_DNS323=y
|
||||
CONFIG_MACH_TS209=y
|
||||
CONFIG_MACH_LINKSTATION_PRO=y
|
||||
CONFIG_MACH_LINKSTATION_MINI=y
|
||||
CONFIG_MACH_TS409=y
|
||||
CONFIG_MACH_WRT350N_V2=y
|
||||
CONFIG_MACH_TS78XX=y
|
||||
CONFIG_MACH_MV2120=y
|
||||
CONFIG_MACH_EDMINI_V2=y
|
||||
CONFIG_MACH_MSS2=y
|
||||
CONFIG_MACH_WNR854T=y
|
||||
CONFIG_MACH_RD88F5181L_GE=y
|
||||
CONFIG_MACH_RD88F5181L_FXO=y
|
||||
CONFIG_MACH_RD88F6183AP_GE=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
|
||||
|
||||
struct mbus_dram_target_info kirkwood_mbus_dram_info;
|
||||
static int __initdata win_alloc_count;
|
||||
|
||||
static int __init cpu_win_can_remap(int win)
|
||||
{
|
||||
@@ -111,6 +112,8 @@ void __init kirkwood_setup_cpu_mbus(void)
|
||||
setup_cpu_win(2, KIRKWOOD_NAND_MEM_PHYS_BASE, KIRKWOOD_NAND_MEM_SIZE,
|
||||
TARGET_DEV_BUS, ATTR_DEV_NAND, -1);
|
||||
|
||||
win_alloc_count = 3;
|
||||
|
||||
/*
|
||||
* Setup MBUS dram target info.
|
||||
*/
|
||||
@@ -137,3 +140,8 @@ void __init kirkwood_setup_cpu_mbus(void)
|
||||
}
|
||||
kirkwood_mbus_dram_info.num_cs = cs;
|
||||
}
|
||||
|
||||
void __init kirkwood_setup_sram_win(u32 base, u32 size)
|
||||
{
|
||||
setup_cpu_win(win_alloc_count++, base, size, 0x03, 0x00, -1);
|
||||
}
|
||||
|
||||
@@ -98,7 +98,6 @@ void __init kirkwood_ehci_init(void)
|
||||
* GE00
|
||||
****************************************************************************/
|
||||
struct mv643xx_eth_shared_platform_data kirkwood_ge00_shared_data = {
|
||||
.t_clk = KIRKWOOD_TCLK,
|
||||
.dram = &kirkwood_mbus_dram_info,
|
||||
};
|
||||
|
||||
@@ -108,6 +107,11 @@ static struct resource kirkwood_ge00_shared_resources[] = {
|
||||
.start = GE00_PHYS_BASE + 0x2000,
|
||||
.end = GE00_PHYS_BASE + 0x3fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "ge00 err irq",
|
||||
.start = IRQ_KIRKWOOD_GE00_ERR,
|
||||
.end = IRQ_KIRKWOOD_GE00_ERR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -117,7 +121,7 @@ static struct platform_device kirkwood_ge00_shared = {
|
||||
.dev = {
|
||||
.platform_data = &kirkwood_ge00_shared_data,
|
||||
},
|
||||
.num_resources = 1,
|
||||
.num_resources = ARRAY_SIZE(kirkwood_ge00_shared_resources),
|
||||
.resource = kirkwood_ge00_shared_resources,
|
||||
};
|
||||
|
||||
@@ -201,7 +205,6 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data)
|
||||
* SPI
|
||||
****************************************************************************/
|
||||
static struct orion_spi_info kirkwood_spi_plat_data = {
|
||||
.tclk = KIRKWOOD_TCLK,
|
||||
};
|
||||
|
||||
static struct resource kirkwood_spi_resources[] = {
|
||||
@@ -239,7 +242,7 @@ static struct plat_serial8250_port kirkwood_uart0_data[] = {
|
||||
.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = KIRKWOOD_TCLK,
|
||||
.uartclk = 0,
|
||||
}, {
|
||||
},
|
||||
};
|
||||
@@ -283,7 +286,7 @@ static struct plat_serial8250_port kirkwood_uart1_data[] = {
|
||||
.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = KIRKWOOD_TCLK,
|
||||
.uartclk = 0,
|
||||
}, {
|
||||
},
|
||||
};
|
||||
@@ -525,9 +528,23 @@ void __init kirkwood_xor1_init(void)
|
||||
/*****************************************************************************
|
||||
* Time handling
|
||||
****************************************************************************/
|
||||
int kirkwood_tclk;
|
||||
|
||||
int __init kirkwood_find_tclk(void)
|
||||
{
|
||||
u32 dev, rev;
|
||||
|
||||
kirkwood_pcie_id(&dev, &rev);
|
||||
if (dev == MV88F6281_DEV_ID && rev == MV88F6281_REV_A0)
|
||||
return 200000000;
|
||||
|
||||
return 166666667;
|
||||
}
|
||||
|
||||
static void kirkwood_timer_init(void)
|
||||
{
|
||||
orion_time_init(IRQ_KIRKWOOD_BRIDGE, KIRKWOOD_TCLK);
|
||||
kirkwood_tclk = kirkwood_find_tclk();
|
||||
orion_time_init(IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
|
||||
}
|
||||
|
||||
struct sys_timer kirkwood_timer = {
|
||||
@@ -538,33 +555,62 @@ struct sys_timer kirkwood_timer = {
|
||||
/*****************************************************************************
|
||||
* General
|
||||
****************************************************************************/
|
||||
/*
|
||||
* Identify device ID and revision.
|
||||
*/
|
||||
static char * __init kirkwood_id(void)
|
||||
{
|
||||
switch (readl(DEVICE_ID) & 0x3) {
|
||||
case 0:
|
||||
return "88F6180";
|
||||
case 1:
|
||||
return "88F6192";
|
||||
case 2:
|
||||
return "88F6281";
|
||||
}
|
||||
u32 dev, rev;
|
||||
|
||||
return "unknown 88F6000 variant";
|
||||
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";
|
||||
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";
|
||||
else
|
||||
return "MV88F6192-Rev-Unsupported";
|
||||
} else if (dev == MV88F6180_DEV_ID) {
|
||||
if (rev == MV88F6180_REV_A0)
|
||||
return "MV88F6180-Rev-A0";
|
||||
else
|
||||
return "MV88F6180-Rev-Unsupported";
|
||||
} else {
|
||||
return "Device-Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static int __init is_l2_writethrough(void)
|
||||
static void __init kirkwood_l2_init(void)
|
||||
{
|
||||
return !!(readl(L2_CONFIG_REG) & L2_WRITETHROUGH);
|
||||
#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
|
||||
}
|
||||
|
||||
void __init kirkwood_init(void)
|
||||
{
|
||||
printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n",
|
||||
kirkwood_id(), KIRKWOOD_TCLK);
|
||||
kirkwood_id(), kirkwood_tclk);
|
||||
kirkwood_ge00_shared_data.t_clk = kirkwood_tclk;
|
||||
kirkwood_spi_plat_data.tclk = kirkwood_tclk;
|
||||
kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
|
||||
kirkwood_uart1_data[0].uartclk = kirkwood_tclk;
|
||||
|
||||
kirkwood_setup_cpu_mbus();
|
||||
|
||||
#ifdef CONFIG_CACHE_FEROCEON_L2
|
||||
feroceon_l2_init(is_l2_writethrough());
|
||||
kirkwood_l2_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -23,10 +23,9 @@ void kirkwood_init_irq(void);
|
||||
|
||||
extern struct mbus_dram_target_info kirkwood_mbus_dram_info;
|
||||
void kirkwood_setup_cpu_mbus(void);
|
||||
void kirkwood_setup_pcie_io_win(int window, u32 base, u32 size,
|
||||
int maj, int min);
|
||||
void kirkwood_setup_pcie_mem_win(int window, u32 base, u32 size,
|
||||
int maj, int min);
|
||||
void kirkwood_setup_sram_win(u32 base, u32 size);
|
||||
|
||||
void kirkwood_pcie_id(u32 *dev, u32 *rev);
|
||||
|
||||
void kirkwood_ehci_init(void);
|
||||
void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data);
|
||||
|
||||
@@ -44,7 +44,6 @@ static void __init db88f6281_init(void)
|
||||
kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&db88f6281_sata_data);
|
||||
kirkwood_uart0_init();
|
||||
kirkwood_uart1_init();
|
||||
}
|
||||
|
||||
static int __init db88f6281_pci_init(void)
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#define IRQ_KIRKWOOD_GPIO_HIGH_0_7 39
|
||||
#define IRQ_KIRKWOOD_GPIO_HIGH_8_15 40
|
||||
#define IRQ_KIRKWOOD_GPIO_HIGH_16_23 41
|
||||
#define IRQ_KIRKWOOD_GE00_ERR 46
|
||||
|
||||
/*
|
||||
* KIRKWOOD General Purpose Pins
|
||||
|
||||
@@ -67,6 +67,20 @@
|
||||
#define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128)
|
||||
#define L2_WRITETHROUGH 0x00000010
|
||||
|
||||
/*
|
||||
* Supported devices and revisions.
|
||||
*/
|
||||
#define MV88F6281_DEV_ID 0x6281
|
||||
#define MV88F6281_REV_Z0 0
|
||||
#define MV88F6281_REV_A0 2
|
||||
|
||||
#define MV88F6192_DEV_ID 0x6192
|
||||
#define MV88F6192_REV_Z0 0
|
||||
#define MV88F6192_REV_A0 2
|
||||
|
||||
#define MV88F6180_DEV_ID 0x6180
|
||||
#define MV88F6180_REV_A0 2
|
||||
|
||||
/*
|
||||
* Register Map
|
||||
*/
|
||||
|
||||
@@ -8,4 +8,3 @@
|
||||
|
||||
#define CLOCK_TICK_RATE (100 * HZ)
|
||||
|
||||
#define KIRKWOOD_TCLK 166666667
|
||||
|
||||
@@ -18,6 +18,12 @@
|
||||
|
||||
#define PCIE_BASE ((void __iomem *)PCIE_VIRT_BASE)
|
||||
|
||||
void __init kirkwood_pcie_id(u32 *dev, u32 *rev)
|
||||
{
|
||||
*dev = orion_pcie_dev_id(PCIE_BASE);
|
||||
*rev = orion_pcie_rev(PCIE_BASE);
|
||||
}
|
||||
|
||||
static int pcie_valid_config(int bus, int dev)
|
||||
{
|
||||
/*
|
||||
|
||||
@@ -90,7 +90,6 @@ static void __init rd88f6281_init(void)
|
||||
kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&rd88f6281_sata_data);
|
||||
kirkwood_uart0_init();
|
||||
kirkwood_uart1_init();
|
||||
|
||||
platform_device_register(&rd88f6281_nand_flash);
|
||||
}
|
||||
|
||||
@@ -285,6 +285,11 @@ static struct resource mv78xx0_ge00_shared_resources[] = {
|
||||
.start = GE00_PHYS_BASE + 0x2000,
|
||||
.end = GE00_PHYS_BASE + 0x3fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "ge err irq",
|
||||
.start = IRQ_MV78XX0_GE_ERR,
|
||||
.end = IRQ_MV78XX0_GE_ERR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -294,7 +299,7 @@ static struct platform_device mv78xx0_ge00_shared = {
|
||||
.dev = {
|
||||
.platform_data = &mv78xx0_ge00_shared_data,
|
||||
},
|
||||
.num_resources = 1,
|
||||
.num_resources = ARRAY_SIZE(mv78xx0_ge00_shared_resources),
|
||||
.resource = mv78xx0_ge00_shared_resources,
|
||||
};
|
||||
|
||||
|
||||
@@ -26,14 +26,22 @@
|
||||
ldr \tmp, [\base, #IRQ_MASK_LOW_OFF]
|
||||
mov \irqnr, #31
|
||||
ands \irqstat, \irqstat, \tmp
|
||||
bne 1001f
|
||||
|
||||
@ if no low interrupts set, check high interrupts
|
||||
ldreq \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
|
||||
ldreq \tmp, [\base, #IRQ_MASK_HIGH_OFF]
|
||||
moveq \irqnr, #63
|
||||
andeqs \irqstat, \irqstat, \tmp
|
||||
ldr \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
|
||||
ldr \tmp, [\base, #IRQ_MASK_HIGH_OFF]
|
||||
mov \irqnr, #63
|
||||
ands \irqstat, \irqstat, \tmp
|
||||
bne 1001f
|
||||
|
||||
@ if no high interrupts set, check error interrupts
|
||||
ldr \irqstat, [\base, #IRQ_CAUSE_ERR_OFF]
|
||||
ldr \tmp, [\base, #IRQ_MASK_ERR_OFF]
|
||||
mov \irqnr, #95
|
||||
ands \irqstat, \irqstat, \tmp
|
||||
|
||||
@ find first active interrupt source
|
||||
clzne \irqstat, \irqstat
|
||||
1001: clzne \irqstat, \irqstat
|
||||
subne \irqnr, \irqnr, \irqstat
|
||||
.endm
|
||||
|
||||
@@ -79,10 +79,15 @@
|
||||
#define IRQ_MV78XX0_DB_IN 60
|
||||
#define IRQ_MV78XX0_DB_OUT 61
|
||||
|
||||
/*
|
||||
* MV78xx0 Error Interrupt Controller
|
||||
*/
|
||||
#define IRQ_MV78XX0_GE_ERR 70
|
||||
|
||||
/*
|
||||
* MV78XX0 General Purpose Pins
|
||||
*/
|
||||
#define IRQ_MV78XX0_GPIO_START 64
|
||||
#define IRQ_MV78XX0_GPIO_START 96
|
||||
#define NR_GPIO_IRQS GPIO_MAX
|
||||
|
||||
#define NR_IRQS (IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
|
||||
|
||||
@@ -71,8 +71,10 @@
|
||||
#define BRIDGE_INT_TIMER1 0x0004
|
||||
#define BRIDGE_INT_TIMER1_CLR (~0x0004)
|
||||
#define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200)
|
||||
#define IRQ_CAUSE_ERR_OFF 0x0000
|
||||
#define IRQ_CAUSE_LOW_OFF 0x0004
|
||||
#define IRQ_CAUSE_HIGH_OFF 0x0008
|
||||
#define IRQ_MASK_ERR_OFF 0x000c
|
||||
#define IRQ_MASK_LOW_OFF 0x0010
|
||||
#define IRQ_MASK_HIGH_OFF 0x0014
|
||||
#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
|
||||
|
||||
@@ -19,4 +19,5 @@ void __init mv78xx0_init_irq(void)
|
||||
{
|
||||
orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF));
|
||||
orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF));
|
||||
orion_irq_init(64, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF));
|
||||
}
|
||||
|
||||
@@ -36,6 +36,12 @@ config MACH_TS209
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
QNAP TS-109/TS-209 platform.
|
||||
|
||||
config MACH_TERASTATION_PRO2
|
||||
bool "Buffalo Terastation Pro II/Live"
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
Buffalo Terastation Pro II/Live platform.
|
||||
|
||||
config MACH_LINKSTATION_PRO
|
||||
bool "Buffalo Linkstation Pro/Live"
|
||||
select I2C_BOARDINFO
|
||||
@@ -44,6 +50,13 @@ config MACH_LINKSTATION_PRO
|
||||
Buffalo Linkstation Pro/Live platform. Both v1 and
|
||||
v2 devices are supported.
|
||||
|
||||
config MACH_LINKSTATION_MINI
|
||||
bool "Buffalo Linkstation Mini"
|
||||
select I2C_BOARDINFO
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
Buffalo Linkstation Mini platform.
|
||||
|
||||
config MACH_TS409
|
||||
bool "QNAP TS-409"
|
||||
help
|
||||
@@ -68,6 +81,13 @@ config MACH_MV2120
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
HP Media Vault mv2120 or mv5100.
|
||||
|
||||
config MACH_EDMINI_V2
|
||||
bool "LaCie Ethernet Disk mini V2"
|
||||
select I2C_BOARDINFO
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
LaCie Ethernet Disk mini V2.
|
||||
|
||||
config MACH_MSS2
|
||||
bool "Maxtor Shared Storage II"
|
||||
help
|
||||
@@ -92,6 +112,12 @@ config MACH_RD88F5181L_FXO
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
Marvell Orion-VoIP FXO (88F5181L) RD.
|
||||
|
||||
config MACH_RD88F6183AP_GE
|
||||
bool "Marvell Orion-1-90 AP GE Reference Design"
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
Marvell Orion-1-90 (88F6183) AP GE RD.
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -2,14 +2,18 @@ obj-y += common.o addr-map.o pci.o gpio.o irq.o mpp.o
|
||||
obj-$(CONFIG_MACH_DB88F5281) += db88f5281-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F5182) += rd88f5182-setup.o
|
||||
obj-$(CONFIG_MACH_KUROBOX_PRO) += kurobox_pro-setup.o
|
||||
obj-$(CONFIG_MACH_TERASTATION_PRO2) += terastation_pro2-setup.o
|
||||
obj-$(CONFIG_MACH_LINKSTATION_PRO) += kurobox_pro-setup.o
|
||||
obj-$(CONFIG_MACH_LINKSTATION_MINI) += lsmini-setup.o
|
||||
obj-$(CONFIG_MACH_DNS323) += dns323-setup.o
|
||||
obj-$(CONFIG_MACH_TS209) += ts209-setup.o tsx09-common.o
|
||||
obj-$(CONFIG_MACH_TS409) += ts409-setup.o tsx09-common.o
|
||||
obj-$(CONFIG_MACH_WRT350N_V2) += wrt350n-v2-setup.o
|
||||
obj-$(CONFIG_MACH_TS78XX) += ts78xx-setup.o
|
||||
obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o
|
||||
obj-$(CONFIG_MACH_EDMINI_V2) += edmini_v2-setup.o
|
||||
obj-$(CONFIG_MACH_MSS2) += mss2-setup.o
|
||||
obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/mv643xx_i2c.h>
|
||||
#include <linux/ata_platform.h>
|
||||
#include <linux/spi/orion_spi.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/timex.h>
|
||||
@@ -146,7 +147,6 @@ void __init orion5x_ehci1_init(void)
|
||||
****************************************************************************/
|
||||
struct mv643xx_eth_shared_platform_data orion5x_eth_shared_data = {
|
||||
.dram = &orion5x_mbus_dram_info,
|
||||
.t_clk = ORION5X_TCLK,
|
||||
};
|
||||
|
||||
static struct resource orion5x_eth_shared_resources[] = {
|
||||
@@ -154,6 +154,10 @@ static struct resource orion5x_eth_shared_resources[] = {
|
||||
.start = ORION5X_ETH_PHYS_BASE + 0x2000,
|
||||
.end = ORION5X_ETH_PHYS_BASE + 0x3fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = IRQ_ORION5X_ETH_ERR,
|
||||
.end = IRQ_ORION5X_ETH_ERR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -163,7 +167,7 @@ static struct platform_device orion5x_eth_shared = {
|
||||
.dev = {
|
||||
.platform_data = &orion5x_eth_shared_data,
|
||||
},
|
||||
.num_resources = 1,
|
||||
.num_resources = ARRAY_SIZE(orion5x_eth_shared_resources),
|
||||
.resource = orion5x_eth_shared_resources,
|
||||
};
|
||||
|
||||
@@ -267,6 +271,38 @@ void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* SPI
|
||||
****************************************************************************/
|
||||
static struct orion_spi_info orion5x_spi_plat_data = {
|
||||
.tclk = 0,
|
||||
};
|
||||
|
||||
static struct resource orion5x_spi_resources[] = {
|
||||
{
|
||||
.name = "spi base",
|
||||
.start = SPI_PHYS_BASE,
|
||||
.end = SPI_PHYS_BASE + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device orion5x_spi = {
|
||||
.name = "orion_spi",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &orion5x_spi_plat_data,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(orion5x_spi_resources),
|
||||
.resource = orion5x_spi_resources,
|
||||
};
|
||||
|
||||
void __init orion5x_spi_init()
|
||||
{
|
||||
platform_device_register(&orion5x_spi);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* UART0
|
||||
****************************************************************************/
|
||||
@@ -278,7 +314,7 @@ static struct plat_serial8250_port orion5x_uart0_data[] = {
|
||||
.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = ORION5X_TCLK,
|
||||
.uartclk = 0,
|
||||
}, {
|
||||
},
|
||||
};
|
||||
@@ -322,7 +358,7 @@ static struct plat_serial8250_port orion5x_uart1_data[] = {
|
||||
.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
.uartclk = ORION5X_TCLK,
|
||||
.uartclk = 0,
|
||||
}, {
|
||||
},
|
||||
};
|
||||
@@ -455,9 +491,24 @@ void __init orion5x_xor_init(void)
|
||||
/*****************************************************************************
|
||||
* Time handling
|
||||
****************************************************************************/
|
||||
int orion5x_tclk;
|
||||
|
||||
int __init orion5x_find_tclk(void)
|
||||
{
|
||||
u32 dev, rev;
|
||||
|
||||
orion5x_pcie_id(&dev, &rev);
|
||||
if (dev == MV88F6183_DEV_ID &&
|
||||
(readl(MPP_RESET_SAMPLE) & 0x00000200) == 0)
|
||||
return 133333333;
|
||||
|
||||
return 166666667;
|
||||
}
|
||||
|
||||
static void orion5x_timer_init(void)
|
||||
{
|
||||
orion_time_init(IRQ_ORION5X_BRIDGE, ORION5X_TCLK);
|
||||
orion5x_tclk = orion5x_find_tclk();
|
||||
orion_time_init(IRQ_ORION5X_BRIDGE, orion5x_tclk);
|
||||
}
|
||||
|
||||
struct sys_timer orion5x_timer = {
|
||||
@@ -499,6 +550,12 @@ static void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name)
|
||||
} else {
|
||||
*dev_name = "MV88F5181(L)-Rev-Unsupported";
|
||||
}
|
||||
} else if (*dev == MV88F6183_DEV_ID) {
|
||||
if (*rev == MV88F6183_REV_B0) {
|
||||
*dev_name = "MV88F6183-Rev-B0";
|
||||
} else {
|
||||
*dev_name = "MV88F6183-Rev-Unsupported";
|
||||
}
|
||||
} else {
|
||||
*dev_name = "Device-Unknown";
|
||||
}
|
||||
@@ -510,7 +567,12 @@ void __init orion5x_init(void)
|
||||
u32 dev, rev;
|
||||
|
||||
orion5x_id(&dev, &rev, &dev_name);
|
||||
printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, ORION5X_TCLK);
|
||||
printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
|
||||
|
||||
orion5x_eth_shared_data.t_clk = orion5x_tclk;
|
||||
orion5x_spi_plat_data.tclk = orion5x_tclk;
|
||||
orion5x_uart0_data[0].uartclk = orion5x_tclk;
|
||||
orion5x_uart1_data[0].uartclk = orion5x_tclk;
|
||||
|
||||
/*
|
||||
* Setup Orion address map
|
||||
|
||||
@@ -10,6 +10,7 @@ struct mv_sata_platform_data;
|
||||
void orion5x_map_io(void);
|
||||
void orion5x_init_irq(void);
|
||||
void orion5x_init(void);
|
||||
extern int orion5x_tclk;
|
||||
extern struct sys_timer orion5x_timer;
|
||||
|
||||
/*
|
||||
@@ -30,6 +31,7 @@ void orion5x_ehci1_init(void);
|
||||
void orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data);
|
||||
void orion5x_i2c_init(void);
|
||||
void orion5x_sata_init(struct mv_sata_platform_data *sata_data);
|
||||
void orion5x_spi_init(void);
|
||||
void orion5x_uart0_init(void);
|
||||
void orion5x_uart1_init(void);
|
||||
void orion5x_xor_init(void);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user