Mercurial > nand-ecoscentric
changeset 2373:a874158b6a4e
* Added hal_plf_eth_init() in order to initialise the Davicom
9161A PHY properly on the Evaluation board
| author | asl |
|---|---|
| date | Mon, 05 Mar 2007 19:09:32 +0000 |
| parents | edb7cc3a9968 |
| children | 9a4c4f1b0178 |
| files | packages/hal/arm/at91/at91sam7xek/current/ChangeLog packages/hal/arm/at91/at91sam7xek/current/cdl/hal_arm_at91sam7xek.cdl packages/hal/arm/at91/at91sam7xek/current/src/at91sam7xek_misc.c |
| diffstat | 3 files changed, 45 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/arm/at91/at91sam7xek/current/ChangeLog +++ b/packages/hal/arm/at91/at91sam7xek/current/ChangeLog @@ -1,3 +1,8 @@ +2007-01-17 John Eigelaar <jeigelaar@mweb.co.za> + + * Added hal_plf_eth_init() in order to initialise the Davicom + 9161A PHY properly on the Evaluation board + 2007-01-02 Uwe Kindler <uwe_kindler@web.de> * cdl/hal_arm_at91sam7s.cdl Moved HAL_PLATFORM_XXX defines and
--- a/packages/hal/arm/at91/at91sam7xek/current/cdl/hal_arm_at91sam7xek.cdl +++ b/packages/hal/arm/at91/at91sam7xek/current/cdl/hal_arm_at91sam7xek.cdl @@ -58,7 +58,10 @@ cdl_package CYGPKG_HAL_ARM_AT91SAM7XEK { requires { CYGHWR_HAL_ARM_AT91 == "AT91SAM7S" } requires { CYGHWR_HAL_ARM_AT91SAM7 == "at91sam7x256" || CYGHWR_HAL_ARM_AT91SAM7 == "at91sam7x128" } - + + requires { is_active(CYGPKG_DEVS_ETH_PHY) implies + (1 == CYGHWR_DEVS_ETH_PHY_DM9161A) } + define_proc { puts $::cdl_system_header "#define CYGBLD_HAL_PLATFORM_H <pkgconf/hal_arm_at91sam7xek.h>" puts $::cdl_header "/***** proc output start *****/"
--- a/packages/hal/arm/at91/at91sam7xek/current/src/at91sam7xek_misc.c +++ b/packages/hal/arm/at91/at91sam7xek/current/src/at91sam7xek_misc.c @@ -73,5 +73,41 @@ hal_at91_led (int val) HAL_ARM_AT91_GPIO_PUT(AT91_GPIO_PB22, !(val & 8)); } +void hal_plf_eth_init(void) +{ + cyg_uint32 stat; + + /* Enable the PIOB Clock */ + HAL_WRITE_UINT32(AT91_PMC + AT91_PMC_PCER, AT91_PMC_PCER_PIOB); + + /* RXDV / Testmode select */ + HAL_ARM_AT91_GPIO_CFG_DIRECTION(AT91_GPIO_PB15, AT91_PIN_IN); + HAL_ARM_AT91_GPIO_CFG_PULLUP(AT91_GPIO_PB15, AT91_PIN_PULLUP_DISABLE); + + //TODO: The errata reports that the RMII mode for the SAM7X does not work. + // It would probably still be a good idea to use the RMII/MII CDL + // configuration to select the appropriate mode here + /* COL / !MII select */ + HAL_ARM_AT91_GPIO_CFG_DIRECTION(AT91_GPIO_PB16, AT91_PIN_IN); + HAL_ARM_AT91_GPIO_CFG_PULLUP(AT91_GPIO_PB16, AT91_PIN_PULLUP_DISABLE); + + /* TXCLK / ISOLATE */ + HAL_ARM_AT91_GPIO_CFG_DIRECTION(AT91_GPIO_PB0, AT91_PIN_IN); + HAL_ARM_AT91_GPIO_CFG_PULLUP(AT91_GPIO_PB0, AT91_PIN_PULLUP_DISABLE); + + /* Power Down Mode */ + HAL_ARM_AT91_GPIO_CFG_DIRECTION(AT91_GPIO_PB18, AT91_PIN_OUT); + HAL_ARM_AT91_GPIO_PUT(AT91_GPIO_PB19,0); + + /* All the lines setup correctly. Now do a external reset and let the phy + start up in the correct mode */ + HAL_WRITE_UINT32(AT91_RST+AT91_RST_RMR,AT91_RST_RMR_KEY|(1<<0x8)); + HAL_WRITE_UINT32(AT91_RST+AT91_RST_RCR,AT91_RST_RCR_KEY|AT91_RST_RCR_EXTRST); + + do { + HAL_READ_UINT32(AT91_RST+AT91_RST_RSR,stat); + } while (!(stat&AT91_RST_RSR_NRST_SET)); +} + //-------------------------------------------------------------------------- // EOF at91sam7sek_misc.c
