Merge branches 'next/generic', 'next/alchemy', 'next/bcm63xx', 'next/cavium', 'next/jz4740', 'next/lantiq', 'next/loongson1b' and 'next/netlogic' into mips-for-linux-next
This commit is contained in:

@@ -197,6 +197,7 @@
|
||||
#define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */
|
||||
#define PRID_REV_VR4130 0x0080
|
||||
#define PRID_REV_34K_V1_0_2 0x0022
|
||||
#define PRID_REV_LOONGSON1B 0x0020
|
||||
#define PRID_REV_LOONGSON2E 0x0002
|
||||
#define PRID_REV_LOONGSON2F 0x0003
|
||||
|
||||
@@ -261,7 +262,7 @@ 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_M14KC,
|
||||
CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_LOONGSON1, CPU_M14KC,
|
||||
|
||||
/*
|
||||
* MIPS64 class processors
|
||||
|
@@ -9,6 +9,7 @@
|
||||
* compile time if only one CPU support is enabled (idea stolen from
|
||||
* arm mach-types)
|
||||
*/
|
||||
#define BCM6328_CPU_ID 0x6328
|
||||
#define BCM6338_CPU_ID 0x6338
|
||||
#define BCM6345_CPU_ID 0x6345
|
||||
#define BCM6348_CPU_ID 0x6348
|
||||
@@ -20,6 +21,19 @@ u16 __bcm63xx_get_cpu_id(void);
|
||||
u16 bcm63xx_get_cpu_rev(void);
|
||||
unsigned int bcm63xx_get_cpu_freq(void);
|
||||
|
||||
#ifdef CONFIG_BCM63XX_CPU_6328
|
||||
# ifdef bcm63xx_get_cpu_id
|
||||
# undef bcm63xx_get_cpu_id
|
||||
# define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
|
||||
# define BCMCPU_RUNTIME_DETECT
|
||||
# else
|
||||
# define bcm63xx_get_cpu_id() BCM6328_CPU_ID
|
||||
# endif
|
||||
# define BCMCPU_IS_6328() (bcm63xx_get_cpu_id() == BCM6328_CPU_ID)
|
||||
#else
|
||||
# define BCMCPU_IS_6328() (0)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BCM63XX_CPU_6338
|
||||
# ifdef bcm63xx_get_cpu_id
|
||||
# undef bcm63xx_get_cpu_id
|
||||
@@ -102,13 +116,13 @@ enum bcm63xx_regs_set {
|
||||
RSET_UART1,
|
||||
RSET_GPIO,
|
||||
RSET_SPI,
|
||||
RSET_SPI2,
|
||||
RSET_UDC0,
|
||||
RSET_OHCI0,
|
||||
RSET_OHCI_PRIV,
|
||||
RSET_USBH_PRIV,
|
||||
RSET_MPI,
|
||||
RSET_PCMCIA,
|
||||
RSET_PCIE,
|
||||
RSET_DSL,
|
||||
RSET_ENET0,
|
||||
RSET_ENET1,
|
||||
@@ -130,11 +144,17 @@ enum bcm63xx_regs_set {
|
||||
RSET_PCMDMA,
|
||||
RSET_PCMDMAC,
|
||||
RSET_PCMDMAS,
|
||||
RSET_RNG,
|
||||
RSET_MISC
|
||||
};
|
||||
|
||||
#define RSET_DSL_LMEM_SIZE (64 * 1024 * 4)
|
||||
#define RSET_DSL_SIZE 4096
|
||||
#define RSET_WDT_SIZE 12
|
||||
#define BCM_6338_RSET_SPI_SIZE 64
|
||||
#define BCM_6348_RSET_SPI_SIZE 64
|
||||
#define BCM_6358_RSET_SPI_SIZE 1804
|
||||
#define BCM_6368_RSET_SPI_SIZE 1804
|
||||
#define RSET_ENET_SIZE 2048
|
||||
#define RSET_ENETDMA_SIZE 2048
|
||||
#define RSET_ENETSW_SIZE 65536
|
||||
@@ -149,7 +169,52 @@ enum bcm63xx_regs_set {
|
||||
#define RSET_XTMDMA_SIZE 256
|
||||
#define RSET_XTMDMAC_SIZE(chans) (16 * (chans))
|
||||
#define RSET_XTMDMAS_SIZE(chans) (16 * (chans))
|
||||
#define RSET_RNG_SIZE 20
|
||||
|
||||
/*
|
||||
* 6328 register sets base address
|
||||
*/
|
||||
#define BCM_6328_DSL_LMEM_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PERF_BASE (0xb0000000)
|
||||
#define BCM_6328_TIMER_BASE (0xb0000040)
|
||||
#define BCM_6328_WDT_BASE (0xb000005c)
|
||||
#define BCM_6328_UART0_BASE (0xb0000100)
|
||||
#define BCM_6328_UART1_BASE (0xb0000120)
|
||||
#define BCM_6328_GPIO_BASE (0xb0000080)
|
||||
#define BCM_6328_SPI_BASE (0xdeadbeef)
|
||||
#define BCM_6328_UDC0_BASE (0xdeadbeef)
|
||||
#define BCM_6328_USBDMA_BASE (0xdeadbeef)
|
||||
#define BCM_6328_OHCI0_BASE (0xdeadbeef)
|
||||
#define BCM_6328_OHCI_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6328_USBH_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6328_MPI_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PCMCIA_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PCIE_BASE (0xb0e40000)
|
||||
#define BCM_6328_SDRAM_REGS_BASE (0xdeadbeef)
|
||||
#define BCM_6328_DSL_BASE (0xb0001900)
|
||||
#define BCM_6328_UBUS_BASE (0xdeadbeef)
|
||||
#define BCM_6328_ENET0_BASE (0xdeadbeef)
|
||||
#define BCM_6328_ENET1_BASE (0xdeadbeef)
|
||||
#define BCM_6328_ENETDMA_BASE (0xb000d800)
|
||||
#define BCM_6328_ENETDMAC_BASE (0xb000da00)
|
||||
#define BCM_6328_ENETDMAS_BASE (0xb000dc00)
|
||||
#define BCM_6328_ENETSW_BASE (0xb0e00000)
|
||||
#define BCM_6328_EHCI0_BASE (0x10002500)
|
||||
#define BCM_6328_SDRAM_BASE (0xdeadbeef)
|
||||
#define BCM_6328_MEMC_BASE (0xdeadbeef)
|
||||
#define BCM_6328_DDR_BASE (0xb0003000)
|
||||
#define BCM_6328_M2M_BASE (0xdeadbeef)
|
||||
#define BCM_6328_ATM_BASE (0xdeadbeef)
|
||||
#define BCM_6328_XTM_BASE (0xdeadbeef)
|
||||
#define BCM_6328_XTMDMA_BASE (0xb000b800)
|
||||
#define BCM_6328_XTMDMAC_BASE (0xdeadbeef)
|
||||
#define BCM_6328_XTMDMAS_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PCM_BASE (0xb000a800)
|
||||
#define BCM_6328_PCMDMA_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PCMDMAC_BASE (0xdeadbeef)
|
||||
#define BCM_6328_PCMDMAS_BASE (0xdeadbeef)
|
||||
#define BCM_6328_RNG_BASE (0xdeadbeef)
|
||||
#define BCM_6328_MISC_BASE (0xb0001800)
|
||||
/*
|
||||
* 6338 register sets base address
|
||||
*/
|
||||
@@ -162,7 +227,6 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6338_UART1_BASE (0xdeadbeef)
|
||||
#define BCM_6338_GPIO_BASE (0xfffe0400)
|
||||
#define BCM_6338_SPI_BASE (0xfffe0c00)
|
||||
#define BCM_6338_SPI2_BASE (0xdeadbeef)
|
||||
#define BCM_6338_UDC0_BASE (0xdeadbeef)
|
||||
#define BCM_6338_USBDMA_BASE (0xfffe2400)
|
||||
#define BCM_6338_OHCI0_BASE (0xdeadbeef)
|
||||
@@ -170,6 +234,7 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6338_USBH_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6338_MPI_BASE (0xfffe3160)
|
||||
#define BCM_6338_PCMCIA_BASE (0xdeadbeef)
|
||||
#define BCM_6338_PCIE_BASE (0xdeadbeef)
|
||||
#define BCM_6338_SDRAM_REGS_BASE (0xfffe3100)
|
||||
#define BCM_6338_DSL_BASE (0xfffe1000)
|
||||
#define BCM_6338_UBUS_BASE (0xdeadbeef)
|
||||
@@ -193,6 +258,8 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6338_PCMDMA_BASE (0xdeadbeef)
|
||||
#define BCM_6338_PCMDMAC_BASE (0xdeadbeef)
|
||||
#define BCM_6338_PCMDMAS_BASE (0xdeadbeef)
|
||||
#define BCM_6338_RNG_BASE (0xdeadbeef)
|
||||
#define BCM_6338_MISC_BASE (0xdeadbeef)
|
||||
|
||||
/*
|
||||
* 6345 register sets base address
|
||||
@@ -206,7 +273,6 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6345_UART1_BASE (0xdeadbeef)
|
||||
#define BCM_6345_GPIO_BASE (0xfffe0400)
|
||||
#define BCM_6345_SPI_BASE (0xdeadbeef)
|
||||
#define BCM_6345_SPI2_BASE (0xdeadbeef)
|
||||
#define BCM_6345_UDC0_BASE (0xdeadbeef)
|
||||
#define BCM_6345_USBDMA_BASE (0xfffe2800)
|
||||
#define BCM_6345_ENET0_BASE (0xfffe1800)
|
||||
@@ -216,6 +282,7 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6345_ENETSW_BASE (0xdeadbeef)
|
||||
#define BCM_6345_PCMCIA_BASE (0xfffe2028)
|
||||
#define BCM_6345_MPI_BASE (0xfffe2000)
|
||||
#define BCM_6345_PCIE_BASE (0xdeadbeef)
|
||||
#define BCM_6345_OHCI0_BASE (0xfffe2100)
|
||||
#define BCM_6345_OHCI_PRIV_BASE (0xfffe2200)
|
||||
#define BCM_6345_USBH_PRIV_BASE (0xdeadbeef)
|
||||
@@ -237,6 +304,8 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6345_PCMDMA_BASE (0xdeadbeef)
|
||||
#define BCM_6345_PCMDMAC_BASE (0xdeadbeef)
|
||||
#define BCM_6345_PCMDMAS_BASE (0xdeadbeef)
|
||||
#define BCM_6345_RNG_BASE (0xdeadbeef)
|
||||
#define BCM_6345_MISC_BASE (0xdeadbeef)
|
||||
|
||||
/*
|
||||
* 6348 register sets base address
|
||||
@@ -249,13 +318,13 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6348_UART1_BASE (0xdeadbeef)
|
||||
#define BCM_6348_GPIO_BASE (0xfffe0400)
|
||||
#define BCM_6348_SPI_BASE (0xfffe0c00)
|
||||
#define BCM_6348_SPI2_BASE (0xdeadbeef)
|
||||
#define BCM_6348_UDC0_BASE (0xfffe1000)
|
||||
#define BCM_6348_OHCI0_BASE (0xfffe1b00)
|
||||
#define BCM_6348_OHCI_PRIV_BASE (0xfffe1c00)
|
||||
#define BCM_6348_USBH_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6348_MPI_BASE (0xfffe2000)
|
||||
#define BCM_6348_PCMCIA_BASE (0xfffe2054)
|
||||
#define BCM_6348_PCIE_BASE (0xdeadbeef)
|
||||
#define BCM_6348_SDRAM_REGS_BASE (0xfffe2300)
|
||||
#define BCM_6348_M2M_BASE (0xfffe2800)
|
||||
#define BCM_6348_DSL_BASE (0xfffe3000)
|
||||
@@ -278,6 +347,8 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6348_PCMDMA_BASE (0xdeadbeef)
|
||||
#define BCM_6348_PCMDMAC_BASE (0xdeadbeef)
|
||||
#define BCM_6348_PCMDMAS_BASE (0xdeadbeef)
|
||||
#define BCM_6348_RNG_BASE (0xdeadbeef)
|
||||
#define BCM_6348_MISC_BASE (0xdeadbeef)
|
||||
|
||||
/*
|
||||
* 6358 register sets base address
|
||||
@@ -289,14 +360,14 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6358_UART0_BASE (0xfffe0100)
|
||||
#define BCM_6358_UART1_BASE (0xfffe0120)
|
||||
#define BCM_6358_GPIO_BASE (0xfffe0080)
|
||||
#define BCM_6358_SPI_BASE (0xdeadbeef)
|
||||
#define BCM_6358_SPI2_BASE (0xfffe0800)
|
||||
#define BCM_6358_SPI_BASE (0xfffe0800)
|
||||
#define BCM_6358_UDC0_BASE (0xfffe0800)
|
||||
#define BCM_6358_OHCI0_BASE (0xfffe1400)
|
||||
#define BCM_6358_OHCI_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6358_USBH_PRIV_BASE (0xfffe1500)
|
||||
#define BCM_6358_MPI_BASE (0xfffe1000)
|
||||
#define BCM_6358_PCMCIA_BASE (0xfffe1054)
|
||||
#define BCM_6358_PCIE_BASE (0xdeadbeef)
|
||||
#define BCM_6358_SDRAM_REGS_BASE (0xfffe2300)
|
||||
#define BCM_6358_M2M_BASE (0xdeadbeef)
|
||||
#define BCM_6358_DSL_BASE (0xfffe3000)
|
||||
@@ -319,6 +390,8 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6358_PCMDMA_BASE (0xfffe1800)
|
||||
#define BCM_6358_PCMDMAC_BASE (0xfffe1900)
|
||||
#define BCM_6358_PCMDMAS_BASE (0xfffe1a00)
|
||||
#define BCM_6358_RNG_BASE (0xdeadbeef)
|
||||
#define BCM_6358_MISC_BASE (0xdeadbeef)
|
||||
|
||||
|
||||
/*
|
||||
@@ -331,14 +404,14 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6368_UART0_BASE (0xb0000100)
|
||||
#define BCM_6368_UART1_BASE (0xb0000120)
|
||||
#define BCM_6368_GPIO_BASE (0xb0000080)
|
||||
#define BCM_6368_SPI_BASE (0xdeadbeef)
|
||||
#define BCM_6368_SPI2_BASE (0xb0000800)
|
||||
#define BCM_6368_SPI_BASE (0xb0000800)
|
||||
#define BCM_6368_UDC0_BASE (0xdeadbeef)
|
||||
#define BCM_6368_OHCI0_BASE (0xb0001600)
|
||||
#define BCM_6368_OHCI_PRIV_BASE (0xdeadbeef)
|
||||
#define BCM_6368_USBH_PRIV_BASE (0xb0001700)
|
||||
#define BCM_6368_MPI_BASE (0xb0001000)
|
||||
#define BCM_6368_PCMCIA_BASE (0xb0001054)
|
||||
#define BCM_6368_PCIE_BASE (0xdeadbeef)
|
||||
#define BCM_6368_SDRAM_REGS_BASE (0xdeadbeef)
|
||||
#define BCM_6368_M2M_BASE (0xdeadbeef)
|
||||
#define BCM_6368_DSL_BASE (0xdeadbeef)
|
||||
@@ -361,6 +434,8 @@ enum bcm63xx_regs_set {
|
||||
#define BCM_6368_PCMDMA_BASE (0xb0005800)
|
||||
#define BCM_6368_PCMDMAC_BASE (0xb0005a00)
|
||||
#define BCM_6368_PCMDMAS_BASE (0xb0005c00)
|
||||
#define BCM_6368_RNG_BASE (0xb0004180)
|
||||
#define BCM_6368_MISC_BASE (0xdeadbeef)
|
||||
|
||||
|
||||
extern const unsigned long *bcm63xx_regs_base;
|
||||
@@ -379,13 +454,13 @@ extern const unsigned long *bcm63xx_regs_base;
|
||||
__GEN_RSET_BASE(__cpu, UART1) \
|
||||
__GEN_RSET_BASE(__cpu, GPIO) \
|
||||
__GEN_RSET_BASE(__cpu, SPI) \
|
||||
__GEN_RSET_BASE(__cpu, SPI2) \
|
||||
__GEN_RSET_BASE(__cpu, UDC0) \
|
||||
__GEN_RSET_BASE(__cpu, OHCI0) \
|
||||
__GEN_RSET_BASE(__cpu, OHCI_PRIV) \
|
||||
__GEN_RSET_BASE(__cpu, USBH_PRIV) \
|
||||
__GEN_RSET_BASE(__cpu, MPI) \
|
||||
__GEN_RSET_BASE(__cpu, PCMCIA) \
|
||||
__GEN_RSET_BASE(__cpu, PCIE) \
|
||||
__GEN_RSET_BASE(__cpu, DSL) \
|
||||
__GEN_RSET_BASE(__cpu, ENET0) \
|
||||
__GEN_RSET_BASE(__cpu, ENET1) \
|
||||
@@ -407,6 +482,8 @@ extern const unsigned long *bcm63xx_regs_base;
|
||||
__GEN_RSET_BASE(__cpu, PCMDMA) \
|
||||
__GEN_RSET_BASE(__cpu, PCMDMAC) \
|
||||
__GEN_RSET_BASE(__cpu, PCMDMAS) \
|
||||
__GEN_RSET_BASE(__cpu, RNG) \
|
||||
__GEN_RSET_BASE(__cpu, MISC) \
|
||||
}
|
||||
|
||||
#define __GEN_CPU_REGS_TABLE(__cpu) \
|
||||
@@ -418,13 +495,13 @@ extern const unsigned long *bcm63xx_regs_base;
|
||||
[RSET_UART1] = BCM_## __cpu ##_UART1_BASE, \
|
||||
[RSET_GPIO] = BCM_## __cpu ##_GPIO_BASE, \
|
||||
[RSET_SPI] = BCM_## __cpu ##_SPI_BASE, \
|
||||
[RSET_SPI2] = BCM_## __cpu ##_SPI2_BASE, \
|
||||
[RSET_UDC0] = BCM_## __cpu ##_UDC0_BASE, \
|
||||
[RSET_OHCI0] = BCM_## __cpu ##_OHCI0_BASE, \
|
||||
[RSET_OHCI_PRIV] = BCM_## __cpu ##_OHCI_PRIV_BASE, \
|
||||
[RSET_USBH_PRIV] = BCM_## __cpu ##_USBH_PRIV_BASE, \
|
||||
[RSET_MPI] = BCM_## __cpu ##_MPI_BASE, \
|
||||
[RSET_PCMCIA] = BCM_## __cpu ##_PCMCIA_BASE, \
|
||||
[RSET_PCIE] = BCM_## __cpu ##_PCIE_BASE, \
|
||||
[RSET_DSL] = BCM_## __cpu ##_DSL_BASE, \
|
||||
[RSET_ENET0] = BCM_## __cpu ##_ENET0_BASE, \
|
||||
[RSET_ENET1] = BCM_## __cpu ##_ENET1_BASE, \
|
||||
@@ -446,6 +523,8 @@ extern const unsigned long *bcm63xx_regs_base;
|
||||
[RSET_PCMDMA] = BCM_## __cpu ##_PCMDMA_BASE, \
|
||||
[RSET_PCMDMAC] = BCM_## __cpu ##_PCMDMAC_BASE, \
|
||||
[RSET_PCMDMAS] = BCM_## __cpu ##_PCMDMAS_BASE, \
|
||||
[RSET_RNG] = BCM_## __cpu ##_RNG_BASE, \
|
||||
[RSET_MISC] = BCM_## __cpu ##_MISC_BASE, \
|
||||
|
||||
|
||||
static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
|
||||
@@ -453,6 +532,9 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
|
||||
#ifdef BCMCPU_RUNTIME_DETECT
|
||||
return bcm63xx_regs_base[set];
|
||||
#else
|
||||
#ifdef CONFIG_BCM63XX_CPU_6328
|
||||
__GEN_RSET(6328)
|
||||
#endif
|
||||
#ifdef CONFIG_BCM63XX_CPU_6338
|
||||
__GEN_RSET(6338)
|
||||
#endif
|
||||
@@ -478,6 +560,7 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
|
||||
*/
|
||||
enum bcm63xx_irq {
|
||||
IRQ_TIMER = 0,
|
||||
IRQ_SPI,
|
||||
IRQ_UART0,
|
||||
IRQ_UART1,
|
||||
IRQ_DSL,
|
||||
@@ -505,10 +588,52 @@ enum bcm63xx_irq {
|
||||
IRQ_XTM_DMA0,
|
||||
};
|
||||
|
||||
/*
|
||||
* 6328 irqs
|
||||
*/
|
||||
#define BCM_6328_HIGH_IRQ_BASE (IRQ_INTERNAL_BASE + 32)
|
||||
|
||||
#define BCM_6328_TIMER_IRQ (IRQ_INTERNAL_BASE + 31)
|
||||
#define BCM_6328_SPI_IRQ 0
|
||||
#define BCM_6328_UART0_IRQ (IRQ_INTERNAL_BASE + 28)
|
||||
#define BCM_6328_UART1_IRQ (BCM_6328_HIGH_IRQ_BASE + 7)
|
||||
#define BCM_6328_DSL_IRQ (IRQ_INTERNAL_BASE + 4)
|
||||
#define BCM_6328_UDC0_IRQ 0
|
||||
#define BCM_6328_ENET0_IRQ 0
|
||||
#define BCM_6328_ENET1_IRQ 0
|
||||
#define BCM_6328_ENET_PHY_IRQ (IRQ_INTERNAL_BASE + 12)
|
||||
#define BCM_6328_OHCI0_IRQ (IRQ_INTERNAL_BASE + 9)
|
||||
#define BCM_6328_EHCI0_IRQ (IRQ_INTERNAL_BASE + 10)
|
||||
#define BCM_6328_PCMCIA_IRQ 0
|
||||
#define BCM_6328_ENET0_RXDMA_IRQ 0
|
||||
#define BCM_6328_ENET0_TXDMA_IRQ 0
|
||||
#define BCM_6328_ENET1_RXDMA_IRQ 0
|
||||
#define BCM_6328_ENET1_TXDMA_IRQ 0
|
||||
#define BCM_6328_PCI_IRQ (IRQ_INTERNAL_BASE + 23)
|
||||
#define BCM_6328_ATM_IRQ 0
|
||||
#define BCM_6328_ENETSW_RXDMA0_IRQ (BCM_6328_HIGH_IRQ_BASE + 0)
|
||||
#define BCM_6328_ENETSW_RXDMA1_IRQ (BCM_6328_HIGH_IRQ_BASE + 1)
|
||||
#define BCM_6328_ENETSW_RXDMA2_IRQ (BCM_6328_HIGH_IRQ_BASE + 2)
|
||||
#define BCM_6328_ENETSW_RXDMA3_IRQ (BCM_6328_HIGH_IRQ_BASE + 3)
|
||||
#define BCM_6328_ENETSW_TXDMA0_IRQ (BCM_6328_HIGH_IRQ_BASE + 4)
|
||||
#define BCM_6328_ENETSW_TXDMA1_IRQ (BCM_6328_HIGH_IRQ_BASE + 5)
|
||||
#define BCM_6328_ENETSW_TXDMA2_IRQ (BCM_6328_HIGH_IRQ_BASE + 6)
|
||||
#define BCM_6328_ENETSW_TXDMA3_IRQ (BCM_6328_HIGH_IRQ_BASE + 7)
|
||||
#define BCM_6328_XTM_IRQ (BCM_6328_HIGH_IRQ_BASE + 31)
|
||||
#define BCM_6328_XTM_DMA0_IRQ (BCM_6328_HIGH_IRQ_BASE + 11)
|
||||
|
||||
#define BCM_6328_PCM_DMA0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6328_PCM_DMA1_IRQ (IRQ_INTERNAL_BASE + 3)
|
||||
#define BCM_6328_EXT_IRQ0 (IRQ_INTERNAL_BASE + 24)
|
||||
#define BCM_6328_EXT_IRQ1 (IRQ_INTERNAL_BASE + 25)
|
||||
#define BCM_6328_EXT_IRQ2 (IRQ_INTERNAL_BASE + 26)
|
||||
#define BCM_6328_EXT_IRQ3 (IRQ_INTERNAL_BASE + 27)
|
||||
|
||||
/*
|
||||
* 6338 irqs
|
||||
*/
|
||||
#define BCM_6338_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
|
||||
#define BCM_6338_SPI_IRQ (IRQ_INTERNAL_BASE + 1)
|
||||
#define BCM_6338_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6338_UART1_IRQ 0
|
||||
#define BCM_6338_DSL_IRQ (IRQ_INTERNAL_BASE + 5)
|
||||
@@ -539,6 +664,7 @@ enum bcm63xx_irq {
|
||||
* 6345 irqs
|
||||
*/
|
||||
#define BCM_6345_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
|
||||
#define BCM_6345_SPI_IRQ 0
|
||||
#define BCM_6345_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6345_UART1_IRQ 0
|
||||
#define BCM_6345_DSL_IRQ (IRQ_INTERNAL_BASE + 3)
|
||||
@@ -569,6 +695,7 @@ enum bcm63xx_irq {
|
||||
* 6348 irqs
|
||||
*/
|
||||
#define BCM_6348_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
|
||||
#define BCM_6348_SPI_IRQ (IRQ_INTERNAL_BASE + 1)
|
||||
#define BCM_6348_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6348_UART1_IRQ 0
|
||||
#define BCM_6348_DSL_IRQ (IRQ_INTERNAL_BASE + 4)
|
||||
@@ -599,6 +726,7 @@ enum bcm63xx_irq {
|
||||
* 6358 irqs
|
||||
*/
|
||||
#define BCM_6358_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
|
||||
#define BCM_6358_SPI_IRQ (IRQ_INTERNAL_BASE + 1)
|
||||
#define BCM_6358_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6358_UART1_IRQ (IRQ_INTERNAL_BASE + 3)
|
||||
#define BCM_6358_DSL_IRQ (IRQ_INTERNAL_BASE + 29)
|
||||
@@ -638,6 +766,7 @@ enum bcm63xx_irq {
|
||||
#define BCM_6368_HIGH_IRQ_BASE (IRQ_INTERNAL_BASE + 32)
|
||||
|
||||
#define BCM_6368_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
|
||||
#define BCM_6368_SPI_IRQ (IRQ_INTERNAL_BASE + 1)
|
||||
#define BCM_6368_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
|
||||
#define BCM_6368_UART1_IRQ (IRQ_INTERNAL_BASE + 3)
|
||||
#define BCM_6368_DSL_IRQ (IRQ_INTERNAL_BASE + 4)
|
||||
@@ -677,6 +806,7 @@ extern const int *bcm63xx_irqs;
|
||||
|
||||
#define __GEN_CPU_IRQ_TABLE(__cpu) \
|
||||
[IRQ_TIMER] = BCM_## __cpu ##_TIMER_IRQ, \
|
||||
[IRQ_SPI] = BCM_## __cpu ##_SPI_IRQ, \
|
||||
[IRQ_UART0] = BCM_## __cpu ##_UART0_IRQ, \
|
||||
[IRQ_UART1] = BCM_## __cpu ##_UART1_IRQ, \
|
||||
[IRQ_DSL] = BCM_## __cpu ##_DSL_IRQ, \
|
||||
|
12
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
Normal file
12
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef __BCM63XX_FLASH_H
|
||||
#define __BCM63XX_FLASH_H
|
||||
|
||||
enum {
|
||||
BCM63XX_FLASH_TYPE_PARALLEL,
|
||||
BCM63XX_FLASH_TYPE_SERIAL,
|
||||
BCM63XX_FLASH_TYPE_NAND,
|
||||
};
|
||||
|
||||
int __init bcm63xx_flash_register(void);
|
||||
|
||||
#endif /* __BCM63XX_FLASH_H */
|
89
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
Normal file
89
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef BCM63XX_DEV_SPI_H
|
||||
#define BCM63XX_DEV_SPI_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <bcm63xx_io.h>
|
||||
#include <bcm63xx_regs.h>
|
||||
|
||||
int __init bcm63xx_spi_register(void);
|
||||
|
||||
struct bcm63xx_spi_pdata {
|
||||
unsigned int fifo_size;
|
||||
int bus_num;
|
||||
int num_chipselect;
|
||||
u32 speed_hz;
|
||||
};
|
||||
|
||||
enum bcm63xx_regs_spi {
|
||||
SPI_CMD,
|
||||
SPI_INT_STATUS,
|
||||
SPI_INT_MASK_ST,
|
||||
SPI_INT_MASK,
|
||||
SPI_ST,
|
||||
SPI_CLK_CFG,
|
||||
SPI_FILL_BYTE,
|
||||
SPI_MSG_TAIL,
|
||||
SPI_RX_TAIL,
|
||||
SPI_MSG_CTL,
|
||||
SPI_MSG_DATA,
|
||||
SPI_RX_DATA,
|
||||
};
|
||||
|
||||
#define __GEN_SPI_RSET_BASE(__cpu, __rset) \
|
||||
case SPI_## __rset: \
|
||||
return SPI_## __cpu ##_## __rset;
|
||||
|
||||
#define __GEN_SPI_RSET(__cpu) \
|
||||
switch (reg) { \
|
||||
__GEN_SPI_RSET_BASE(__cpu, CMD) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, INT_STATUS) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, INT_MASK_ST) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, INT_MASK) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, ST) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, CLK_CFG) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, FILL_BYTE) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, MSG_TAIL) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, RX_TAIL) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, MSG_CTL) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, MSG_DATA) \
|
||||
__GEN_SPI_RSET_BASE(__cpu, RX_DATA) \
|
||||
}
|
||||
|
||||
#define __GEN_SPI_REGS_TABLE(__cpu) \
|
||||
[SPI_CMD] = SPI_## __cpu ##_CMD, \
|
||||
[SPI_INT_STATUS] = SPI_## __cpu ##_INT_STATUS, \
|
||||
[SPI_INT_MASK_ST] = SPI_## __cpu ##_INT_MASK_ST, \
|
||||
[SPI_INT_MASK] = SPI_## __cpu ##_INT_MASK, \
|
||||
[SPI_ST] = SPI_## __cpu ##_ST, \
|
||||
[SPI_CLK_CFG] = SPI_## __cpu ##_CLK_CFG, \
|
||||
[SPI_FILL_BYTE] = SPI_## __cpu ##_FILL_BYTE, \
|
||||
[SPI_MSG_TAIL] = SPI_## __cpu ##_MSG_TAIL, \
|
||||
[SPI_RX_TAIL] = SPI_## __cpu ##_RX_TAIL, \
|
||||
[SPI_MSG_CTL] = SPI_## __cpu ##_MSG_CTL, \
|
||||
[SPI_MSG_DATA] = SPI_## __cpu ##_MSG_DATA, \
|
||||
[SPI_RX_DATA] = SPI_## __cpu ##_RX_DATA,
|
||||
|
||||
static inline unsigned long bcm63xx_spireg(enum bcm63xx_regs_spi reg)
|
||||
{
|
||||
#ifdef BCMCPU_RUNTIME_DETECT
|
||||
extern const unsigned long *bcm63xx_regs_spi;
|
||||
|
||||
return bcm63xx_regs_spi[reg];
|
||||
#else
|
||||
#ifdef CONFIG_BCM63XX_CPU_6338
|
||||
__GEN_SPI_RSET(6338)
|
||||
#endif
|
||||
#ifdef CONFIG_BCM63XX_CPU_6348
|
||||
__GEN_SPI_RSET(6348)
|
||||
#endif
|
||||
#ifdef CONFIG_BCM63XX_CPU_6358
|
||||
__GEN_SPI_RSET(6358)
|
||||
#endif
|
||||
#ifdef CONFIG_BCM63XX_CPU_6368
|
||||
__GEN_SPI_RSET(6368)
|
||||
#endif
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* BCM63XX_DEV_SPI_H */
|
@@ -9,6 +9,8 @@ int __init bcm63xx_gpio_init(void);
|
||||
static inline unsigned long bcm63xx_gpio_count(void)
|
||||
{
|
||||
switch (bcm63xx_get_cpu_id()) {
|
||||
case BCM6328_CPU_ID:
|
||||
return 32;
|
||||
case BCM6358_CPU_ID:
|
||||
return 40;
|
||||
case BCM6338_CPU_ID:
|
||||
|
@@ -40,6 +40,10 @@
|
||||
#define BCM_CB_MEM_END_PA (BCM_CB_MEM_BASE_PA + \
|
||||
BCM_CB_MEM_SIZE - 1)
|
||||
|
||||
#define BCM_PCIE_MEM_BASE_PA 0x10f00000
|
||||
#define BCM_PCIE_MEM_SIZE (16 * 1024 * 1024)
|
||||
#define BCM_PCIE_MEM_END_PA (BCM_PCIE_MEM_BASE_PA + \
|
||||
BCM_PCIE_MEM_SIZE - 1)
|
||||
|
||||
/*
|
||||
* Internal registers are accessed through KSEG3
|
||||
@@ -85,11 +89,15 @@
|
||||
#define bcm_mpi_writel(v, o) bcm_rset_writel(RSET_MPI, (v), (o))
|
||||
#define bcm_pcmcia_readl(o) bcm_rset_readl(RSET_PCMCIA, (o))
|
||||
#define bcm_pcmcia_writel(v, o) bcm_rset_writel(RSET_PCMCIA, (v), (o))
|
||||
#define bcm_pcie_readl(o) bcm_rset_readl(RSET_PCIE, (o))
|
||||
#define bcm_pcie_writel(v, o) bcm_rset_writel(RSET_PCIE, (v), (o))
|
||||
#define bcm_sdram_readl(o) bcm_rset_readl(RSET_SDRAM, (o))
|
||||
#define bcm_sdram_writel(v, o) bcm_rset_writel(RSET_SDRAM, (v), (o))
|
||||
#define bcm_memc_readl(o) bcm_rset_readl(RSET_MEMC, (o))
|
||||
#define bcm_memc_writel(v, o) bcm_rset_writel(RSET_MEMC, (v), (o))
|
||||
#define bcm_ddr_readl(o) bcm_rset_readl(RSET_DDR, (o))
|
||||
#define bcm_ddr_writel(v, o) bcm_rset_writel(RSET_DDR, (v), (o))
|
||||
#define bcm_misc_readl(o) bcm_rset_readl(RSET_MISC, (o))
|
||||
#define bcm_misc_writel(v, o) bcm_rset_writel(RSET_MISC, (v), (o))
|
||||
|
||||
#endif /* ! BCM63XX_IO_H_ */
|
||||
|
@@ -15,6 +15,30 @@
|
||||
/* Clock Control register */
|
||||
#define PERF_CKCTL_REG 0x4
|
||||
|
||||
#define CKCTL_6328_PHYMIPS_EN (1 << 0)
|
||||
#define CKCTL_6328_ADSL_QPROC_EN (1 << 1)
|
||||
#define CKCTL_6328_ADSL_AFE_EN (1 << 2)
|
||||
#define CKCTL_6328_ADSL_EN (1 << 3)
|
||||
#define CKCTL_6328_MIPS_EN (1 << 4)
|
||||
#define CKCTL_6328_SAR_EN (1 << 5)
|
||||
#define CKCTL_6328_PCM_EN (1 << 6)
|
||||
#define CKCTL_6328_USBD_EN (1 << 7)
|
||||
#define CKCTL_6328_USBH_EN (1 << 8)
|
||||
#define CKCTL_6328_HSSPI_EN (1 << 9)
|
||||
#define CKCTL_6328_PCIE_EN (1 << 10)
|
||||
#define CKCTL_6328_ROBOSW_EN (1 << 11)
|
||||
|
||||
#define CKCTL_6328_ALL_SAFE_EN (CKCTL_6328_PHYMIPS_EN | \
|
||||
CKCTL_6328_ADSL_QPROC_EN | \
|
||||
CKCTL_6328_ADSL_AFE_EN | \
|
||||
CKCTL_6328_ADSL_EN | \
|
||||
CKCTL_6328_SAR_EN | \
|
||||
CKCTL_6328_PCM_EN | \
|
||||
CKCTL_6328_USBD_EN | \
|
||||
CKCTL_6328_USBH_EN | \
|
||||
CKCTL_6328_ROBOSW_EN | \
|
||||
CKCTL_6328_PCIE_EN)
|
||||
|
||||
#define CKCTL_6338_ADSLPHY_EN (1 << 0)
|
||||
#define CKCTL_6338_MPI_EN (1 << 1)
|
||||
#define CKCTL_6338_DRAM_EN (1 << 2)
|
||||
@@ -90,35 +114,36 @@
|
||||
#define CKCTL_6368_PHYMIPS_EN (1 << 6)
|
||||
#define CKCTL_6368_SWPKT_USB_EN (1 << 7)
|
||||
#define CKCTL_6368_SWPKT_SAR_EN (1 << 8)
|
||||
#define CKCTL_6368_SPI_CLK_EN (1 << 9)
|
||||
#define CKCTL_6368_USBD_CLK_EN (1 << 10)
|
||||
#define CKCTL_6368_SAR_CLK_EN (1 << 11)
|
||||
#define CKCTL_6368_ROBOSW_CLK_EN (1 << 12)
|
||||
#define CKCTL_6368_UTOPIA_CLK_EN (1 << 13)
|
||||
#define CKCTL_6368_PCM_CLK_EN (1 << 14)
|
||||
#define CKCTL_6368_USBH_CLK_EN (1 << 15)
|
||||
#define CKCTL_6368_SPI_EN (1 << 9)
|
||||
#define CKCTL_6368_USBD_EN (1 << 10)
|
||||
#define CKCTL_6368_SAR_EN (1 << 11)
|
||||
#define CKCTL_6368_ROBOSW_EN (1 << 12)
|
||||
#define CKCTL_6368_UTOPIA_EN (1 << 13)
|
||||
#define CKCTL_6368_PCM_EN (1 << 14)
|
||||
#define CKCTL_6368_USBH_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 << 18)
|
||||
#define CKCTL_6368_NAND_EN (1 << 17)
|
||||
#define CKCTL_6368_IPSEC_EN (1 << 18)
|
||||
|
||||
#define CKCTL_6368_ALL_SAFE_EN (CKCTL_6368_SWPKT_USB_EN | \
|
||||
CKCTL_6368_SWPKT_SAR_EN | \
|
||||
CKCTL_6368_SPI_CLK_EN | \
|
||||
CKCTL_6368_USBD_CLK_EN | \
|
||||
CKCTL_6368_SAR_CLK_EN | \
|
||||
CKCTL_6368_ROBOSW_CLK_EN | \
|
||||
CKCTL_6368_UTOPIA_CLK_EN | \
|
||||
CKCTL_6368_PCM_CLK_EN | \
|
||||
CKCTL_6368_USBH_CLK_EN | \
|
||||
CKCTL_6368_SPI_EN | \
|
||||
CKCTL_6368_USBD_EN | \
|
||||
CKCTL_6368_SAR_EN | \
|
||||
CKCTL_6368_ROBOSW_EN | \
|
||||
CKCTL_6368_UTOPIA_EN | \
|
||||
CKCTL_6368_PCM_EN | \
|
||||
CKCTL_6368_USBH_EN | \
|
||||
CKCTL_6368_DISABLE_GLESS_EN | \
|
||||
CKCTL_6368_NAND_CLK_EN | \
|
||||
CKCTL_6368_IPSEC_CLK_EN)
|
||||
CKCTL_6368_NAND_EN | \
|
||||
CKCTL_6368_IPSEC_EN)
|
||||
|
||||
/* System PLL Control register */
|
||||
#define PERF_SYS_PLL_CTL_REG 0x8
|
||||
#define SYS_PLL_SOFT_RESET 0x1
|
||||
|
||||
/* Interrupt Mask register */
|
||||
#define PERF_IRQMASK_6328_REG 0x20
|
||||
#define PERF_IRQMASK_6338_REG 0xc
|
||||
#define PERF_IRQMASK_6345_REG 0xc
|
||||
#define PERF_IRQMASK_6348_REG 0xc
|
||||
@@ -126,6 +151,7 @@
|
||||
#define PERF_IRQMASK_6368_REG 0x20
|
||||
|
||||
/* Interrupt Status register */
|
||||
#define PERF_IRQSTAT_6328_REG 0x28
|
||||
#define PERF_IRQSTAT_6338_REG 0x10
|
||||
#define PERF_IRQSTAT_6345_REG 0x10
|
||||
#define PERF_IRQSTAT_6348_REG 0x10
|
||||
@@ -133,6 +159,7 @@
|
||||
#define PERF_IRQSTAT_6368_REG 0x28
|
||||
|
||||
/* External Interrupt Configuration register */
|
||||
#define PERF_EXTIRQ_CFG_REG_6328 0x18
|
||||
#define PERF_EXTIRQ_CFG_REG_6338 0x14
|
||||
#define PERF_EXTIRQ_CFG_REG_6348 0x14
|
||||
#define PERF_EXTIRQ_CFG_REG_6358 0x14
|
||||
@@ -162,8 +189,21 @@
|
||||
|
||||
/* Soft Reset register */
|
||||
#define PERF_SOFTRESET_REG 0x28
|
||||
#define PERF_SOFTRESET_6328_REG 0x10
|
||||
#define PERF_SOFTRESET_6368_REG 0x10
|
||||
|
||||
#define SOFTRESET_6328_SPI_MASK (1 << 0)
|
||||
#define SOFTRESET_6328_EPHY_MASK (1 << 1)
|
||||
#define SOFTRESET_6328_SAR_MASK (1 << 2)
|
||||
#define SOFTRESET_6328_ENETSW_MASK (1 << 3)
|
||||
#define SOFTRESET_6328_USBS_MASK (1 << 4)
|
||||
#define SOFTRESET_6328_USBH_MASK (1 << 5)
|
||||
#define SOFTRESET_6328_PCM_MASK (1 << 6)
|
||||
#define SOFTRESET_6328_PCIE_CORE_MASK (1 << 7)
|
||||
#define SOFTRESET_6328_PCIE_MASK (1 << 8)
|
||||
#define SOFTRESET_6328_PCIE_EXT_MASK (1 << 9)
|
||||
#define SOFTRESET_6328_PCIE_HARD_MASK (1 << 10)
|
||||
|
||||
#define SOFTRESET_6338_SPI_MASK (1 << 0)
|
||||
#define SOFTRESET_6338_ENET_MASK (1 << 2)
|
||||
#define SOFTRESET_6338_USBH_MASK (1 << 3)
|
||||
@@ -307,6 +347,8 @@
|
||||
/* Watchdog reset length register */
|
||||
#define WDT_RSTLEN_REG 0x8
|
||||
|
||||
/* Watchdog soft reset register (BCM6328 only) */
|
||||
#define WDT_SOFTRESET_REG 0xc
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_UARTx
|
||||
@@ -507,6 +549,15 @@
|
||||
#define GPIO_BASEMODE_6368_MASK 0x7
|
||||
/* those bits must be kept as read in gpio basemode register*/
|
||||
|
||||
#define GPIO_STRAPBUS_REG 0x40
|
||||
#define STRAPBUS_6358_BOOT_SEL_PARALLEL (1 << 1)
|
||||
#define STRAPBUS_6358_BOOT_SEL_SERIAL (0 << 1)
|
||||
#define STRAPBUS_6368_BOOT_SEL_MASK 0x3
|
||||
#define STRAPBUS_6368_BOOT_SEL_NAND 0
|
||||
#define STRAPBUS_6368_BOOT_SEL_SERIAL 1
|
||||
#define STRAPBUS_6368_BOOT_SEL_PARALLEL 3
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_ENET
|
||||
*************************************************************************/
|
||||
@@ -924,6 +975,8 @@
|
||||
* _REG relative to RSET_DDR
|
||||
*************************************************************************/
|
||||
|
||||
#define DDR_CSEND_REG 0x8
|
||||
|
||||
#define DDR_DMIPSPLLCFG_REG 0x18
|
||||
#define DMIPSPLLCFG_M1_SHIFT 0
|
||||
#define DMIPSPLLCFG_M1_MASK (0xff << DMIPSPLLCFG_M1_SHIFT)
|
||||
@@ -973,4 +1026,201 @@
|
||||
#define M2M_SRCID_REG(x) ((x) * 0x40 + 0x14)
|
||||
#define M2M_DSTID_REG(x) ((x) * 0x40 + 0x18)
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_RNG
|
||||
*************************************************************************/
|
||||
|
||||
#define RNG_CTRL 0x00
|
||||
#define RNG_EN (1 << 0)
|
||||
|
||||
#define RNG_STAT 0x04
|
||||
#define RNG_AVAIL_MASK (0xff000000)
|
||||
|
||||
#define RNG_DATA 0x08
|
||||
#define RNG_THRES 0x0c
|
||||
#define RNG_MASK 0x10
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_SPI
|
||||
*************************************************************************/
|
||||
|
||||
/* BCM 6338 SPI core */
|
||||
#define SPI_6338_CMD 0x00 /* 16-bits register */
|
||||
#define SPI_6338_INT_STATUS 0x02
|
||||
#define SPI_6338_INT_MASK_ST 0x03
|
||||
#define SPI_6338_INT_MASK 0x04
|
||||
#define SPI_6338_ST 0x05
|
||||
#define SPI_6338_CLK_CFG 0x06
|
||||
#define SPI_6338_FILL_BYTE 0x07
|
||||
#define SPI_6338_MSG_TAIL 0x09
|
||||
#define SPI_6338_RX_TAIL 0x0b
|
||||
#define SPI_6338_MSG_CTL 0x40
|
||||
#define SPI_6338_MSG_DATA 0x41
|
||||
#define SPI_6338_MSG_DATA_SIZE 0x3f
|
||||
#define SPI_6338_RX_DATA 0x80
|
||||
#define SPI_6338_RX_DATA_SIZE 0x3f
|
||||
|
||||
/* BCM 6348 SPI core */
|
||||
#define SPI_6348_CMD 0x00 /* 16-bits register */
|
||||
#define SPI_6348_INT_STATUS 0x02
|
||||
#define SPI_6348_INT_MASK_ST 0x03
|
||||
#define SPI_6348_INT_MASK 0x04
|
||||
#define SPI_6348_ST 0x05
|
||||
#define SPI_6348_CLK_CFG 0x06
|
||||
#define SPI_6348_FILL_BYTE 0x07
|
||||
#define SPI_6348_MSG_TAIL 0x09
|
||||
#define SPI_6348_RX_TAIL 0x0b
|
||||
#define SPI_6348_MSG_CTL 0x40
|
||||
#define SPI_6348_MSG_DATA 0x41
|
||||
#define SPI_6348_MSG_DATA_SIZE 0x3f
|
||||
#define SPI_6348_RX_DATA 0x80
|
||||
#define SPI_6348_RX_DATA_SIZE 0x3f
|
||||
|
||||
/* BCM 6358 SPI core */
|
||||
#define SPI_6358_MSG_CTL 0x00 /* 16-bits register */
|
||||
#define SPI_6358_MSG_DATA 0x02
|
||||
#define SPI_6358_MSG_DATA_SIZE 0x21e
|
||||
#define SPI_6358_RX_DATA 0x400
|
||||
#define SPI_6358_RX_DATA_SIZE 0x220
|
||||
#define SPI_6358_CMD 0x700 /* 16-bits register */
|
||||
#define SPI_6358_INT_STATUS 0x702
|
||||
#define SPI_6358_INT_MASK_ST 0x703
|
||||
#define SPI_6358_INT_MASK 0x704
|
||||
#define SPI_6358_ST 0x705
|
||||
#define SPI_6358_CLK_CFG 0x706
|
||||
#define SPI_6358_FILL_BYTE 0x707
|
||||
#define SPI_6358_MSG_TAIL 0x709
|
||||
#define SPI_6358_RX_TAIL 0x70B
|
||||
|
||||
/* BCM 6358 SPI core */
|
||||
#define SPI_6368_MSG_CTL 0x00 /* 16-bits register */
|
||||
#define SPI_6368_MSG_DATA 0x02
|
||||
#define SPI_6368_MSG_DATA_SIZE 0x21e
|
||||
#define SPI_6368_RX_DATA 0x400
|
||||
#define SPI_6368_RX_DATA_SIZE 0x220
|
||||
#define SPI_6368_CMD 0x700 /* 16-bits register */
|
||||
#define SPI_6368_INT_STATUS 0x702
|
||||
#define SPI_6368_INT_MASK_ST 0x703
|
||||
#define SPI_6368_INT_MASK 0x704
|
||||
#define SPI_6368_ST 0x705
|
||||
#define SPI_6368_CLK_CFG 0x706
|
||||
#define SPI_6368_FILL_BYTE 0x707
|
||||
#define SPI_6368_MSG_TAIL 0x709
|
||||
#define SPI_6368_RX_TAIL 0x70B
|
||||
|
||||
/* Shared SPI definitions */
|
||||
|
||||
/* Message configuration */
|
||||
#define SPI_FD_RW 0x00
|
||||
#define SPI_HD_W 0x01
|
||||
#define SPI_HD_R 0x02
|
||||
#define SPI_BYTE_CNT_SHIFT 0
|
||||
#define SPI_MSG_TYPE_SHIFT 14
|
||||
|
||||
/* Command */
|
||||
#define SPI_CMD_NOOP 0x00
|
||||
#define SPI_CMD_SOFT_RESET 0x01
|
||||
#define SPI_CMD_HARD_RESET 0x02
|
||||
#define SPI_CMD_START_IMMEDIATE 0x03
|
||||
#define SPI_CMD_COMMAND_SHIFT 0
|
||||
#define SPI_CMD_COMMAND_MASK 0x000f
|
||||
#define SPI_CMD_DEVICE_ID_SHIFT 4
|
||||
#define SPI_CMD_PREPEND_BYTE_CNT_SHIFT 8
|
||||
#define SPI_CMD_ONE_BYTE_SHIFT 11
|
||||
#define SPI_CMD_ONE_WIRE_SHIFT 12
|
||||
#define SPI_DEV_ID_0 0
|
||||
#define SPI_DEV_ID_1 1
|
||||
#define SPI_DEV_ID_2 2
|
||||
#define SPI_DEV_ID_3 3
|
||||
|
||||
/* Interrupt mask */
|
||||
#define SPI_INTR_CMD_DONE 0x01
|
||||
#define SPI_INTR_RX_OVERFLOW 0x02
|
||||
#define SPI_INTR_TX_UNDERFLOW 0x04
|
||||
#define SPI_INTR_TX_OVERFLOW 0x08
|
||||
#define SPI_INTR_RX_UNDERFLOW 0x10
|
||||
#define SPI_INTR_CLEAR_ALL 0x1f
|
||||
|
||||
/* Status */
|
||||
#define SPI_RX_EMPTY 0x02
|
||||
#define SPI_CMD_BUSY 0x04
|
||||
#define SPI_SERIAL_BUSY 0x08
|
||||
|
||||
/* Clock configuration */
|
||||
#define SPI_CLK_20MHZ 0x00
|
||||
#define SPI_CLK_0_391MHZ 0x01
|
||||
#define SPI_CLK_0_781MHZ 0x02 /* default */
|
||||
#define SPI_CLK_1_563MHZ 0x03
|
||||
#define SPI_CLK_3_125MHZ 0x04
|
||||
#define SPI_CLK_6_250MHZ 0x05
|
||||
#define SPI_CLK_12_50MHZ 0x06
|
||||
#define SPI_CLK_MASK 0x07
|
||||
#define SPI_SSOFFTIME_MASK 0x38
|
||||
#define SPI_SSOFFTIME_SHIFT 3
|
||||
#define SPI_BYTE_SWAP 0x80
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_MISC
|
||||
*************************************************************************/
|
||||
#define MISC_SERDES_CTRL_REG 0x0
|
||||
#define SERDES_PCIE_EN (1 << 0)
|
||||
#define SERDES_PCIE_EXD_EN (1 << 15)
|
||||
|
||||
#define MISC_STRAPBUS_6328_REG 0x240
|
||||
#define STRAPBUS_6328_FCVO_SHIFT 7
|
||||
#define STRAPBUS_6328_FCVO_MASK (0x1f << STRAPBUS_6328_FCVO_SHIFT)
|
||||
#define STRAPBUS_6328_BOOT_SEL_SERIAL (1 << 28)
|
||||
#define STRAPBUS_6328_BOOT_SEL_NAND (0 << 28)
|
||||
|
||||
/*************************************************************************
|
||||
* _REG relative to RSET_PCIE
|
||||
*************************************************************************/
|
||||
|
||||
#define PCIE_CONFIG2_REG 0x408
|
||||
#define CONFIG2_BAR1_SIZE_EN 1
|
||||
#define CONFIG2_BAR1_SIZE_MASK 0xf
|
||||
|
||||
#define PCIE_IDVAL3_REG 0x43c
|
||||
#define IDVAL3_CLASS_CODE_MASK 0xffffff
|
||||
#define IDVAL3_SUBCLASS_SHIFT 8
|
||||
#define IDVAL3_CLASS_SHIFT 16
|
||||
|
||||
#define PCIE_DLSTATUS_REG 0x1048
|
||||
#define DLSTATUS_PHYLINKUP (1 << 13)
|
||||
|
||||
#define PCIE_BRIDGE_OPT1_REG 0x2820
|
||||
#define OPT1_RD_BE_OPT_EN (1 << 7)
|
||||
#define OPT1_RD_REPLY_BE_FIX_EN (1 << 9)
|
||||
#define OPT1_PCIE_BRIDGE_HOLE_DET_EN (1 << 11)
|
||||
#define OPT1_L1_INT_STATUS_MASK_POL (1 << 12)
|
||||
|
||||
#define PCIE_BRIDGE_OPT2_REG 0x2824
|
||||
#define OPT2_UBUS_UR_DECODE_DIS (1 << 2)
|
||||
#define OPT2_TX_CREDIT_CHK_EN (1 << 4)
|
||||
#define OPT2_CFG_TYPE1_BD_SEL (1 << 7)
|
||||
#define OPT2_CFG_TYPE1_BUS_NO_SHIFT 16
|
||||
#define OPT2_CFG_TYPE1_BUS_NO_MASK (0xff << OPT2_CFG_TYPE1_BUS_NO_SHIFT)
|
||||
|
||||
#define PCIE_BRIDGE_BAR0_BASEMASK_REG 0x2828
|
||||
#define PCIE_BRIDGE_BAR1_BASEMASK_REG 0x2830
|
||||
#define BASEMASK_REMAP_EN (1 << 0)
|
||||
#define BASEMASK_SWAP_EN (1 << 1)
|
||||
#define BASEMASK_MASK_SHIFT 4
|
||||
#define BASEMASK_MASK_MASK (0xfff << BASEMASK_MASK_SHIFT)
|
||||
#define BASEMASK_BASE_SHIFT 20
|
||||
#define BASEMASK_BASE_MASK (0xfff << BASEMASK_BASE_SHIFT)
|
||||
|
||||
#define PCIE_BRIDGE_BAR0_REBASE_ADDR_REG 0x282c
|
||||
#define PCIE_BRIDGE_BAR1_REBASE_ADDR_REG 0x2834
|
||||
#define REBASE_ADDR_BASE_SHIFT 20
|
||||
#define REBASE_ADDR_BASE_MASK (0xfff << REBASE_ADDR_BASE_SHIFT)
|
||||
|
||||
#define PCIE_BRIDGE_RC_INT_MASK_REG 0x2854
|
||||
#define PCIE_RC_INT_A (1 << 0)
|
||||
#define PCIE_RC_INT_B (1 << 1)
|
||||
#define PCIE_RC_INT_C (1 << 2)
|
||||
#define PCIE_RC_INT_D (1 << 3)
|
||||
|
||||
#define PCIE_DEVICE_OFFSET 0x8000
|
||||
|
||||
#endif /* BCM63XX_REGS_H_ */
|
||||
|
@@ -18,6 +18,7 @@ static inline int is_bcm63xx_internal_registers(phys_t offset)
|
||||
if (offset >= 0xfff00000)
|
||||
return 1;
|
||||
break;
|
||||
case BCM6328_CPU_ID:
|
||||
case BCM6368_CPU_ID:
|
||||
if (offset >= 0xb0000000 && offset < 0xb1000000)
|
||||
return 1;
|
||||
|
@@ -41,61 +41,26 @@ enum octeon_irq {
|
||||
OCTEON_IRQ_TWSI,
|
||||
OCTEON_IRQ_TWSI2,
|
||||
OCTEON_IRQ_RML,
|
||||
OCTEON_IRQ_TRACE0,
|
||||
OCTEON_IRQ_GMX_DRP0 = OCTEON_IRQ_TRACE0 + 4,
|
||||
OCTEON_IRQ_IPD_DRP = OCTEON_IRQ_GMX_DRP0 + 5,
|
||||
OCTEON_IRQ_KEY_ZERO,
|
||||
OCTEON_IRQ_TIMER0,
|
||||
OCTEON_IRQ_TIMER1,
|
||||
OCTEON_IRQ_TIMER2,
|
||||
OCTEON_IRQ_TIMER3,
|
||||
OCTEON_IRQ_USB0,
|
||||
OCTEON_IRQ_USB1,
|
||||
OCTEON_IRQ_PCM,
|
||||
OCTEON_IRQ_MPI,
|
||||
OCTEON_IRQ_POWIQ,
|
||||
OCTEON_IRQ_IPDPPTHR,
|
||||
OCTEON_IRQ_MII0,
|
||||
OCTEON_IRQ_MII1,
|
||||
OCTEON_IRQ_BOOTDMA,
|
||||
|
||||
OCTEON_IRQ_NAND,
|
||||
OCTEON_IRQ_MIO, /* Summary of MIO_BOOT_ERR */
|
||||
OCTEON_IRQ_IOB, /* Summary of IOB_INT_SUM */
|
||||
OCTEON_IRQ_FPA, /* Summary of FPA_INT_SUM */
|
||||
OCTEON_IRQ_POW, /* Summary of POW_ECC_ERR */
|
||||
OCTEON_IRQ_L2C, /* Summary of L2C_INT_STAT */
|
||||
OCTEON_IRQ_IPD, /* Summary of IPD_INT_SUM */
|
||||
OCTEON_IRQ_PIP, /* Summary of PIP_INT_REG */
|
||||
OCTEON_IRQ_PKO, /* Summary of PKO_REG_ERROR */
|
||||
OCTEON_IRQ_ZIP, /* Summary of ZIP_ERROR */
|
||||
OCTEON_IRQ_TIM, /* Summary of TIM_REG_ERROR */
|
||||
OCTEON_IRQ_RAD, /* Summary of RAD_REG_ERROR */
|
||||
OCTEON_IRQ_KEY, /* Summary of KEY_INT_SUM */
|
||||
OCTEON_IRQ_DFA, /* Summary of DFA */
|
||||
OCTEON_IRQ_USBCTL, /* Summary of USBN0_INT_SUM */
|
||||
OCTEON_IRQ_SLI, /* Summary of SLI_INT_SUM */
|
||||
OCTEON_IRQ_DPI, /* Summary of DPI_INT_SUM */
|
||||
OCTEON_IRQ_AGX0, /* Summary of GMX0*+PCS0_INT*_REG */
|
||||
OCTEON_IRQ_AGL = OCTEON_IRQ_AGX0 + 5,
|
||||
OCTEON_IRQ_PTP,
|
||||
OCTEON_IRQ_PEM0,
|
||||
OCTEON_IRQ_PEM1,
|
||||
OCTEON_IRQ_SRIO0,
|
||||
OCTEON_IRQ_SRIO1,
|
||||
OCTEON_IRQ_LMC0,
|
||||
OCTEON_IRQ_DFM = OCTEON_IRQ_LMC0 + 4, /* Summary of DFM */
|
||||
OCTEON_IRQ_RST,
|
||||
#ifndef CONFIG_PCI_MSI
|
||||
OCTEON_IRQ_LAST = 127
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
/* 152 - 407 represent the MSI interrupts 0-255 */
|
||||
#define OCTEON_IRQ_MSI_BIT0 (OCTEON_IRQ_RST + 1)
|
||||
/* 256 - 511 represent the MSI interrupts 0-255 */
|
||||
#define OCTEON_IRQ_MSI_BIT0 (256)
|
||||
|
||||
#define OCTEON_IRQ_MSI_LAST (OCTEON_IRQ_MSI_BIT0 + 255)
|
||||
#define OCTEON_IRQ_LAST (OCTEON_IRQ_MSI_LAST + 1)
|
||||
#else
|
||||
#define OCTEON_IRQ_LAST (OCTEON_IRQ_RST + 1)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -19,6 +19,8 @@
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
#define JZ_NAND_NUM_BANKS 4
|
||||
|
||||
struct jz_nand_platform_data {
|
||||
int num_partitions;
|
||||
struct mtd_partition *partitions;
|
||||
@@ -27,6 +29,8 @@ struct jz_nand_platform_data {
|
||||
|
||||
unsigned int busy_gpio;
|
||||
|
||||
unsigned char banks[JZ_NAND_NUM_BANKS];
|
||||
|
||||
void (*ident_callback)(struct platform_device *, struct nand_chip *,
|
||||
struct mtd_partition **, int *num_partitions);
|
||||
};
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kconfig.h>
|
||||
|
||||
/* loongson internal northbridge initialization */
|
||||
extern void bonito_irq_init(void);
|
||||
@@ -66,7 +67,7 @@ extern int mach_i8259_irq(void);
|
||||
#include <linux/interrupt.h>
|
||||
static inline void do_perfcnt_IRQ(void)
|
||||
{
|
||||
#if defined(CONFIG_OPROFILE) || defined(CONFIG_OPROFILE_MODULE)
|
||||
#if IS_ENABLED(CONFIG_OPROFILE)
|
||||
do_IRQ(LOONGSON2_PERFCNT_IRQ);
|
||||
#endif
|
||||
}
|
||||
|
73
arch/mips/include/asm/mach-loongson1/irq.h
Normal file
73
arch/mips/include/asm/mach-loongson1/irq.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* IRQ mappings for Loongson 1
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_IRQ_H
|
||||
#define __ASM_MACH_LOONGSON1_IRQ_H
|
||||
|
||||
/*
|
||||
* CPU core Interrupt Numbers
|
||||
*/
|
||||
#define MIPS_CPU_IRQ_BASE 0
|
||||
#define MIPS_CPU_IRQ(x) (MIPS_CPU_IRQ_BASE + (x))
|
||||
|
||||
#define SOFTINT0_IRQ MIPS_CPU_IRQ(0)
|
||||
#define SOFTINT1_IRQ MIPS_CPU_IRQ(1)
|
||||
#define INT0_IRQ MIPS_CPU_IRQ(2)
|
||||
#define INT1_IRQ MIPS_CPU_IRQ(3)
|
||||
#define INT2_IRQ MIPS_CPU_IRQ(4)
|
||||
#define INT3_IRQ MIPS_CPU_IRQ(5)
|
||||
#define INT4_IRQ MIPS_CPU_IRQ(6)
|
||||
#define TIMER_IRQ MIPS_CPU_IRQ(7) /* cpu timer */
|
||||
|
||||
#define MIPS_CPU_IRQS (MIPS_CPU_IRQ(7) + 1 - MIPS_CPU_IRQ_BASE)
|
||||
|
||||
/*
|
||||
* INT0~3 Interrupt Numbers
|
||||
*/
|
||||
#define LS1X_IRQ_BASE MIPS_CPU_IRQS
|
||||
#define LS1X_IRQ(n, x) (LS1X_IRQ_BASE + (n << 5) + (x))
|
||||
|
||||
#define LS1X_UART0_IRQ LS1X_IRQ(0, 2)
|
||||
#define LS1X_UART1_IRQ LS1X_IRQ(0, 3)
|
||||
#define LS1X_UART2_IRQ LS1X_IRQ(0, 4)
|
||||
#define LS1X_UART3_IRQ LS1X_IRQ(0, 5)
|
||||
#define LS1X_CAN0_IRQ LS1X_IRQ(0, 6)
|
||||
#define LS1X_CAN1_IRQ LS1X_IRQ(0, 7)
|
||||
#define LS1X_SPI0_IRQ LS1X_IRQ(0, 8)
|
||||
#define LS1X_SPI1_IRQ LS1X_IRQ(0, 9)
|
||||
#define LS1X_AC97_IRQ LS1X_IRQ(0, 10)
|
||||
#define LS1X_DMA0_IRQ LS1X_IRQ(0, 13)
|
||||
#define LS1X_DMA1_IRQ LS1X_IRQ(0, 14)
|
||||
#define LS1X_DMA2_IRQ LS1X_IRQ(0, 15)
|
||||
#define LS1X_PWM0_IRQ LS1X_IRQ(0, 17)
|
||||
#define LS1X_PWM1_IRQ LS1X_IRQ(0, 18)
|
||||
#define LS1X_PWM2_IRQ LS1X_IRQ(0, 19)
|
||||
#define LS1X_PWM3_IRQ LS1X_IRQ(0, 20)
|
||||
#define LS1X_RTC_INT0_IRQ LS1X_IRQ(0, 21)
|
||||
#define LS1X_RTC_INT1_IRQ LS1X_IRQ(0, 22)
|
||||
#define LS1X_RTC_INT2_IRQ LS1X_IRQ(0, 23)
|
||||
#define LS1X_TOY_INT0_IRQ LS1X_IRQ(0, 24)
|
||||
#define LS1X_TOY_INT1_IRQ LS1X_IRQ(0, 25)
|
||||
#define LS1X_TOY_INT2_IRQ LS1X_IRQ(0, 26)
|
||||
#define LS1X_RTC_TICK_IRQ LS1X_IRQ(0, 27)
|
||||
#define LS1X_TOY_TICK_IRQ LS1X_IRQ(0, 28)
|
||||
|
||||
#define LS1X_EHCI_IRQ LS1X_IRQ(1, 0)
|
||||
#define LS1X_OHCI_IRQ LS1X_IRQ(1, 1)
|
||||
#define LS1X_GMAC0_IRQ LS1X_IRQ(1, 2)
|
||||
#define LS1X_GMAC1_IRQ LS1X_IRQ(1, 3)
|
||||
|
||||
#define LS1X_IRQS (LS1X_IRQ(4, 31) + 1 - LS1X_IRQ_BASE)
|
||||
|
||||
#define NR_IRQS (MIPS_CPU_IRQS + LS1X_IRQS)
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_IRQ_H */
|
44
arch/mips/include/asm/mach-loongson1/loongson1.h
Normal file
44
arch/mips/include/asm/mach-loongson1/loongson1.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* Register mappings for Loongson 1
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_LOONGSON1_H
|
||||
#define __ASM_MACH_LOONGSON1_LOONGSON1_H
|
||||
|
||||
#define DEFAULT_MEMSIZE 256 /* If no memsize provided */
|
||||
|
||||
/* Loongson 1 Register Bases */
|
||||
#define LS1X_INTC_BASE 0x1fd01040
|
||||
#define LS1X_EHCI_BASE 0x1fe00000
|
||||
#define LS1X_OHCI_BASE 0x1fe08000
|
||||
#define LS1X_GMAC0_BASE 0x1fe10000
|
||||
#define LS1X_GMAC1_BASE 0x1fe20000
|
||||
|
||||
#define LS1X_UART0_BASE 0x1fe40000
|
||||
#define LS1X_UART1_BASE 0x1fe44000
|
||||
#define LS1X_UART2_BASE 0x1fe48000
|
||||
#define LS1X_UART3_BASE 0x1fe4c000
|
||||
#define LS1X_CAN0_BASE 0x1fe50000
|
||||
#define LS1X_CAN1_BASE 0x1fe54000
|
||||
#define LS1X_I2C0_BASE 0x1fe58000
|
||||
#define LS1X_I2C1_BASE 0x1fe68000
|
||||
#define LS1X_I2C2_BASE 0x1fe70000
|
||||
#define LS1X_PWM_BASE 0x1fe5c000
|
||||
#define LS1X_WDT_BASE 0x1fe5c060
|
||||
#define LS1X_RTC_BASE 0x1fe64000
|
||||
#define LS1X_AC97_BASE 0x1fe74000
|
||||
#define LS1X_NAND_BASE 0x1fe78000
|
||||
#define LS1X_CLK_BASE 0x1fe78030
|
||||
|
||||
#include <regs-clk.h>
|
||||
#include <regs-wdt.h>
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_LOONGSON1_H */
|
23
arch/mips/include/asm/mach-loongson1/platform.h
Normal file
23
arch/mips/include/asm/mach-loongson1/platform.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_PLATFORM_H
|
||||
#define __ASM_MACH_LOONGSON1_PLATFORM_H
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
extern struct platform_device ls1x_uart_device;
|
||||
extern struct platform_device ls1x_eth0_device;
|
||||
extern struct platform_device ls1x_ehci_device;
|
||||
extern struct platform_device ls1x_rtc_device;
|
||||
|
||||
void ls1x_serial_setup(void);
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_PLATFORM_H */
|
24
arch/mips/include/asm/mach-loongson1/prom.h
Normal file
24
arch/mips/include/asm/mach-loongson1/prom.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_PROM_H
|
||||
#define __ASM_MACH_LOONGSON1_PROM_H
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
|
||||
/* environment arguments from bootloader */
|
||||
extern unsigned long memsize, highmemsize;
|
||||
|
||||
/* loongson-specific command line, env and memory initialization */
|
||||
extern char *prom_getenv(char *name);
|
||||
extern void __init prom_init_cmdline(void);
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_PROM_H */
|
33
arch/mips/include/asm/mach-loongson1/regs-clk.h
Normal file
33
arch/mips/include/asm/mach-loongson1/regs-clk.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* Loongson 1 Clock Register Definitions.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_REGS_CLK_H
|
||||
#define __ASM_MACH_LOONGSON1_REGS_CLK_H
|
||||
|
||||
#define LS1X_CLK_REG(x) \
|
||||
((void __iomem *)KSEG1ADDR(LS1X_CLK_BASE + (x)))
|
||||
|
||||
#define LS1X_CLK_PLL_FREQ LS1X_CLK_REG(0x0)
|
||||
#define LS1X_CLK_PLL_DIV LS1X_CLK_REG(0x4)
|
||||
|
||||
/* Clock PLL Divisor Register Bits */
|
||||
#define DIV_DC_EN (0x1 << 31)
|
||||
#define DIV_DC (0x1f << 26)
|
||||
#define DIV_CPU_EN (0x1 << 25)
|
||||
#define DIV_CPU (0x1f << 20)
|
||||
#define DIV_DDR_EN (0x1 << 19)
|
||||
#define DIV_DDR (0x1f << 14)
|
||||
|
||||
#define DIV_DC_SHIFT 26
|
||||
#define DIV_CPU_SHIFT 20
|
||||
#define DIV_DDR_SHIFT 14
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_REGS_CLK_H */
|
22
arch/mips/include/asm/mach-loongson1/regs-wdt.h
Normal file
22
arch/mips/include/asm/mach-loongson1/regs-wdt.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
|
||||
*
|
||||
* Loongson 1 watchdog register definitions.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_MACH_LOONGSON1_REGS_WDT_H
|
||||
#define __ASM_MACH_LOONGSON1_REGS_WDT_H
|
||||
|
||||
#define LS1X_WDT_REG(x) \
|
||||
((void __iomem *)KSEG1ADDR(LS1X_WDT_BASE + (x)))
|
||||
|
||||
#define LS1X_WDT_EN LS1X_WDT_REG(0x0)
|
||||
#define LS1X_WDT_SET LS1X_WDT_REG(0x4)
|
||||
#define LS1X_WDT_TIMER LS1X_WDT_REG(0x8)
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_REGS_WDT_H */
|
25
arch/mips/include/asm/mach-loongson1/war.h
Normal file
25
arch/mips/include/asm/mach-loongson1/war.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
|
||||
*/
|
||||
#ifndef __ASM_MACH_LOONGSON1_WAR_H
|
||||
#define __ASM_MACH_LOONGSON1_WAR_H
|
||||
|
||||
#define R4600_V1_INDEX_ICACHEOP_WAR 0
|
||||
#define R4600_V1_HIT_CACHEOP_WAR 0
|
||||
#define R4600_V2_HIT_CACHEOP_WAR 0
|
||||
#define R5432_CP0_INTERRUPT_WAR 0
|
||||
#define BCM1250_M3_WAR 0
|
||||
#define SIBYTE_1956_WAR 0
|
||||
#define MIPS4K_ICACHE_REFILL_WAR 0
|
||||
#define MIPS_CACHE_SYNC_WAR 0
|
||||
#define TX49XX_ICACHE_INDEX_INV_WAR 0
|
||||
#define RM9000_CDEX_SMP_WAR 0
|
||||
#define ICACHE_REFILLS_WORKAROUND_WAR 0
|
||||
#define R10000_LLSC_WAR 0
|
||||
#define MIPS34K_MISSED_ITLB_WAR 0
|
||||
|
||||
#endif /* __ASM_MACH_LOONGSON1_WAR_H */
|
@@ -48,7 +48,6 @@
|
||||
#define cpu_has_userlocal 1
|
||||
#define cpu_has_mips32r2 1
|
||||
#define cpu_has_mips64r2 1
|
||||
#define cpu_has_dc_aliases 1
|
||||
#else
|
||||
#error "Unknown Netlogic CPU"
|
||||
#endif
|
||||
|
@@ -9,7 +9,7 @@
|
||||
#define ioswabb(a, x) (x)
|
||||
#define __mem_ioswabb(a, x) (x)
|
||||
#if defined(CONFIG_TOSHIBA_RBTX4939) && \
|
||||
(defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)) && \
|
||||
IS_ENABLED(CONFIG_SMC91X) && \
|
||||
defined(__BIG_ENDIAN)
|
||||
#define NEEDS_TXX9_IOSWABW
|
||||
extern u16 (*ioswabw)(volatile u16 *a, u16 x);
|
||||
|
@@ -28,6 +28,9 @@
|
||||
#define read_c0_vpeconf0() __read_32bit_c0_register($1, 2)
|
||||
#define write_c0_vpeconf0(val) __write_32bit_c0_register($1, 2, val)
|
||||
|
||||
#define read_c0_vpeconf1() __read_32bit_c0_register($1, 3)
|
||||
#define write_c0_vpeconf1(val) __write_32bit_c0_register($1, 3, val)
|
||||
|
||||
#define read_c0_tcstatus() __read_32bit_c0_register($2, 1)
|
||||
#define write_c0_tcstatus(val) __write_32bit_c0_register($2, 1, val)
|
||||
|
||||
@@ -124,6 +127,14 @@
|
||||
#define VPECONF0_XTC_SHIFT 21
|
||||
#define VPECONF0_XTC (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT)
|
||||
|
||||
/* VPEConf1 fields (per VPE) */
|
||||
#define VPECONF1_NCP1_SHIFT 0
|
||||
#define VPECONF1_NCP1 (_ULCAST_(0xff) << VPECONF1_NCP1_SHIFT)
|
||||
#define VPECONF1_NCP2_SHIFT 10
|
||||
#define VPECONF1_NCP2 (_ULCAST_(0xff) << VPECONF1_NCP2_SHIFT)
|
||||
#define VPECONF1_NCX_SHIFT 20
|
||||
#define VPECONF1_NCX (_ULCAST_(0xff) << VPECONF1_NCX_SHIFT)
|
||||
|
||||
/* TCStatus fields (per TC) */
|
||||
#define TCSTATUS_TASID (_ULCAST_(0xff))
|
||||
#define TCSTATUS_IXMT_SHIFT 10
|
||||
@@ -350,6 +361,8 @@ do { \
|
||||
#define write_vpe_c0_vpecontrol(val) mttc0(1, 1, val)
|
||||
#define read_vpe_c0_vpeconf0() mftc0(1, 2)
|
||||
#define write_vpe_c0_vpeconf0(val) mttc0(1, 2, val)
|
||||
#define read_vpe_c0_vpeconf1() mftc0(1, 3)
|
||||
#define write_vpe_c0_vpeconf1(val) mttc0(1, 3, val)
|
||||
#define read_vpe_c0_count() mftc0(9, 0)
|
||||
#define write_vpe_c0_count(val) mttc0(9, 0, val)
|
||||
#define read_vpe_c0_status() mftc0(12, 0)
|
||||
|
@@ -117,6 +117,8 @@ search_module_dbetables(unsigned long addr)
|
||||
#define MODULE_PROC_FAMILY "RM9000 "
|
||||
#elif defined CONFIG_CPU_SB1
|
||||
#define MODULE_PROC_FAMILY "SB1 "
|
||||
#elif defined CONFIG_CPU_LOONGSON1
|
||||
#define MODULE_PROC_FAMILY "LOONGSON1 "
|
||||
#elif defined CONFIG_CPU_LOONGSON2
|
||||
#define MODULE_PROC_FAMILY "LOONGSON2 "
|
||||
#elif defined CONFIG_CPU_CAVIUM_OCTEON
|
||||
|
@@ -47,7 +47,9 @@
|
||||
#define CPU_BLOCKID_MAP 10
|
||||
|
||||
#define LSU_DEFEATURE 0x304
|
||||
#define LSU_CERRLOG_REGID 0x09
|
||||
#define LSU_DEBUG_ADDR 0x305
|
||||
#define LSU_DEBUG_DATA0 0x306
|
||||
#define LSU_CERRLOG_REGID 0x309
|
||||
#define SCHED_DEFEATURE 0x700
|
||||
|
||||
/* Offsets of interest from the 'MAP' Block */
|
||||
|
@@ -36,6 +36,9 @@
|
||||
#define __NLM_HAL_IOMAP_H__
|
||||
|
||||
#define XLP_DEFAULT_IO_BASE 0x18000000
|
||||
#define XLP_DEFAULT_PCI_ECFG_BASE XLP_DEFAULT_IO_BASE
|
||||
#define XLP_DEFAULT_PCI_CFG_BASE 0x1c000000
|
||||
|
||||
#define NMI_BASE 0xbfc00000
|
||||
#define XLP_IO_CLK 133333333
|
||||
|
||||
@@ -129,7 +132,7 @@
|
||||
#define PCI_DEVICE_ID_NLM_PIC 0x1003
|
||||
#define PCI_DEVICE_ID_NLM_PCIE 0x1004
|
||||
#define PCI_DEVICE_ID_NLM_EHCI 0x1007
|
||||
#define PCI_DEVICE_ID_NLM_ILK 0x1008
|
||||
#define PCI_DEVICE_ID_NLM_OHCI 0x1008
|
||||
#define PCI_DEVICE_ID_NLM_NAE 0x1009
|
||||
#define PCI_DEVICE_ID_NLM_POE 0x100A
|
||||
#define PCI_DEVICE_ID_NLM_FMN 0x100B
|
||||
|
76
arch/mips/include/asm/netlogic/xlp-hal/pcibus.h
Normal file
76
arch/mips/include/asm/netlogic/xlp-hal/pcibus.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2012 Broadcom Corporation
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the Broadcom
|
||||
* license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __NLM_HAL_PCIBUS_H__
|
||||
#define __NLM_HAL_PCIBUS_H__
|
||||
|
||||
/* PCIE Memory and IO regions */
|
||||
#define PCIE_MEM_BASE 0xd0000000ULL
|
||||
#define PCIE_MEM_LIMIT 0xdfffffffULL
|
||||
#define PCIE_IO_BASE 0x14000000ULL
|
||||
#define PCIE_IO_LIMIT 0x15ffffffULL
|
||||
|
||||
#define PCIE_BRIDGE_CMD 0x1
|
||||
#define PCIE_BRIDGE_MSI_CAP 0x14
|
||||
#define PCIE_BRIDGE_MSI_ADDRL 0x15
|
||||
#define PCIE_BRIDGE_MSI_ADDRH 0x16
|
||||
#define PCIE_BRIDGE_MSI_DATA 0x17
|
||||
|
||||
/* XLP Global PCIE configuration space registers */
|
||||
#define PCIE_BYTE_SWAP_MEM_BASE 0x247
|
||||
#define PCIE_BYTE_SWAP_MEM_LIM 0x248
|
||||
#define PCIE_BYTE_SWAP_IO_BASE 0x249
|
||||
#define PCIE_BYTE_SWAP_IO_LIM 0x24A
|
||||
#define PCIE_MSI_STATUS 0x25A
|
||||
#define PCIE_MSI_EN 0x25B
|
||||
#define PCIE_INT_EN0 0x261
|
||||
|
||||
/* PCIE_MSI_EN */
|
||||
#define PCIE_MSI_VECTOR_INT_EN 0xFFFFFFFF
|
||||
|
||||
/* PCIE_INT_EN0 */
|
||||
#define PCIE_MSI_INT_EN (1 << 9)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define nlm_read_pcie_reg(b, r) nlm_read_reg(b, r)
|
||||
#define nlm_write_pcie_reg(b, r, v) nlm_write_reg(b, r, v)
|
||||
#define nlm_get_pcie_base(node, inst) \
|
||||
nlm_pcicfg_base(XLP_IO_PCIE_OFFSET(node, inst))
|
||||
#define nlm_get_pcie_regbase(node, inst) \
|
||||
(nlm_get_pcie_base(node, inst) + XLP_IO_PCI_HDRSZ)
|
||||
|
||||
int xlp_pcie_link_irt(int link);
|
||||
#endif
|
||||
#endif /* __NLM_HAL_PCIBUS_H__ */
|
@@ -201,7 +201,11 @@
|
||||
#define PIC_NUM_USB_IRTS 6
|
||||
#define PIC_IRT_USB_0_INDEX 115
|
||||
#define PIC_IRT_EHCI_0_INDEX 115
|
||||
#define PIC_IRT_OHCI_0_INDEX 116
|
||||
#define PIC_IRT_OHCI_1_INDEX 117
|
||||
#define PIC_IRT_EHCI_1_INDEX 118
|
||||
#define PIC_IRT_OHCI_2_INDEX 119
|
||||
#define PIC_IRT_OHCI_3_INDEX 120
|
||||
#define PIC_IRT_USB_INDEX(num) ((num) + PIC_IRT_USB_0_INDEX)
|
||||
/* 115 to 120 */
|
||||
#define PIC_IRT_GDX_INDEX 121
|
||||
|
64
arch/mips/include/asm/netlogic/xlp-hal/usb.h
Normal file
64
arch/mips/include/asm/netlogic/xlp-hal/usb.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2012 Broadcom Corporation
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the Broadcom
|
||||
* license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __NLM_HAL_USB_H__
|
||||
#define __NLM_HAL_USB_H__
|
||||
|
||||
#define USB_CTL_0 0x01
|
||||
#define USB_PHY_0 0x0A
|
||||
#define USB_PHY_RESET 0x01
|
||||
#define USB_PHY_PORT_RESET_0 0x10
|
||||
#define USB_PHY_PORT_RESET_1 0x20
|
||||
#define USB_CONTROLLER_RESET 0x01
|
||||
#define USB_INT_STATUS 0x0E
|
||||
#define USB_INT_EN 0x0F
|
||||
#define USB_PHY_INTERRUPT_EN 0x01
|
||||
#define USB_OHCI_INTERRUPT_EN 0x02
|
||||
#define USB_OHCI_INTERRUPT1_EN 0x04
|
||||
#define USB_OHCI_INTERRUPT2_EN 0x08
|
||||
#define USB_CTRL_INTERRUPT_EN 0x10
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define nlm_read_usb_reg(b, r) nlm_read_reg(b, r)
|
||||
#define nlm_write_usb_reg(b, r, v) nlm_write_reg(b, r, v)
|
||||
#define nlm_get_usb_pcibase(node, inst) \
|
||||
nlm_pcicfg_base(XLP_IO_USB_OFFSET(node, inst))
|
||||
#define nlm_get_usb_hcd_base(node, inst) \
|
||||
nlm_xkphys_map_pcibar0(nlm_get_usb_pcibase(node, inst))
|
||||
#define nlm_get_usb_regbase(node, inst) \
|
||||
(nlm_get_usb_pcibase(node, inst) + XLP_IO_PCI_HDRSZ)
|
||||
|
||||
#endif
|
||||
#endif /* __NLM_HAL_USB_H__ */
|
@@ -35,8 +35,21 @@
|
||||
#ifndef _NLM_HAL_XLP_H
|
||||
#define _NLM_HAL_XLP_H
|
||||
|
||||
#define PIC_UART_0_IRQ 17
|
||||
#define PIC_UART_1_IRQ 18
|
||||
#define PIC_UART_0_IRQ 17
|
||||
#define PIC_UART_1_IRQ 18
|
||||
#define PIC_PCIE_LINK_0_IRQ 19
|
||||
#define PIC_PCIE_LINK_1_IRQ 20
|
||||
#define PIC_PCIE_LINK_2_IRQ 21
|
||||
#define PIC_PCIE_LINK_3_IRQ 22
|
||||
#define PIC_EHCI_0_IRQ 23
|
||||
#define PIC_EHCI_1_IRQ 24
|
||||
#define PIC_OHCI_0_IRQ 25
|
||||
#define PIC_OHCI_1_IRQ 26
|
||||
#define PIC_OHCI_2_IRQ 27
|
||||
#define PIC_OHCI_3_IRQ 28
|
||||
#define PIC_MMC_IRQ 29
|
||||
#define PIC_I2C_0_IRQ 30
|
||||
#define PIC_I2C_1_IRQ 31
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
104
arch/mips/include/asm/netlogic/xlr/bridge.h
Normal file
104
arch/mips/include/asm/netlogic/xlr/bridge.h
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2012 Broadcom Corporation
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the Broadcom
|
||||
* license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef _ASM_NLM_BRIDGE_H_
|
||||
#define _ASM_NLM_BRIDGE_H_
|
||||
|
||||
#define BRIDGE_DRAM_0_BAR 0
|
||||
#define BRIDGE_DRAM_1_BAR 1
|
||||
#define BRIDGE_DRAM_2_BAR 2
|
||||
#define BRIDGE_DRAM_3_BAR 3
|
||||
#define BRIDGE_DRAM_4_BAR 4
|
||||
#define BRIDGE_DRAM_5_BAR 5
|
||||
#define BRIDGE_DRAM_6_BAR 6
|
||||
#define BRIDGE_DRAM_7_BAR 7
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_0_BAR 8
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_1_BAR 9
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_2_BAR 10
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_3_BAR 11
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_4_BAR 12
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_5_BAR 13
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_6_BAR 14
|
||||
#define BRIDGE_DRAM_CHN_0_MTR_7_BAR 15
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_0_BAR 16
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_1_BAR 17
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_2_BAR 18
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_3_BAR 19
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_4_BAR 20
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_5_BAR 21
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_6_BAR 22
|
||||
#define BRIDGE_DRAM_CHN_1_MTR_7_BAR 23
|
||||
#define BRIDGE_CFG_BAR 24
|
||||
#define BRIDGE_PHNX_IO_BAR 25
|
||||
#define BRIDGE_FLASH_BAR 26
|
||||
#define BRIDGE_SRAM_BAR 27
|
||||
#define BRIDGE_HTMEM_BAR 28
|
||||
#define BRIDGE_HTINT_BAR 29
|
||||
#define BRIDGE_HTPIC_BAR 30
|
||||
#define BRIDGE_HTSM_BAR 31
|
||||
#define BRIDGE_HTIO_BAR 32
|
||||
#define BRIDGE_HTCFG_BAR 33
|
||||
#define BRIDGE_PCIXCFG_BAR 34
|
||||
#define BRIDGE_PCIXMEM_BAR 35
|
||||
#define BRIDGE_PCIXIO_BAR 36
|
||||
#define BRIDGE_DEVICE_MASK 37
|
||||
#define BRIDGE_AERR_INTR_LOG1 38
|
||||
#define BRIDGE_AERR_INTR_LOG2 39
|
||||
#define BRIDGE_AERR_INTR_LOG3 40
|
||||
#define BRIDGE_AERR_DEV_STAT 41
|
||||
#define BRIDGE_AERR1_LOG1 42
|
||||
#define BRIDGE_AERR1_LOG2 43
|
||||
#define BRIDGE_AERR1_LOG3 44
|
||||
#define BRIDGE_AERR1_DEV_STAT 45
|
||||
#define BRIDGE_AERR_INTR_EN 46
|
||||
#define BRIDGE_AERR_UPG 47
|
||||
#define BRIDGE_AERR_CLEAR 48
|
||||
#define BRIDGE_AERR1_CLEAR 49
|
||||
#define BRIDGE_SBE_COUNTS 50
|
||||
#define BRIDGE_DBE_COUNTS 51
|
||||
#define BRIDGE_BITERR_INT_EN 52
|
||||
|
||||
#define BRIDGE_SYS2IO_CREDITS 53
|
||||
#define BRIDGE_EVNT_CNT_CTRL1 54
|
||||
#define BRIDGE_EVNT_COUNTER1 55
|
||||
#define BRIDGE_EVNT_CNT_CTRL2 56
|
||||
#define BRIDGE_EVNT_COUNTER2 57
|
||||
#define BRIDGE_RESERVED1 58
|
||||
|
||||
#define BRIDGE_DEFEATURE 59
|
||||
#define BRIDGE_SCRATCH0 60
|
||||
#define BRIDGE_SCRATCH1 61
|
||||
#define BRIDGE_SCRATCH2 62
|
||||
#define BRIDGE_SCRATCH3 63
|
||||
|
||||
#endif
|
55
arch/mips/include/asm/netlogic/xlr/flash.h
Normal file
55
arch/mips/include/asm/netlogic/xlr/flash.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2012 Broadcom Corporation
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the Broadcom
|
||||
* license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef _ASM_NLM_FLASH_H_
|
||||
#define _ASM_NLM_FLASH_H_
|
||||
|
||||
#define FLASH_CSBASE_ADDR(cs) (cs)
|
||||
#define FLASH_CSADDR_MASK(cs) (0x10 + (cs))
|
||||
#define FLASH_CSDEV_PARM(cs) (0x20 + (cs))
|
||||
#define FLASH_CSTIME_PARMA(cs) (0x30 + (cs))
|
||||
#define FLASH_CSTIME_PARMB(cs) (0x40 + (cs))
|
||||
|
||||
#define FLASH_INT_MASK 0x50
|
||||
#define FLASH_INT_STATUS 0x60
|
||||
#define FLASH_ERROR_STATUS 0x70
|
||||
#define FLASH_ERROR_ADDR 0x80
|
||||
|
||||
#define FLASH_NAND_CLE(cs) (0x90 + (cs))
|
||||
#define FLASH_NAND_ALE(cs) (0xa0 + (cs))
|
||||
|
||||
#define FLASH_NAND_CSDEV_PARAM 0x000041e6
|
||||
#define FLASH_NAND_CSTIME_PARAMA 0x4f400e22
|
||||
#define FLASH_NAND_CSTIME_PARAMB 0x000083cf
|
||||
|
||||
#endif
|
@@ -35,39 +35,40 @@
|
||||
#ifndef _ASM_NLM_GPIO_H
|
||||
#define _ASM_NLM_GPIO_H
|
||||
|
||||
#define NETLOGIC_GPIO_INT_EN_REG 0
|
||||
#define NETLOGIC_GPIO_INPUT_INVERSION_REG 1
|
||||
#define NETLOGIC_GPIO_IO_DIR_REG 2
|
||||
#define NETLOGIC_GPIO_IO_DATA_WR_REG 3
|
||||
#define NETLOGIC_GPIO_IO_DATA_RD_REG 4
|
||||
#define GPIO_INT_EN_REG 0
|
||||
#define GPIO_INPUT_INVERSION_REG 1
|
||||
#define GPIO_IO_DIR_REG 2
|
||||
#define GPIO_IO_DATA_WR_REG 3
|
||||
#define GPIO_IO_DATA_RD_REG 4
|
||||
|
||||
#define NETLOGIC_GPIO_SWRESET_REG 8
|
||||
#define NETLOGIC_GPIO_DRAM1_CNTRL_REG 9
|
||||
#define NETLOGIC_GPIO_DRAM1_RATIO_REG 10
|
||||
#define NETLOGIC_GPIO_DRAM1_RESET_REG 11
|
||||
#define NETLOGIC_GPIO_DRAM1_STATUS_REG 12
|
||||
#define NETLOGIC_GPIO_DRAM2_CNTRL_REG 13
|
||||
#define NETLOGIC_GPIO_DRAM2_RATIO_REG 14
|
||||
#define NETLOGIC_GPIO_DRAM2_RESET_REG 15
|
||||
#define NETLOGIC_GPIO_DRAM2_STATUS_REG 16
|
||||
#define GPIO_SWRESET_REG 8
|
||||
#define GPIO_DRAM1_CNTRL_REG 9
|
||||
#define GPIO_DRAM1_RATIO_REG 10
|
||||
#define GPIO_DRAM1_RESET_REG 11
|
||||
#define GPIO_DRAM1_STATUS_REG 12
|
||||
#define GPIO_DRAM2_CNTRL_REG 13
|
||||
#define GPIO_DRAM2_RATIO_REG 14
|
||||
#define GPIO_DRAM2_RESET_REG 15
|
||||
#define GPIO_DRAM2_STATUS_REG 16
|
||||
|
||||
#define NETLOGIC_GPIO_PWRON_RESET_CFG_REG 21
|
||||
#define NETLOGIC_GPIO_BIST_ALL_GO_STATUS_REG 24
|
||||
#define NETLOGIC_GPIO_BIST_CPU_GO_STATUS_REG 25
|
||||
#define NETLOGIC_GPIO_BIST_DEV_GO_STATUS_REG 26
|
||||
#define GPIO_PWRON_RESET_CFG_REG 21
|
||||
#define GPIO_BIST_ALL_GO_STATUS_REG 24
|
||||
#define GPIO_BIST_CPU_GO_STATUS_REG 25
|
||||
#define GPIO_BIST_DEV_GO_STATUS_REG 26
|
||||
|
||||
#define NETLOGIC_GPIO_FUSE_BANK_REG 35
|
||||
#define NETLOGIC_GPIO_CPU_RESET_REG 40
|
||||
#define NETLOGIC_GPIO_RNG_REG 43
|
||||
#define GPIO_FUSE_BANK_REG 35
|
||||
#define GPIO_CPU_RESET_REG 40
|
||||
#define GPIO_RNG_REG 43
|
||||
|
||||
#define NETLOGIC_PWRON_RESET_PCMCIA_BOOT 17
|
||||
#define NETLOGIC_GPIO_LED_BITMAP 0x1700000
|
||||
#define NETLOGIC_GPIO_LED_0_SHIFT 20
|
||||
#define NETLOGIC_GPIO_LED_1_SHIFT 24
|
||||
#define PWRON_RESET_PCMCIA_BOOT 17
|
||||
|
||||
#define NETLOGIC_GPIO_LED_OUTPUT_CODE_RESET 0x01
|
||||
#define NETLOGIC_GPIO_LED_OUTPUT_CODE_HARD_RESET 0x02
|
||||
#define NETLOGIC_GPIO_LED_OUTPUT_CODE_SOFT_RESET 0x03
|
||||
#define NETLOGIC_GPIO_LED_OUTPUT_CODE_MAIN 0x04
|
||||
#define GPIO_LED_BITMAP 0x1700000
|
||||
#define GPIO_LED_0_SHIFT 20
|
||||
#define GPIO_LED_1_SHIFT 24
|
||||
|
||||
#define GPIO_LED_OUTPUT_CODE_RESET 0x01
|
||||
#define GPIO_LED_OUTPUT_CODE_HARD_RESET 0x02
|
||||
#define GPIO_LED_OUTPUT_CODE_SOFT_RESET 0x03
|
||||
#define GPIO_LED_OUTPUT_CODE_MAIN 0x04
|
||||
|
||||
#endif
|
||||
|
@@ -1,64 +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**************************************/
|
||||
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Helper functions for FPA setup.
|
||||
*
|
||||
*/
|
||||
#ifndef __CVMX_HELPER_H_FPA__
|
||||
#define __CVMX_HELPER_H_FPA__
|
||||
|
||||
/**
|
||||
* Allocate memory and initialize the FPA pools using memory
|
||||
* from cvmx-bootmem. Sizes of each element in the pools is
|
||||
* controlled by the cvmx-config.h header file. Specifying
|
||||
* zero for any parameter will cause that FPA pool to not be
|
||||
* setup. This is useful if you aren't using some of the
|
||||
* hardware and want to save memory.
|
||||
*
|
||||
* @packet_buffers:
|
||||
* Number of packet buffers to allocate
|
||||
* @work_queue_entries:
|
||||
* Number of work queue entries
|
||||
* @pko_buffers:
|
||||
* PKO Command buffers. You should at minimum have two per
|
||||
* each PKO queue.
|
||||
* @tim_buffers:
|
||||
* TIM ring buffer command queues. At least two per timer bucket
|
||||
* is recommened.
|
||||
* @dfa_buffers:
|
||||
* DFA command buffer. A relatively small (32 for example)
|
||||
* number should work.
|
||||
* Returns Zero on success, non-zero if out of memory
|
||||
*/
|
||||
extern int cvmx_helper_initialize_fpa(int packet_buffers,
|
||||
int work_queue_entries, int pko_buffers,
|
||||
int tim_buffers, int dfa_buffers);
|
||||
|
||||
#endif /* __CVMX_HELPER_H__ */
|
@@ -61,8 +61,6 @@ typedef union {
|
||||
} s;
|
||||
} cvmx_helper_link_info_t;
|
||||
|
||||
#include "cvmx-helper-fpa.h"
|
||||
|
||||
#include <asm/octeon/cvmx-helper-errata.h>
|
||||
#include "cvmx-helper-loop.h"
|
||||
#include "cvmx-helper-npi.h"
|
||||
|
@@ -215,11 +215,6 @@ struct octeon_cf_data {
|
||||
int dma_engine; /* -1 for no DMA */
|
||||
};
|
||||
|
||||
struct octeon_i2c_data {
|
||||
unsigned int sys_freq;
|
||||
unsigned int i2c_freq;
|
||||
};
|
||||
|
||||
extern void octeon_write_lcd(const char *s);
|
||||
extern void octeon_check_cpu_bist(void);
|
||||
extern int octeon_get_boot_debug_flag(void);
|
||||
|
@@ -20,9 +20,6 @@
|
||||
extern int early_init_dt_scan_memory_arch(unsigned long node,
|
||||
const char *uname, int depth, void *data);
|
||||
|
||||
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)
|
||||
|
@@ -33,6 +33,12 @@ typedef long asiduse;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* VPE Management information
|
||||
*/
|
||||
|
||||
#define MAX_SMTC_VPES MAX_SMTC_TLBS /* FIXME: May not always be true. */
|
||||
|
||||
extern asiduse smtc_live_asid[MAX_SMTC_TLBS][MAX_SMTC_ASIDS];
|
||||
|
||||
struct mm_struct;
|
||||
|
@@ -687,7 +687,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
|
||||
__MODULE_JAL(__copy_user) \
|
||||
: "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \
|
||||
: \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$14", "$15", "$24", "$31", \
|
||||
DADDI_SCRATCH, "memory"); \
|
||||
__cu_len_r; \
|
||||
})
|
||||
@@ -797,7 +797,7 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
".set\treorder" \
|
||||
: "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \
|
||||
: \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$14", "$15", "$24", "$31", \
|
||||
DADDI_SCRATCH, "memory"); \
|
||||
__cu_len_r; \
|
||||
})
|
||||
@@ -820,7 +820,7 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
|
||||
".set\treorder" \
|
||||
: "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \
|
||||
: \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \
|
||||
: "$8", "$9", "$10", "$11", "$12", "$14", "$15", "$24", "$31", \
|
||||
DADDI_SCRATCH, "memory"); \
|
||||
__cu_len_r; \
|
||||
})
|
||||
|
@@ -6,6 +6,7 @@
|
||||
* Copyright (C) 2004, 2005, 2006, 2008 Thiemo Seufer
|
||||
* Copyright (C) 2005 Maciej W. Rozycki
|
||||
* Copyright (C) 2006 Ralf Baechle (ralf@linux-mips.org)
|
||||
* Copyright (C) 2012 MIPS Technologies, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
@@ -62,8 +63,10 @@ void __uasminit uasm_i##op(u32 **buf, unsigned int a, signed int b)
|
||||
|
||||
Ip_u2u1s3(_addiu);
|
||||
Ip_u3u1u2(_addu);
|
||||
Ip_u2u1u3(_andi);
|
||||
Ip_u3u1u2(_and);
|
||||
Ip_u2u1u3(_andi);
|
||||
Ip_u1u2s3(_bbit0);
|
||||
Ip_u1u2s3(_bbit1);
|
||||
Ip_u1u2s3(_beq);
|
||||
Ip_u1u2s3(_beql);
|
||||
Ip_u1s2(_bgez);
|
||||
@@ -72,55 +75,54 @@ Ip_u1s2(_bltz);
|
||||
Ip_u1s2(_bltzl);
|
||||
Ip_u1u2s3(_bne);
|
||||
Ip_u2s3u1(_cache);
|
||||
Ip_u1u2u3(_dmfc0);
|
||||
Ip_u1u2u3(_dmtc0);
|
||||
Ip_u2u1s3(_daddiu);
|
||||
Ip_u3u1u2(_daddu);
|
||||
Ip_u2u1msbu3(_dins);
|
||||
Ip_u2u1msbu3(_dinsm);
|
||||
Ip_u1u2u3(_dmfc0);
|
||||
Ip_u1u2u3(_dmtc0);
|
||||
Ip_u2u1u3(_drotr);
|
||||
Ip_u2u1u3(_drotr32);
|
||||
Ip_u2u1u3(_dsll);
|
||||
Ip_u2u1u3(_dsll32);
|
||||
Ip_u2u1u3(_dsra);
|
||||
Ip_u2u1u3(_dsrl);
|
||||
Ip_u2u1u3(_dsrl32);
|
||||
Ip_u2u1u3(_drotr);
|
||||
Ip_u2u1u3(_drotr32);
|
||||
Ip_u3u1u2(_dsubu);
|
||||
Ip_0(_eret);
|
||||
Ip_u1(_j);
|
||||
Ip_u1(_jal);
|
||||
Ip_u1(_jr);
|
||||
Ip_u2s3u1(_ld);
|
||||
Ip_u3u1u2(_ldx);
|
||||
Ip_u2s3u1(_ll);
|
||||
Ip_u2s3u1(_lld);
|
||||
Ip_u1s2(_lui);
|
||||
Ip_u2s3u1(_lw);
|
||||
Ip_u3u1u2(_lwx);
|
||||
Ip_u1u2u3(_mfc0);
|
||||
Ip_u1u2u3(_mtc0);
|
||||
Ip_u2u1u3(_ori);
|
||||
Ip_u3u1u2(_or);
|
||||
Ip_u2u1u3(_ori);
|
||||
Ip_u2s3u1(_pref);
|
||||
Ip_0(_rfe);
|
||||
Ip_u2u1u3(_rotr);
|
||||
Ip_u2s3u1(_sc);
|
||||
Ip_u2s3u1(_scd);
|
||||
Ip_u2s3u1(_sd);
|
||||
Ip_u2u1u3(_sll);
|
||||
Ip_u2u1u3(_sra);
|
||||
Ip_u2u1u3(_srl);
|
||||
Ip_u2u1u3(_rotr);
|
||||
Ip_u3u1u2(_subu);
|
||||
Ip_u2s3u1(_sw);
|
||||
Ip_u1(_syscall);
|
||||
Ip_0(_tlbp);
|
||||
Ip_0(_tlbr);
|
||||
Ip_0(_tlbwi);
|
||||
Ip_0(_tlbwr);
|
||||
Ip_u3u1u2(_xor);
|
||||
Ip_u2u1u3(_xori);
|
||||
Ip_u2u1msbu3(_dins);
|
||||
Ip_u2u1msbu3(_dinsm);
|
||||
Ip_u1(_syscall);
|
||||
Ip_u1u2s3(_bbit0);
|
||||
Ip_u1u2s3(_bbit1);
|
||||
Ip_u3u1u2(_lwx);
|
||||
Ip_u3u1u2(_ldx);
|
||||
|
||||
|
||||
/* Handle labels. */
|
||||
struct uasm_label {
|
||||
@@ -145,37 +147,37 @@ static inline void __uasminit uasm_l##lb(struct uasm_label **lab, u32 *addr) \
|
||||
|
||||
/* convenience macros for instructions */
|
||||
#ifdef CONFIG_64BIT
|
||||
# define UASM_i_ADDIU(buf, rs, rt, val) uasm_i_daddiu(buf, rs, rt, val)
|
||||
# define UASM_i_ADDU(buf, rs, rt, rd) uasm_i_daddu(buf, rs, rt, rd)
|
||||
# define UASM_i_LL(buf, rs, rt, off) uasm_i_lld(buf, rs, rt, off)
|
||||
# define UASM_i_LW(buf, rs, rt, off) uasm_i_ld(buf, rs, rt, off)
|
||||
# define UASM_i_SW(buf, rs, rt, off) uasm_i_sd(buf, rs, rt, off)
|
||||
# define UASM_i_LWX(buf, rs, rt, rd) uasm_i_ldx(buf, rs, rt, rd)
|
||||
# define UASM_i_MFC0(buf, rt, rd...) uasm_i_dmfc0(buf, rt, rd)
|
||||
# define UASM_i_MTC0(buf, rt, rd...) uasm_i_dmtc0(buf, rt, rd)
|
||||
# define UASM_i_ROTR(buf, rs, rt, sh) uasm_i_drotr(buf, rs, rt, sh)
|
||||
# define UASM_i_SC(buf, rs, rt, off) uasm_i_scd(buf, rs, rt, off)
|
||||
# define UASM_i_SLL(buf, rs, rt, sh) uasm_i_dsll(buf, rs, rt, sh)
|
||||
# define UASM_i_SRA(buf, rs, rt, sh) uasm_i_dsra(buf, rs, rt, sh)
|
||||
# define UASM_i_SRL(buf, rs, rt, sh) uasm_i_dsrl(buf, rs, rt, sh)
|
||||
# define UASM_i_SRL_SAFE(buf, rs, rt, sh) uasm_i_dsrl_safe(buf, rs, rt, sh)
|
||||
# define UASM_i_ROTR(buf, rs, rt, sh) uasm_i_drotr(buf, rs, rt, sh)
|
||||
# define UASM_i_MFC0(buf, rt, rd...) uasm_i_dmfc0(buf, rt, rd)
|
||||
# define UASM_i_MTC0(buf, rt, rd...) uasm_i_dmtc0(buf, rt, rd)
|
||||
# define UASM_i_ADDIU(buf, rs, rt, val) uasm_i_daddiu(buf, rs, rt, val)
|
||||
# define UASM_i_ADDU(buf, rs, rt, rd) uasm_i_daddu(buf, rs, rt, rd)
|
||||
# define UASM_i_SUBU(buf, rs, rt, rd) uasm_i_dsubu(buf, rs, rt, rd)
|
||||
# define UASM_i_LL(buf, rs, rt, off) uasm_i_lld(buf, rs, rt, off)
|
||||
# define UASM_i_SC(buf, rs, rt, off) uasm_i_scd(buf, rs, rt, off)
|
||||
# define UASM_i_LWX(buf, rs, rt, rd) uasm_i_ldx(buf, rs, rt, rd)
|
||||
# define UASM_i_SW(buf, rs, rt, off) uasm_i_sd(buf, rs, rt, off)
|
||||
#else
|
||||
# define UASM_i_ADDIU(buf, rs, rt, val) uasm_i_addiu(buf, rs, rt, val)
|
||||
# define UASM_i_ADDU(buf, rs, rt, rd) uasm_i_addu(buf, rs, rt, rd)
|
||||
# define UASM_i_LL(buf, rs, rt, off) uasm_i_ll(buf, rs, rt, off)
|
||||
# define UASM_i_LW(buf, rs, rt, off) uasm_i_lw(buf, rs, rt, off)
|
||||
# define UASM_i_SW(buf, rs, rt, off) uasm_i_sw(buf, rs, rt, off)
|
||||
# define UASM_i_LWX(buf, rs, rt, rd) uasm_i_lwx(buf, rs, rt, rd)
|
||||
# define UASM_i_MFC0(buf, rt, rd...) uasm_i_mfc0(buf, rt, rd)
|
||||
# define UASM_i_MTC0(buf, rt, rd...) uasm_i_mtc0(buf, rt, rd)
|
||||
# define UASM_i_ROTR(buf, rs, rt, sh) uasm_i_rotr(buf, rs, rt, sh)
|
||||
# define UASM_i_SC(buf, rs, rt, off) uasm_i_sc(buf, rs, rt, off)
|
||||
# define UASM_i_SLL(buf, rs, rt, sh) uasm_i_sll(buf, rs, rt, sh)
|
||||
# define UASM_i_SRA(buf, rs, rt, sh) uasm_i_sra(buf, rs, rt, sh)
|
||||
# define UASM_i_SRL(buf, rs, rt, sh) uasm_i_srl(buf, rs, rt, sh)
|
||||
# define UASM_i_SRL_SAFE(buf, rs, rt, sh) uasm_i_srl(buf, rs, rt, sh)
|
||||
# define UASM_i_ROTR(buf, rs, rt, sh) uasm_i_rotr(buf, rs, rt, sh)
|
||||
# define UASM_i_MFC0(buf, rt, rd...) uasm_i_mfc0(buf, rt, rd)
|
||||
# define UASM_i_MTC0(buf, rt, rd...) uasm_i_mtc0(buf, rt, rd)
|
||||
# define UASM_i_ADDIU(buf, rs, rt, val) uasm_i_addiu(buf, rs, rt, val)
|
||||
# define UASM_i_ADDU(buf, rs, rt, rd) uasm_i_addu(buf, rs, rt, rd)
|
||||
# define UASM_i_SUBU(buf, rs, rt, rd) uasm_i_subu(buf, rs, rt, rd)
|
||||
# define UASM_i_LL(buf, rs, rt, off) uasm_i_ll(buf, rs, rt, off)
|
||||
# define UASM_i_SC(buf, rs, rt, off) uasm_i_sc(buf, rs, rt, off)
|
||||
# define UASM_i_LWX(buf, rs, rt, rd) uasm_i_lwx(buf, rs, rt, rd)
|
||||
# define UASM_i_SW(buf, rs, rt, off) uasm_i_sw(buf, rs, rt, off)
|
||||
#endif
|
||||
|
||||
#define uasm_i_b(buf, off) uasm_i_beq(buf, 0, 0, off)
|
||||
@@ -183,19 +185,10 @@ static inline void __uasminit uasm_l##lb(struct uasm_label **lab, u32 *addr) \
|
||||
#define uasm_i_beqzl(buf, rs, off) uasm_i_beql(buf, rs, 0, off)
|
||||
#define uasm_i_bnez(buf, rs, off) uasm_i_bne(buf, rs, 0, off)
|
||||
#define uasm_i_bnezl(buf, rs, off) uasm_i_bnel(buf, rs, 0, off)
|
||||
#define uasm_i_ehb(buf) uasm_i_sll(buf, 0, 0, 3)
|
||||
#define uasm_i_move(buf, a, b) UASM_i_ADDU(buf, a, 0, b)
|
||||
#define uasm_i_nop(buf) uasm_i_sll(buf, 0, 0, 0)
|
||||
#define uasm_i_ssnop(buf) uasm_i_sll(buf, 0, 0, 1)
|
||||
#define uasm_i_ehb(buf) uasm_i_sll(buf, 0, 0, 3)
|
||||
|
||||
static inline void uasm_i_dsrl_safe(u32 **p, unsigned int a1,
|
||||
unsigned int a2, unsigned int a3)
|
||||
{
|
||||
if (a3 < 32)
|
||||
uasm_i_dsrl(p, a1, a2, a3);
|
||||
else
|
||||
uasm_i_dsrl32(p, a1, a2, a3 - 32);
|
||||
}
|
||||
|
||||
static inline void uasm_i_drotr_safe(u32 **p, unsigned int a1,
|
||||
unsigned int a2, unsigned int a3)
|
||||
@@ -215,6 +208,15 @@ static inline void uasm_i_dsll_safe(u32 **p, unsigned int a1,
|
||||
uasm_i_dsll32(p, a1, a2, a3 - 32);
|
||||
}
|
||||
|
||||
static inline void uasm_i_dsrl_safe(u32 **p, unsigned int a1,
|
||||
unsigned int a2, unsigned int a3)
|
||||
{
|
||||
if (a3 < 32)
|
||||
uasm_i_dsrl(p, a1, a2, a3);
|
||||
else
|
||||
uasm_i_dsrl32(p, a1, a2, a3 - 32);
|
||||
}
|
||||
|
||||
/* Handle relocations. */
|
||||
struct uasm_reloc {
|
||||
u32 *addr;
|
||||
@@ -234,16 +236,16 @@ void uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab,
|
||||
int uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr);
|
||||
|
||||
/* Convenience functions for labeled branches. */
|
||||
void uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_b(u32 **p, struct uasm_reloc **r, int lid);
|
||||
void uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bne(u32 **p, struct uasm_reloc **r, unsigned int reg1,
|
||||
unsigned int reg2, int lid);
|
||||
void uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bbit0(u32 **p, struct uasm_reloc **r, unsigned int reg,
|
||||
unsigned int bit, int lid);
|
||||
void uasm_il_bbit1(u32 **p, struct uasm_reloc **r, unsigned int reg,
|
||||
unsigned int bit, int lid);
|
||||
void uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
void uasm_il_bne(u32 **p, struct uasm_reloc **r, unsigned int reg1,
|
||||
unsigned int reg2, int lid);
|
||||
void uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
|
||||
|
Reference in New Issue
Block a user