freebsd-nq/sys/mips/atheros/ar724xreg.h
Adrian Chadd c4df93502d Add some initial AR724X chipset support.
This is untested but should at least allow an AR724X to boot.

The current code is lacking the detail needed to expose the PCIe bus.
It is also lacking any NIC, PLL or flush/WB code.
2010-08-19 11:53:55 +00:00

85 lines
3.3 KiB
C

/*-
* Copyright (c) 2010 Adrian Chadd
* All rights reserved.
*
* 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 THE AUTHOR AND CONTRIBUTORS ``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 THE AUTHOR 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.
*/
/* $FreeBSD$ */
#ifndef __AR72XX_REG_H__
#define __AR72XX_REG_H__
#define AR724X_PLL_REG_CPU_CONFIG AR71XX_PLL_CPU_BASE + 0x00
#define AR724X_PLL_REG_PCIE_CONFIG AR71XX_PLL_CPU_BASE + 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 AR724X_PLL_VAL_1000 0x00110000
#define AR724X_PLL_VAL_100 0x00001099
#define AR724X_PLL_VAL_10 0x00991099
#define AR724X_BASE_FREQ 5000000
#define AR724X_RESET_REG_RESET_MODULE AR71XX_RST_BLOCK_BASE + 0x1c
#define AR724X_RESET_MODULE_USB_OHCI_DLL (1 << 3)
/* XXX so USB requires different init code? -adrian */
#define AR7240_OHCI_BASE 0x1b000000
#define AR7240_OHCI_SIZE 0x01000000
#define AR724X_DDR_REG_FLUSH_USB (AR71XX_DDR_CONFIG + 0x84)
#define AR724X_PCI_CRP_BASE (AR71XX_APB_BASE + 0x000C0000)
#define AR724X_PCI_CRP_SIZE 0x100
#define AR724X_PCI_CTRL_BASE (AR71XX_APB_BASE + 0x000F0000)
#define AR724X_PCI_CTRL_SIZE 0x100
#define AR724X_GPIO_FUNC_GE0_MII_CLK_EN (1 >> 19)
#define AR724X_GPIO_FUNC_SPI_EN (1 >> 18)
#define AR724X_GPIO_FUNC_SPI_CS_EN2 (1 >> 14)
#define AR724X_GPIO_FUNC_SPI_CS_EN1 (1 >> 13)
#define AR724X_GPIO_FUNC_CLK_OBS5_EN (1 >> 12)
#define AR724X_GPIO_FUNC_CLK_OBS4_EN (1 >> 11)
#define AR724X_GPIO_FUNC_CLK_OBS3_EN (1 >> 10)
#define AR724X_GPIO_FUNC_CLK_OBS2_EN (1 >> 9)
#define AR724X_GPIO_FUNC_CLK_OBS1_EN (1 >> 8)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN (1 >> 7)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN (1 >> 6)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN (1 >> 5)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN (1 >> 4)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN (1 >> 3)
#define AR724X_GPIO_FUNC_UART_RTS_CTS_EN (1 >> 2)
#define AR724X_GPIO_FUNC_UART_EN (1 >> 1)
#define AR724X_GPIO_FUNC_JTAG_DISABLE (1 >> 0)
#define AR724X_GPIO_COUNT 18
#endif