blob: 0b7d498ba18d39e274a1ce890bab206144843661 [file] [log] [blame]
/*
* (C) Copyright 2010 Quantenna Communications Inc.
*
* See file CREDITS for list of people who contributed to this
* project.
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
/*
* Header file which describes Topaz platform.
* Has to be used by both kernel and bootloader.
*/
#ifndef __TOPAZ_CONFIG_H
#define __TOPAZ_CONFIG_H
#include "current_platform.h"
#if !TOPAZ_FPGA_PLATFORM
#undef TOPAZ_ICACHE_WORKAROUND
#endif
/*
* Control registers move depending on unified + alias bit
*/
#define TOPAZ_MMAP_UNIFIED 0
#define TOPAZ_MMAP_ALIAS 0
#define TOPAZ_RX_ACCELERATE 1
/*
* VSP/QTM
* Macro TOPAZ_QTM is used to help identify changes between original VSP and QTM.
* In Lhost kernel driver, it must be used within CONFIG_QVSP(in kernel .config).
* CONFIG_QVSP TOPAZ_QTM ruby topaz
* Y 1 invalid *QTM works
* Y 0 *VSP works VSP alive but doesn't work for HDP
* N 1 invalid *no VSP/QTM
* N 0 *no VSP no VSP/QTM, and no QTM changes in MuC and AuC
* So generally, sololy changing CONFIG_QVSP works for both ruby and topaz as indicated by *.
* But to throughly clean QTM code in AuC and MuC, disable TOPAZ_QTM in topaz below.
*/
#define TOPAZ_QTM 1
/*
* HBM buffer process in MuC requires that TOPAZ_AUC_RX is dependent on TOPAZ_RX_ACCELERATE, so let's
* enable TOPAZ_AUC_RX only when TOPAZ_RX_ACCELERATE is enabled.
*/
#if TOPAZ_RX_ACCELERATE
#define TOPAZ_AUC_RX 1
#else
#define TOPAZ_AUC_RX 0
#endif
#if TOPAZ_MMAP_ALIAS && !TOPAZ_MMAP_UNIFIED
#error Alias map requires unified map
#endif
#if TOPAZ_MMAP_ALIAS
#define TOPAZ_ALIAS_MAP_SWITCH(a, b) (b)
#else
#define TOPAZ_ALIAS_MAP_SWITCH(a, b) (a)
#endif
/* Topaz fixed phy addresses */
#define TOPAZ_FPGAA_PHY0_ADDR 2
#define TOPAZ_FPGAA_PHY1_ADDR 3
#define TOPAZ_FPGAB_PHY0_ADDR 4
#define TOPAZ_FPGAB_PHY1_ADDR 1
#define TOPAZ_PHY0_ADDR 1
#define TOPAZ_PHY1_ADDR 3
#ifndef TOPAZ_FPGA_PLATFORM
#define TOPAZ_FPGA_PLATFORM 0
#endif
/* Definition indicates that Topaz platform is FPGA */
#if TOPAZ_FPGA_PLATFORM
/* CLK speeds are in MHz and 1/10th the speed of actual ASIC */
#define TOPAZ_SERIAL_BAUD 38400
#define TOPAZ_APB_CLK 12500000
#define TOPAZ_AHB_CLK 25000000
#define TOPAZ_CPU_CLK 50000000
#define RUBY_FPGA_DDR
#else
#define TOPAZ_SERIAL_BAUD 115200
#define TOPAZ_APB_CLK 125000000
#define TOPAZ_AHB_CLK 250000000
#define TOPAZ_CPU_CLK 500000000
#define RUBY_ASIC_DDR
#endif /* #if TOPAZ_FPGA_PLATFORM */
/*
* Setting UPF_SPD_FLAG gives a developer the option to set the
* flag to match a UPF_ define from <linux>/include/linux/serial_core.h
* or set the value to 0 to use the default baud rate setting DEFAULT_BAUD
*/
#define UPF_SPD_FLAG 0
#define DEFAULT_BAUD TOPAZ_SERIAL_BAUD
/*
* Re-use Ruby defines to simplify the number of changes required
* to compile new binaries for Topaz
*/
#define RUBY_SERIAL_BAUD TOPAZ_SERIAL_BAUD
#define RUBY_FIXED_DEV_CLK TOPAZ_APB_CLK
#define RUBY_FIXED_CPU_CLK TOPAZ_CPU_CLK
#ifdef PLATFORM_DEFAULT_BOARD_ID
#define DEFAULT_BOARD_ID PLATFORM_DEFAULT_BOARD_ID
#else
/* Default board id used to match Topaz setting if there is no SPI Flash */
#define DEFAULT_BOARD_ID QTN_TOPAZ_BB_BOARD
#endif /* TOPAZ_DEFAULT_BOARD_ID */
#ifndef PLATFORM_ARC7_MMU_VER
#define PLATFORM_ARC7_MMU_VER 2
#endif
#define CONFIG_RUBY_BROKEN_IPC_IRQS 0
#define RUBY_IPC_HI_IRQ(bit_num) ((bit_num) + 8)
#define RUBY_M2L_IPC_HI_IRQ(bit_num) (bit_num)
#define PLATFORM_REG_SWITCH(reg1, reg2) (reg2)
#define writel_topaz(a, b) writel(a, b)
#define writel_ruby(a, b)
#define QTN_VLAN_LLC_ENCAP 1
#define TOPAZ_128_NODE_MODE 1
#endif /* #ifndef __TOPAZ_CONFIG_H */