
Merged in chrishamm's changes to Network, PrintMonitor, and his support for firmware updates from SD card Fixed print monitor issue that threw out the layer count and time estimates when there was an initial extruder priming move in the start gcode
140 lines
4.6 KiB
C
140 lines
4.6 KiB
C
/**
|
|
* \file
|
|
*
|
|
* \brief API driver for KSZ8051RNL PHY based on driver for DM9161A PHY PHY.
|
|
* Adapted from the ethernet_phy.h file provided as part of LWIP under the license below:
|
|
* Only designed to work with the KSZ8051RNL PHY, not yet fully tested.
|
|
*
|
|
* Copyright (c) 2012 Atmel Corporation. All rights reserved.
|
|
*
|
|
* \asf_license_start
|
|
*
|
|
* \page License
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. The name of Atmel may not be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* 4. This software may only be redistributed and used in connection with an
|
|
* Atmel microcontroller product.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
|
* EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
|
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* \asf_license_stop
|
|
*
|
|
*/
|
|
|
|
#ifndef KSZ8051RNL_H_INCLUDED
|
|
#define KSZ8051RNL_H_INCLUDED
|
|
|
|
//#include "ASF/sam/utils/compiler.h"
|
|
//#include "board.h"
|
|
//#include "emac.h"
|
|
#include "Arduino.h"
|
|
#include "emac.h"
|
|
#include "conf_eth.h"
|
|
|
|
/// @cond 0
|
|
/**INDENT-OFF**/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/**INDENT-ON**/
|
|
/// @endcond
|
|
|
|
//*****************************AB
|
|
/**
|
|
* \brief Read a Register of the PHY.
|
|
*
|
|
* \param p_emac Pointer to the EMAC instance.
|
|
* \param uc_phy_addr PHY address.
|
|
* \param ul_phy_reg PHY Register to be read
|
|
* \param p_ul_reg_cont
|
|
*
|
|
* Return Return EMAC_OK if successfully read, EMAC_TIMEOUT if timeout.
|
|
*/
|
|
uint8_t ethernet_phy_read_register(Emac *p_emac, uint8_t uc_phy_addr, uint32_t ul_phy_reg, uint32_t *p_ul_reg_cont);
|
|
|
|
//*****************************AB
|
|
|
|
/**
|
|
* \brief Perform a HW initialization to the PHY ( via RSTC ) and set up clocks.
|
|
*
|
|
* This should be called only once to initialize the PHY pre-settings.
|
|
* The PHY address is the reset status of CRS, RXD[3:0] (the emacPins' pullups).
|
|
* The COL pin is used to select MII mode on reset (pulled up for Reduced MII).
|
|
* The RXDV pin is used to select test mode on reset (pulled up for test mode).
|
|
* The above pins should be predefined for corresponding settings in resetPins.
|
|
* The EMAC peripheral pins are configured after the reset is done.
|
|
*
|
|
* \param p_emac Pointer to the EMAC instance.
|
|
* \param uc_phy_addr PHY address.
|
|
* \param ul_mck EMAC MCK.
|
|
*
|
|
* Return EMAC_OK if successfully, EMAC_TIMEOUT if timeout.
|
|
*/
|
|
uint8_t ethernet_phy_init(Emac *p_emac, uint8_t uc_phy_addr, uint32_t ul_mck);
|
|
|
|
|
|
/**
|
|
* \brief Get the Link & speed settings, and automatically set up the EMAC with the
|
|
* settings.
|
|
*
|
|
* \param p_emac Pointer to the EMAC instance.
|
|
* \param uc_phy_addr PHY address.
|
|
* \param uc_apply_setting_flag Set to 0 to not apply the PHY configurations, else to apply.
|
|
*
|
|
* Return EMAC_OK if successfully, EMAC_TIMEOUT if timeout.
|
|
*/
|
|
uint8_t ethernet_phy_set_link(Emac *p_emac, uint8_t uc_phy_addr,
|
|
uint8_t uc_apply_setting_flag);
|
|
|
|
|
|
/**
|
|
* \brief Issue an auto negotiation of the PHY.
|
|
*
|
|
* \param p_emac Pointer to the EMAC instance.
|
|
* \param uc_phy_addr PHY address.
|
|
*
|
|
* Return EMAC_OK if successfully, EMAC_TIMEOUT if timeout.
|
|
*/
|
|
uint8_t ethernet_phy_auto_negotiate(Emac *p_emac, uint8_t uc_phy_addr);
|
|
|
|
/**
|
|
* \brief Issue a SW reset to reset all registers of the PHY.
|
|
*
|
|
* \param p_emac Pointer to the EMAC instance.
|
|
* \param uc_phy_addr PHY address.
|
|
*
|
|
* \Return EMAC_OK if successfully, EMAC_TIMEOUT if timeout.
|
|
*/
|
|
uint8_t ethernet_phy_reset(Emac *p_emac, uint8_t uc_phy_addr);
|
|
|
|
/// @cond 0
|
|
/**INDENT-OFF**/
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
/**INDENT-ON**/
|
|
/// @endcond
|
|
|
|
#endif /* KSZ8051RNL_H_INCLUDED */
|