Ticket #731: csb337_network.c.diff

File csb337_network.c.diff, 2.5 KB (added by yanjun.luo, on Dec 3, 2006 at 1:31:12 PM)

csb337_network.c.diff

  • network.c

     
    1212#include <rtems/rtems_bsdnet.h>
    1313#include <at91rm9200.h>
    1414#include <at91rm9200_emac.h>
     15#include <at91rm9200_gpio.h>
     16#include <at91rm9200_pmc.h>
    1517
    1618#include <stdio.h>
    1719#include <string.h>
     
    308310void  at91rm9200_emac_init_hw(at91rm9200_emac_softc_t *sc)
    309311{
    310312    int i;
    311    
     313
     314    /* Configure shared pins for Ethernet, not GPIO */
     315    PIOA_REG(PIO_PDR) = ( BIT7  |   /* tx clock      */
     316                          BIT8  |   /* tx enable     */
     317                          BIT9  |   /* tx data 0     */
     318                          BIT10 |   /* tx data 1     */
     319                          BIT11 |   /* carrier sense */
     320                          BIT12 |   /* rx data 0     */
     321                          BIT13 |   /* rx data 1     */
     322                          BIT14 |   /* rx error      */
     323                          BIT15 |   /* MII clock     */
     324                          BIT16 );  /* MII data      */
     325
     326    PIOB_REG(PIO_PDR) = ( BIT12 |   /* tx data 2     */
     327                          BIT13 |   /* tx data 3     */
     328                          BIT14 |   /* tx error      */
     329                          BIT15 |   /* rx data 2     */
     330                          BIT16 |   /* rx data 3     */
     331                          BIT17 |   /* rx data valid */
     332                          BIT18 |   /* rx collistion */
     333                          BIT19 );  /* rx clock   */
     334
     335    PIOB_REG(PIO_BSR) = ( BIT12 |   /* tx data 2     */
     336                          BIT13 |   /* tx data 3     */
     337                          BIT14 |   /* tx error      */
     338                          BIT15 |   /* rx data 2     */
     339                          BIT16 |   /* rx data 3     */
     340                          BIT17 |   /* rx data valid */
     341                          BIT18 |   /* rx collistion */
     342                          BIT19 );  /* rx clock   */
     343                         
     344
     345    /* Enable the clock to the EMAC */
     346    PMC_REG(PMC_PCER) |= PMC_PCR_PID_EMAC;
     347
    312348    /* initialize our receive buffer descriptors */
    313349    for (i = 0; i < NUM_RXBDS-1; i++) {
    314350        rxbuf_hdrs[i].address = (unsigned long)(&rxbuf[i * RX_BUFFER_SIZE]);
     
    327363    EMAC_REG(EMAC_RSR)  &= ~(EMAC_RSR_OVR | EMAC_RSR_REC | EMAC_RSR_BNA);
    328364   
    329365    /* set the MII clock divder to MCK/64 */
     366    EMAC_REG(EMAC_CFG) &= EMAC_CFG_CLK_MASK;
    330367    EMAC_REG(EMAC_CFG) = (EMAC_CFG_CLK_64 | EMAC_CFG_BIG | EMAC_CFG_FD);
    331368   
    332369    /* enable the MII interface */