[U-Boot] AM335x Ethernet pin mux confusion
Andy Pont
andy.pont at sdcsystems.com
Mon Nov 24 15:27:26 CET 2014
Hello,
I am working on porting U-Boot 2014.07 to a custom TI AM3354 based hardware
platform and am confused trying to set the pin mux for the two Ethernet
interfaces that are on the board.
RGMII1_ pins are connected to an ATHEROS AR8031 PHY (PHY ADDR 04) and the
pins GPMC_A0 .. GPMC_A11 are connected to a Micrel KSZ8041NL (PHY ADDR 01).
The output of the "mii info" command looks OK so the MDIO interface looks to
be OK as it gives:
PHY 0x00: OUI = 0x0885, Model = 0x11, Rev = 0x03, 10baseT, HDX
PHY 0x01: OUI = 0x0885, Model = 0x11, Rev = 0x03, 10baseT, HDX
PHY 0x04: OUI = 0x1374, Model = 0x07, Rev = 0x04, 1000baseX, FDX
However, with debug enabled, it is reporting the PHYs incorrectly as it
gives:
cpsw connected to Micrel KSZ804
cpsw connected to Micrel KSZ804
cpsw
The AR8031 provides a connection to the outside world and the KSZ8041
connects to an Ethernet switch which then connects on to other devices on
the board to form a private network. The DHCP command just sits in a loop
waiting for PHY auto negotiation to complete but timing out!
In the SPL code I am setting up the pin mux as follows:
static struct module_pin_mux rgmii1_pin_mux[] = {
{OFFSET(mii1_txen), MODE(2)}, /* RGMII1_TCTL */
{OFFSET(mii1_rxdv), MODE(2) | RXACTIVE}, /* RGMII1_RCTL */
{OFFSET(mii1_txd3), MODE(2)}, /* RGMII1_TD3 */
{OFFSET(mii1_txd2), MODE(2)}, /* RGMII1_TD2 */
{OFFSET(mii1_txd1), MODE(2)}, /* RGMII1_TD1 */
{OFFSET(mii1_txd0), MODE(2)}, /* RGMII1_TD0 */
{OFFSET(mii1_txclk), MODE(2)}, /* RGMII1_TCLK */
{OFFSET(mii1_rxclk), MODE(2) | RXACTIVE}, /* RGMII1_RCLK */
{OFFSET(mii1_rxd3), MODE(2) | RXACTIVE}, /* RGMII1_RD3 */
{OFFSET(mii1_rxd2), MODE(2) | RXACTIVE}, /* RGMII1_RD2 */
{OFFSET(mii1_rxd1), MODE(2) | RXACTIVE}, /* RGMII1_RD1 */
{OFFSET(mii1_rxd0), MODE(2) | RXACTIVE}, /* RGMII1_RD0 */
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA
*/
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
{-1},
};
static struct module_pin_mux rmii2_pin_mux[] = {
{OFFSET(gpmc_a0), MODE(2)}, /* RMII2_TXEN */
{OFFSET(gpmc_a1), MODE(2) | RXACTIVE}, /* RMII2_RXDV */
{OFFSET(gpmc_a2), MODE(2)}, /* RMII2_TXD3 */
{OFFSET(gpmc_a3), MODE(2)}, /* RMII2_TXD2 */
{OFFSET(gpmc_a4), MODE(2)}, /* RMII2_TXD1 */
{OFFSET(gpmc_a5), MODE(2)}, /* RMII2_TXD0 */
{OFFSET(gpmc_a6), MODE(2)}, /* RMII2_TXCLK */
{OFFSET(gpmc_a7), MODE(2) | RXACTIVE}, /* RMII2_RXCLK */
{OFFSET(gpmc_a8), MODE(2) | RXACTIVE}, /* RMII2_RXD3 */
{OFFSET(gpmc_a9), MODE(2) | RXACTIVE}, /* RMII2_RXD2 */
{OFFSET(gpmc_a10), MODE(2) | RXACTIVE}, /* RMII2_RXD1 */
{OFFSET(gpmc_a11), MODE(2) | RXACTIVE}, /* RMII2_RXD0 */
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
{-1},
};
Any help would be much appreciated?
Thanks,
Andy.
More information about the U-Boot
mailing list