/** @defgroup ethernet_phy_lan87xx_defines PHY LAN8710 Defines * * @brief Defined Constants and Types for the Ethernet PHY LAN87xx chips * * @ingroup ETH * * @version 1.0.0 * * @author @htmlonly © @endhtmlonly 2014 Frantisek Burian * * @date 6 February 2014 * * LGPL License Terms @ref lgpl_license */ /* * This file is part of the libopencm3 project. * * Copyright (C) 2013 Frantisek Burian * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This library 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . */ #ifndef LIBOPENCM3_PHY_LAN87XX_H #define LIBOPENCM3_PHY_LAN87XX_H #include /**@{*/ /* * Architecture availability: * * A stands for LAN8700 * B stands for LAN8710A * C stands for LAN8720A * D stands for LAN8740A * E stands for LAN8741A * F stands for LAN8742A */ /*****************************************************************************/ /* Register definitions */ /*****************************************************************************/ #define LAN87XX_BCR 0x00 /* ABCDEF */ #define LAN87XX_BSR 0x01 /* ABCDEF */ #define LAN87XX_PID1 0x02 /* ABCDEF */ #define LAN87XX_PID2 0x03 /* ABCDEF */ #define LAN87XX_ANA 0x04 /* ABCDEF */ #define LAN87XX_ANLPA 0x05 /* ABCDEF */ #define LAN87XX_ANE 0x06 /* ABCDEF */ #define LAN87XX_ANNPTX 0x07 /* ---DEF */ #define LAN87XX_ANNPRX 0x08 /* ---DEF */ #define LAN87XX_MMDACR 0x0D /* ---DEF */ #define LAN87XX_MMDADR 0x0E /* ---DEF */ #define LAN87XX_REVISION 0x10 /* A----- */ #define LAN87XX_EDPDNLP 0x10 /* ---DEF */ #define LAN87XX_MCS 0x11 /* ABCDEF */ #define LAN87XX_SM 0x12 /* ABCDEF */ #define LAN87XX_TDRDCR 0x18 /* ---D-F */ #define LAN87XX_TDRCSR 0x19 /* ---D-F */ #define LAN87XX_ERRCNT 0x1A /* -BCDEF */ #define LAN87XX_CSR 0x1B /* ABCDEF */ #define LAN87XX_CBLN 0x1C /* ---D-F */ #define LAN87XX_ISR 0x1D /* ABCDEF */ #define LAN87XX_IMR 0x1E /* ABCDEF */ #define LAN87XX_SCSR 0x1F /* ABCDEF */ /*****************************************************************************/ /* Register values */ /*****************************************************************************/ /* LAN87XX_BCR --------------------------------------------------------------*/ /* LAN87XX_BSR --------------------------------------------------------------*/ /* LAN87XX_PID1 -------------------------------------------------------------*/ /* LAN87XX_PID2 -------------------------------------------------------------*/ /* LAN87XX_ANA --------------------------------------------------------------*/ /* LAN87XX_ANLPA ------------------------------------------------------------*/ /* LAN87XX_ANE --------------------------------------------------------------*/ /* LAN87XX_ANNPTX -----------------------------------------------------------*/ /* LAN87XX_ANNPRX -----------------------------------------------------------*/ /* LAN87XX_MMDACR -----------------------------------------------------------*/ /* the MMD provides register access into bare PHY chip. MMD provides its own * register address space, completely different between devices. * It should be implemented later. */ #define LAN87XX_MMDACR_FUNC_SHIFT 14 /* ---DEF */ #define LAN87XX_MMDACR_FUNC (3 << LAN87XX_MMDACR_FUNC_SHIFT) #define LAN87XX_MMDACR_FUNC_ADDRESS (0 << LAN87XX_MMDACR_FUNC_SHIFT) #define LAN87XX_MMDACR_FUNC_DATA (1 << LAN87XX_MMDACR_FUNC_SHIFT) #define LAN87XX_MMDACR_DEVAD (31 << 0) /* ---DEF */ #define LAN87XX_MMDACR_DEVAD_PCS (3 << 0) /* ---DEF */ #define LAN87XX_MMDACR_DEVAD_ANN (7 << 0) /* ---DE- */ #define LAN87XX_MMDACR_DEVAD_VENDOR (30 << 0) /* ---DE- */ /* LAN87XX_MMDADR -----------------------------------------------------------*/ /* LAN87XX_REVISION ---------------------------------------------------------*/ /* note this register is valid only on original LAN8700 */ /* LAN87XX_EDPDNLP ----------------------------------------------------------*/ /* note this register is valid only on newer than original LAN8700 */ #define LAN87XX_EDPDNLP_TXEN (1 << 15) /* ---DEF */ #define LAN87XX_EDPDNLP_TXTIM_SHIFT 13 /* ---DEF */ #define LAN87XX_EDPDNLP_TXTIM (3<