/** @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<