/* ********************************************************************************************************* * uC/TCP-IP * The Embedded TCP/IP Suite * * (c) Copyright 2003-2005; Micrium, Inc.; Weston, FL * * All rights reserved. Protected by international copyright laws. * Knowledge of the source code may not be used to write a similar * product. This file may only be used in accordance with a license * and should not be redistributed in any way. ********************************************************************************************************* */ /* ********************************************************************************************************* * * BOARD SUPPORT PACKAGE (BSP) FUNCTIONS * * NXP LPC2378 * on the * KEIL MCB2300 Evaluation Board * * Filename : net_bsp.h * Version : V1.89 * Programmer(s) : Eric Shufro ********************************************************************************************************* */ #ifndef _NET_BSP_H #define _NET_BSP_H /* ********************************************************************************************************* * EXTERNS ********************************************************************************************************* */ #ifdef NET_BSP_MODULE #define NET_BSP_EXT #else #define NET_BSP_EXT extern #endif /*$PAGE*/ /* ********************************************************************************************************* * DEFINES * * Note(s) : 1) The LPC2378 does not support automatic loading of MAC address from external * EEPROM. Therefore, the macro EMAC_CFG_MAC_ADDR_SEL must be set to * EMAC_CFG_MAC_ADDR_SEL_CFG, and the user should take care of reading an * external EEPROM before calling Net_Init(). The data retrieved from the * EEPROM may optionally be copied into NetIF_MAC_Addr[]. Otherwise, a hard * coded MAC address may be set within NetIF_MAC_Addr[]. * * 2) The LPC2378 only supports RMII. Future chips, e.g LPC24xx should support MII. Be * sure to set EMAC_CFG_RMII to 1 when using the LPC2378. * * 3) Consult hardware schematics and user manuals to determine the address of your PHY. * The Keil MCB2300 EVB has a pullup on PHY pin AN0, while AN[3:1] are pulled down. * Therefore, the address of the Nationap DP83848 PHY on the Keil MCB2300 is 0x01. * * 4) EMAC_NUM_RX_DESC will allocate the given number of DESCRIPTORS and BUFFERS. Buffer size * can be selected by means of adjusting the macro EMAC_RX_BUF_SIZE. * * ** EMAC_RX_BUF_SIZE MUST BE SELECTED SUCH THAT IT IS DIVISIBLE BY 8 * TO ENSURE PACKET BOUNDRY ALIGNMENT! * * 5) EMAC_NUM_TX_DESC allocates the given number of DESCRIPTORS AND BUFFERS, however, * all buffers are of size 1536 bytes. ********************************************************************************************************* */ #define EMAC_RAM_BASE_ADDR (0x7FE00000) /* Base address of dedicated AHB2 Ethernet RAM */ /* Configure MAC address set method : */ #define EMAC_CFG_MAC_ADDR_SEL EMAC_CFG_MAC_ADDR_SEL_CFG /* EMAC_CFG_MAC_ADDR_SEL_CFG from application */ #define NEW_SILICON 0 /* For LPC2378 silicon revisions ending in AY set to 1 */ /* Previous revisions, ending in -X or -Y set to 0 */ /* When 0, RMII GPIO work around is enabled for old silicon */ #define EMAC_CFG_RMII 1 /* Enable or disable RMII mode, 1 = enabled 0 = disabled */ #define EMAC_CFG_PHY_ADDR 1 /* PHY Address */ /* AD0 has a pull-up and AD[4:1] have pull-downs */ /* therefore the address is 0x01 */ #define EMAC_RX_BUF_SIZE 1536 /* Configure the size of the Rx buffers */ #if NEW_SILICON > 0 #define EMAC_NUM_RX_DESC 8 /* Configure 8 Rx descriptors / buffers placed in AHB2 RAM */ #else #define EMAC_NUM_RX_DESC 4 /* Configure 4 Rx descriptors to avoid old silicon errata */ #endif #define EMAC_NUM_TX_DESC 2 /* Configure 2 Tx descriptors / buffers placed in AHB2 RAM */ /* ********************************************************************************************************* * DATA TYPES ********************************************************************************************************* */ /* ********************************************************************************************************* * GLOBAL VARIABLES ********************************************************************************************************* */ /* ********************************************************************************************************* * MACRO'S * * Note(s) : (1) When NET_NIC_CFG_RD_WR_SEL configured to NET_NIC_RD_WR_SEL_MACRO, implement NIC read/write * functionality with macro's. * * (a) The developer MUST implement the NIC read/write macro functions with the correct number * & type of arguments necessary to implement the NIC's read/write functionality. * * (b) The developer SHOULD appropriately name the NIC read/write macro functions by appending * the number of bits that the macro functions read/write to the end of the macro function * name : * * NetNIC_Rd_xx() * NetNIC_Wr_xx() * * For example, 16-bit read/write macro functions should be named : * * NetNIC_Rd_16() * NetNIC_Wr_16() * * * See also 'net_bsp.c NetNIC_Rd_xx() Note #1' * & 'net_bsp.c NetNIC_Wr_xx() Note #1'. ********************************************************************************************************* */ #if (NET_NIC_CFG_RD_WR_SEL != NET_NIC_RD_WR_SEL_FNCT) #define NetNIC_Rd_xx(...) #define NetNIC_Wr_xx(..., val) #endif /* ********************************************************************************************************* * FUNCTION PROTOTYPES ********************************************************************************************************* */ void NetBSP_Phy_HW_Init (void); void NetBSP_DlyMs (CPU_INT32U ms); CPU_INT32U NetBSP_GetHostClkFreq (void); /* ********************************************************************************************************* * CONFIGURATION ERRORS ********************************************************************************************************* */ #endif