4 * This file is part of BeRTOS.
6 * Bertos is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 * As a special exception, you may use this file as part of a free software
21 * library without restriction. Specifically, if other files instantiate
22 * templates or use macros or inline functions from this file, or you compile
23 * this file and link it with other files to produce an executable, this
24 * file does not by itself cause the resulting executable to be covered by
25 * the GNU General Public License. This exception does not however
26 * invalidate any other reasons why the executable file might be covered by
27 * the GNU General Public License.
29 * Copyright 2011 Develer S.r.l. (http://www.develer.com/)
33 * \author Daniele Basile <asterix@develer.com>
35 * \brief PHY chip interface.
43 #include <cfg/cfg_eth.h>
50 * Basic mode control settings.
54 #define NIC_PHY_BMCR 0x00 ///< Basic mode control register address.
56 #define NIC_PHY_BMCR_COLTEST BV(7) ///< Collision test.
57 #define NIC_PHY_BMCR_FDUPLEX BV(8) ///< Full duplex mode.
58 #define NIC_PHY_BMCR_ANEGSTART BV(9) ///< Restart auto negotiation.
59 #define NIC_PHY_BMCR_ISOLATE BV(10) ///< Isolate from MII.
60 #define NIC_PHY_BMCR_PWRDN BV(11) ///< Power-down.
61 #define NIC_PHY_BMCR_ANEGENA BV(12) ///< Enable auto negotiation.
62 #define NIC_PHY_BMCR_100MBPS BV(13) ///< Select 100 Mbps.
63 #define NIC_PHY_BMCR_LOOPBACK BV(14) ///< Enable loopback mode.
64 #define NIC_PHY_BMCR_RESET BV(15) ///< Software reset.
68 * Basic mode status settings.
72 #define NIC_PHY_BMSR 0x01 ///< Basic mode status register.
74 #define NIC_PHY_BMSR_ANCOMPL BV(5) ///< Auto negotiation complete.
75 #define NIC_PHY_BMSR_ANEGCAPABLE BV(3) ///< Able to do auto-negotiation
76 #define NIC_PHY_BMSR_LINKSTAT BV(2) ///< Link status.
79 #define NIC_PHY_ID1 0x02 ///< PHY identifier register 1.
80 #define NIC_PHY_ID2 0x03 ///< PHY identifier register 2.
81 #define NIC_PHY_ANAR 0x04 ///< Auto negotiation advertisement register.
82 #define NIC_PHY_ANLPAR 0x05 ///< Auto negotiation link partner availability register.
85 * Auto negotiation expansion settings.
89 #define NIC_PHY_ANER 0x06 // Auto negotiation expansion register address.
91 #define NIC_PHY_ANLPAR_10_HDX BV(5) ///< 10BASE-T half duplex
92 #define NIC_PHY_ANLPAR_10_FDX BV(6) ///< 10BASE-T full duplex
93 #define NIC_PHY_ANLPAR_TX_HDX BV(7) ///< 100BASE-TX half duplex
94 #define NIC_PHY_ANLPAR_TX_FDX BV(8) ///< 100BASE-TX full duplex
99 * \name Supported PHY chip.
101 * List of supported PHY chip.
103 * $WIZ$ phy_chip_list = "DAVICOM_DM9161A", "NATIONAL_DP3848I"
106 #define DAVICOM_DM9161A 0
107 #define NATIONAL_DP3848I 1
110 #if CONFIG_PHY_CHIP == DAVICOM_DM9161A
111 #include <drv/dm9161a.h>
112 #elif CONFIG_PHY_CHIP == NATIONAL_DP3848I
113 #include <drv/dp83848i.h>
115 #error No supported PHY chip was select.
118 #endif /* DRV_PHY_H */