[U-Boot] [PATCH 05/15] powerpc/83xx/km: add MV88E6122 switch support for kmvect1
Kim Phillips
kim.phillips at freescale.com
Fri Jan 18 01:44:38 CET 2013
On Thu, 17 Jan 2013 13:47:51 +0100
Holger Brunck <holger.brunck at keymile.com> wrote:
> +#if defined(CONFIG_KMVECT1)
> +#include <mv88e6352.h>
> +/* Marvell MV88E6122 switch configuration */
> +struct mv88e_sw_reg extsw_conf[] = {
> + /* port 1, FRONT_MDI, autoneg */
> + { PORT(1), PORT_PHY, NO_SPEED_FOR },
> + { PORT(1), PORT_CTRL, FORWARDING | EGRS_FLD_ALL },
> + { PHY(1), PHY_1000_CTRL, NO_ADV },
> + { PHY(1), PHY_SPEC_CTRL, AUTO_MDIX_EN },
> + { PHY(1), PHY_CTRL, PHY_100_MBPS | AUTONEG_EN | AUTONEG_RST |
> + FULL_DUPLEX },
> + /* port 2, unused */
> + { PORT(2), PORT_CTRL, PORT_DIS },
> + { PHY(2), PHY_CTRL, PHY_PWR_DOWN },
> + { PHY(2), PHY_SPEC_CTRL, SPEC_PWR_DOWN },
> + /* port 3, BP_MII (CPU), PHY mode, 100BASE */
> + { PORT(3), PORT_CTRL, FORWARDING | EGRS_FLD_ALL },
> + /* port 4, ESTAR to slot 11, SerDes, 1000BASE-X */
> + { PORT(4), PORT_STATUS, NO_PHY_DETECT },
> + { PORT(4), PORT_PHY, SPEED_1000_FOR },
> + { PORT(4), PORT_CTRL, FORWARDING | EGRS_FLD_ALL },
> + /* port 5, ESTAR to slot 13, SerDes, 1000BASE-X */
> + { PORT(5), PORT_STATUS, NO_PHY_DETECT },
> + { PORT(5), PORT_PHY, SPEED_1000_FOR },
> + { PORT(5), PORT_CTRL, FORWARDING | EGRS_FLD_ALL },
> + /*
> + * Errata Fix: 1.9V Output from Internal 1.8V Regulator,
> + * acc . MV-S300889-00D.pdf , clause 4.5
> + */
> + { PORT(5), 0x1A, 0xADB1 },
> + /* port 6, unused, this port has no phy */
> + { PORT(6), PORT_CTRL, PORT_DIS },
> +};
> +#endif
this chunk introduces a new sparse warning:
km83xx.c:217:21: warning: symbol 'extsw_conf' was not declared. Should it be static?
> int last_stage_init(void)
> {
> +#if defined(CONFIG_KMVECT1)
> + struct km_bec_fpga *base =
> + (struct km_bec_fpga *)CONFIG_SYS_KMBEC_FPGA_BASE;
> + u8 tmp_reg;
> +
> + /* Release mv88e6122 from reset */
> + tmp_reg = in_8(&base->res1[0]) | 0x10; /* DIRECT3 register */
> + out_8(&base->res1[0], tmp_reg); /* GP28 as output */
> + tmp_reg = in_8(&base->gprt3) | 0x10; /* GP28 to high */
> + out_8(&base->gprt3, tmp_reg);
> +
> + /* configure MV88E6122 switch */
> + char *name = "UEC2";
> +
> + if (miiphy_set_current_dev(name))
> + return 0;
> +
> + mv88e_sw_program(name, CONFIG_KM_MVEXTSW_ADDR, extsw_conf,
> + ARRAY_SIZE(extsw_conf));
> +
> + mv88e_sw_reset(name, CONFIG_KM_MVEXTSW_ADDR);
> +
> + if (piggy_present()) {
> + uchar enetaddr[6];
> + if (eth_getenv_enetaddr("ethaddr", enetaddr)) {
> + /* increment last 3 bytes */
> + u32 val = (enetaddr[3] << 16) + (enetaddr[4] << 8)
> + + enetaddr[5];
> + val++;
> + enetaddr[3] = (val >> 16) & 0xFF;
> + enetaddr[4] = (val >> 8) & 0xFF;
> + enetaddr[5] = (val >> 0) & 0xFF;
> + if (!eth_setenv_enetaddr("eth1addr", enetaddr)) {
> + setenv("ethact", "UEC2");
> + setenv("netdev", "eth1");
> + puts("using PIGGY for network boot\n");
> + } else
> + puts("using frontport for network boot\n");
> + }
> + } else
> + puts("using frontport for network boot\n");
> +#endif
> +
AFAIK, assigning the switch MAC address to the front port's MAC
address plus one isn't acceptable practice for u-boot board code.
Get eth1addr in the same manner ethaddr is obtained/assigned.
> +#if !defined(CONFIG_MPC8309)
> #define CONFIG_UEC_ETH1 /* GETH1 */
> #define UEC_VERBOSE_DEBUG 1
> +#endif
>
> #ifdef CONFIG_UEC_ETH1
> -#if defined(CONFIG_MPC8309)
> -#define CONFIG_SYS_UEC1_UCC_NUM 2 /* UCC3 */
> -#define CONFIG_SYS_UEC1_RX_CLK QE_CLK_NONE /* not used in RMII Mode */
> -#define CONFIG_SYS_UEC1_TX_CLK QE_CLK12
> -#else
> #define CONFIG_SYS_UEC1_UCC_NUM 3 /* UCC4 */
> #define CONFIG_SYS_UEC1_RX_CLK QE_CLK_NONE /* not used in RMII Mode */
> #define CONFIG_SYS_UEC1_TX_CLK QE_CLK17
> -#endif
> #define CONFIG_SYS_UEC1_ETH_TYPE FAST_ETH
> #define CONFIG_SYS_UEC1_PHY_ADDR 0
> #define CONFIG_SYS_UEC1_INTERFACE_TYPE PHY_INTERFACE_MODE_RMII
how are these changes related?
Kim
More information about the U-Boot
mailing list