blob: 1403f4444eeff786eac28464a9f36e86c5cea573 [file] [log] [blame]
/*
* arch/arm/mach-comcerto/include/mach/comcerto-common.h
*
* Copyright (C) 2012 Mindspeed Technologies, Inc.
*
* 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
*/
#ifndef __ASM_ARCH_HARDWARE_H
#error "Do not include this directly, instead #include <asm/arch/hardware.h>"
#endif
#ifndef __ASM_COMCERTO_COMMON_H__
#define __ASM_COMCERTO_COMMON_H__
#include <asm/types.h>
#define APB_VADDR(x) ((void __iomem *)((x) - COMCERTO_AXI_APB_BASE + COMCERTO_APB_VADDR)) /* macro to get virtual address of IO on APB Bus from Physical address*/
#define AXI_VADDR(x) ((x) - COMCERTO_AXI_SPI_BASE + COMCERTO_AXI_SSI_VADDR) /* macro to get virtual address of IO on AXI Bus from Physical address*/
#define BIT_0_MSK 0x00000001
#define BIT_1_MSK 0x00000002
#define BIT_2_MSK 0x00000004
#define BIT_3_MSK 0x00000008
#define BIT_4_MSK 0x00000010
#define BIT_5_MSK 0x00000020
#define BIT_6_MSK 0x00000040
#define BIT_7_MSK 0x00000080
#define BIT_8_MSK 0x00000100
#define BIT_9_MSK 0x00000200
#define BIT_10_MSK 0x00000400
#define BIT_11_MSK 0x00000800
#define BIT_12_MSK 0x00001000
#define BIT_13_MSK 0x00002000
#define BIT_14_MSK 0x00004000
#define BIT_15_MSK 0x00008000
#define BIT_16_MSK 0x00010000
#define BIT_17_MSK 0x00020000
#define BIT_18_MSK 0x00040000
#define BIT_19_MSK 0x00080000
#define BIT_20_MSK 0x00100000
#define BIT_21_MSK 0x00200000
#define BIT_22_MSK 0x00400000
#define BIT_23_MSK 0x00800000
#define BIT_24_MSK 0x01000000
#define BIT_25_MSK 0x02000000
#define BIT_26_MSK 0x04000000
#define BIT_27_MSK 0x08000000
#define BIT_28_MSK 0x10000000
#define BIT_29_MSK 0x20000000
#define BIT_30_MSK 0x40000000
#define BIT_31_MSK 0x80000000
/*
* GPIO
*/
/* Set gpio pins specified by gpiomask to be outputs */
#define comcerto_gpio_enable_output(gpiomask) __raw_writel(__raw_readl(COMCERTO_GPIO_OE_REG) | (gpiomask), COMCERTO_GPIO_OE_REG)
/* Set output pins specified by gpiomask to low */
#define comcerto_gpio_set_0(gpiomask) __raw_writel(__raw_readl(COMCERTO_GPIO_OUTPUT_REG) & ~(gpiomask), COMCERTO_GPIO_OUTPUT_REG)
/* Set output pins specified by gpiomask to high */
#define comcerto_gpio_set_1(gpiomask) __raw_writel(__raw_readl(COMCERTO_GPIO_OUTPUT_REG) | (gpiomask), COMCERTO_GPIO_OUTPUT_REG)
/* Read status of input pins specified by gpiomask */
#define comcerto_gpio_read(gpiomask) (__raw_readl(COMCERTO_GPIO_INPUT_REG) & (gpiomask))
#ifndef __ASSEMBLY__
#define CONFIG_COMCERTO_GEMAC 1
#define CONFIG_COMCERTO_USE_MII 1
#define CONFIG_COMCERTO_USE_RMII 2
#define CONFIG_COMCERTO_USE_GMII 4
#define CONFIG_COMCERTO_USE_RGMII 8
#define CONFIG_COMCERTO_USE_SGMII 0x10
#define GEMAC_SW_CONF (1 << 8) | (1 << 11) // GEMAC configured by SW
#define GEMAC_PHY_CONF 0 // GEMAC configured by phy lines (not for MII/GMII)
#define GEMAC_SW_FULL_DUPLEX (1 << 9)
#define GEMAC_SW_SPEED_10M (0 << 12)
#define GEMAC_SW_SPEED_100M (1 << 12)
#define GEMAC_SW_SPEED_1G (2 << 12)
#define GEMAC_NO_PHY (1 << 0) // set if no phy connected to MAC (ex ethernet switch). In this case use MAC fixed configuration
#define GEMAC_PHY_RGMII_ADD_DELAY (1 << 1)
#define GEM0_MAC { 0x00, 0xED, 0xCD, 0xEF, 0xAA, 0xCC }
#define GEM1_MAC { 0x00, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E }
#define GEM2_MAC { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 }
struct comcerto_eth_platform_data {
/* device specific information */
u32 device_flags;
char name[16];
/* board specific information */
u32 mii_config;
u32 gemac_mode;
u32 phy_flags;
u32 gem_id;
u32 bus_id;
u32 phy_id;
u8 *mac_addr;
};
struct comcerto_mdio_platform_data {
int enabled;
int irq[32];
u32 phy_mask;
int mdc_div;
};
struct comcerto_pfe_platform_data
{
struct comcerto_eth_platform_data comcerto_eth_pdata[3];
struct comcerto_mdio_platform_data comcerto_mdio_pdata[3];
};
struct comcerto_tdm_data {
u8 fsoutput; /* Generic Pad Control and Version ID Register[2] */
u8 fspolarity; /* 28 FSYNC_FALL(RISE)_EDGE */
u16 fshwidth; /* High_Phase_Width[10:0] */
u16 fslwidth; /* Low_Phase_Width[26:16]] */
u32 clockhz; /* INC_VALUE[29:0] According to the desired TDM clock output frequency, this field should be configured */
u8 clockout; /* IO Control Register[21] hardware or software control selection IO Control Register[20] pads are input (output) */
u8 tdmmux;
#if 0
u32 tdmck;
u32 tdmfs;
u32 tdmdx;
u32 tdmdr;
#endif
};
/* L210 cache controller value
// Configure Aux:
// [11:9]=[8:6]=[2:0]=001 RAM LAT = 2 cycles
// [5:3]=000 Data write latency is 1
// [12]=0 WRAP access is enabled
// [16:13]=1000 8-way cache
// [19:17]=001 16KB way
// [20]=1 Event bus is enabled
// [21]=1 Parity is enabled
// [22]=0 Shared accesses treated as noncacheable
// [23]=0 HPROT is used
// [24]=1 Abort generation of exclusive access disabled
*/
#define L210_AUX_CTRL_REG 0x01330241
#endif
#endif