diff options
Diffstat (limited to 'arch/mips/include/asm/mach-bcm47xx')
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/bcm47xx.h | 40 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 117 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/bcm47xx_nvram.h (renamed from arch/mips/include/asm/mach-bcm47xx/nvram.h) | 30 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h | 82 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/gpio.h | 68 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/war.h | 1 | 
6 files changed, 269 insertions, 69 deletions
diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h index d008f47a28b..7527c1d33d0 100644 --- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h @@ -19,7 +19,43 @@  #ifndef __ASM_BCM47XX_H  #define __ASM_BCM47XX_H -/* SSB bus */ -extern struct ssb_bus ssb_bcm47xx; +#include <linux/ssb/ssb.h> +#include <linux/bcma/bcma.h> +#include <linux/bcma/bcma_soc.h> + +enum bcm47xx_bus_type { +#ifdef CONFIG_BCM47XX_SSB +	BCM47XX_BUS_TYPE_SSB, +#endif +#ifdef CONFIG_BCM47XX_BCMA +	BCM47XX_BUS_TYPE_BCMA, +#endif +}; + +union bcm47xx_bus { +#ifdef CONFIG_BCM47XX_SSB +	struct ssb_bus ssb; +#endif +#ifdef CONFIG_BCM47XX_BCMA +	struct bcma_soc bcma; +#endif +}; + +extern union bcm47xx_bus bcm47xx_bus; +extern enum bcm47xx_bus_type bcm47xx_bus_type; + +void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix, +			bool fallback); + +#ifdef CONFIG_BCM47XX_SSB +void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo, +				const char *prefix); +#endif +#ifdef CONFIG_BCM47XX_BCMA +void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo, +				 const char *prefix); +#endif + +void bcm47xx_set_system_type(u16 chip_id);  #endif /* __ASM_BCM47XX_H */ diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h new file mode 100644 index 00000000000..bba7399a49a --- /dev/null +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h @@ -0,0 +1,117 @@ +#ifndef __BCM47XX_BOARD_H +#define __BCM47XX_BOARD_H + +enum bcm47xx_board { +	BCM47XX_BOARD_ASUS_RTAC66U, +	BCM47XX_BOARD_ASUS_RTN10, +	BCM47XX_BOARD_ASUS_RTN10D, +	BCM47XX_BOARD_ASUS_RTN10U, +	BCM47XX_BOARD_ASUS_RTN12, +	BCM47XX_BOARD_ASUS_RTN12B1, +	BCM47XX_BOARD_ASUS_RTN12C1, +	BCM47XX_BOARD_ASUS_RTN12D1, +	BCM47XX_BOARD_ASUS_RTN12HP, +	BCM47XX_BOARD_ASUS_RTN15U, +	BCM47XX_BOARD_ASUS_RTN16, +	BCM47XX_BOARD_ASUS_RTN53, +	BCM47XX_BOARD_ASUS_RTN66U, +	BCM47XX_BOARD_ASUS_WL300G, +	BCM47XX_BOARD_ASUS_WL320GE, +	BCM47XX_BOARD_ASUS_WL330GE, +	BCM47XX_BOARD_ASUS_WL500GD, +	BCM47XX_BOARD_ASUS_WL500GPV1, +	BCM47XX_BOARD_ASUS_WL500GPV2, +	BCM47XX_BOARD_ASUS_WL500W, +	BCM47XX_BOARD_ASUS_WL520GC, +	BCM47XX_BOARD_ASUS_WL520GU, +	BCM47XX_BOARD_ASUS_WL700GE, +	BCM47XX_BOARD_ASUS_WLHDD, + +	BCM47XX_BOARD_BELKIN_F7D3301, +	BCM47XX_BOARD_BELKIN_F7D3302, +	BCM47XX_BOARD_BELKIN_F7D4301, +	BCM47XX_BOARD_BELKIN_F7D4302, +	BCM47XX_BOARD_BELKIN_F7D4401, + +	BCM47XX_BOARD_BUFFALO_WBR2_G54, +	BCM47XX_BOARD_BUFFALO_WHR2_A54G54, +	BCM47XX_BOARD_BUFFALO_WHR_G125, +	BCM47XX_BOARD_BUFFALO_WHR_G54S, +	BCM47XX_BOARD_BUFFALO_WHR_HP_G54, +	BCM47XX_BOARD_BUFFALO_WLA2_G54L, +	BCM47XX_BOARD_BUFFALO_WZR_G300N, +	BCM47XX_BOARD_BUFFALO_WZR_RS_G54, +	BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP, + +	BCM47XX_BOARD_CISCO_M10V1, +	BCM47XX_BOARD_CISCO_M20V1, + +	BCM47XX_BOARD_DELL_TM2300, + +	BCM47XX_BOARD_DLINK_DIR130, +	BCM47XX_BOARD_DLINK_DIR330, + +	BCM47XX_BOARD_HUAWEI_E970, + +	BCM47XX_BOARD_LINKSYS_E900V1, +	BCM47XX_BOARD_LINKSYS_E1000V1, +	BCM47XX_BOARD_LINKSYS_E1000V2, +	BCM47XX_BOARD_LINKSYS_E1000V21, +	BCM47XX_BOARD_LINKSYS_E1200V2, +	BCM47XX_BOARD_LINKSYS_E2000V1, +	BCM47XX_BOARD_LINKSYS_E3000V1, +	BCM47XX_BOARD_LINKSYS_E3200V1, +	BCM47XX_BOARD_LINKSYS_E4200V1, +	BCM47XX_BOARD_LINKSYS_WRT150NV1, +	BCM47XX_BOARD_LINKSYS_WRT150NV11, +	BCM47XX_BOARD_LINKSYS_WRT160NV1, +	BCM47XX_BOARD_LINKSYS_WRT160NV3, +	BCM47XX_BOARD_LINKSYS_WRT300NV11, +	BCM47XX_BOARD_LINKSYS_WRT310NV1, +	BCM47XX_BOARD_LINKSYS_WRT310NV2, +	BCM47XX_BOARD_LINKSYS_WRT54G3GV2, +	BCM47XX_BOARD_LINKSYS_WRT54G, +	BCM47XX_BOARD_LINKSYS_WRT610NV1, +	BCM47XX_BOARD_LINKSYS_WRT610NV2, +	BCM47XX_BOARD_LINKSYS_WRTSL54GS, + +	BCM47XX_BOARD_MOTOROLA_WE800G, +	BCM47XX_BOARD_MOTOROLA_WR850GP, +	BCM47XX_BOARD_MOTOROLA_WR850GV2V3, + +	BCM47XX_BOARD_NETGEAR_WGR614V8, +	BCM47XX_BOARD_NETGEAR_WGR614V9, +	BCM47XX_BOARD_NETGEAR_WNDR3300, +	BCM47XX_BOARD_NETGEAR_WNDR3400V1, +	BCM47XX_BOARD_NETGEAR_WNDR3400V2, +	BCM47XX_BOARD_NETGEAR_WNDR3400VCNA, +	BCM47XX_BOARD_NETGEAR_WNDR3700V3, +	BCM47XX_BOARD_NETGEAR_WNDR4000, +	BCM47XX_BOARD_NETGEAR_WNDR4500V1, +	BCM47XX_BOARD_NETGEAR_WNDR4500V2, +	BCM47XX_BOARD_NETGEAR_WNR2000, +	BCM47XX_BOARD_NETGEAR_WNR3500L, +	BCM47XX_BOARD_NETGEAR_WNR3500U, +	BCM47XX_BOARD_NETGEAR_WNR3500V2, +	BCM47XX_BOARD_NETGEAR_WNR3500V2VC, +	BCM47XX_BOARD_NETGEAR_WNR834BV2, + +	BCM47XX_BOARD_PHICOMM_M1, + +	BCM47XX_BOARD_SIEMENS_SE505V2, + +	BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE, + +	BCM47XX_BOARD_ZTE_H218N, + +	BCM47XX_BOARD_UNKNOWN, +	BCM47XX_BOARD_NO, +}; + +#define BCM47XX_BOARD_MAX_NAME 30 + +void bcm47xx_board_detect(void); +enum bcm47xx_board bcm47xx_board_get(void); +const char *bcm47xx_board_get_name(void); + +#endif /* __BCM47XX_BOARD_H */ diff --git a/arch/mips/include/asm/mach-bcm47xx/nvram.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_nvram.h index c58ebd8bc15..36a3fc1aa3a 100644 --- a/arch/mips/include/asm/mach-bcm47xx/nvram.h +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_nvram.h @@ -8,10 +8,11 @@   *  option) any later version.   */ -#ifndef __NVRAM_H -#define __NVRAM_H +#ifndef __BCM47XX_NVRAM_H +#define __BCM47XX_NVRAM_H  #include <linux/types.h> +#include <linux/kernel.h>  struct nvram_header {  	u32 magic; @@ -31,9 +32,22 @@ struct nvram_header {  #define NVRAM_MAX_VALUE_LEN 255  #define NVRAM_MAX_PARAM_LEN 64 -#define NVRAM_ERR_INV_PARAM	-8 -#define NVRAM_ERR_ENVNOTFOUND	-9 - -extern int nvram_getenv(char *name, char *val, size_t val_len); - -#endif +extern int bcm47xx_nvram_getenv(char *name, char *val, size_t val_len); + +static inline void bcm47xx_nvram_parse_macaddr(char *buf, u8 macaddr[6]) +{ +	if (strchr(buf, ':')) +		sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], +			&macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4], +			&macaddr[5]); +	else if (strchr(buf, '-')) +		sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0], +			&macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4], +			&macaddr[5]); +	else +		printk(KERN_WARNING "Can not parse mac address: %s\n", buf); +} + +int bcm47xx_nvram_gpio_pin(const char *name); + +#endif /* __BCM47XX_NVRAM_H */ diff --git a/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h new file mode 100644 index 00000000000..b7992cd4aaf --- /dev/null +++ b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h @@ -0,0 +1,82 @@ +#ifndef __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H +#define __ASM_MACH_BCM47XX_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_fpu			0 +#define cpu_has_32fpr			0 +#define cpu_has_counter			1 +#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) +#define cpu_has_watch			1 +#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) +#define cpu_has_watch			0 +#endif +#define cpu_has_divec			1 +#define cpu_has_vce			0 +#define cpu_has_cache_cdex_p		0 +#define cpu_has_cache_cdex_s		0 +#define cpu_has_prefetch		1 +#define cpu_has_mcheck			1 +#define cpu_has_ejtag			1 +#define cpu_has_llsc			1 + +/* cpu_has_mips16 */ +#define cpu_has_mdmx			0 +#define cpu_has_mips3d			0 +#define cpu_has_rixi			0 +#define cpu_has_mmips			0 +#define cpu_has_smartmips		0 +#define cpu_has_vtag_icache		0 +/* cpu_has_dc_aliases */ +#define cpu_has_ic_fills_f_dc		0 +#define cpu_has_pindexed_dcache		0 +#define cpu_icache_snoops_remote_store	0 + +#define cpu_has_mips_2			1 +#define cpu_has_mips_3			0 +#define cpu_has_mips32r1		1 +#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) +#define cpu_has_mips32r2		1 +#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) +#define cpu_has_mips32r2		0 +#endif +#define cpu_has_mips64r1		0 +#define cpu_has_mips64r2		0 + +#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) +#define cpu_has_dsp			1 +#define cpu_has_dsp2			1 +#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) +#define cpu_has_dsp			0 +#define cpu_has_dsp2			0 +#endif +#define cpu_has_mipsmt			0 +/* cpu_has_userlocal */ + +#define cpu_has_nofpuex			0 +#define cpu_has_64bits			0 +#define cpu_has_64bit_zero_reg		0 +#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) +#define cpu_has_vint			1 +#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) +#define cpu_has_vint			0 +#endif +#define cpu_has_veic			0 +#define cpu_has_inclusive_pcaches	0 + +#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) +#define cpu_dcache_line_size()		32 +#define cpu_icache_line_size()		32 +#define cpu_has_perf_cntr_intr_bit	1 +#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) +#define cpu_dcache_line_size()		16 +#define cpu_icache_line_size()		16 +#define cpu_has_perf_cntr_intr_bit	0 +#endif +#define cpu_scache_line_size()		0 +#define cpu_has_vz			0 + +#endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */ diff --git a/arch/mips/include/asm/mach-bcm47xx/gpio.h b/arch/mips/include/asm/mach-bcm47xx/gpio.h index 98504142124..90daefa24a4 100644 --- a/arch/mips/include/asm/mach-bcm47xx/gpio.h +++ b/arch/mips/include/asm/mach-bcm47xx/gpio.h @@ -1,65 +1,17 @@ -/* - * 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) 2007 Aurelien Jarno <aurelien@aurel32.net> - */ +#ifndef __ASM_MIPS_MACH_BCM47XX_GPIO_H +#define __ASM_MIPS_MACH_BCM47XX_GPIO_H -#ifndef __BCM47XX_GPIO_H -#define __BCM47XX_GPIO_H - -#include <linux/ssb/ssb_embedded.h> -#include <asm/mach-bcm47xx/bcm47xx.h> - -#define BCM47XX_EXTIF_GPIO_LINES	5 -#define BCM47XX_CHIPCO_GPIO_LINES	16 - -extern int gpio_request(unsigned gpio, const char *label); -extern void gpio_free(unsigned gpio); -extern int gpio_to_irq(unsigned gpio); - -static inline int gpio_get_value(unsigned gpio) -{ -	return ssb_gpio_in(&ssb_bcm47xx, 1 << gpio); -} - -static inline void gpio_set_value(unsigned gpio, int value) -{ -	ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); -} - -static inline int gpio_direction_input(unsigned gpio) -{ -	ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 0); -	return 0; -} +#include <asm-generic/gpio.h> -static inline int gpio_direction_output(unsigned gpio, int value) -{ -	/* first set the gpio out value */ -	ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); -	/* then set the gpio mode */ -	ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 1 << gpio); -	return 0; -} +#define gpio_get_value __gpio_get_value +#define gpio_set_value __gpio_set_value -static inline int gpio_intmask(unsigned gpio, int value) -{ -	ssb_gpio_intmask(&ssb_bcm47xx, 1 << gpio, -			 value ? 1 << gpio : 0); -	return 0; -} +#define gpio_cansleep __gpio_cansleep +#define gpio_to_irq __gpio_to_irq -static inline int gpio_polarity(unsigned gpio, int value) +static inline int irq_to_gpio(unsigned int irq)  { -	ssb_gpio_polarity(&ssb_bcm47xx, 1 << gpio, -			  value ? 1 << gpio : 0); -	return 0; +	return -EINVAL;  } - -/* cansleep wrappers */ -#include <asm-generic/gpio.h> - -#endif /* __BCM47XX_GPIO_H */ +#endif diff --git a/arch/mips/include/asm/mach-bcm47xx/war.h b/arch/mips/include/asm/mach-bcm47xx/war.h index 87cd4651dda..a3d2f448b10 100644 --- a/arch/mips/include/asm/mach-bcm47xx/war.h +++ b/arch/mips/include/asm/mach-bcm47xx/war.h @@ -17,7 +17,6 @@  #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  | 
