diff options
Diffstat (limited to 'arch/mips/include')
39 files changed, 442 insertions, 1605 deletions
diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h index 2e1ad4c652b..82ad35ce2b4 100644 --- a/arch/mips/include/asm/bitops.h +++ b/arch/mips/include/asm/bitops.h @@ -17,7 +17,6 @@  #include <linux/irqflags.h>  #include <linux/types.h>  #include <asm/barrier.h> -#include <asm/bug.h>  #include <asm/byteorder.h>		/* sigh ... */  #include <asm/cpu-features.h>  #include <asm/sgidefs.h> diff --git a/arch/mips/include/asm/clkdev.h b/arch/mips/include/asm/clkdev.h new file mode 100644 index 00000000000..262475414e5 --- /dev/null +++ b/arch/mips/include/asm/clkdev.h @@ -0,0 +1,25 @@ +/* + *  based on arch/arm/include/asm/clkdev.h + * + *  Copyright (C) 2008 Russell King. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Helper for the clk API to assist looking up a struct clk. + */ +#ifndef __ASM_CLKDEV_H +#define __ASM_CLKDEV_H + +#include <linux/slab.h> + +#define __clk_get(clk)	({ 1; }) +#define __clk_put(clk)	do { } while (0) + +static inline struct clk_lookup_alloc *__clkdev_alloc(size_t size) +{ +	return kzalloc(size, GFP_KERNEL); +} + +#endif diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h index 285a41fa0b1..eee10dc07ac 100644 --- a/arch/mips/include/asm/cmpxchg.h +++ b/arch/mips/include/asm/cmpxchg.h @@ -8,6 +8,7 @@  #ifndef __ASM_CMPXCHG_H  #define __ASM_CMPXCHG_H +#include <linux/bug.h>  #include <linux/irqflags.h>  #include <asm/war.h> diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h index f9fa2a479dd..95e40c1e8ed 100644 --- a/arch/mips/include/asm/cpu.h +++ b/arch/mips/include/asm/cpu.h @@ -94,6 +94,7 @@  #define PRID_IMP_24KE		0x9600  #define PRID_IMP_74K		0x9700  #define PRID_IMP_1004K		0x9900 +#define PRID_IMP_M14KC		0x9c00  /*   * These are the PRID's for when 23:16 == PRID_COMP_SIBYTE @@ -260,12 +261,12 @@ enum cpu_type_enum {  	 */  	CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,  	CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350, -	CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, +	CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_M14KC,  	/*  	 * MIPS64 class processors  	 */ -	CPU_5KC, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2, +	CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,  	CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS, CPU_CAVIUM_OCTEON2,  	CPU_XLR, CPU_XLP, @@ -288,7 +289,7 @@ enum cpu_type_enum {  #define MIPS_CPU_ISA_M64R2	0x00000100  #define MIPS_CPU_ISA_32BIT (MIPS_CPU_ISA_I | MIPS_CPU_ISA_II | \ -	MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 ) +	MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2)  #define MIPS_CPU_ISA_64BIT (MIPS_CPU_ISA_III | MIPS_CPU_ISA_IV | \  	MIPS_CPU_ISA_V | MIPS_CPU_ISA_M64R1 | MIPS_CPU_ISA_M64R2) diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h index 86548da650e..991b659e254 100644 --- a/arch/mips/include/asm/gic.h +++ b/arch/mips/include/asm/gic.h @@ -206,7 +206,7 @@  #define GIC_VPE_EIC_SHADOW_SET_BASE	0x0100  #define GIC_VPE_EIC_SS(intr) \ -	(GIC_EIC_SHADOW_SET_BASE + (4 * intr)) +	(GIC_VPE_EIC_SHADOW_SET_BASE + (4 * intr))  #define GIC_VPE_EIC_VEC_BASE		0x0800  #define GIC_VPE_EIC_VEC(intr) \ @@ -330,6 +330,17 @@ struct gic_intr_map {  #define GIC_FLAG_TRANSPARENT   0x02  }; +/* + * This is only used in EIC mode. This helps to figure out which + * shared interrupts we need to process when we get a vector interrupt. + */ +#define GIC_MAX_SHARED_INTR  0x5 +struct gic_shared_intr_map { +	unsigned int num_shared_intr; +	unsigned int intr_list[GIC_MAX_SHARED_INTR]; +	unsigned int local_intr_mask; +}; +  extern void gic_init(unsigned long gic_base_addr,  	unsigned long gic_addrspace_size, struct gic_intr_map *intrmap,  	unsigned int intrmap_size, unsigned int irqbase); @@ -338,5 +349,7 @@ extern unsigned int gic_get_int(void);  extern void gic_send_ipi(unsigned int intr);  extern unsigned int plat_ipi_call_int_xlate(unsigned int);  extern unsigned int plat_ipi_resched_int_xlate(unsigned int); +extern void gic_bind_eic_interrupt(int irq, int set); +extern unsigned int gic_get_timer_pending(void);  #endif /* _ASM_GICREGS_H */ diff --git a/arch/mips/include/asm/inst.h b/arch/mips/include/asm/inst.h index 7ebfc392e58..ab84064283d 100644 --- a/arch/mips/include/asm/inst.h +++ b/arch/mips/include/asm/inst.h @@ -251,7 +251,7 @@ struct f_format {	/* FPU register format */  	unsigned int func : 6;  }; -struct ma_format {	/* FPU multipy and add format (MIPS IV) */ +struct ma_format {	/* FPU multiply and add format (MIPS IV) */  	unsigned int opcode : 6;  	unsigned int fr : 5;  	unsigned int ft : 5; @@ -324,7 +324,7 @@ struct f_format {	/* FPU register format */  	unsigned int opcode : 6;  }; -struct ma_format {	/* FPU multipy and add format (MIPS IV) */ +struct ma_format {	/* FPU multiply and add format (MIPS IV) */  	unsigned int fmt : 2;  	unsigned int func : 4;  	unsigned int fd : 5; diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h index a58f22998a8..29d9c23c20c 100644 --- a/arch/mips/include/asm/io.h +++ b/arch/mips/include/asm/io.h @@ -17,6 +17,7 @@  #include <linux/types.h>  #include <asm/addrspace.h> +#include <asm/bug.h>  #include <asm/byteorder.h>  #include <asm/cpu.h>  #include <asm/cpu-features.h> diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index fb698dc09bc..78dbb8a86da 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h @@ -136,6 +136,7 @@ extern void free_irqno(unsigned int irq);   * IE7.  Since R2 their number has to be read from the c0_intctl register.   */  #define CP0_LEGACY_COMPARE_IRQ 7 +#define CP0_LEGACY_PERFCNT_IRQ 7  extern int cp0_compare_irq;  extern int cp0_compare_irq_shift; diff --git a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h index 2f0becb4ec8..1caa78ad06d 100644 --- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h +++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h @@ -1,10 +1,11 @@  /*   *  Atheros AR71XX/AR724X/AR913X SoC register definitions   * + *  Copyright (C) 2010-2011 Jaiganesh Narayanan <jnarayanan@atheros.com>   *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>   *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>   * - *  Parts of this file are based on Atheros' 2.6.15 BSP + *  Parts of this file are based on Atheros' 2.6.15/2.6.31 BSP   *   *  This program is free software; you can redistribute it and/or modify it   *  under the terms of the GNU General Public License version 2 as published @@ -60,6 +61,9 @@  #define AR933X_EHCI_BASE	0x1b000000  #define AR933X_EHCI_SIZE	0x1000 +#define AR934X_WMAC_BASE	(AR71XX_APB_BASE + 0x00100000) +#define AR934X_WMAC_SIZE	0x20000 +  /*   * DDR_CTRL block   */ @@ -91,6 +95,12 @@  #define AR933X_DDR_REG_FLUSH_USB	0x84  #define AR933X_DDR_REG_FLUSH_WMAC	0x88 +#define AR934X_DDR_REG_FLUSH_GE0	0x9c +#define AR934X_DDR_REG_FLUSH_GE1	0xa0 +#define AR934X_DDR_REG_FLUSH_USB	0xa4 +#define AR934X_DDR_REG_FLUSH_PCIE	0xa8 +#define AR934X_DDR_REG_FLUSH_WMAC	0xac +  /*   * PLL block   */ @@ -150,6 +160,41 @@  #define AR933X_PLL_CLOCK_CTRL_AHB_DIV_SHIFT	15  #define AR933X_PLL_CLOCK_CTRL_AHB_DIV_MASK	0x7 +#define AR934X_PLL_CPU_CONFIG_REG		0x00 +#define AR934X_PLL_DDR_CONFIG_REG		0x04 +#define AR934X_PLL_CPU_DDR_CLK_CTRL_REG		0x08 + +#define AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT	0 +#define AR934X_PLL_CPU_CONFIG_NFRAC_MASK	0x3f +#define AR934X_PLL_CPU_CONFIG_NINT_SHIFT	6 +#define AR934X_PLL_CPU_CONFIG_NINT_MASK		0x3f +#define AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT	12 +#define AR934X_PLL_CPU_CONFIG_REFDIV_MASK	0x1f +#define AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT	19 +#define AR934X_PLL_CPU_CONFIG_OUTDIV_MASK	0x3 + +#define AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT	0 +#define AR934X_PLL_DDR_CONFIG_NFRAC_MASK	0x3ff +#define AR934X_PLL_DDR_CONFIG_NINT_SHIFT	10 +#define AR934X_PLL_DDR_CONFIG_NINT_MASK		0x3f +#define AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT	16 +#define AR934X_PLL_DDR_CONFIG_REFDIV_MASK	0x1f +#define AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT	23 +#define AR934X_PLL_DDR_CONFIG_OUTDIV_MASK	0x7 + +#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_PLL_BYPASS	BIT(2) +#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_PLL_BYPASS	BIT(3) +#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_PLL_BYPASS	BIT(4) +#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_SHIFT	5 +#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_MASK	0x1f +#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_SHIFT	10 +#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_MASK	0x1f +#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_SHIFT	15 +#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_MASK	0x1f +#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPUCLK_FROM_CPUPLL	BIT(20) +#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL	BIT(21) +#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL	BIT(24) +  /*   * USB_CONFIG block   */ @@ -185,6 +230,10 @@  #define AR933X_RESET_REG_RESET_MODULE		0x1c  #define AR933X_RESET_REG_BOOTSTRAP		0xac +#define AR934X_RESET_REG_RESET_MODULE		0x1c +#define AR934X_RESET_REG_BOOTSTRAP		0xb0 +#define AR934X_RESET_REG_PCIE_WMAC_INT_STATUS	0xac +  #define MISC_INT_ETHSW			BIT(12)  #define MISC_INT_TIMER4			BIT(10)  #define MISC_INT_TIMER3			BIT(9) @@ -241,6 +290,40 @@  #define AR933X_BOOTSTRAP_REF_CLK_40	BIT(0) +#define AR934X_BOOTSTRAP_SW_OPTION8	BIT(23) +#define AR934X_BOOTSTRAP_SW_OPTION7	BIT(22) +#define AR934X_BOOTSTRAP_SW_OPTION6	BIT(21) +#define AR934X_BOOTSTRAP_SW_OPTION5	BIT(20) +#define AR934X_BOOTSTRAP_SW_OPTION4	BIT(19) +#define AR934X_BOOTSTRAP_SW_OPTION3	BIT(18) +#define AR934X_BOOTSTRAP_SW_OPTION2	BIT(17) +#define AR934X_BOOTSTRAP_SW_OPTION1	BIT(16) +#define AR934X_BOOTSTRAP_USB_MODE_DEVICE BIT(7) +#define AR934X_BOOTSTRAP_PCIE_RC	BIT(6) +#define AR934X_BOOTSTRAP_EJTAG_MODE	BIT(5) +#define AR934X_BOOTSTRAP_REF_CLK_40	BIT(4) +#define AR934X_BOOTSTRAP_BOOT_FROM_SPI	BIT(2) +#define AR934X_BOOTSTRAP_SDRAM_DISABLED	BIT(1) +#define AR934X_BOOTSTRAP_DDR1		BIT(0) + +#define AR934X_PCIE_WMAC_INT_WMAC_MISC		BIT(0) +#define AR934X_PCIE_WMAC_INT_WMAC_TX		BIT(1) +#define AR934X_PCIE_WMAC_INT_WMAC_RXLP		BIT(2) +#define AR934X_PCIE_WMAC_INT_WMAC_RXHP		BIT(3) +#define AR934X_PCIE_WMAC_INT_PCIE_RC		BIT(4) +#define AR934X_PCIE_WMAC_INT_PCIE_RC0		BIT(5) +#define AR934X_PCIE_WMAC_INT_PCIE_RC1		BIT(6) +#define AR934X_PCIE_WMAC_INT_PCIE_RC2		BIT(7) +#define AR934X_PCIE_WMAC_INT_PCIE_RC3		BIT(8) +#define AR934X_PCIE_WMAC_INT_WMAC_ALL \ +	(AR934X_PCIE_WMAC_INT_WMAC_MISC | AR934X_PCIE_WMAC_INT_WMAC_TX | \ +	 AR934X_PCIE_WMAC_INT_WMAC_RXLP | AR934X_PCIE_WMAC_INT_WMAC_RXHP) + +#define AR934X_PCIE_WMAC_INT_PCIE_ALL \ +	(AR934X_PCIE_WMAC_INT_PCIE_RC | AR934X_PCIE_WMAC_INT_PCIE_RC0 | \ +	 AR934X_PCIE_WMAC_INT_PCIE_RC1 | AR934X_PCIE_WMAC_INT_PCIE_RC2 | \ +	 AR934X_PCIE_WMAC_INT_PCIE_RC3) +  #define REV_ID_MAJOR_MASK		0xfff0  #define REV_ID_MAJOR_AR71XX		0x00a0  #define REV_ID_MAJOR_AR913X		0x00b0 @@ -249,6 +332,9 @@  #define REV_ID_MAJOR_AR7242		0x1100  #define REV_ID_MAJOR_AR9330		0x0110  #define REV_ID_MAJOR_AR9331		0x1110 +#define REV_ID_MAJOR_AR9341		0x0120 +#define REV_ID_MAJOR_AR9342		0x1120 +#define REV_ID_MAJOR_AR9344		0x2120  #define AR71XX_REV_ID_MINOR_MASK	0x3  #define AR71XX_REV_ID_MINOR_AR7130	0x0 @@ -267,6 +353,8 @@  #define AR724X_REV_ID_REVISION_MASK	0x3 +#define AR934X_REV_ID_REVISION_MASK     0xf +  /*   * SPI block   */ @@ -308,5 +396,6 @@  #define AR724X_GPIO_COUNT		18  #define AR913X_GPIO_COUNT		22  #define AR933X_GPIO_COUNT		30 +#define AR934X_GPIO_COUNT		23  #endif /* __ASM_MACH_AR71XX_REGS_H */ diff --git a/arch/mips/include/asm/mach-ath79/ath79.h b/arch/mips/include/asm/mach-ath79/ath79.h index 6d0c6c9d562..4f248c3d7b2 100644 --- a/arch/mips/include/asm/mach-ath79/ath79.h +++ b/arch/mips/include/asm/mach-ath79/ath79.h @@ -29,6 +29,9 @@ enum ath79_soc_type {  	ATH79_SOC_AR9132,  	ATH79_SOC_AR9330,  	ATH79_SOC_AR9331, +	ATH79_SOC_AR9341, +	ATH79_SOC_AR9342, +	ATH79_SOC_AR9344,  };  extern enum ath79_soc_type ath79_soc; @@ -75,6 +78,26 @@ static inline int soc_is_ar933x(void)  		ath79_soc == ATH79_SOC_AR9331);  } +static inline int soc_is_ar9341(void) +{ +	return (ath79_soc == ATH79_SOC_AR9341); +} + +static inline int soc_is_ar9342(void) +{ +	return (ath79_soc == ATH79_SOC_AR9342); +} + +static inline int soc_is_ar9344(void) +{ +	return (ath79_soc == ATH79_SOC_AR9344); +} + +static inline int soc_is_ar934x(void) +{ +	return soc_is_ar9341() || soc_is_ar9342() || soc_is_ar9344(); +} +  extern void __iomem *ath79_ddr_base;  extern void __iomem *ath79_pll_base;  extern void __iomem *ath79_reset_base; diff --git a/arch/mips/include/asm/mach-ath79/irq.h b/arch/mips/include/asm/mach-ath79/irq.h index 519958fe4e3..0968f69e201 100644 --- a/arch/mips/include/asm/mach-ath79/irq.h +++ b/arch/mips/include/asm/mach-ath79/irq.h @@ -10,11 +10,19 @@  #define __ASM_MACH_ATH79_IRQ_H  #define MIPS_CPU_IRQ_BASE	0 -#define NR_IRQS			40 +#define NR_IRQS			48  #define ATH79_MISC_IRQ_BASE	8  #define ATH79_MISC_IRQ_COUNT	32 +#define ATH79_PCI_IRQ_BASE	(ATH79_MISC_IRQ_BASE + ATH79_MISC_IRQ_COUNT) +#define ATH79_PCI_IRQ_COUNT	6 +#define ATH79_PCI_IRQ(_x)	(ATH79_PCI_IRQ_BASE + (_x)) + +#define ATH79_IP2_IRQ_BASE	(ATH79_PCI_IRQ_BASE + ATH79_PCI_IRQ_COUNT) +#define ATH79_IP2_IRQ_COUNT	2 +#define ATH79_IP2_IRQ(_x)	(ATH79_IP2_IRQ_BASE + (_x)) +  #define ATH79_CPU_IRQ_IP2	(MIPS_CPU_IRQ_BASE + 2)  #define ATH79_CPU_IRQ_USB	(MIPS_CPU_IRQ_BASE + 3)  #define ATH79_CPU_IRQ_GE0	(MIPS_CPU_IRQ_BASE + 4) diff --git a/arch/mips/include/asm/mach-ath79/pci-ath724x.h b/arch/mips/include/asm/mach-ath79/pci-ath724x.h deleted file mode 100644 index 454885fa30c..00000000000 --- a/arch/mips/include/asm/mach-ath79/pci-ath724x.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - *  Atheros 724x PCI support - * - *  Copyright (C) 2011 René Bolldorf <xsecute@googlemail.com> - * - *  This program is free software; you can redistribute it and/or modify it - *  under the terms of the GNU General Public License version 2 as published - *  by the Free Software Foundation. - */ - -#ifndef __ASM_MACH_ATH79_PCI_ATH724X_H -#define __ASM_MACH_ATH79_PCI_ATH724X_H - -struct ath724x_pci_data { -	int irq; -	void *pdata; -}; - -void ath724x_pci_add_data(struct ath724x_pci_data *data, int size); - -#endif /* __ASM_MACH_ATH79_PCI_ATH724X_H */ diff --git a/arch/mips/include/asm/mach-ath79/pci.h b/arch/mips/include/asm/mach-ath79/pci.h new file mode 100644 index 00000000000..7868f7fa028 --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/pci.h @@ -0,0 +1,28 @@ +/* + *  Atheros AR71XX/AR724X PCI support + * + *  Copyright (C) 2011 René Bolldorf <xsecute@googlemail.com> + *  Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> + *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + */ + +#ifndef __ASM_MACH_ATH79_PCI_H +#define __ASM_MACH_ATH79_PCI_H + +#if defined(CONFIG_PCI) && defined(CONFIG_SOC_AR71XX) +int ar71xx_pcibios_init(void); +#else +static inline int ar71xx_pcibios_init(void) { return 0; } +#endif + +#if defined(CONFIG_PCI_AR724X) +int ar724x_pcibios_init(int irq); +#else +static inline int ar724x_pcibios_init(int irq) { return 0; } +#endif + +#endif /* __ASM_MACH_ATH79_PCI_H */ diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h index 3d5de96d403..1d7dd96aa46 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h @@ -2,6 +2,7 @@  #define BCM63XX_GPIO_H  #include <linux/init.h> +#include <bcm63xx_cpu.h>  int __init bcm63xx_gpio_init(void); diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h index 94d4faad29a..fdcd78ca1b0 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h @@ -99,7 +99,7 @@  #define CKCTL_6368_USBH_CLK_EN		(1 << 15)  #define CKCTL_6368_DISABLE_GLESS_EN	(1 << 16)  #define CKCTL_6368_NAND_CLK_EN		(1 << 17) -#define CKCTL_6368_IPSEC_CLK_EN		(1 << 17) +#define CKCTL_6368_IPSEC_CLK_EN		(1 << 18)  #define CKCTL_6368_ALL_SAFE_EN		(CKCTL_6368_SWPKT_USB_EN |	\  					CKCTL_6368_SWPKT_SAR_EN |	\ diff --git a/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h b/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h new file mode 100644 index 00000000000..318f982f04f --- /dev/null +++ b/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h @@ -0,0 +1,23 @@ +/* + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + *  Copyright (C) 2010 Thomas Langer <thomas.langer@lantiq.com> + */ + +#ifndef _FALCON_IRQ__ +#define _FALCON_IRQ__ + +#define INT_NUM_IRQ0			8 +#define INT_NUM_IM0_IRL0		(INT_NUM_IRQ0 + 0) +#define INT_NUM_IM1_IRL0		(INT_NUM_IM0_IRL0 + 32) +#define INT_NUM_IM2_IRL0		(INT_NUM_IM1_IRL0 + 32) +#define INT_NUM_IM3_IRL0		(INT_NUM_IM2_IRL0 + 32) +#define INT_NUM_IM4_IRL0		(INT_NUM_IM3_IRL0 + 32) +#define INT_NUM_EXTRA_START		(INT_NUM_IM4_IRL0 + 32) +#define INT_NUM_IM_OFFSET		(INT_NUM_IM1_IRL0 - INT_NUM_IM0_IRL0) + +#define MIPS_CPU_TIMER_IRQ			7 + +#endif /* _FALCON_IRQ__ */ diff --git a/arch/mips/include/asm/mach-lantiq/falcon/irq.h b/arch/mips/include/asm/mach-lantiq/falcon/irq.h new file mode 100644 index 00000000000..2caccd9f9db --- /dev/null +++ b/arch/mips/include/asm/mach-lantiq/falcon/irq.h @@ -0,0 +1,18 @@ +/* + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + *  Copyright (C) 2011 Thomas Langer <thomas.langer@lantiq.com> + */ + +#ifndef __FALCON_IRQ_H +#define __FALCON_IRQ_H + +#include <falcon_irq.h> + +#define NR_IRQS 328 + +#include_next <irq.h> + +#endif diff --git a/arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h b/arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h new file mode 100644 index 00000000000..b385252584e --- /dev/null +++ b/arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h @@ -0,0 +1,67 @@ +/* + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + * Copyright (C) 2010 John Crispin <blogic@openwrt.org> + */ + +#ifndef _LTQ_FALCON_H__ +#define _LTQ_FALCON_H__ + +#ifdef CONFIG_SOC_FALCON + +#include <linux/pinctrl/pinctrl.h> +#include <lantiq.h> + +/* Chip IDs */ +#define SOC_ID_FALCON		0x01B8 + +/* SoC Types */ +#define SOC_TYPE_FALCON		0x01 + +/* + * during early_printk no ioremap possible at this early stage + * lets use KSEG1 instead + */ +#define LTQ_ASC0_BASE_ADDR	0x1E100C00 +#define LTQ_EARLY_ASC		KSEG1ADDR(LTQ_ASC0_BASE_ADDR) + +/* WDT */ +#define LTQ_RST_CAUSE_WDTRST	0x0002 + +/* CHIP ID */ +#define LTQ_STATUS_BASE_ADDR	0x1E802000 + +#define FALCON_CHIPID		((u32 *)(KSEG1 + LTQ_STATUS_BASE_ADDR + 0x0c)) +#define FALCON_CHIPTYPE		((u32 *)(KSEG1 + LTQ_STATUS_BASE_ADDR + 0x38)) +#define FALCON_CHIPCONF		((u32 *)(KSEG1 + LTQ_STATUS_BASE_ADDR + 0x40)) + +/* SYSCTL - start/stop/restart/configure/... different parts of the Soc */ +#define SYSCTL_SYS1		0 +#define SYSCTL_SYSETH		1 +#define SYSCTL_SYSGPE		2 + +/* BOOT_SEL - find what boot media we have */ +#define BS_FLASH		0x1 +#define BS_SPI                  0x4 + +/* global register ranges */ +extern __iomem void *ltq_ebu_membase; +extern __iomem void *ltq_sys1_membase; +#define ltq_ebu_w32(x, y)	ltq_w32((x), ltq_ebu_membase + (y)) +#define ltq_ebu_r32(x)		ltq_r32(ltq_ebu_membase + (x)) + +#define ltq_sys1_w32(x, y)	ltq_w32((x), ltq_sys1_membase + (y)) +#define ltq_sys1_r32(x)		ltq_r32(ltq_sys1_membase + (x)) +#define ltq_sys1_w32_mask(clear, set, reg)   \ +	ltq_sys1_w32((ltq_sys1_r32(reg) & ~(clear)) | (set), reg) + +/* + * to keep the irq code generic we need to define this to 0 as falcon + * has no EIU/EBU + */ +#define LTQ_EBU_PCC_ISTAT	0 + +#endif /* CONFIG_SOC_FALCON */ +#endif /* _LTQ_XWAY_H__ */ diff --git a/arch/mips/include/asm/mach-lantiq/gpio.h b/arch/mips/include/asm/mach-lantiq/gpio.h new file mode 100644 index 00000000000..f79505b4360 --- /dev/null +++ b/arch/mips/include/asm/mach-lantiq/gpio.h @@ -0,0 +1,16 @@ +#ifndef __ASM_MIPS_MACH_LANTIQ_GPIO_H +#define __ASM_MIPS_MACH_LANTIQ_GPIO_H + +static inline int gpio_to_irq(unsigned int gpio) +{ +	return -1; +} + +#define gpio_get_value __gpio_get_value +#define gpio_set_value __gpio_set_value + +#define gpio_cansleep __gpio_cansleep + +#include <asm-generic/gpio.h> + +#endif diff --git a/arch/mips/include/asm/mach-lantiq/lantiq.h b/arch/mips/include/asm/mach-lantiq/lantiq.h index ce2f02929d2..5e8a6e96575 100644 --- a/arch/mips/include/asm/mach-lantiq/lantiq.h +++ b/arch/mips/include/asm/mach-lantiq/lantiq.h @@ -9,6 +9,8 @@  #define _LANTIQ_H__  #include <linux/irq.h> +#include <linux/device.h> +#include <linux/clk.h>  /* generic reg access functions */  #define ltq_r32(reg)		__raw_readl(reg) @@ -21,25 +23,9 @@  /* register access macros for EBU and CGU */  #define ltq_ebu_w32(x, y)	ltq_w32((x), ltq_ebu_membase + (y))  #define ltq_ebu_r32(x)		ltq_r32(ltq_ebu_membase + (x)) -#define ltq_cgu_w32(x, y)	ltq_w32((x), ltq_cgu_membase + (y)) -#define ltq_cgu_r32(x)		ltq_r32(ltq_cgu_membase + (x)) - +#define ltq_ebu_w32_mask(x, y, z) \ +	ltq_w32_mask(x, y, ltq_ebu_membase + (z))  extern __iomem void *ltq_ebu_membase; -extern __iomem void *ltq_cgu_membase; - -extern unsigned int ltq_get_cpu_ver(void); -extern unsigned int ltq_get_soc_type(void); - -/* clock speeds */ -#define CLOCK_60M	60000000 -#define CLOCK_83M	83333333 -#define CLOCK_111M	111111111 -#define CLOCK_133M	133333333 -#define CLOCK_167M	166666667 -#define CLOCK_200M	200000000 -#define CLOCK_266M	266666666 -#define CLOCK_333M	333333333 -#define CLOCK_400M	400000000  /* spinlock all ebu i/o */  extern spinlock_t ebu_lock; @@ -49,15 +35,21 @@ extern void ltq_disable_irq(struct irq_data *data);  extern void ltq_mask_and_ack_irq(struct irq_data *data);  extern void ltq_enable_irq(struct irq_data *data); +/* clock handling */ +extern int clk_activate(struct clk *clk); +extern void clk_deactivate(struct clk *clk); +extern struct clk *clk_get_cpu(void); +extern struct clk *clk_get_fpi(void); +extern struct clk *clk_get_io(void); + +/* find out what bootsource we have */ +extern unsigned char ltq_boot_select(void);  /* find out what caused the last cpu reset */  extern int ltq_reset_cause(void); -#define LTQ_RST_CAUSE_WDTRST	0x20  #define IOPORT_RESOURCE_START	0x10000000  #define IOPORT_RESOURCE_END	0xffffffff  #define IOMEM_RESOURCE_START	0x10000000  #define IOMEM_RESOURCE_END	0xffffffff -#define LTQ_FLASH_START		0x10000000 -#define LTQ_FLASH_MAX		0x04000000  #endif diff --git a/arch/mips/include/asm/mach-lantiq/lantiq_platform.h b/arch/mips/include/asm/mach-lantiq/lantiq_platform.h index a305f1d0259..e23bf7c9a2d 100644 --- a/arch/mips/include/asm/mach-lantiq/lantiq_platform.h +++ b/arch/mips/include/asm/mach-lantiq/lantiq_platform.h @@ -9,41 +9,8 @@  #ifndef _LANTIQ_PLATFORM_H__  #define _LANTIQ_PLATFORM_H__ -#include <linux/mtd/partitions.h>  #include <linux/socket.h> -/* struct used to pass info to the pci core */ -enum { -	PCI_CLOCK_INT = 0, -	PCI_CLOCK_EXT -}; - -#define PCI_EXIN0	0x0001 -#define PCI_EXIN1	0x0002 -#define PCI_EXIN2	0x0004 -#define PCI_EXIN3	0x0008 -#define PCI_EXIN4	0x0010 -#define PCI_EXIN5	0x0020 -#define PCI_EXIN_MAX	6 - -#define PCI_GNT1	0x0040 -#define PCI_GNT2	0x0080 -#define PCI_GNT3	0x0100 -#define PCI_GNT4	0x0200 - -#define PCI_REQ1	0x0400 -#define PCI_REQ2	0x0800 -#define PCI_REQ3	0x1000 -#define PCI_REQ4	0x2000 -#define PCI_REQ_SHIFT	10 -#define PCI_REQ_MASK	0xf - -struct ltq_pci_data { -	int clock; -	int gpio; -	int irq[16]; -}; -  /* struct used to pass info to network drivers */  struct ltq_eth_data {  	struct sockaddr mac; diff --git a/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h b/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h index b4465a888e2..aa0b3b866f8 100644 --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h @@ -17,50 +17,8 @@  #define INT_NUM_IM4_IRL0	(INT_NUM_IRQ0 + 128)  #define INT_NUM_IM_OFFSET	(INT_NUM_IM1_IRL0 - INT_NUM_IM0_IRL0) -#define LTQ_ASC_TIR(x)		(INT_NUM_IM3_IRL0 + (x * 8)) -#define LTQ_ASC_RIR(x)		(INT_NUM_IM3_IRL0 + (x * 8) + 1) -#define LTQ_ASC_EIR(x)		(INT_NUM_IM3_IRL0 + (x * 8) + 2) - -#define LTQ_ASC_ASE_TIR		INT_NUM_IM2_IRL0 -#define LTQ_ASC_ASE_RIR		(INT_NUM_IM2_IRL0 + 2) -#define LTQ_ASC_ASE_EIR		(INT_NUM_IM2_IRL0 + 3) - -#define LTQ_SSC_TIR		(INT_NUM_IM0_IRL0 + 15) -#define LTQ_SSC_RIR		(INT_NUM_IM0_IRL0 + 14) -#define LTQ_SSC_EIR		(INT_NUM_IM0_IRL0 + 16) - -#define LTQ_MEI_DYING_GASP_INT	(INT_NUM_IM1_IRL0 + 21) -#define LTQ_MEI_INT		(INT_NUM_IM1_IRL0 + 23) - -#define LTQ_TIMER6_INT		(INT_NUM_IM1_IRL0 + 23) -#define LTQ_USB_INT		(INT_NUM_IM1_IRL0 + 22) -#define LTQ_USB_OC_INT		(INT_NUM_IM4_IRL0 + 23) - -#define MIPS_CPU_TIMER_IRQ		7 -  #define LTQ_DMA_CH0_INT		(INT_NUM_IM2_IRL0) -#define LTQ_DMA_CH1_INT		(INT_NUM_IM2_IRL0 + 1) -#define LTQ_DMA_CH2_INT		(INT_NUM_IM2_IRL0 + 2) -#define LTQ_DMA_CH3_INT		(INT_NUM_IM2_IRL0 + 3) -#define LTQ_DMA_CH4_INT		(INT_NUM_IM2_IRL0 + 4) -#define LTQ_DMA_CH5_INT		(INT_NUM_IM2_IRL0 + 5) -#define LTQ_DMA_CH6_INT		(INT_NUM_IM2_IRL0 + 6) -#define LTQ_DMA_CH7_INT		(INT_NUM_IM2_IRL0 + 7) -#define LTQ_DMA_CH8_INT		(INT_NUM_IM2_IRL0 + 8) -#define LTQ_DMA_CH9_INT		(INT_NUM_IM2_IRL0 + 9) -#define LTQ_DMA_CH10_INT	(INT_NUM_IM2_IRL0 + 10) -#define LTQ_DMA_CH11_INT	(INT_NUM_IM2_IRL0 + 11) -#define LTQ_DMA_CH12_INT	(INT_NUM_IM2_IRL0 + 25) -#define LTQ_DMA_CH13_INT	(INT_NUM_IM2_IRL0 + 26) -#define LTQ_DMA_CH14_INT	(INT_NUM_IM2_IRL0 + 27) -#define LTQ_DMA_CH15_INT	(INT_NUM_IM2_IRL0 + 28) -#define LTQ_DMA_CH16_INT	(INT_NUM_IM2_IRL0 + 29) -#define LTQ_DMA_CH17_INT	(INT_NUM_IM2_IRL0 + 30) -#define LTQ_DMA_CH18_INT	(INT_NUM_IM2_IRL0 + 16) -#define LTQ_DMA_CH19_INT	(INT_NUM_IM2_IRL0 + 21) - -#define LTQ_PPE_MBOX_INT	(INT_NUM_IM2_IRL0 + 24) -#define INT_NUM_IM4_IRL14	(INT_NUM_IM4_IRL0 + 14) +#define MIPS_CPU_TIMER_IRQ	7  #endif diff --git a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h index 8a3c6be669d..6a2df709c57 100644 --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h @@ -17,38 +17,56 @@  #define SOC_ID_DANUBE1		0x129  #define SOC_ID_DANUBE2		0x12B  #define SOC_ID_TWINPASS		0x12D -#define SOC_ID_AMAZON_SE	0x152 +#define SOC_ID_AMAZON_SE_1	0x152 /* 50601 */ +#define SOC_ID_AMAZON_SE_2	0x153 /* 50600 */  #define SOC_ID_ARX188		0x16C -#define SOC_ID_ARX168		0x16D +#define SOC_ID_ARX168_1		0x16D +#define SOC_ID_ARX168_2		0x16E  #define SOC_ID_ARX182		0x16F +#define SOC_ID_GRX188		0x170 +#define SOC_ID_GRX168		0x171 -/* SoC Types */ +#define SOC_ID_VRX288		0x1C0 /* v1.1 */ +#define SOC_ID_VRX282		0x1C1 /* v1.1 */ +#define SOC_ID_VRX268		0x1C2 /* v1.1 */ +#define SOC_ID_GRX268		0x1C8 /* v1.1 */ +#define SOC_ID_GRX288		0x1C9 /* v1.1 */ +#define SOC_ID_VRX288_2		0x00B /* v1.2 */ +#define SOC_ID_VRX268_2		0x00C /* v1.2 */ +#define SOC_ID_GRX288_2		0x00D /* v1.2 */ +#define SOC_ID_GRX282_2		0x00E /* v1.2 */ + + /* SoC Types */  #define SOC_TYPE_DANUBE		0x01  #define SOC_TYPE_TWINPASS	0x02  #define SOC_TYPE_AR9		0x03 -#define SOC_TYPE_VR9		0x04 -#define SOC_TYPE_AMAZON_SE	0x05 +#define SOC_TYPE_VR9		0x04 /* v1.1 */ +#define SOC_TYPE_VR9_2		0x05 /* v1.2 */ +#define SOC_TYPE_AMAZON_SE	0x06 -/* ASC0/1 - serial port */ -#define LTQ_ASC0_BASE_ADDR	0x1E100400 -#define LTQ_ASC1_BASE_ADDR	0x1E100C00 -#define LTQ_ASC_SIZE		0x400 +/* BOOT_SEL - find what boot media we have */ +#define BS_EXT_ROM		0x0 +#define BS_FLASH		0x1 +#define BS_MII0			0x2 +#define BS_PCI			0x3 +#define BS_UART1		0x4 +#define BS_SPI			0x5 +#define BS_NAND			0x6 +#define BS_RMII0		0x7 -/* RCU - reset control unit */ -#define LTQ_RCU_BASE_ADDR	0x1F203000 -#define LTQ_RCU_SIZE		0x1000 +/* helpers used to access the cgu */ +#define ltq_cgu_w32(x, y)	ltq_w32((x), ltq_cgu_membase + (y)) +#define ltq_cgu_r32(x)		ltq_r32(ltq_cgu_membase + (x)) +extern __iomem void *ltq_cgu_membase; -/* GPTU - general purpose timer unit */ -#define LTQ_GPTU_BASE_ADDR	0x18000300 -#define LTQ_GPTU_SIZE		0x100 +/* + * during early_printk no ioremap is possible + * lets use KSEG1 instead + */ +#define LTQ_ASC1_BASE_ADDR	0x1E100C00 +#define LTQ_EARLY_ASC		KSEG1ADDR(LTQ_ASC1_BASE_ADDR)  /* EBU - external bus unit */ -#define LTQ_EBU_GPIO_START	0x14000000 -#define LTQ_EBU_GPIO_SIZE	0x1000 - -#define LTQ_EBU_BASE_ADDR	0x1E105300 -#define LTQ_EBU_SIZE		0x100 -  #define LTQ_EBU_BUSCON0		0x0060  #define LTQ_EBU_PCC_CON		0x0090  #define LTQ_EBU_PCC_IEN		0x00A4 @@ -57,85 +75,17 @@  #define LTQ_EBU_ADDRSEL1	0x0024  #define EBU_WRDIS		0x80000000 -/* CGU - clock generation unit */ -#define LTQ_CGU_BASE_ADDR	0x1F103000 -#define LTQ_CGU_SIZE		0x1000 - -/* ICU - interrupt control unit */ -#define LTQ_ICU_BASE_ADDR	0x1F880200 -#define LTQ_ICU_SIZE		0x100 - -/* EIU - external interrupt unit */ -#define LTQ_EIU_BASE_ADDR	0x1F101000 -#define LTQ_EIU_SIZE		0x1000 - -/* PMU - power management unit */ -#define LTQ_PMU_BASE_ADDR	0x1F102000 -#define LTQ_PMU_SIZE		0x1000 - -#define PMU_DMA			0x0020 -#define PMU_USB			0x8041 -#define PMU_LED			0x0800 -#define PMU_GPT			0x1000 -#define PMU_PPE			0x2000 -#define PMU_FPI			0x4000 -#define PMU_SWITCH		0x10000000 - -/* ETOP - ethernet */ -#define LTQ_ETOP_BASE_ADDR	0x1E180000 -#define LTQ_ETOP_SIZE		0x40000 - -/* DMA */ -#define LTQ_DMA_BASE_ADDR	0x1E104100 -#define LTQ_DMA_SIZE		0x800 - -/* PCI */ -#define PCI_CR_BASE_ADDR	0x1E105400 -#define PCI_CR_SIZE		0x400 -  /* WDT */ -#define LTQ_WDT_BASE_ADDR	0x1F8803F0 -#define LTQ_WDT_SIZE		0x10 - -/* STP - serial to parallel conversion unit */ -#define LTQ_STP_BASE_ADDR	0x1E100BB0 -#define LTQ_STP_SIZE		0x40 - -/* GPIO */ -#define LTQ_GPIO0_BASE_ADDR	0x1E100B10 -#define LTQ_GPIO1_BASE_ADDR	0x1E100B40 -#define LTQ_GPIO2_BASE_ADDR	0x1E100B70 -#define LTQ_GPIO_SIZE		0x30 - -/* SSC */ -#define LTQ_SSC_BASE_ADDR	0x1e100800 -#define LTQ_SSC_SIZE		0x100 - -/* MEI - dsl core */ -#define LTQ_MEI_BASE_ADDR	0x1E116000 - -/* DEU - data encryption unit */ -#define LTQ_DEU_BASE_ADDR	0x1E103100 +#define LTQ_RST_CAUSE_WDTRST	0x20  /* MPS - multi processor unit (voice) */  #define LTQ_MPS_BASE_ADDR	(KSEG1 + 0x1F107000)  #define LTQ_MPS_CHIPID		((u32 *)(LTQ_MPS_BASE_ADDR + 0x0344))  /* request a non-gpio and set the PIO config */ -extern int  ltq_gpio_request(unsigned int pin, unsigned int alt0, -	unsigned int alt1, unsigned int dir, const char *name); +#define PMU_PPE			 BIT(13)  extern void ltq_pmu_enable(unsigned int module);  extern void ltq_pmu_disable(unsigned int module); -static inline int ltq_is_ar9(void) -{ -	return (ltq_get_soc_type() == SOC_TYPE_AR9); -} - -static inline int ltq_is_vr9(void) -{ -	return (ltq_get_soc_type() == SOC_TYPE_VR9); -} -  #endif /* CONFIG_SOC_TYPE_XWAY */  #endif /* _LTQ_XWAY_H__ */ diff --git a/arch/mips/include/asm/mips-boards/generic.h b/arch/mips/include/asm/mips-boards/generic.h index 46c08563e53..6e23ceb0ba8 100644 --- a/arch/mips/include/asm/mips-boards/generic.h +++ b/arch/mips/include/asm/mips-boards/generic.h @@ -93,8 +93,4 @@ extern void mips_pcibios_init(void);  #define mips_pcibios_init() do { } while (0)  #endif -#ifdef CONFIG_KGDB -extern void kgdb_config(void); -#endif -  #endif  /* __ASM_MIPS_BOARDS_GENERIC_H */ diff --git a/arch/mips/include/asm/mips-boards/maltaint.h b/arch/mips/include/asm/mips-boards/maltaint.h index d11aa02a956..5447d9fc421 100644 --- a/arch/mips/include/asm/mips-boards/maltaint.h +++ b/arch/mips/include/asm/mips-boards/maltaint.h @@ -86,6 +86,16 @@  #define GIC_CPU_INT4		4 /* .			*/  #define GIC_CPU_INT5		5 /* Core Interrupt 5   */ +/* MALTA GIC local interrupts */ +#define GIC_INT_TMR             (GIC_CPU_INT5) +#define GIC_INT_PERFCTR         (GIC_CPU_INT5) + +/* GIC constants */ +/* Add 2 to convert non-eic hw int # to eic vector # */ +#define GIC_CPU_TO_VEC_OFFSET   (2) +/* If we map an intr to pin X, GIC will actually generate vector X+1 */ +#define GIC_PIN_TO_VEC_OFFSET   (1) +  #define GIC_EXT_INTR(x)		x  /* External Interrupts used for IPI */ diff --git a/arch/mips/include/asm/mipsmtregs.h b/arch/mips/include/asm/mipsmtregs.h index c9420aa97e3..e71ff4c317f 100644 --- a/arch/mips/include/asm/mipsmtregs.h +++ b/arch/mips/include/asm/mipsmtregs.h @@ -48,7 +48,7 @@  #define CP0_VPECONF0		$1, 2  #define CP0_VPECONF1		$1, 3  #define CP0_YQMASK		$1, 4 -#define CP0_VPESCHEDULE	$1, 5 +#define CP0_VPESCHEDULE		$1, 5  #define CP0_VPESCHEFBK		$1, 6  #define CP0_TCSTATUS		$2, 1  #define CP0_TCBIND		$2, 2 diff --git a/arch/mips/include/asm/module.h b/arch/mips/include/asm/module.h index 7467d1d933d..530008048c6 100644 --- a/arch/mips/include/asm/module.h +++ b/arch/mips/include/asm/module.h @@ -2,6 +2,7 @@  #define _ASM_MODULE_H  #include <linux/list.h> +#include <linux/elf.h>  #include <asm/uaccess.h>  struct mod_arch_specific { diff --git a/arch/mips/include/asm/octeon/cvmx-pcieep-defs.h b/arch/mips/include/asm/octeon/cvmx-pcieep-defs.h deleted file mode 100644 index d553f8e88df..00000000000 --- a/arch/mips/include/asm/octeon/cvmx-pcieep-defs.h +++ /dev/null @@ -1,1365 +0,0 @@ -/***********************license start*************** - * Author: Cavium Networks - * - * Contact: support@caviumnetworks.com - * This file is part of the OCTEON SDK - * - * Copyright (c) 2003-2008 Cavium Networks - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, Version 2, as - * published by the Free Software Foundation. - * - * This file is distributed in the hope that it will be useful, but - * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or - * NONINFRINGEMENT.  See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this file; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * or visit http://www.gnu.org/licenses/. - * - * This file may also be available under a different license from Cavium. - * Contact Cavium Networks for more information - ***********************license end**************************************/ - -#ifndef __CVMX_PCIEEP_DEFS_H__ -#define __CVMX_PCIEEP_DEFS_H__ - -#define CVMX_PCIEEP_CFG000 \ -	 (0x0000000000000000ull) -#define CVMX_PCIEEP_CFG001 \ -	 (0x0000000000000004ull) -#define CVMX_PCIEEP_CFG002 \ -	 (0x0000000000000008ull) -#define CVMX_PCIEEP_CFG003 \ -	 (0x000000000000000Cull) -#define CVMX_PCIEEP_CFG004 \ -	 (0x0000000000000010ull) -#define CVMX_PCIEEP_CFG004_MASK \ -	 (0x0000000080000010ull) -#define CVMX_PCIEEP_CFG005 \ -	 (0x0000000000000014ull) -#define CVMX_PCIEEP_CFG005_MASK \ -	 (0x0000000080000014ull) -#define CVMX_PCIEEP_CFG006 \ -	 (0x0000000000000018ull) -#define CVMX_PCIEEP_CFG006_MASK \ -	 (0x0000000080000018ull) -#define CVMX_PCIEEP_CFG007 \ -	 (0x000000000000001Cull) -#define CVMX_PCIEEP_CFG007_MASK \ -	 (0x000000008000001Cull) -#define CVMX_PCIEEP_CFG008 \ -	 (0x0000000000000020ull) -#define CVMX_PCIEEP_CFG008_MASK \ -	 (0x0000000080000020ull) -#define CVMX_PCIEEP_CFG009 \ -	 (0x0000000000000024ull) -#define CVMX_PCIEEP_CFG009_MASK \ -	 (0x0000000080000024ull) -#define CVMX_PCIEEP_CFG010 \ -	 (0x0000000000000028ull) -#define CVMX_PCIEEP_CFG011 \ -	 (0x000000000000002Cull) -#define CVMX_PCIEEP_CFG012 \ -	 (0x0000000000000030ull) -#define CVMX_PCIEEP_CFG012_MASK \ -	 (0x0000000080000030ull) -#define CVMX_PCIEEP_CFG013 \ -	 (0x0000000000000034ull) -#define CVMX_PCIEEP_CFG015 \ -	 (0x000000000000003Cull) -#define CVMX_PCIEEP_CFG016 \ -	 (0x0000000000000040ull) -#define CVMX_PCIEEP_CFG017 \ -	 (0x0000000000000044ull) -#define CVMX_PCIEEP_CFG020 \ -	 (0x0000000000000050ull) -#define CVMX_PCIEEP_CFG021 \ -	 (0x0000000000000054ull) -#define CVMX_PCIEEP_CFG022 \ -	 (0x0000000000000058ull) -#define CVMX_PCIEEP_CFG023 \ -	 (0x000000000000005Cull) -#define CVMX_PCIEEP_CFG028 \ -	 (0x0000000000000070ull) -#define CVMX_PCIEEP_CFG029 \ -	 (0x0000000000000074ull) -#define CVMX_PCIEEP_CFG030 \ -	 (0x0000000000000078ull) -#define CVMX_PCIEEP_CFG031 \ -	 (0x000000000000007Cull) -#define CVMX_PCIEEP_CFG032 \ -	 (0x0000000000000080ull) -#define CVMX_PCIEEP_CFG033 \ -	 (0x0000000000000084ull) -#define CVMX_PCIEEP_CFG034 \ -	 (0x0000000000000088ull) -#define CVMX_PCIEEP_CFG037 \ -	 (0x0000000000000094ull) -#define CVMX_PCIEEP_CFG038 \ -	 (0x0000000000000098ull) -#define CVMX_PCIEEP_CFG039 \ -	 (0x000000000000009Cull) -#define CVMX_PCIEEP_CFG040 \ -	 (0x00000000000000A0ull) -#define CVMX_PCIEEP_CFG041 \ -	 (0x00000000000000A4ull) -#define CVMX_PCIEEP_CFG042 \ -	 (0x00000000000000A8ull) -#define CVMX_PCIEEP_CFG064 \ -	 (0x0000000000000100ull) -#define CVMX_PCIEEP_CFG065 \ -	 (0x0000000000000104ull) -#define CVMX_PCIEEP_CFG066 \ -	 (0x0000000000000108ull) -#define CVMX_PCIEEP_CFG067 \ -	 (0x000000000000010Cull) -#define CVMX_PCIEEP_CFG068 \ -	 (0x0000000000000110ull) -#define CVMX_PCIEEP_CFG069 \ -	 (0x0000000000000114ull) -#define CVMX_PCIEEP_CFG070 \ -	 (0x0000000000000118ull) -#define CVMX_PCIEEP_CFG071 \ -	 (0x000000000000011Cull) -#define CVMX_PCIEEP_CFG072 \ -	 (0x0000000000000120ull) -#define CVMX_PCIEEP_CFG073 \ -	 (0x0000000000000124ull) -#define CVMX_PCIEEP_CFG074 \ -	 (0x0000000000000128ull) -#define CVMX_PCIEEP_CFG448 \ -	 (0x0000000000000700ull) -#define CVMX_PCIEEP_CFG449 \ -	 (0x0000000000000704ull) -#define CVMX_PCIEEP_CFG450 \ -	 (0x0000000000000708ull) -#define CVMX_PCIEEP_CFG451 \ -	 (0x000000000000070Cull) -#define CVMX_PCIEEP_CFG452 \ -	 (0x0000000000000710ull) -#define CVMX_PCIEEP_CFG453 \ -	 (0x0000000000000714ull) -#define CVMX_PCIEEP_CFG454 \ -	 (0x0000000000000718ull) -#define CVMX_PCIEEP_CFG455 \ -	 (0x000000000000071Cull) -#define CVMX_PCIEEP_CFG456 \ -	 (0x0000000000000720ull) -#define CVMX_PCIEEP_CFG458 \ -	 (0x0000000000000728ull) -#define CVMX_PCIEEP_CFG459 \ -	 (0x000000000000072Cull) -#define CVMX_PCIEEP_CFG460 \ -	 (0x0000000000000730ull) -#define CVMX_PCIEEP_CFG461 \ -	 (0x0000000000000734ull) -#define CVMX_PCIEEP_CFG462 \ -	 (0x0000000000000738ull) -#define CVMX_PCIEEP_CFG463 \ -	 (0x000000000000073Cull) -#define CVMX_PCIEEP_CFG464 \ -	 (0x0000000000000740ull) -#define CVMX_PCIEEP_CFG465 \ -	 (0x0000000000000744ull) -#define CVMX_PCIEEP_CFG466 \ -	 (0x0000000000000748ull) -#define CVMX_PCIEEP_CFG467 \ -	 (0x000000000000074Cull) -#define CVMX_PCIEEP_CFG468 \ -	 (0x0000000000000750ull) -#define CVMX_PCIEEP_CFG490 \ -	 (0x00000000000007A8ull) -#define CVMX_PCIEEP_CFG491 \ -	 (0x00000000000007ACull) -#define CVMX_PCIEEP_CFG492 \ -	 (0x00000000000007B0ull) -#define CVMX_PCIEEP_CFG516 \ -	 (0x0000000000000810ull) -#define CVMX_PCIEEP_CFG517 \ -	 (0x0000000000000814ull) - -union cvmx_pcieep_cfg000 { -	uint32_t u32; -	struct cvmx_pcieep_cfg000_s { -		uint32_t devid:16; -		uint32_t vendid:16; -	} s; -	struct cvmx_pcieep_cfg000_s cn52xx; -	struct cvmx_pcieep_cfg000_s cn52xxp1; -	struct cvmx_pcieep_cfg000_s cn56xx; -	struct cvmx_pcieep_cfg000_s cn56xxp1; -}; - -union cvmx_pcieep_cfg001 { -	uint32_t u32; -	struct cvmx_pcieep_cfg001_s { -		uint32_t dpe:1; -		uint32_t sse:1; -		uint32_t rma:1; -		uint32_t rta:1; -		uint32_t sta:1; -		uint32_t devt:2; -		uint32_t mdpe:1; -		uint32_t fbb:1; -		uint32_t reserved_22_22:1; -		uint32_t m66:1; -		uint32_t cl:1; -		uint32_t i_stat:1; -		uint32_t reserved_11_18:8; -		uint32_t i_dis:1; -		uint32_t fbbe:1; -		uint32_t see:1; -		uint32_t ids_wcc:1; -		uint32_t per:1; -		uint32_t vps:1; -		uint32_t mwice:1; -		uint32_t scse:1; -		uint32_t me:1; -		uint32_t msae:1; -		uint32_t isae:1; -	} s; -	struct cvmx_pcieep_cfg001_s cn52xx; -	struct cvmx_pcieep_cfg001_s cn52xxp1; -	struct cvmx_pcieep_cfg001_s cn56xx; -	struct cvmx_pcieep_cfg001_s cn56xxp1; -}; - -union cvmx_pcieep_cfg002 { -	uint32_t u32; -	struct cvmx_pcieep_cfg002_s { -		uint32_t bcc:8; -		uint32_t sc:8; -		uint32_t pi:8; -		uint32_t rid:8; -	} s; -	struct cvmx_pcieep_cfg002_s cn52xx; -	struct cvmx_pcieep_cfg002_s cn52xxp1; -	struct cvmx_pcieep_cfg002_s cn56xx; -	struct cvmx_pcieep_cfg002_s cn56xxp1; -}; - -union cvmx_pcieep_cfg003 { -	uint32_t u32; -	struct cvmx_pcieep_cfg003_s { -		uint32_t bist:8; -		uint32_t mfd:1; -		uint32_t chf:7; -		uint32_t lt:8; -		uint32_t cls:8; -	} s; -	struct cvmx_pcieep_cfg003_s cn52xx; -	struct cvmx_pcieep_cfg003_s cn52xxp1; -	struct cvmx_pcieep_cfg003_s cn56xx; -	struct cvmx_pcieep_cfg003_s cn56xxp1; -}; - -union cvmx_pcieep_cfg004 { -	uint32_t u32; -	struct cvmx_pcieep_cfg004_s { -		uint32_t lbab:18; -		uint32_t reserved_4_13:10; -		uint32_t pf:1; -		uint32_t typ:2; -		uint32_t mspc:1; -	} s; -	struct cvmx_pcieep_cfg004_s cn52xx; -	struct cvmx_pcieep_cfg004_s cn52xxp1; -	struct cvmx_pcieep_cfg004_s cn56xx; -	struct cvmx_pcieep_cfg004_s cn56xxp1; -}; - -union cvmx_pcieep_cfg004_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg004_mask_s { -		uint32_t lmask:31; -		uint32_t enb:1; -	} s; -	struct cvmx_pcieep_cfg004_mask_s cn52xx; -	struct cvmx_pcieep_cfg004_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg004_mask_s cn56xx; -	struct cvmx_pcieep_cfg004_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg005 { -	uint32_t u32; -	struct cvmx_pcieep_cfg005_s { -		uint32_t ubab:32; -	} s; -	struct cvmx_pcieep_cfg005_s cn52xx; -	struct cvmx_pcieep_cfg005_s cn52xxp1; -	struct cvmx_pcieep_cfg005_s cn56xx; -	struct cvmx_pcieep_cfg005_s cn56xxp1; -}; - -union cvmx_pcieep_cfg005_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg005_mask_s { -		uint32_t umask:32; -	} s; -	struct cvmx_pcieep_cfg005_mask_s cn52xx; -	struct cvmx_pcieep_cfg005_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg005_mask_s cn56xx; -	struct cvmx_pcieep_cfg005_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg006 { -	uint32_t u32; -	struct cvmx_pcieep_cfg006_s { -		uint32_t lbab:6; -		uint32_t reserved_4_25:22; -		uint32_t pf:1; -		uint32_t typ:2; -		uint32_t mspc:1; -	} s; -	struct cvmx_pcieep_cfg006_s cn52xx; -	struct cvmx_pcieep_cfg006_s cn52xxp1; -	struct cvmx_pcieep_cfg006_s cn56xx; -	struct cvmx_pcieep_cfg006_s cn56xxp1; -}; - -union cvmx_pcieep_cfg006_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg006_mask_s { -		uint32_t lmask:31; -		uint32_t enb:1; -	} s; -	struct cvmx_pcieep_cfg006_mask_s cn52xx; -	struct cvmx_pcieep_cfg006_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg006_mask_s cn56xx; -	struct cvmx_pcieep_cfg006_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg007 { -	uint32_t u32; -	struct cvmx_pcieep_cfg007_s { -		uint32_t ubab:32; -	} s; -	struct cvmx_pcieep_cfg007_s cn52xx; -	struct cvmx_pcieep_cfg007_s cn52xxp1; -	struct cvmx_pcieep_cfg007_s cn56xx; -	struct cvmx_pcieep_cfg007_s cn56xxp1; -}; - -union cvmx_pcieep_cfg007_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg007_mask_s { -		uint32_t umask:32; -	} s; -	struct cvmx_pcieep_cfg007_mask_s cn52xx; -	struct cvmx_pcieep_cfg007_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg007_mask_s cn56xx; -	struct cvmx_pcieep_cfg007_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg008 { -	uint32_t u32; -	struct cvmx_pcieep_cfg008_s { -		uint32_t reserved_4_31:28; -		uint32_t pf:1; -		uint32_t typ:2; -		uint32_t mspc:1; -	} s; -	struct cvmx_pcieep_cfg008_s cn52xx; -	struct cvmx_pcieep_cfg008_s cn52xxp1; -	struct cvmx_pcieep_cfg008_s cn56xx; -	struct cvmx_pcieep_cfg008_s cn56xxp1; -}; - -union cvmx_pcieep_cfg008_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg008_mask_s { -		uint32_t lmask:31; -		uint32_t enb:1; -	} s; -	struct cvmx_pcieep_cfg008_mask_s cn52xx; -	struct cvmx_pcieep_cfg008_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg008_mask_s cn56xx; -	struct cvmx_pcieep_cfg008_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg009 { -	uint32_t u32; -	struct cvmx_pcieep_cfg009_s { -		uint32_t ubab:25; -		uint32_t reserved_0_6:7; -	} s; -	struct cvmx_pcieep_cfg009_s cn52xx; -	struct cvmx_pcieep_cfg009_s cn52xxp1; -	struct cvmx_pcieep_cfg009_s cn56xx; -	struct cvmx_pcieep_cfg009_s cn56xxp1; -}; - -union cvmx_pcieep_cfg009_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg009_mask_s { -		uint32_t umask:32; -	} s; -	struct cvmx_pcieep_cfg009_mask_s cn52xx; -	struct cvmx_pcieep_cfg009_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg009_mask_s cn56xx; -	struct cvmx_pcieep_cfg009_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg010 { -	uint32_t u32; -	struct cvmx_pcieep_cfg010_s { -		uint32_t cisp:32; -	} s; -	struct cvmx_pcieep_cfg010_s cn52xx; -	struct cvmx_pcieep_cfg010_s cn52xxp1; -	struct cvmx_pcieep_cfg010_s cn56xx; -	struct cvmx_pcieep_cfg010_s cn56xxp1; -}; - -union cvmx_pcieep_cfg011 { -	uint32_t u32; -	struct cvmx_pcieep_cfg011_s { -		uint32_t ssid:16; -		uint32_t ssvid:16; -	} s; -	struct cvmx_pcieep_cfg011_s cn52xx; -	struct cvmx_pcieep_cfg011_s cn52xxp1; -	struct cvmx_pcieep_cfg011_s cn56xx; -	struct cvmx_pcieep_cfg011_s cn56xxp1; -}; - -union cvmx_pcieep_cfg012 { -	uint32_t u32; -	struct cvmx_pcieep_cfg012_s { -		uint32_t eraddr:16; -		uint32_t reserved_1_15:15; -		uint32_t er_en:1; -	} s; -	struct cvmx_pcieep_cfg012_s cn52xx; -	struct cvmx_pcieep_cfg012_s cn52xxp1; -	struct cvmx_pcieep_cfg012_s cn56xx; -	struct cvmx_pcieep_cfg012_s cn56xxp1; -}; - -union cvmx_pcieep_cfg012_mask { -	uint32_t u32; -	struct cvmx_pcieep_cfg012_mask_s { -		uint32_t mask:31; -		uint32_t enb:1; -	} s; -	struct cvmx_pcieep_cfg012_mask_s cn52xx; -	struct cvmx_pcieep_cfg012_mask_s cn52xxp1; -	struct cvmx_pcieep_cfg012_mask_s cn56xx; -	struct cvmx_pcieep_cfg012_mask_s cn56xxp1; -}; - -union cvmx_pcieep_cfg013 { -	uint32_t u32; -	struct cvmx_pcieep_cfg013_s { -		uint32_t reserved_8_31:24; -		uint32_t cp:8; -	} s; -	struct cvmx_pcieep_cfg013_s cn52xx; -	struct cvmx_pcieep_cfg013_s cn52xxp1; -	struct cvmx_pcieep_cfg013_s cn56xx; -	struct cvmx_pcieep_cfg013_s cn56xxp1; -}; - -union cvmx_pcieep_cfg015 { -	uint32_t u32; -	struct cvmx_pcieep_cfg015_s { -		uint32_t ml:8; -		uint32_t mg:8; -		uint32_t inta:8; -		uint32_t il:8; -	} s; -	struct cvmx_pcieep_cfg015_s cn52xx; -	struct cvmx_pcieep_cfg015_s cn52xxp1; -	struct cvmx_pcieep_cfg015_s cn56xx; -	struct cvmx_pcieep_cfg015_s cn56xxp1; -}; - -union cvmx_pcieep_cfg016 { -	uint32_t u32; -	struct cvmx_pcieep_cfg016_s { -		uint32_t pmes:5; -		uint32_t d2s:1; -		uint32_t d1s:1; -		uint32_t auxc:3; -		uint32_t dsi:1; -		uint32_t reserved_20_20:1; -		uint32_t pme_clock:1; -		uint32_t pmsv:3; -		uint32_t ncp:8; -		uint32_t pmcid:8; -	} s; -	struct cvmx_pcieep_cfg016_s cn52xx; -	struct cvmx_pcieep_cfg016_s cn52xxp1; -	struct cvmx_pcieep_cfg016_s cn56xx; -	struct cvmx_pcieep_cfg016_s cn56xxp1; -}; - -union cvmx_pcieep_cfg017 { -	uint32_t u32; -	struct cvmx_pcieep_cfg017_s { -		uint32_t pmdia:8; -		uint32_t bpccee:1; -		uint32_t bd3h:1; -		uint32_t reserved_16_21:6; -		uint32_t pmess:1; -		uint32_t pmedsia:2; -		uint32_t pmds:4; -		uint32_t pmeens:1; -		uint32_t reserved_4_7:4; -		uint32_t nsr:1; -		uint32_t reserved_2_2:1; -		uint32_t ps:2; -	} s; -	struct cvmx_pcieep_cfg017_s cn52xx; -	struct cvmx_pcieep_cfg017_s cn52xxp1; -	struct cvmx_pcieep_cfg017_s cn56xx; -	struct cvmx_pcieep_cfg017_s cn56xxp1; -}; - -union cvmx_pcieep_cfg020 { -	uint32_t u32; -	struct cvmx_pcieep_cfg020_s { -		uint32_t reserved_24_31:8; -		uint32_t m64:1; -		uint32_t mme:3; -		uint32_t mmc:3; -		uint32_t msien:1; -		uint32_t ncp:8; -		uint32_t msicid:8; -	} s; -	struct cvmx_pcieep_cfg020_s cn52xx; -	struct cvmx_pcieep_cfg020_s cn52xxp1; -	struct cvmx_pcieep_cfg020_s cn56xx; -	struct cvmx_pcieep_cfg020_s cn56xxp1; -}; - -union cvmx_pcieep_cfg021 { -	uint32_t u32; -	struct cvmx_pcieep_cfg021_s { -		uint32_t lmsi:30; -		uint32_t reserved_0_1:2; -	} s; -	struct cvmx_pcieep_cfg021_s cn52xx; -	struct cvmx_pcieep_cfg021_s cn52xxp1; -	struct cvmx_pcieep_cfg021_s cn56xx; -	struct cvmx_pcieep_cfg021_s cn56xxp1; -}; - -union cvmx_pcieep_cfg022 { -	uint32_t u32; -	struct cvmx_pcieep_cfg022_s { -		uint32_t umsi:32; -	} s; -	struct cvmx_pcieep_cfg022_s cn52xx; -	struct cvmx_pcieep_cfg022_s cn52xxp1; -	struct cvmx_pcieep_cfg022_s cn56xx; -	struct cvmx_pcieep_cfg022_s cn56xxp1; -}; - -union cvmx_pcieep_cfg023 { -	uint32_t u32; -	struct cvmx_pcieep_cfg023_s { -		uint32_t reserved_16_31:16; -		uint32_t msimd:16; -	} s; -	struct cvmx_pcieep_cfg023_s cn52xx; -	struct cvmx_pcieep_cfg023_s cn52xxp1; -	struct cvmx_pcieep_cfg023_s cn56xx; -	struct cvmx_pcieep_cfg023_s cn56xxp1; -}; - -union cvmx_pcieep_cfg028 { -	uint32_t u32; -	struct cvmx_pcieep_cfg028_s { -		uint32_t reserved_30_31:2; -		uint32_t imn:5; -		uint32_t si:1; -		uint32_t dpt:4; -		uint32_t pciecv:4; -		uint32_t ncp:8; -		uint32_t pcieid:8; -	} s; -	struct cvmx_pcieep_cfg028_s cn52xx; -	struct cvmx_pcieep_cfg028_s cn52xxp1; -	struct cvmx_pcieep_cfg028_s cn56xx; -	struct cvmx_pcieep_cfg028_s cn56xxp1; -}; - -union cvmx_pcieep_cfg029 { -	uint32_t u32; -	struct cvmx_pcieep_cfg029_s { -		uint32_t reserved_28_31:4; -		uint32_t cspls:2; -		uint32_t csplv:8; -		uint32_t reserved_16_17:2; -		uint32_t rber:1; -		uint32_t reserved_12_14:3; -		uint32_t el1al:3; -		uint32_t el0al:3; -		uint32_t etfs:1; -		uint32_t pfs:2; -		uint32_t mpss:3; -	} s; -	struct cvmx_pcieep_cfg029_s cn52xx; -	struct cvmx_pcieep_cfg029_s cn52xxp1; -	struct cvmx_pcieep_cfg029_s cn56xx; -	struct cvmx_pcieep_cfg029_s cn56xxp1; -}; - -union cvmx_pcieep_cfg030 { -	uint32_t u32; -	struct cvmx_pcieep_cfg030_s { -		uint32_t reserved_22_31:10; -		uint32_t tp:1; -		uint32_t ap_d:1; -		uint32_t ur_d:1; -		uint32_t fe_d:1; -		uint32_t nfe_d:1; -		uint32_t ce_d:1; -		uint32_t reserved_15_15:1; -		uint32_t mrrs:3; -		uint32_t ns_en:1; -		uint32_t ap_en:1; -		uint32_t pf_en:1; -		uint32_t etf_en:1; -		uint32_t mps:3; -		uint32_t ro_en:1; -		uint32_t ur_en:1; -		uint32_t fe_en:1; -		uint32_t nfe_en:1; -		uint32_t ce_en:1; -	} s; -	struct cvmx_pcieep_cfg030_s cn52xx; -	struct cvmx_pcieep_cfg030_s cn52xxp1; -	struct cvmx_pcieep_cfg030_s cn56xx; -	struct cvmx_pcieep_cfg030_s cn56xxp1; -}; - -union cvmx_pcieep_cfg031 { -	uint32_t u32; -	struct cvmx_pcieep_cfg031_s { -		uint32_t pnum:8; -		uint32_t reserved_22_23:2; -		uint32_t lbnc:1; -		uint32_t dllarc:1; -		uint32_t sderc:1; -		uint32_t cpm:1; -		uint32_t l1el:3; -		uint32_t l0el:3; -		uint32_t aslpms:2; -		uint32_t mlw:6; -		uint32_t mls:4; -	} s; -	struct cvmx_pcieep_cfg031_s cn52xx; -	struct cvmx_pcieep_cfg031_s cn52xxp1; -	struct cvmx_pcieep_cfg031_s cn56xx; -	struct cvmx_pcieep_cfg031_s cn56xxp1; -}; - -union cvmx_pcieep_cfg032 { -	uint32_t u32; -	struct cvmx_pcieep_cfg032_s { -		uint32_t reserved_30_31:2; -		uint32_t dlla:1; -		uint32_t scc:1; -		uint32_t lt:1; -		uint32_t reserved_26_26:1; -		uint32_t nlw:6; -		uint32_t ls:4; -		uint32_t reserved_10_15:6; -		uint32_t hawd:1; -		uint32_t ecpm:1; -		uint32_t es:1; -		uint32_t ccc:1; -		uint32_t rl:1; -		uint32_t ld:1; -		uint32_t rcb:1; -		uint32_t reserved_2_2:1; -		uint32_t aslpc:2; -	} s; -	struct cvmx_pcieep_cfg032_s cn52xx; -	struct cvmx_pcieep_cfg032_s cn52xxp1; -	struct cvmx_pcieep_cfg032_s cn56xx; -	struct cvmx_pcieep_cfg032_s cn56xxp1; -}; - -union cvmx_pcieep_cfg033 { -	uint32_t u32; -	struct cvmx_pcieep_cfg033_s { -		uint32_t ps_num:13; -		uint32_t nccs:1; -		uint32_t emip:1; -		uint32_t sp_ls:2; -		uint32_t sp_lv:8; -		uint32_t hp_c:1; -		uint32_t hp_s:1; -		uint32_t pip:1; -		uint32_t aip:1; -		uint32_t mrlsp:1; -		uint32_t pcp:1; -		uint32_t abp:1; -	} s; -	struct cvmx_pcieep_cfg033_s cn52xx; -	struct cvmx_pcieep_cfg033_s cn52xxp1; -	struct cvmx_pcieep_cfg033_s cn56xx; -	struct cvmx_pcieep_cfg033_s cn56xxp1; -}; - -union cvmx_pcieep_cfg034 { -	uint32_t u32; -	struct cvmx_pcieep_cfg034_s { -		uint32_t reserved_25_31:7; -		uint32_t dlls_c:1; -		uint32_t emis:1; -		uint32_t pds:1; -		uint32_t mrlss:1; -		uint32_t ccint_d:1; -		uint32_t pd_c:1; -		uint32_t mrls_c:1; -		uint32_t pf_d:1; -		uint32_t abp_d:1; -		uint32_t reserved_13_15:3; -		uint32_t dlls_en:1; -		uint32_t emic:1; -		uint32_t pcc:1; -		uint32_t pic:2; -		uint32_t aic:2; -		uint32_t hpint_en:1; -		uint32_t ccint_en:1; -		uint32_t pd_en:1; -		uint32_t mrls_en:1; -		uint32_t pf_en:1; -		uint32_t abp_en:1; -	} s; -	struct cvmx_pcieep_cfg034_s cn52xx; -	struct cvmx_pcieep_cfg034_s cn52xxp1; -	struct cvmx_pcieep_cfg034_s cn56xx; -	struct cvmx_pcieep_cfg034_s cn56xxp1; -}; - -union cvmx_pcieep_cfg037 { -	uint32_t u32; -	struct cvmx_pcieep_cfg037_s { -		uint32_t reserved_5_31:27; -		uint32_t ctds:1; -		uint32_t ctrs:4; -	} s; -	struct cvmx_pcieep_cfg037_s cn52xx; -	struct cvmx_pcieep_cfg037_s cn52xxp1; -	struct cvmx_pcieep_cfg037_s cn56xx; -	struct cvmx_pcieep_cfg037_s cn56xxp1; -}; - -union cvmx_pcieep_cfg038 { -	uint32_t u32; -	struct cvmx_pcieep_cfg038_s { -		uint32_t reserved_5_31:27; -		uint32_t ctd:1; -		uint32_t ctv:4; -	} s; -	struct cvmx_pcieep_cfg038_s cn52xx; -	struct cvmx_pcieep_cfg038_s cn52xxp1; -	struct cvmx_pcieep_cfg038_s cn56xx; -	struct cvmx_pcieep_cfg038_s cn56xxp1; -}; - -union cvmx_pcieep_cfg039 { -	uint32_t u32; -	struct cvmx_pcieep_cfg039_s { -		uint32_t reserved_0_31:32; -	} s; -	struct cvmx_pcieep_cfg039_s cn52xx; -	struct cvmx_pcieep_cfg039_s cn52xxp1; -	struct cvmx_pcieep_cfg039_s cn56xx; -	struct cvmx_pcieep_cfg039_s cn56xxp1; -}; - -union cvmx_pcieep_cfg040 { -	uint32_t u32; -	struct cvmx_pcieep_cfg040_s { -		uint32_t reserved_0_31:32; -	} s; -	struct cvmx_pcieep_cfg040_s cn52xx; -	struct cvmx_pcieep_cfg040_s cn52xxp1; -	struct cvmx_pcieep_cfg040_s cn56xx; -	struct cvmx_pcieep_cfg040_s cn56xxp1; -}; - -union cvmx_pcieep_cfg041 { -	uint32_t u32; -	struct cvmx_pcieep_cfg041_s { -		uint32_t reserved_0_31:32; -	} s; -	struct cvmx_pcieep_cfg041_s cn52xx; -	struct cvmx_pcieep_cfg041_s cn52xxp1; -	struct cvmx_pcieep_cfg041_s cn56xx; -	struct cvmx_pcieep_cfg041_s cn56xxp1; -}; - -union cvmx_pcieep_cfg042 { -	uint32_t u32; -	struct cvmx_pcieep_cfg042_s { -		uint32_t reserved_0_31:32; -	} s; -	struct cvmx_pcieep_cfg042_s cn52xx; -	struct cvmx_pcieep_cfg042_s cn52xxp1; -	struct cvmx_pcieep_cfg042_s cn56xx; -	struct cvmx_pcieep_cfg042_s cn56xxp1; -}; - -union cvmx_pcieep_cfg064 { -	uint32_t u32; -	struct cvmx_pcieep_cfg064_s { -		uint32_t nco:12; -		uint32_t cv:4; -		uint32_t pcieec:16; -	} s; -	struct cvmx_pcieep_cfg064_s cn52xx; -	struct cvmx_pcieep_cfg064_s cn52xxp1; -	struct cvmx_pcieep_cfg064_s cn56xx; -	struct cvmx_pcieep_cfg064_s cn56xxp1; -}; - -union cvmx_pcieep_cfg065 { -	uint32_t u32; -	struct cvmx_pcieep_cfg065_s { -		uint32_t reserved_21_31:11; -		uint32_t ures:1; -		uint32_t ecrces:1; -		uint32_t mtlps:1; -		uint32_t ros:1; -		uint32_t ucs:1; -		uint32_t cas:1; -		uint32_t cts:1; -		uint32_t fcpes:1; -		uint32_t ptlps:1; -		uint32_t reserved_6_11:6; -		uint32_t sdes:1; -		uint32_t dlpes:1; -		uint32_t reserved_0_3:4; -	} s; -	struct cvmx_pcieep_cfg065_s cn52xx; -	struct cvmx_pcieep_cfg065_s cn52xxp1; -	struct cvmx_pcieep_cfg065_s cn56xx; -	struct cvmx_pcieep_cfg065_s cn56xxp1; -}; - -union cvmx_pcieep_cfg066 { -	uint32_t u32; -	struct cvmx_pcieep_cfg066_s { -		uint32_t reserved_21_31:11; -		uint32_t urem:1; -		uint32_t ecrcem:1; -		uint32_t mtlpm:1; -		uint32_t rom:1; -		uint32_t ucm:1; -		uint32_t cam:1; -		uint32_t ctm:1; -		uint32_t fcpem:1; -		uint32_t ptlpm:1; -		uint32_t reserved_6_11:6; -		uint32_t sdem:1; -		uint32_t dlpem:1; -		uint32_t reserved_0_3:4; -	} s; -	struct cvmx_pcieep_cfg066_s cn52xx; -	struct cvmx_pcieep_cfg066_s cn52xxp1; -	struct cvmx_pcieep_cfg066_s cn56xx; -	struct cvmx_pcieep_cfg066_s cn56xxp1; -}; - -union cvmx_pcieep_cfg067 { -	uint32_t u32; -	struct cvmx_pcieep_cfg067_s { -		uint32_t reserved_21_31:11; -		uint32_t ures:1; -		uint32_t ecrces:1; -		uint32_t mtlps:1; -		uint32_t ros:1; -		uint32_t ucs:1; -		uint32_t cas:1; -		uint32_t cts:1; -		uint32_t fcpes:1; -		uint32_t ptlps:1; -		uint32_t reserved_6_11:6; -		uint32_t sdes:1; -		uint32_t dlpes:1; -		uint32_t reserved_0_3:4; -	} s; -	struct cvmx_pcieep_cfg067_s cn52xx; -	struct cvmx_pcieep_cfg067_s cn52xxp1; -	struct cvmx_pcieep_cfg067_s cn56xx; -	struct cvmx_pcieep_cfg067_s cn56xxp1; -}; - -union cvmx_pcieep_cfg068 { -	uint32_t u32; -	struct cvmx_pcieep_cfg068_s { -		uint32_t reserved_14_31:18; -		uint32_t anfes:1; -		uint32_t rtts:1; -		uint32_t reserved_9_11:3; -		uint32_t rnrs:1; -		uint32_t bdllps:1; -		uint32_t btlps:1; -		uint32_t reserved_1_5:5; -		uint32_t res:1; -	} s; -	struct cvmx_pcieep_cfg068_s cn52xx; -	struct cvmx_pcieep_cfg068_s cn52xxp1; -	struct cvmx_pcieep_cfg068_s cn56xx; -	struct cvmx_pcieep_cfg068_s cn56xxp1; -}; - -union cvmx_pcieep_cfg069 { -	uint32_t u32; -	struct cvmx_pcieep_cfg069_s { -		uint32_t reserved_14_31:18; -		uint32_t anfem:1; -		uint32_t rttm:1; -		uint32_t reserved_9_11:3; -		uint32_t rnrm:1; -		uint32_t bdllpm:1; -		uint32_t btlpm:1; -		uint32_t reserved_1_5:5; -		uint32_t rem:1; -	} s; -	struct cvmx_pcieep_cfg069_s cn52xx; -	struct cvmx_pcieep_cfg069_s cn52xxp1; -	struct cvmx_pcieep_cfg069_s cn56xx; -	struct cvmx_pcieep_cfg069_s cn56xxp1; -}; - -union cvmx_pcieep_cfg070 { -	uint32_t u32; -	struct cvmx_pcieep_cfg070_s { -		uint32_t reserved_9_31:23; -		uint32_t ce:1; -		uint32_t cc:1; -		uint32_t ge:1; -		uint32_t gc:1; -		uint32_t fep:5; -	} s; -	struct cvmx_pcieep_cfg070_s cn52xx; -	struct cvmx_pcieep_cfg070_s cn52xxp1; -	struct cvmx_pcieep_cfg070_s cn56xx; -	struct cvmx_pcieep_cfg070_s cn56xxp1; -}; - -union cvmx_pcieep_cfg071 { -	uint32_t u32; -	struct cvmx_pcieep_cfg071_s { -		uint32_t dword1:32; -	} s; -	struct cvmx_pcieep_cfg071_s cn52xx; -	struct cvmx_pcieep_cfg071_s cn52xxp1; -	struct cvmx_pcieep_cfg071_s cn56xx; -	struct cvmx_pcieep_cfg071_s cn56xxp1; -}; - -union cvmx_pcieep_cfg072 { -	uint32_t u32; -	struct cvmx_pcieep_cfg072_s { -		uint32_t dword2:32; -	} s; -	struct cvmx_pcieep_cfg072_s cn52xx; -	struct cvmx_pcieep_cfg072_s cn52xxp1; -	struct cvmx_pcieep_cfg072_s cn56xx; -	struct cvmx_pcieep_cfg072_s cn56xxp1; -}; - -union cvmx_pcieep_cfg073 { -	uint32_t u32; -	struct cvmx_pcieep_cfg073_s { -		uint32_t dword3:32; -	} s; -	struct cvmx_pcieep_cfg073_s cn52xx; -	struct cvmx_pcieep_cfg073_s cn52xxp1; -	struct cvmx_pcieep_cfg073_s cn56xx; -	struct cvmx_pcieep_cfg073_s cn56xxp1; -}; - -union cvmx_pcieep_cfg074 { -	uint32_t u32; -	struct cvmx_pcieep_cfg074_s { -		uint32_t dword4:32; -	} s; -	struct cvmx_pcieep_cfg074_s cn52xx; -	struct cvmx_pcieep_cfg074_s cn52xxp1; -	struct cvmx_pcieep_cfg074_s cn56xx; -	struct cvmx_pcieep_cfg074_s cn56xxp1; -}; - -union cvmx_pcieep_cfg448 { -	uint32_t u32; -	struct cvmx_pcieep_cfg448_s { -		uint32_t rtl:16; -		uint32_t rtltl:16; -	} s; -	struct cvmx_pcieep_cfg448_s cn52xx; -	struct cvmx_pcieep_cfg448_s cn52xxp1; -	struct cvmx_pcieep_cfg448_s cn56xx; -	struct cvmx_pcieep_cfg448_s cn56xxp1; -}; - -union cvmx_pcieep_cfg449 { -	uint32_t u32; -	struct cvmx_pcieep_cfg449_s { -		uint32_t omr:32; -	} s; -	struct cvmx_pcieep_cfg449_s cn52xx; -	struct cvmx_pcieep_cfg449_s cn52xxp1; -	struct cvmx_pcieep_cfg449_s cn56xx; -	struct cvmx_pcieep_cfg449_s cn56xxp1; -}; - -union cvmx_pcieep_cfg450 { -	uint32_t u32; -	struct cvmx_pcieep_cfg450_s { -		uint32_t lpec:8; -		uint32_t reserved_22_23:2; -		uint32_t link_state:6; -		uint32_t force_link:1; -		uint32_t reserved_8_14:7; -		uint32_t link_num:8; -	} s; -	struct cvmx_pcieep_cfg450_s cn52xx; -	struct cvmx_pcieep_cfg450_s cn52xxp1; -	struct cvmx_pcieep_cfg450_s cn56xx; -	struct cvmx_pcieep_cfg450_s cn56xxp1; -}; - -union cvmx_pcieep_cfg451 { -	uint32_t u32; -	struct cvmx_pcieep_cfg451_s { -		uint32_t reserved_30_31:2; -		uint32_t l1el:3; -		uint32_t l0el:3; -		uint32_t n_fts_cc:8; -		uint32_t n_fts:8; -		uint32_t ack_freq:8; -	} s; -	struct cvmx_pcieep_cfg451_s cn52xx; -	struct cvmx_pcieep_cfg451_s cn52xxp1; -	struct cvmx_pcieep_cfg451_s cn56xx; -	struct cvmx_pcieep_cfg451_s cn56xxp1; -}; - -union cvmx_pcieep_cfg452 { -	uint32_t u32; -	struct cvmx_pcieep_cfg452_s { -		uint32_t reserved_26_31:6; -		uint32_t eccrc:1; -		uint32_t reserved_22_24:3; -		uint32_t lme:6; -		uint32_t reserved_8_15:8; -		uint32_t flm:1; -		uint32_t reserved_6_6:1; -		uint32_t dllle:1; -		uint32_t reserved_4_4:1; -		uint32_t ra:1; -		uint32_t le:1; -		uint32_t sd:1; -		uint32_t omr:1; -	} s; -	struct cvmx_pcieep_cfg452_s cn52xx; -	struct cvmx_pcieep_cfg452_s cn52xxp1; -	struct cvmx_pcieep_cfg452_s cn56xx; -	struct cvmx_pcieep_cfg452_s cn56xxp1; -}; - -union cvmx_pcieep_cfg453 { -	uint32_t u32; -	struct cvmx_pcieep_cfg453_s { -		uint32_t dlld:1; -		uint32_t reserved_26_30:5; -		uint32_t ack_nak:1; -		uint32_t fcd:1; -		uint32_t ilst:24; -	} s; -	struct cvmx_pcieep_cfg453_s cn52xx; -	struct cvmx_pcieep_cfg453_s cn52xxp1; -	struct cvmx_pcieep_cfg453_s cn56xx; -	struct cvmx_pcieep_cfg453_s cn56xxp1; -}; - -union cvmx_pcieep_cfg454 { -	uint32_t u32; -	struct cvmx_pcieep_cfg454_s { -		uint32_t reserved_29_31:3; -		uint32_t tmfcwt:5; -		uint32_t tmanlt:5; -		uint32_t tmrt:5; -		uint32_t reserved_11_13:3; -		uint32_t nskps:3; -		uint32_t reserved_4_7:4; -		uint32_t ntss:4; -	} s; -	struct cvmx_pcieep_cfg454_s cn52xx; -	struct cvmx_pcieep_cfg454_s cn52xxp1; -	struct cvmx_pcieep_cfg454_s cn56xx; -	struct cvmx_pcieep_cfg454_s cn56xxp1; -}; - -union cvmx_pcieep_cfg455 { -	uint32_t u32; -	struct cvmx_pcieep_cfg455_s { -		uint32_t m_cfg0_filt:1; -		uint32_t m_io_filt:1; -		uint32_t msg_ctrl:1; -		uint32_t m_cpl_ecrc_filt:1; -		uint32_t m_ecrc_filt:1; -		uint32_t m_cpl_len_err:1; -		uint32_t m_cpl_attr_err:1; -		uint32_t m_cpl_tc_err:1; -		uint32_t m_cpl_fun_err:1; -		uint32_t m_cpl_rid_err:1; -		uint32_t m_cpl_tag_err:1; -		uint32_t m_lk_filt:1; -		uint32_t m_cfg1_filt:1; -		uint32_t m_bar_match:1; -		uint32_t m_pois_filt:1; -		uint32_t m_fun:1; -		uint32_t dfcwt:1; -		uint32_t reserved_11_14:4; -		uint32_t skpiv:11; -	} s; -	struct cvmx_pcieep_cfg455_s cn52xx; -	struct cvmx_pcieep_cfg455_s cn52xxp1; -	struct cvmx_pcieep_cfg455_s cn56xx; -	struct cvmx_pcieep_cfg455_s cn56xxp1; -}; - -union cvmx_pcieep_cfg456 { -	uint32_t u32; -	struct cvmx_pcieep_cfg456_s { -		uint32_t reserved_2_31:30; -		uint32_t m_vend1_drp:1; -		uint32_t m_vend0_drp:1; -	} s; -	struct cvmx_pcieep_cfg456_s cn52xx; -	struct cvmx_pcieep_cfg456_s cn52xxp1; -	struct cvmx_pcieep_cfg456_s cn56xx; -	struct cvmx_pcieep_cfg456_s cn56xxp1; -}; - -union cvmx_pcieep_cfg458 { -	uint32_t u32; -	struct cvmx_pcieep_cfg458_s { -		uint32_t dbg_info_l32:32; -	} s; -	struct cvmx_pcieep_cfg458_s cn52xx; -	struct cvmx_pcieep_cfg458_s cn52xxp1; -	struct cvmx_pcieep_cfg458_s cn56xx; -	struct cvmx_pcieep_cfg458_s cn56xxp1; -}; - -union cvmx_pcieep_cfg459 { -	uint32_t u32; -	struct cvmx_pcieep_cfg459_s { -		uint32_t dbg_info_u32:32; -	} s; -	struct cvmx_pcieep_cfg459_s cn52xx; -	struct cvmx_pcieep_cfg459_s cn52xxp1; -	struct cvmx_pcieep_cfg459_s cn56xx; -	struct cvmx_pcieep_cfg459_s cn56xxp1; -}; - -union cvmx_pcieep_cfg460 { -	uint32_t u32; -	struct cvmx_pcieep_cfg460_s { -		uint32_t reserved_20_31:12; -		uint32_t tphfcc:8; -		uint32_t tpdfcc:12; -	} s; -	struct cvmx_pcieep_cfg460_s cn52xx; -	struct cvmx_pcieep_cfg460_s cn52xxp1; -	struct cvmx_pcieep_cfg460_s cn56xx; -	struct cvmx_pcieep_cfg460_s cn56xxp1; -}; - -union cvmx_pcieep_cfg461 { -	uint32_t u32; -	struct cvmx_pcieep_cfg461_s { -		uint32_t reserved_20_31:12; -		uint32_t tchfcc:8; -		uint32_t tcdfcc:12; -	} s; -	struct cvmx_pcieep_cfg461_s cn52xx; -	struct cvmx_pcieep_cfg461_s cn52xxp1; -	struct cvmx_pcieep_cfg461_s cn56xx; -	struct cvmx_pcieep_cfg461_s cn56xxp1; -}; - -union cvmx_pcieep_cfg462 { -	uint32_t u32; -	struct cvmx_pcieep_cfg462_s { -		uint32_t reserved_20_31:12; -		uint32_t tchfcc:8; -		uint32_t tcdfcc:12; -	} s; -	struct cvmx_pcieep_cfg462_s cn52xx; -	struct cvmx_pcieep_cfg462_s cn52xxp1; -	struct cvmx_pcieep_cfg462_s cn56xx; -	struct cvmx_pcieep_cfg462_s cn56xxp1; -}; - -union cvmx_pcieep_cfg463 { -	uint32_t u32; -	struct cvmx_pcieep_cfg463_s { -		uint32_t reserved_3_31:29; -		uint32_t rqne:1; -		uint32_t trbne:1; -		uint32_t rtlpfccnr:1; -	} s; -	struct cvmx_pcieep_cfg463_s cn52xx; -	struct cvmx_pcieep_cfg463_s cn52xxp1; -	struct cvmx_pcieep_cfg463_s cn56xx; -	struct cvmx_pcieep_cfg463_s cn56xxp1; -}; - -union cvmx_pcieep_cfg464 { -	uint32_t u32; -	struct cvmx_pcieep_cfg464_s { -		uint32_t wrr_vc3:8; -		uint32_t wrr_vc2:8; -		uint32_t wrr_vc1:8; -		uint32_t wrr_vc0:8; -	} s; -	struct cvmx_pcieep_cfg464_s cn52xx; -	struct cvmx_pcieep_cfg464_s cn52xxp1; -	struct cvmx_pcieep_cfg464_s cn56xx; -	struct cvmx_pcieep_cfg464_s cn56xxp1; -}; - -union cvmx_pcieep_cfg465 { -	uint32_t u32; -	struct cvmx_pcieep_cfg465_s { -		uint32_t wrr_vc7:8; -		uint32_t wrr_vc6:8; -		uint32_t wrr_vc5:8; -		uint32_t wrr_vc4:8; -	} s; -	struct cvmx_pcieep_cfg465_s cn52xx; -	struct cvmx_pcieep_cfg465_s cn52xxp1; -	struct cvmx_pcieep_cfg465_s cn56xx; -	struct cvmx_pcieep_cfg465_s cn56xxp1; -}; - -union cvmx_pcieep_cfg466 { -	uint32_t u32; -	struct cvmx_pcieep_cfg466_s { -		uint32_t rx_queue_order:1; -		uint32_t type_ordering:1; -		uint32_t reserved_24_29:6; -		uint32_t queue_mode:3; -		uint32_t reserved_20_20:1; -		uint32_t header_credits:8; -		uint32_t data_credits:12; -	} s; -	struct cvmx_pcieep_cfg466_s cn52xx; -	struct cvmx_pcieep_cfg466_s cn52xxp1; -	struct cvmx_pcieep_cfg466_s cn56xx; -	struct cvmx_pcieep_cfg466_s cn56xxp1; -}; - -union cvmx_pcieep_cfg467 { -	uint32_t u32; -	struct cvmx_pcieep_cfg467_s { -		uint32_t reserved_24_31:8; -		uint32_t queue_mode:3; -		uint32_t reserved_20_20:1; -		uint32_t header_credits:8; -		uint32_t data_credits:12; -	} s; -	struct cvmx_pcieep_cfg467_s cn52xx; -	struct cvmx_pcieep_cfg467_s cn52xxp1; -	struct cvmx_pcieep_cfg467_s cn56xx; -	struct cvmx_pcieep_cfg467_s cn56xxp1; -}; - -union cvmx_pcieep_cfg468 { -	uint32_t u32; -	struct cvmx_pcieep_cfg468_s { -		uint32_t reserved_24_31:8; -		uint32_t queue_mode:3; -		uint32_t reserved_20_20:1; -		uint32_t header_credits:8; -		uint32_t data_credits:12; -	} s; -	struct cvmx_pcieep_cfg468_s cn52xx; -	struct cvmx_pcieep_cfg468_s cn52xxp1; -	struct cvmx_pcieep_cfg468_s cn56xx; -	struct cvmx_pcieep_cfg468_s cn56xxp1; -}; - -union cvmx_pcieep_cfg490 { -	uint32_t u32; -	struct cvmx_pcieep_cfg490_s { -		uint32_t reserved_26_31:6; -		uint32_t header_depth:10; -		uint32_t reserved_14_15:2; -		uint32_t data_depth:14; -	} s; -	struct cvmx_pcieep_cfg490_s cn52xx; -	struct cvmx_pcieep_cfg490_s cn52xxp1; -	struct cvmx_pcieep_cfg490_s cn56xx; -	struct cvmx_pcieep_cfg490_s cn56xxp1; -}; - -union cvmx_pcieep_cfg491 { -	uint32_t u32; -	struct cvmx_pcieep_cfg491_s { -		uint32_t reserved_26_31:6; -		uint32_t header_depth:10; -		uint32_t reserved_14_15:2; -		uint32_t data_depth:14; -	} s; -	struct cvmx_pcieep_cfg491_s cn52xx; -	struct cvmx_pcieep_cfg491_s cn52xxp1; -	struct cvmx_pcieep_cfg491_s cn56xx; -	struct cvmx_pcieep_cfg491_s cn56xxp1; -}; - -union cvmx_pcieep_cfg492 { -	uint32_t u32; -	struct cvmx_pcieep_cfg492_s { -		uint32_t reserved_26_31:6; -		uint32_t header_depth:10; -		uint32_t reserved_14_15:2; -		uint32_t data_depth:14; -	} s; -	struct cvmx_pcieep_cfg492_s cn52xx; -	struct cvmx_pcieep_cfg492_s cn52xxp1; -	struct cvmx_pcieep_cfg492_s cn56xx; -	struct cvmx_pcieep_cfg492_s cn56xxp1; -}; - -union cvmx_pcieep_cfg516 { -	uint32_t u32; -	struct cvmx_pcieep_cfg516_s { -		uint32_t phy_stat:32; -	} s; -	struct cvmx_pcieep_cfg516_s cn52xx; -	struct cvmx_pcieep_cfg516_s cn52xxp1; -	struct cvmx_pcieep_cfg516_s cn56xx; -	struct cvmx_pcieep_cfg516_s cn56xxp1; -}; - -union cvmx_pcieep_cfg517 { -	uint32_t u32; -	struct cvmx_pcieep_cfg517_s { -		uint32_t phy_ctrl:32; -	} s; -	struct cvmx_pcieep_cfg517_s cn52xx; -	struct cvmx_pcieep_cfg517_s cn52xxp1; -	struct cvmx_pcieep_cfg517_s cn56xx; -	struct cvmx_pcieep_cfg517_s cn56xxp1; -}; - -#endif diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h index fcd4060f642..90bf3b3fce1 100644 --- a/arch/mips/include/asm/pci.h +++ b/arch/mips/include/asm/pci.h @@ -17,6 +17,7 @@   */  #include <linux/ioport.h> +#include <linux/of.h>  /*   * Each pci channel is a top-level PCI bus seem by CPU.  A machine  with @@ -26,6 +27,7 @@  struct pci_controller {  	struct pci_controller *next;  	struct pci_bus *bus; +	struct device_node *of_node;  	struct pci_ops *pci_ops;  	struct resource *mem_resource; @@ -142,4 +144,8 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)  extern char * (*pcibios_plat_setup)(char *str); +/* this function parses memory ranges from a device node */ +extern void __devinit pci_load_of_ranges(struct pci_controller *hose, +					 struct device_node *node); +  #endif /* _ASM_PCI_H */ diff --git a/arch/mips/include/asm/posix_types.h b/arch/mips/include/asm/posix_types.h index e0308dcca13..fa03ec3fbf8 100644 --- a/arch/mips/include/asm/posix_types.h +++ b/arch/mips/include/asm/posix_types.h @@ -17,11 +17,6 @@   * assume GCC is being used.   */ -#if (_MIPS_SZLONG == 64) -typedef unsigned int	__kernel_nlink_t; -#define __kernel_nlink_t __kernel_nlink_t -#endif -  typedef long		__kernel_daddr_t;  #define __kernel_daddr_t __kernel_daddr_t diff --git a/arch/mips/include/asm/prom.h b/arch/mips/include/asm/prom.h index 7a6e82ef449..7206d445bab 100644 --- a/arch/mips/include/asm/prom.h +++ b/arch/mips/include/asm/prom.h @@ -12,6 +12,9 @@  #define __ASM_PROM_H  #ifdef CONFIG_OF +#include <linux/bug.h> +#include <linux/io.h> +#include <linux/types.h>  #include <asm/bootinfo.h>  extern int early_init_dt_scan_memory_arch(unsigned long node, @@ -21,6 +24,29 @@ extern int reserve_mem_mach(unsigned long addr, unsigned long size);  extern void free_mem_mach(unsigned long addr, unsigned long size);  extern void device_tree_init(void); + +static inline unsigned long pci_address_to_pio(phys_addr_t address) +{ +	/* +	 * The ioport address can be directly used by inX() / outX() +	 */ +	BUG_ON(address > IO_SPACE_LIMIT); + +	return (unsigned long) address; +} +#define pci_address_to_pio pci_address_to_pio + +struct boot_param_header; + +extern void __dt_setup_arch(struct boot_param_header *bph); + +#define dt_setup_arch(sym)						\ +({									\ +	extern struct boot_param_header __dtb_##sym##_begin;		\ +									\ +	__dt_setup_arch(&__dtb_##sym##_begin);				\ +}) +  #else /* CONFIG_OF */  static inline void device_tree_init(void) { }  #endif /* CONFIG_OF */ diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h index 6dce6d8d09a..2560b6b6a7d 100644 --- a/arch/mips/include/asm/setup.h +++ b/arch/mips/include/asm/setup.h @@ -14,7 +14,8 @@ extern void *set_vi_handler(int n, vi_handler_t addr);  extern void *set_except_vector(int n, void *addr);  extern unsigned long ebase; -extern void per_cpu_trap_init(void); +extern void per_cpu_trap_init(bool); +extern void cpu_cache_init(void);  #endif /* __KERNEL__ */ diff --git a/arch/mips/include/asm/sparsemem.h b/arch/mips/include/asm/sparsemem.h index 7165333ad04..4461198361c 100644 --- a/arch/mips/include/asm/sparsemem.h +++ b/arch/mips/include/asm/sparsemem.h @@ -6,7 +6,11 @@   * SECTION_SIZE_BITS		2^N: how big each section will be   * MAX_PHYSMEM_BITS		2^N: how much memory we can have in that space   */ -#define SECTION_SIZE_BITS       28 +#if defined(CONFIG_HUGETLB_PAGE) && defined(CONFIG_PAGE_SIZE_64KB) +# define SECTION_SIZE_BITS	29 +#else +# define SECTION_SIZE_BITS	28 +#endif  #define MAX_PHYSMEM_BITS        35  #endif /* CONFIG_SPARSEMEM */ diff --git a/arch/mips/include/asm/stat.h b/arch/mips/include/asm/stat.h index 6e00f751ab6..fe9a4c3ec5a 100644 --- a/arch/mips/include/asm/stat.h +++ b/arch/mips/include/asm/stat.h @@ -20,7 +20,7 @@ struct stat {  	long		st_pad1[3];		/* Reserved for network id */  	ino_t		st_ino;  	mode_t		st_mode; -	nlink_t		st_nlink; +	__u32		st_nlink;  	uid_t		st_uid;  	gid_t		st_gid;  	unsigned 	st_rdev; @@ -55,7 +55,7 @@ struct stat64 {  	unsigned long long	st_ino;  	mode_t		st_mode; -	nlink_t		st_nlink; +	__u32		st_nlink;  	uid_t		st_uid;  	gid_t		st_gid; @@ -96,7 +96,7 @@ struct stat {  	unsigned long		st_ino;  	mode_t			st_mode; -	nlink_t			st_nlink; +	__u32			st_nlink;  	uid_t			st_uid;  	gid_t			st_gid; diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h index 5d33621b565..4f8ddba8c36 100644 --- a/arch/mips/include/asm/switch_to.h +++ b/arch/mips/include/asm/switch_to.h @@ -22,7 +22,7 @@ struct task_struct;   * switch_to(n) should switch tasks to task nr n, first   * checking that n isn't the current task, in which case it does nothing.   */ -extern asmlinkage void *resume(void *last, void *next, void *next_ti); +extern asmlinkage void *resume(void *last, void *next, void *next_ti, u32 __usedfpu);  extern unsigned int ll_bit;  extern struct task_struct *ll_task; @@ -66,11 +66,13 @@ do {									\  #define switch_to(prev, next, last)					\  do {									\ +	u32 __usedfpu;							\  	__mips_mt_fpaff_switch_to(prev);				\  	if (cpu_has_dsp)						\  		__save_dsp(prev);					\  	__clear_software_ll_bit();					\ -	(last) = resume(prev, next, task_thread_info(next));		\ +	__usedfpu = test_and_clear_tsk_thread_flag(prev, TIF_USEDFPU);	\ +	(last) = resume(prev, next, task_thread_info(next), __usedfpu);	\  } while (0)  #define finish_arch_switch(prev)					\ diff --git a/arch/mips/include/asm/termios.h b/arch/mips/include/asm/termios.h index 8f77f774a2a..abdd87aaf60 100644 --- a/arch/mips/include/asm/termios.h +++ b/arch/mips/include/asm/termios.h @@ -60,7 +60,7 @@ struct termio {  };  #ifdef __KERNEL__ -#include <linux/module.h> +#include <asm/uaccess.h>  /*   *	intr=^C		quit=^\		erase=del	kill=^U diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index e2eca7d1059..ca97e0ecb64 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -60,6 +60,8 @@ struct thread_info {  register struct thread_info *__current_thread_info __asm__("$28");  #define current_thread_info()  __current_thread_info +#endif /* !__ASSEMBLY__ */ +  /* thread information allocation */  #if defined(CONFIG_PAGE_SIZE_4KB) && defined(CONFIG_32BIT)  #define THREAD_SIZE_ORDER (1) @@ -85,8 +87,6 @@ register struct thread_info *__current_thread_info __asm__("$28");  #define STACK_WARN	(THREAD_SIZE / 8) -#endif /* !__ASSEMBLY__ */ -  #define PREEMPT_ACTIVE		0x10000000  /* diff --git a/arch/mips/include/asm/traps.h b/arch/mips/include/asm/traps.h index ff74aec3561..420ca06b2f4 100644 --- a/arch/mips/include/asm/traps.h +++ b/arch/mips/include/asm/traps.h @@ -25,6 +25,7 @@ extern void (*board_nmi_handler_setup)(void);  extern void (*board_ejtag_handler_setup)(void);  extern void (*board_bind_eic_interrupt)(int irq, int regset);  extern void (*board_ebase_setup)(void); +extern void (*board_cache_error_setup)(void);  extern int register_nmi_notifier(struct notifier_block *nb); diff --git a/arch/mips/include/asm/uasm.h b/arch/mips/include/asm/uasm.h index 504d40aedfa..440a21dab57 100644 --- a/arch/mips/include/asm/uasm.h +++ b/arch/mips/include/asm/uasm.h @@ -11,7 +11,7 @@  #include <linux/types.h>  #ifdef CONFIG_EXPORT_UASM -#include <linux/module.h> +#include <linux/export.h>  #define __uasminit  #define __uasminitdata  #define UASM_EXPORT_SYMBOL(sym) EXPORT_SYMBOL(sym)  |