diff options
| author | Wolfgang Denk <wd@denx.de> | 2008-09-03 22:43:57 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-09-03 22:43:57 +0200 | 
| commit | 16116ddd0d0158f4e91c91dc979b845b6e98a99d (patch) | |
| tree | e2062a888c76462b6335da29092c5fe4134c0859 /board/freescale/common/pixis.c | |
| parent | 628ffd73bcff0c9f3bc5a8eeb2c7455fe9d28a51 (diff) | |
| parent | be1b0d2777e179191a57b138b660547a17e55aad (diff) | |
| download | olio-uboot-2014.01-16116ddd0d0158f4e91c91dc979b845b6e98a99d.tar.xz olio-uboot-2014.01-16116ddd0d0158f4e91c91dc979b845b6e98a99d.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-net
Diffstat (limited to 'board/freescale/common/pixis.c')
| -rw-r--r-- | board/freescale/common/pixis.c | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/board/freescale/common/pixis.c b/board/freescale/common/pixis.c index 64e2e08c5..b5a0e847a 100644 --- a/board/freescale/common/pixis.c +++ b/board/freescale/common/pixis.c @@ -26,6 +26,7 @@  #include <command.h>  #include <watchdog.h>  #include <asm/cache.h> +#include <asm/io.h>  #include "pixis.h" @@ -282,6 +283,60 @@ U_BOOT_CMD(  	   "diswd	- Disable watchdog timer \n",  	   NULL); +#ifdef CONFIG_FSL_SGMII_RISER +int pixis_set_sgmii(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	int which_tsec = -1; +	uchar mask; +	uchar switch_mask; + +	if (argc > 2) +		if (strcmp(argv[1], "all") != 0) +			which_tsec = simple_strtoul(argv[1], NULL, 0); + +	switch (which_tsec) { +	case 1: +		mask = PIXIS_VSPEED2_TSEC1SER; +		switch_mask = PIXIS_VCFGEN1_TSEC1SER; +		break; +	case 3: +		mask = PIXIS_VSPEED2_TSEC3SER; +		switch_mask = PIXIS_VCFGEN1_TSEC3SER; +		break; +	default: +		mask = PIXIS_VSPEED2_TSEC1SER | PIXIS_VSPEED2_TSEC3SER; +		switch_mask = PIXIS_VCFGEN1_TSEC1SER | PIXIS_VCFGEN1_TSEC3SER; +		break; +	} + +	/* Toggle whether the switches or FPGA control the settings */ +	if (!strcmp(argv[argc - 1], "switch")) +		clrbits_8((unsigned char *)PIXIS_BASE + PIXIS_VCFGEN1, +			switch_mask); +	else +		setbits_8((unsigned char *)PIXIS_BASE + PIXIS_VCFGEN1, +			switch_mask); + +	/* If it's not the switches, enable or disable SGMII, as specified */ +	if (!strcmp(argv[argc - 1], "on")) +		clrbits_8((unsigned char *)PIXIS_BASE + PIXIS_VSPEED2, mask); +	else if (!strcmp(argv[argc - 1], "off")) +		setbits_8((unsigned char *)PIXIS_BASE + PIXIS_VSPEED2, mask); + +	return 0; +} + +U_BOOT_CMD( +		pixis_set_sgmii, CFG_MAXARGS, 1, pixis_set_sgmii, +		"pixis_set_sgmii" +		" - Enable or disable SGMII mode for a given TSEC \n", +		"\npixis_set_sgmii [TSEC num] <on|off|switch>\n" +		"    TSEC num: 1,2,3,4 or 'all'.  'all' is default.\n" +		"    on - enables SGMII\n" +		"    off - disables SGMII\n" +		"    switch - use switch settings\n"); +#endif +  /*   * This function takes the non-integral cpu:mpx pll ratio   * and converts it to an integer that can be used to assign |