diff options
Diffstat (limited to 'arch/mips/include/asm/mach-ath79')
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/ar71xx_regs.h | 555 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/ar933x_uart.h | 67 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/ath79.h | 145 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/ath79_spi_platform.h | 23 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/cpu-feature-overrides.h | 55 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/gpio.h | 26 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/irq.h | 35 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/kernel-entry-init.h | 32 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ath79/war.h | 24 | 
9 files changed, 962 insertions, 0 deletions
diff --git a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h new file mode 100644 index 00000000000..cd41e93bc1d --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h @@ -0,0 +1,555 @@ +/* + *  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/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 + *  by the Free Software Foundation. + */ + +#ifndef __ASM_MACH_AR71XX_REGS_H +#define __ASM_MACH_AR71XX_REGS_H + +#include <linux/types.h> +#include <linux/io.h> +#include <linux/bitops.h> + +#define AR71XX_APB_BASE		0x18000000 +#define AR71XX_EHCI_BASE	0x1b000000 +#define AR71XX_EHCI_SIZE	0x1000 +#define AR71XX_OHCI_BASE	0x1c000000 +#define AR71XX_OHCI_SIZE	0x1000 +#define AR71XX_SPI_BASE		0x1f000000 +#define AR71XX_SPI_SIZE		0x01000000 + +#define AR71XX_DDR_CTRL_BASE	(AR71XX_APB_BASE + 0x00000000) +#define AR71XX_DDR_CTRL_SIZE	0x100 +#define AR71XX_UART_BASE	(AR71XX_APB_BASE + 0x00020000) +#define AR71XX_UART_SIZE	0x100 +#define AR71XX_USB_CTRL_BASE	(AR71XX_APB_BASE + 0x00030000) +#define AR71XX_USB_CTRL_SIZE	0x100 +#define AR71XX_GPIO_BASE	(AR71XX_APB_BASE + 0x00040000) +#define AR71XX_GPIO_SIZE	0x100 +#define AR71XX_PLL_BASE		(AR71XX_APB_BASE + 0x00050000) +#define AR71XX_PLL_SIZE		0x100 +#define AR71XX_RESET_BASE	(AR71XX_APB_BASE + 0x00060000) +#define AR71XX_RESET_SIZE	0x100 + +#define AR71XX_PCI_MEM_BASE	0x10000000 +#define AR71XX_PCI_MEM_SIZE	0x07000000 + +#define AR71XX_PCI_WIN0_OFFS	0x10000000 +#define AR71XX_PCI_WIN1_OFFS	0x11000000 +#define AR71XX_PCI_WIN2_OFFS	0x12000000 +#define AR71XX_PCI_WIN3_OFFS	0x13000000 +#define AR71XX_PCI_WIN4_OFFS	0x14000000 +#define AR71XX_PCI_WIN5_OFFS	0x15000000 +#define AR71XX_PCI_WIN6_OFFS	0x16000000 +#define AR71XX_PCI_WIN7_OFFS	0x07000000 + +#define AR71XX_PCI_CFG_BASE	\ +	(AR71XX_PCI_MEM_BASE + AR71XX_PCI_WIN7_OFFS + 0x10000) +#define AR71XX_PCI_CFG_SIZE	0x100 + +#define AR7240_USB_CTRL_BASE	(AR71XX_APB_BASE + 0x00030000) +#define AR7240_USB_CTRL_SIZE	0x100 +#define AR7240_OHCI_BASE	0x1b000000 +#define AR7240_OHCI_SIZE	0x1000 + +#define AR724X_PCI_MEM_BASE	0x10000000 +#define AR724X_PCI_MEM_SIZE	0x04000000 + +#define AR724X_PCI_CFG_BASE	0x14000000 +#define AR724X_PCI_CFG_SIZE	0x1000 +#define AR724X_PCI_CRP_BASE	(AR71XX_APB_BASE + 0x000c0000) +#define AR724X_PCI_CRP_SIZE	0x1000 +#define AR724X_PCI_CTRL_BASE	(AR71XX_APB_BASE + 0x000f0000) +#define AR724X_PCI_CTRL_SIZE	0x100 + +#define AR724X_EHCI_BASE	0x1b000000 +#define AR724X_EHCI_SIZE	0x1000 + +#define AR913X_EHCI_BASE	0x1b000000 +#define AR913X_EHCI_SIZE	0x1000 +#define AR913X_WMAC_BASE	(AR71XX_APB_BASE + 0x000C0000) +#define AR913X_WMAC_SIZE	0x30000 + +#define AR933X_UART_BASE	(AR71XX_APB_BASE + 0x00020000) +#define AR933X_UART_SIZE	0x14 +#define AR933X_WMAC_BASE	(AR71XX_APB_BASE + 0x00100000) +#define AR933X_WMAC_SIZE	0x20000 +#define AR933X_EHCI_BASE	0x1b000000 +#define AR933X_EHCI_SIZE	0x1000 + +#define AR934X_WMAC_BASE	(AR71XX_APB_BASE + 0x00100000) +#define AR934X_WMAC_SIZE	0x20000 +#define AR934X_EHCI_BASE	0x1b000000 +#define AR934X_EHCI_SIZE	0x200 +#define AR934X_SRIF_BASE	(AR71XX_APB_BASE + 0x00116000) +#define AR934X_SRIF_SIZE	0x1000 + +#define QCA955X_PCI_MEM_BASE0	0x10000000 +#define QCA955X_PCI_MEM_BASE1	0x12000000 +#define QCA955X_PCI_MEM_SIZE	0x02000000 +#define QCA955X_PCI_CFG_BASE0	0x14000000 +#define QCA955X_PCI_CFG_BASE1	0x16000000 +#define QCA955X_PCI_CFG_SIZE	0x1000 +#define QCA955X_PCI_CRP_BASE0	(AR71XX_APB_BASE + 0x000c0000) +#define QCA955X_PCI_CRP_BASE1	(AR71XX_APB_BASE + 0x00250000) +#define QCA955X_PCI_CRP_SIZE	0x1000 +#define QCA955X_PCI_CTRL_BASE0	(AR71XX_APB_BASE + 0x000f0000) +#define QCA955X_PCI_CTRL_BASE1	(AR71XX_APB_BASE + 0x00280000) +#define QCA955X_PCI_CTRL_SIZE	0x100 + +#define QCA955X_WMAC_BASE	(AR71XX_APB_BASE + 0x00100000) +#define QCA955X_WMAC_SIZE	0x20000 +#define QCA955X_EHCI0_BASE	0x1b000000 +#define QCA955X_EHCI1_BASE	0x1b400000 +#define QCA955X_EHCI_SIZE	0x1000 + +/* + * DDR_CTRL block + */ +#define AR71XX_DDR_REG_PCI_WIN0		0x7c +#define AR71XX_DDR_REG_PCI_WIN1		0x80 +#define AR71XX_DDR_REG_PCI_WIN2		0x84 +#define AR71XX_DDR_REG_PCI_WIN3		0x88 +#define AR71XX_DDR_REG_PCI_WIN4		0x8c +#define AR71XX_DDR_REG_PCI_WIN5		0x90 +#define AR71XX_DDR_REG_PCI_WIN6		0x94 +#define AR71XX_DDR_REG_PCI_WIN7		0x98 +#define AR71XX_DDR_REG_FLUSH_GE0	0x9c +#define AR71XX_DDR_REG_FLUSH_GE1	0xa0 +#define AR71XX_DDR_REG_FLUSH_USB	0xa4 +#define AR71XX_DDR_REG_FLUSH_PCI	0xa8 + +#define AR724X_DDR_REG_FLUSH_GE0	0x7c +#define AR724X_DDR_REG_FLUSH_GE1	0x80 +#define AR724X_DDR_REG_FLUSH_USB	0x84 +#define AR724X_DDR_REG_FLUSH_PCIE	0x88 + +#define AR913X_DDR_REG_FLUSH_GE0	0x7c +#define AR913X_DDR_REG_FLUSH_GE1	0x80 +#define AR913X_DDR_REG_FLUSH_USB	0x84 +#define AR913X_DDR_REG_FLUSH_WMAC	0x88 + +#define AR933X_DDR_REG_FLUSH_GE0	0x7c +#define AR933X_DDR_REG_FLUSH_GE1	0x80 +#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 + */ +#define AR71XX_PLL_REG_CPU_CONFIG	0x00 +#define AR71XX_PLL_REG_SEC_CONFIG	0x04 +#define AR71XX_PLL_REG_ETH0_INT_CLOCK	0x10 +#define AR71XX_PLL_REG_ETH1_INT_CLOCK	0x14 + +#define AR71XX_PLL_DIV_SHIFT		3 +#define AR71XX_PLL_DIV_MASK		0x1f +#define AR71XX_CPU_DIV_SHIFT		16 +#define AR71XX_CPU_DIV_MASK		0x3 +#define AR71XX_DDR_DIV_SHIFT		18 +#define AR71XX_DDR_DIV_MASK		0x3 +#define AR71XX_AHB_DIV_SHIFT		20 +#define AR71XX_AHB_DIV_MASK		0x7 + +#define AR724X_PLL_REG_CPU_CONFIG	0x00 +#define AR724X_PLL_REG_PCIE_CONFIG	0x18 + +#define AR724X_PLL_DIV_SHIFT		0 +#define AR724X_PLL_DIV_MASK		0x3ff +#define AR724X_PLL_REF_DIV_SHIFT	10 +#define AR724X_PLL_REF_DIV_MASK		0xf +#define AR724X_AHB_DIV_SHIFT		19 +#define AR724X_AHB_DIV_MASK		0x1 +#define AR724X_DDR_DIV_SHIFT		22 +#define AR724X_DDR_DIV_MASK		0x3 + +#define AR913X_PLL_REG_CPU_CONFIG	0x00 +#define AR913X_PLL_REG_ETH_CONFIG	0x04 +#define AR913X_PLL_REG_ETH0_INT_CLOCK	0x14 +#define AR913X_PLL_REG_ETH1_INT_CLOCK	0x18 + +#define AR913X_PLL_DIV_SHIFT		0 +#define AR913X_PLL_DIV_MASK		0x3ff +#define AR913X_DDR_DIV_SHIFT		22 +#define AR913X_DDR_DIV_MASK		0x3 +#define AR913X_AHB_DIV_SHIFT		19 +#define AR913X_AHB_DIV_MASK		0x1 + +#define AR933X_PLL_CPU_CONFIG_REG	0x00 +#define AR933X_PLL_CLOCK_CTRL_REG	0x08 + +#define AR933X_PLL_CPU_CONFIG_NINT_SHIFT	10 +#define AR933X_PLL_CPU_CONFIG_NINT_MASK		0x3f +#define AR933X_PLL_CPU_CONFIG_REFDIV_SHIFT	16 +#define AR933X_PLL_CPU_CONFIG_REFDIV_MASK	0x1f +#define AR933X_PLL_CPU_CONFIG_OUTDIV_SHIFT	23 +#define AR933X_PLL_CPU_CONFIG_OUTDIV_MASK	0x7 + +#define AR933X_PLL_CLOCK_CTRL_BYPASS		BIT(2) +#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_SHIFT	5 +#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_MASK	0x3 +#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_SHIFT	10 +#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_MASK	0x3 +#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) + +#define QCA955X_PLL_CPU_CONFIG_REG		0x00 +#define QCA955X_PLL_DDR_CONFIG_REG		0x04 +#define QCA955X_PLL_CLK_CTRL_REG		0x08 + +#define QCA955X_PLL_CPU_CONFIG_NFRAC_SHIFT	0 +#define QCA955X_PLL_CPU_CONFIG_NFRAC_MASK	0x3f +#define QCA955X_PLL_CPU_CONFIG_NINT_SHIFT	6 +#define QCA955X_PLL_CPU_CONFIG_NINT_MASK	0x3f +#define QCA955X_PLL_CPU_CONFIG_REFDIV_SHIFT	12 +#define QCA955X_PLL_CPU_CONFIG_REFDIV_MASK	0x1f +#define QCA955X_PLL_CPU_CONFIG_OUTDIV_SHIFT	19 +#define QCA955X_PLL_CPU_CONFIG_OUTDIV_MASK	0x3 + +#define QCA955X_PLL_DDR_CONFIG_NFRAC_SHIFT	0 +#define QCA955X_PLL_DDR_CONFIG_NFRAC_MASK	0x3ff +#define QCA955X_PLL_DDR_CONFIG_NINT_SHIFT	10 +#define QCA955X_PLL_DDR_CONFIG_NINT_MASK	0x3f +#define QCA955X_PLL_DDR_CONFIG_REFDIV_SHIFT	16 +#define QCA955X_PLL_DDR_CONFIG_REFDIV_MASK	0x1f +#define QCA955X_PLL_DDR_CONFIG_OUTDIV_SHIFT	23 +#define QCA955X_PLL_DDR_CONFIG_OUTDIV_MASK	0x7 + +#define QCA955X_PLL_CLK_CTRL_CPU_PLL_BYPASS		BIT(2) +#define QCA955X_PLL_CLK_CTRL_DDR_PLL_BYPASS		BIT(3) +#define QCA955X_PLL_CLK_CTRL_AHB_PLL_BYPASS		BIT(4) +#define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT		5 +#define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_MASK		0x1f +#define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT		10 +#define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_MASK		0x1f +#define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT		15 +#define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_MASK		0x1f +#define QCA955X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL		BIT(20) +#define QCA955X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL		BIT(21) +#define QCA955X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL		BIT(24) + +/* + * USB_CONFIG block + */ +#define AR71XX_USB_CTRL_REG_FLADJ	0x00 +#define AR71XX_USB_CTRL_REG_CONFIG	0x04 + +/* + * RESET block + */ +#define AR71XX_RESET_REG_TIMER			0x00 +#define AR71XX_RESET_REG_TIMER_RELOAD		0x04 +#define AR71XX_RESET_REG_WDOG_CTRL		0x08 +#define AR71XX_RESET_REG_WDOG			0x0c +#define AR71XX_RESET_REG_MISC_INT_STATUS	0x10 +#define AR71XX_RESET_REG_MISC_INT_ENABLE	0x14 +#define AR71XX_RESET_REG_PCI_INT_STATUS		0x18 +#define AR71XX_RESET_REG_PCI_INT_ENABLE		0x1c +#define AR71XX_RESET_REG_GLOBAL_INT_STATUS	0x20 +#define AR71XX_RESET_REG_RESET_MODULE		0x24 +#define AR71XX_RESET_REG_PERFC_CTRL		0x2c +#define AR71XX_RESET_REG_PERFC0			0x30 +#define AR71XX_RESET_REG_PERFC1			0x34 +#define AR71XX_RESET_REG_REV_ID			0x90 + +#define AR913X_RESET_REG_GLOBAL_INT_STATUS	0x18 +#define AR913X_RESET_REG_RESET_MODULE		0x1c +#define AR913X_RESET_REG_PERF_CTRL		0x20 +#define AR913X_RESET_REG_PERFC0			0x24 +#define AR913X_RESET_REG_PERFC1			0x28 + +#define AR724X_RESET_REG_RESET_MODULE		0x1c + +#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 QCA955X_RESET_REG_RESET_MODULE		0x1c +#define QCA955X_RESET_REG_BOOTSTRAP		0xb0 +#define QCA955X_RESET_REG_EXT_INT_STATUS	0xac + +#define MISC_INT_ETHSW			BIT(12) +#define MISC_INT_TIMER4			BIT(10) +#define MISC_INT_TIMER3			BIT(9) +#define MISC_INT_TIMER2			BIT(8) +#define MISC_INT_DMA			BIT(7) +#define MISC_INT_OHCI			BIT(6) +#define MISC_INT_PERFC			BIT(5) +#define MISC_INT_WDOG			BIT(4) +#define MISC_INT_UART			BIT(3) +#define MISC_INT_GPIO			BIT(2) +#define MISC_INT_ERROR			BIT(1) +#define MISC_INT_TIMER			BIT(0) + +#define AR71XX_RESET_EXTERNAL		BIT(28) +#define AR71XX_RESET_FULL_CHIP		BIT(24) +#define AR71XX_RESET_CPU_NMI		BIT(21) +#define AR71XX_RESET_CPU_COLD		BIT(20) +#define AR71XX_RESET_DMA		BIT(19) +#define AR71XX_RESET_SLIC		BIT(18) +#define AR71XX_RESET_STEREO		BIT(17) +#define AR71XX_RESET_DDR		BIT(16) +#define AR71XX_RESET_GE1_MAC		BIT(13) +#define AR71XX_RESET_GE1_PHY		BIT(12) +#define AR71XX_RESET_USBSUS_OVERRIDE	BIT(10) +#define AR71XX_RESET_GE0_MAC		BIT(9) +#define AR71XX_RESET_GE0_PHY		BIT(8) +#define AR71XX_RESET_USB_OHCI_DLL	BIT(6) +#define AR71XX_RESET_USB_HOST		BIT(5) +#define AR71XX_RESET_USB_PHY		BIT(4) +#define AR71XX_RESET_PCI_BUS		BIT(1) +#define AR71XX_RESET_PCI_CORE		BIT(0) + +#define AR7240_RESET_USB_HOST		BIT(5) +#define AR7240_RESET_OHCI_DLL		BIT(3) + +#define AR724X_RESET_GE1_MDIO		BIT(23) +#define AR724X_RESET_GE0_MDIO		BIT(22) +#define AR724X_RESET_PCIE_PHY_SERIAL	BIT(10) +#define AR724X_RESET_PCIE_PHY		BIT(7) +#define AR724X_RESET_PCIE		BIT(6) +#define AR724X_RESET_USB_HOST		BIT(5) +#define AR724X_RESET_USB_PHY		BIT(4) +#define AR724X_RESET_USBSUS_OVERRIDE	BIT(3) + +#define AR913X_RESET_AMBA2WMAC		BIT(22) +#define AR913X_RESET_USBSUS_OVERRIDE	BIT(10) +#define AR913X_RESET_USB_HOST		BIT(5) +#define AR913X_RESET_USB_PHY		BIT(4) + +#define AR933X_RESET_WMAC		BIT(11) +#define AR933X_RESET_USB_HOST		BIT(5) +#define AR933X_RESET_USB_PHY		BIT(4) +#define AR933X_RESET_USBSUS_OVERRIDE	BIT(3) + +#define AR934X_RESET_USB_PHY_ANALOG	BIT(11) +#define AR934X_RESET_USB_HOST		BIT(5) +#define AR934X_RESET_USB_PHY		BIT(4) +#define AR934X_RESET_USBSUS_OVERRIDE	BIT(3) + +#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 QCA955X_BOOTSTRAP_REF_CLK_40	BIT(4) + +#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 QCA955X_EXT_INT_WMAC_MISC		BIT(0) +#define QCA955X_EXT_INT_WMAC_TX			BIT(1) +#define QCA955X_EXT_INT_WMAC_RXLP		BIT(2) +#define QCA955X_EXT_INT_WMAC_RXHP		BIT(3) +#define QCA955X_EXT_INT_PCIE_RC1		BIT(4) +#define QCA955X_EXT_INT_PCIE_RC1_INT0		BIT(5) +#define QCA955X_EXT_INT_PCIE_RC1_INT1		BIT(6) +#define QCA955X_EXT_INT_PCIE_RC1_INT2		BIT(7) +#define QCA955X_EXT_INT_PCIE_RC1_INT3		BIT(8) +#define QCA955X_EXT_INT_PCIE_RC2		BIT(12) +#define QCA955X_EXT_INT_PCIE_RC2_INT0		BIT(13) +#define QCA955X_EXT_INT_PCIE_RC2_INT1		BIT(14) +#define QCA955X_EXT_INT_PCIE_RC2_INT2		BIT(15) +#define QCA955X_EXT_INT_PCIE_RC2_INT3		BIT(16) +#define QCA955X_EXT_INT_USB1			BIT(24) +#define QCA955X_EXT_INT_USB2			BIT(28) + +#define QCA955X_EXT_INT_WMAC_ALL \ +	(QCA955X_EXT_INT_WMAC_MISC | QCA955X_EXT_INT_WMAC_TX | \ +	 QCA955X_EXT_INT_WMAC_RXLP | QCA955X_EXT_INT_WMAC_RXHP) + +#define QCA955X_EXT_INT_PCIE_RC1_ALL \ +	(QCA955X_EXT_INT_PCIE_RC1 | QCA955X_EXT_INT_PCIE_RC1_INT0 | \ +	 QCA955X_EXT_INT_PCIE_RC1_INT1 | QCA955X_EXT_INT_PCIE_RC1_INT2 | \ +	 QCA955X_EXT_INT_PCIE_RC1_INT3) + +#define QCA955X_EXT_INT_PCIE_RC2_ALL \ +	(QCA955X_EXT_INT_PCIE_RC2 | QCA955X_EXT_INT_PCIE_RC2_INT0 | \ +	 QCA955X_EXT_INT_PCIE_RC2_INT1 | QCA955X_EXT_INT_PCIE_RC2_INT2 | \ +	 QCA955X_EXT_INT_PCIE_RC2_INT3) + +#define REV_ID_MAJOR_MASK		0xfff0 +#define REV_ID_MAJOR_AR71XX		0x00a0 +#define REV_ID_MAJOR_AR913X		0x00b0 +#define REV_ID_MAJOR_AR7240		0x00c0 +#define REV_ID_MAJOR_AR7241		0x0100 +#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 REV_ID_MAJOR_QCA9556		0x0130 +#define REV_ID_MAJOR_QCA9558		0x1130 + +#define AR71XX_REV_ID_MINOR_MASK	0x3 +#define AR71XX_REV_ID_MINOR_AR7130	0x0 +#define AR71XX_REV_ID_MINOR_AR7141	0x1 +#define AR71XX_REV_ID_MINOR_AR7161	0x2 +#define AR71XX_REV_ID_REVISION_MASK	0x3 +#define AR71XX_REV_ID_REVISION_SHIFT	2 + +#define AR913X_REV_ID_MINOR_MASK	0x3 +#define AR913X_REV_ID_MINOR_AR9130	0x0 +#define AR913X_REV_ID_MINOR_AR9132	0x1 +#define AR913X_REV_ID_REVISION_MASK	0x3 +#define AR913X_REV_ID_REVISION_SHIFT	2 + +#define AR933X_REV_ID_REVISION_MASK	0x3 + +#define AR724X_REV_ID_REVISION_MASK	0x3 + +#define AR934X_REV_ID_REVISION_MASK	0xf + +#define QCA955X_REV_ID_REVISION_MASK	0xf + +/* + * SPI block + */ +#define AR71XX_SPI_REG_FS	0x00	/* Function Select */ +#define AR71XX_SPI_REG_CTRL	0x04	/* SPI Control */ +#define AR71XX_SPI_REG_IOC	0x08	/* SPI I/O Control */ +#define AR71XX_SPI_REG_RDS	0x0c	/* Read Data Shift */ + +#define AR71XX_SPI_FS_GPIO	BIT(0)	/* Enable GPIO mode */ + +#define AR71XX_SPI_CTRL_RD	BIT(6)	/* Remap Disable */ +#define AR71XX_SPI_CTRL_DIV_MASK 0x3f + +#define AR71XX_SPI_IOC_DO	BIT(0)	/* Data Out pin */ +#define AR71XX_SPI_IOC_CLK	BIT(8)	/* CLK pin */ +#define AR71XX_SPI_IOC_CS(n)	BIT(16 + (n)) +#define AR71XX_SPI_IOC_CS0	AR71XX_SPI_IOC_CS(0) +#define AR71XX_SPI_IOC_CS1	AR71XX_SPI_IOC_CS(1) +#define AR71XX_SPI_IOC_CS2	AR71XX_SPI_IOC_CS(2) +#define AR71XX_SPI_IOC_CS_ALL	(AR71XX_SPI_IOC_CS0 | AR71XX_SPI_IOC_CS1 | \ +				 AR71XX_SPI_IOC_CS2) + +/* + * GPIO block + */ +#define AR71XX_GPIO_REG_OE		0x00 +#define AR71XX_GPIO_REG_IN		0x04 +#define AR71XX_GPIO_REG_OUT		0x08 +#define AR71XX_GPIO_REG_SET		0x0c +#define AR71XX_GPIO_REG_CLEAR		0x10 +#define AR71XX_GPIO_REG_INT_MODE	0x14 +#define AR71XX_GPIO_REG_INT_TYPE	0x18 +#define AR71XX_GPIO_REG_INT_POLARITY	0x1c +#define AR71XX_GPIO_REG_INT_PENDING	0x20 +#define AR71XX_GPIO_REG_INT_ENABLE	0x24 +#define AR71XX_GPIO_REG_FUNC		0x28 + +#define AR934X_GPIO_REG_FUNC		0x6c + +#define AR71XX_GPIO_COUNT		16 +#define AR7240_GPIO_COUNT		18 +#define AR7241_GPIO_COUNT		20 +#define AR913X_GPIO_COUNT		22 +#define AR933X_GPIO_COUNT		30 +#define AR934X_GPIO_COUNT		23 +#define QCA955X_GPIO_COUNT		24 + +/* + * SRIF block + */ +#define AR934X_SRIF_CPU_DPLL1_REG	0x1c0 +#define AR934X_SRIF_CPU_DPLL2_REG	0x1c4 +#define AR934X_SRIF_CPU_DPLL3_REG	0x1c8 + +#define AR934X_SRIF_DDR_DPLL1_REG	0x240 +#define AR934X_SRIF_DDR_DPLL2_REG	0x244 +#define AR934X_SRIF_DDR_DPLL3_REG	0x248 + +#define AR934X_SRIF_DPLL1_REFDIV_SHIFT	27 +#define AR934X_SRIF_DPLL1_REFDIV_MASK	0x1f +#define AR934X_SRIF_DPLL1_NINT_SHIFT	18 +#define AR934X_SRIF_DPLL1_NINT_MASK	0x1ff +#define AR934X_SRIF_DPLL1_NFRAC_MASK	0x0003ffff + +#define AR934X_SRIF_DPLL2_LOCAL_PLL	BIT(30) +#define AR934X_SRIF_DPLL2_OUTDIV_SHIFT	13 +#define AR934X_SRIF_DPLL2_OUTDIV_MASK	0x7 + +#endif /* __ASM_MACH_AR71XX_REGS_H */ diff --git a/arch/mips/include/asm/mach-ath79/ar933x_uart.h b/arch/mips/include/asm/mach-ath79/ar933x_uart.h new file mode 100644 index 00000000000..c2917b39966 --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/ar933x_uart.h @@ -0,0 +1,67 @@ +/* + *  Atheros AR933X UART defines + * + *  Copyright (C) 2011 Gabor Juhos <juhosg@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 __AR933X_UART_H +#define __AR933X_UART_H + +#define AR933X_UART_REGS_SIZE		20 +#define AR933X_UART_FIFO_SIZE		16 + +#define AR933X_UART_DATA_REG		0x00 +#define AR933X_UART_CS_REG		0x04 +#define AR933X_UART_CLOCK_REG		0x08 +#define AR933X_UART_INT_REG		0x0c +#define AR933X_UART_INT_EN_REG		0x10 + +#define AR933X_UART_DATA_TX_RX_MASK	0xff +#define AR933X_UART_DATA_RX_CSR		BIT(8) +#define AR933X_UART_DATA_TX_CSR		BIT(9) + +#define AR933X_UART_CS_PARITY_S		0 +#define AR933X_UART_CS_PARITY_M		0x3 +#define	  AR933X_UART_CS_PARITY_NONE	0 +#define	  AR933X_UART_CS_PARITY_ODD	1 +#define	  AR933X_UART_CS_PARITY_EVEN	2 +#define AR933X_UART_CS_IF_MODE_S	2 +#define AR933X_UART_CS_IF_MODE_M	0x3 +#define	  AR933X_UART_CS_IF_MODE_NONE	0 +#define	  AR933X_UART_CS_IF_MODE_DTE	1 +#define	  AR933X_UART_CS_IF_MODE_DCE	2 +#define AR933X_UART_CS_FLOW_CTRL_S	4 +#define AR933X_UART_CS_FLOW_CTRL_M	0x3 +#define AR933X_UART_CS_DMA_EN		BIT(6) +#define AR933X_UART_CS_TX_READY_ORIDE	BIT(7) +#define AR933X_UART_CS_RX_READY_ORIDE	BIT(8) +#define AR933X_UART_CS_TX_READY		BIT(9) +#define AR933X_UART_CS_RX_BREAK		BIT(10) +#define AR933X_UART_CS_TX_BREAK		BIT(11) +#define AR933X_UART_CS_HOST_INT		BIT(12) +#define AR933X_UART_CS_HOST_INT_EN	BIT(13) +#define AR933X_UART_CS_TX_BUSY		BIT(14) +#define AR933X_UART_CS_RX_BUSY		BIT(15) + +#define AR933X_UART_CLOCK_STEP_M	0xffff +#define AR933X_UART_CLOCK_SCALE_M	0xfff +#define AR933X_UART_CLOCK_SCALE_S	16 +#define AR933X_UART_CLOCK_STEP_M	0xffff + +#define AR933X_UART_INT_RX_VALID	BIT(0) +#define AR933X_UART_INT_TX_READY	BIT(1) +#define AR933X_UART_INT_RX_FRAMING_ERR	BIT(2) +#define AR933X_UART_INT_RX_OFLOW_ERR	BIT(3) +#define AR933X_UART_INT_TX_OFLOW_ERR	BIT(4) +#define AR933X_UART_INT_RX_PARITY_ERR	BIT(5) +#define AR933X_UART_INT_RX_BREAK_ON	BIT(6) +#define AR933X_UART_INT_RX_BREAK_OFF	BIT(7) +#define AR933X_UART_INT_RX_FULL		BIT(8) +#define AR933X_UART_INT_TX_EMPTY	BIT(9) +#define AR933X_UART_INT_ALLINTS		0x3ff + +#endif /* __AR933X_UART_H */ diff --git a/arch/mips/include/asm/mach-ath79/ath79.h b/arch/mips/include/asm/mach-ath79/ath79.h new file mode 100644 index 00000000000..1557934aaca --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/ath79.h @@ -0,0 +1,145 @@ +/* + *  Atheros AR71XX/AR724X/AR913X common definitions + * + *  Copyright (C) 2008-2011 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 + * + *  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_H +#define __ASM_MACH_ATH79_H + +#include <linux/types.h> +#include <linux/io.h> + +enum ath79_soc_type { +	ATH79_SOC_UNKNOWN, +	ATH79_SOC_AR7130, +	ATH79_SOC_AR7141, +	ATH79_SOC_AR7161, +	ATH79_SOC_AR7240, +	ATH79_SOC_AR7241, +	ATH79_SOC_AR7242, +	ATH79_SOC_AR9130, +	ATH79_SOC_AR9132, +	ATH79_SOC_AR9330, +	ATH79_SOC_AR9331, +	ATH79_SOC_AR9341, +	ATH79_SOC_AR9342, +	ATH79_SOC_AR9344, +	ATH79_SOC_QCA9556, +	ATH79_SOC_QCA9558, +}; + +extern enum ath79_soc_type ath79_soc; +extern unsigned int ath79_soc_rev; + +static inline int soc_is_ar71xx(void) +{ +	return (ath79_soc == ATH79_SOC_AR7130 || +		ath79_soc == ATH79_SOC_AR7141 || +		ath79_soc == ATH79_SOC_AR7161); +} + +static inline int soc_is_ar724x(void) +{ +	return (ath79_soc == ATH79_SOC_AR7240 || +		ath79_soc == ATH79_SOC_AR7241 || +		ath79_soc == ATH79_SOC_AR7242); +} + +static inline int soc_is_ar7240(void) +{ +	return (ath79_soc == ATH79_SOC_AR7240); +} + +static inline int soc_is_ar7241(void) +{ +	return (ath79_soc == ATH79_SOC_AR7241); +} + +static inline int soc_is_ar7242(void) +{ +	return (ath79_soc == ATH79_SOC_AR7242); +} + +static inline int soc_is_ar913x(void) +{ +	return (ath79_soc == ATH79_SOC_AR9130 || +		ath79_soc == ATH79_SOC_AR9132); +} + +static inline int soc_is_ar933x(void) +{ +	return (ath79_soc == ATH79_SOC_AR9330 || +		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(); +} + +static inline int soc_is_qca9556(void) +{ +	return ath79_soc == ATH79_SOC_QCA9556; +} + +static inline int soc_is_qca9558(void) +{ +	return ath79_soc == ATH79_SOC_QCA9558; +} + +static inline int soc_is_qca955x(void) +{ +	return soc_is_qca9556() || soc_is_qca9558(); +} + +extern void __iomem *ath79_ddr_base; +extern void __iomem *ath79_pll_base; +extern void __iomem *ath79_reset_base; + +static inline void ath79_pll_wr(unsigned reg, u32 val) +{ +	__raw_writel(val, ath79_pll_base + reg); +} + +static inline u32 ath79_pll_rr(unsigned reg) +{ +	return __raw_readl(ath79_pll_base + reg); +} + +static inline void ath79_reset_wr(unsigned reg, u32 val) +{ +	__raw_writel(val, ath79_reset_base + reg); +} + +static inline u32 ath79_reset_rr(unsigned reg) +{ +	return __raw_readl(ath79_reset_base + reg); +} + +void ath79_device_reset_set(u32 mask); +void ath79_device_reset_clear(u32 mask); + +#endif /* __ASM_MACH_ATH79_H */ diff --git a/arch/mips/include/asm/mach-ath79/ath79_spi_platform.h b/arch/mips/include/asm/mach-ath79/ath79_spi_platform.h new file mode 100644 index 00000000000..aa2283e602f --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/ath79_spi_platform.h @@ -0,0 +1,23 @@ +/* + *  Platform data definition for Atheros AR71XX/AR724X/AR913X SPI controller + * + *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@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 _ATH79_SPI_PLATFORM_H +#define _ATH79_SPI_PLATFORM_H + +struct ath79_spi_platform_data { +	unsigned	bus_num; +	unsigned	num_chipselect; +}; + +struct ath79_spi_controller_data { +	unsigned	gpio; +}; + +#endif /* _ATH79_SPI_PLATFORM_H */ diff --git a/arch/mips/include/asm/mach-ath79/cpu-feature-overrides.h b/arch/mips/include/asm/mach-ath79/cpu-feature-overrides.h new file mode 100644 index 00000000000..0089a740e5a --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/cpu-feature-overrides.h @@ -0,0 +1,55 @@ +/* + *  Atheros AR71XX/AR724X/AR913X specific CPU feature overrides + * + *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> + *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> + * + *  This file was derived from: include/asm-mips/cpu-features.h + *	Copyright (C) 2003, 2004 Ralf Baechle + *	Copyright (C) 2004 Maciej W. Rozycki + * + *  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_CPU_FEATURE_OVERRIDES_H +#define __ASM_MACH_ATH79_CPU_FEATURE_OVERRIDES_H + +#define cpu_has_tlb		1 +#define cpu_has_4kex		1 +#define cpu_has_3k_cache	0 +#define cpu_has_4k_cache	1 +#define cpu_has_tx39_cache	0 +#define cpu_has_sb1_cache	0 +#define cpu_has_fpu		0 +#define cpu_has_32fpr		0 +#define cpu_has_counter		1 +#define cpu_has_watch		1 +#define cpu_has_divec		1 + +#define cpu_has_prefetch	1 +#define cpu_has_ejtag		1 +#define cpu_has_llsc		1 + +#define cpu_has_mips16		1 +#define cpu_has_mdmx		0 +#define cpu_has_mips3d		0 +#define cpu_has_smartmips	0 + +#define cpu_has_mips32r1	1 +#define cpu_has_mips32r2	1 +#define cpu_has_mips64r1	0 +#define cpu_has_mips64r2	0 + +#define cpu_has_mipsmt		0 + +#define cpu_has_64bits		0 +#define cpu_has_64bit_zero_reg	0 +#define cpu_has_64bit_gp_regs	0 +#define cpu_has_64bit_addresses 0 + +#define cpu_dcache_line_size()	32 +#define cpu_icache_line_size()	32 + +#endif /* __ASM_MACH_ATH79_CPU_FEATURE_OVERRIDES_H */ diff --git a/arch/mips/include/asm/mach-ath79/gpio.h b/arch/mips/include/asm/mach-ath79/gpio.h new file mode 100644 index 00000000000..60dcb62785b --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/gpio.h @@ -0,0 +1,26 @@ +/* + *  Atheros AR71XX/AR724X/AR913X GPIO API definitions + * + *  Copyright (C) 2008-2010 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_GPIO_H +#define __ASM_MACH_ATH79_GPIO_H + +#define ARCH_NR_GPIOS	64 +#include <asm-generic/gpio.h> + +int gpio_to_irq(unsigned gpio); +int irq_to_gpio(unsigned irq); +int gpio_get_value(unsigned gpio); +void gpio_set_value(unsigned gpio, int value); + +#define gpio_cansleep	__gpio_cansleep + +#endif /* __ASM_MACH_ATH79_GPIO_H */ diff --git a/arch/mips/include/asm/mach-ath79/irq.h b/arch/mips/include/asm/mach-ath79/irq.h new file mode 100644 index 00000000000..5c9ca76a7eb --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/irq.h @@ -0,0 +1,35 @@ +/* + *  Copyright (C) 2008-2010 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_IRQ_H +#define __ASM_MACH_ATH79_IRQ_H + +#define MIPS_CPU_IRQ_BASE	0 +#define NR_IRQS			51 + +#define ATH79_CPU_IRQ(_x)	(MIPS_CPU_IRQ_BASE + (_x)) + +#define ATH79_MISC_IRQ_BASE	8 +#define ATH79_MISC_IRQ_COUNT	32 +#define ATH79_MISC_IRQ(_x)	(ATH79_MISC_IRQ_BASE + (_x)) + +#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_IP3_IRQ_BASE	(ATH79_IP2_IRQ_BASE + ATH79_IP2_IRQ_COUNT) +#define ATH79_IP3_IRQ_COUNT     3 +#define ATH79_IP3_IRQ(_x)       (ATH79_IP3_IRQ_BASE + (_x)) + +#include_next <irq.h> + +#endif /* __ASM_MACH_ATH79_IRQ_H */ diff --git a/arch/mips/include/asm/mach-ath79/kernel-entry-init.h b/arch/mips/include/asm/mach-ath79/kernel-entry-init.h new file mode 100644 index 00000000000..d8d046bccc8 --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/kernel-entry-init.h @@ -0,0 +1,32 @@ +/* + *  Atheros AR71XX/AR724X/AR913X specific kernel entry setup + * + *  Copyright (C) 2009 Gabor Juhos <juhosg@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_KERNEL_ENTRY_H +#define __ASM_MACH_ATH79_KERNEL_ENTRY_H + +	/* +	 * Some bootloaders set the 'Kseg0 coherency algorithm' to +	 * 'Cacheable, noncoherent, write-through, no write allocate' +	 * and this cause performance issues. Let's go and change it to +	 * 'Cacheable, noncoherent, write-back, write allocate' +	 */ +	.macro	kernel_entry_setup +	mfc0	t0, CP0_CONFIG +	li	t1, ~CONF_CM_CMASK +	and	t0, t1 +	ori	t0, CONF_CM_CACHABLE_NONCOHERENT +	mtc0	t0, CP0_CONFIG +	nop +	.endm + +	.macro	smp_slave_setup +	.endm + +#endif /* __ASM_MACH_ATH79_KERNEL_ENTRY_H */ diff --git a/arch/mips/include/asm/mach-ath79/war.h b/arch/mips/include/asm/mach-ath79/war.h new file mode 100644 index 00000000000..0bb30905fd5 --- /dev/null +++ b/arch/mips/include/asm/mach-ath79/war.h @@ -0,0 +1,24 @@ +/* + * 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_ATH79_WAR_H +#define __ASM_MACH_ATH79_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 ICACHE_REFILLS_WORKAROUND_WAR	0 +#define R10000_LLSC_WAR			0 +#define MIPS34K_MISSED_ITLB_WAR		0 + +#endif /* __ASM_MACH_ATH79_WAR_H */  | 
