Changeset 1bf40dc in rtems


Ignore:
Timestamp:
Jan 22, 2007, 4:55:23 PM (13 years ago)
Author:
Eric Norum <WENorum@…>
Children:
14c7716
Parents:
ce4f466
Message:

Add capability to lock at 10-half.
Expand report to include auto/fixed status

Location:
c/src/lib/libbsp/m68k/uC5282
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/uC5282/ChangeLog

    rce4f466 r1bf40dc  
     12007-01-21  Eric Norum <norume@aps.anl.gov>
     2
     3        * network/network.c: Add capability to lock at 10-half.
     4                         Expand report to include auto/fixed status.
     5
    162006-12-18      Till Straumann <strauman@slac.stanford.edu>
    27
  • c/src/lib/libbsp/m68k/uC5282/README

    rce4f466 r1bf40dc  
    8686   locked at full duplex you'll have to find another port!
    8787   The RTEMS network driver can be forced to 100 Mbs/full-duplex by setting
    88    the bootstrap environment variable IPADDR0_100FULL to Y.
     88   the bootstrap environment variable IPADDR0_100FULL to Y.  The driver can
     89   be forced to 10 Mbs/half-duplex by setting the bootstrap environment
     90   variable IPADDR0_10HALF to Y.
    8991
    90924) Run 'tftp' on your host machine:
  • c/src/lib/libbsp/m68k/uC5282/network/network.c

    rce4f466 r1bf40dc  
    119119     * Link parameters
    120120     */
    121     int             force100Full;
     121    enum            { link_auto, link_100Full, link_10Half } link;
     122    uint16_t        mii_cr;
    122123    uint16_t        mii_sr2;
    123124};
     
    281282    /*
    282283     * Set up Transmit Control Register:
    283      *   Full duplex
     284     *   Full or half duplex
    284285     *   No heartbeat
    285286     */
    286     MCF5282_FEC_TCR = MCF5282_FEC_TCR_FDEN;
     287    if (sc->link == link_10Half)
     288        MCF5282_FEC_TCR = 0;
     289    else
     290        MCF5282_FEC_TCR = MCF5282_FEC_TCR_FDEN;
    287291
    288292    /*
     
    308312     *  Advertise 100 Mb/s, full-duplex, IEEE-802.3
    309313     *  Turn off auto-negotiate
    310      *  Enable speed-change, duplex-change and link-status-change interrupts
    311      *  Set 100/full and perhaps auto-negotiate
     314     *  Cleaer status
    312315     */
    313316    setMII(1, 20, 0x42F2);
    314317    setMII(1,  4, 0x0181);
    315     setMII(1,  0, 0x2100);
     318    setMII(1,  0, 0x0);
    316319    rtems_task_wake_after(2);
    317320    sc->mii_sr2 = getMII(1, 17);
    318     setMII(1, 18, 0x0072);
    319     if (!sc->force100Full)
     321    switch (sc->link) {
     322    case link_auto:
     323        /*
     324         * Enable speed-change, duplex-change and link-status-change interrupts
     325         * Enable auto-negotiate (start at 100/FULL)
     326         */
     327        setMII(1, 18, 0x0072);
    320328        setMII(1, 0, 0x3100);
     329        break;
     330
     331    case link_10Half:
     332        /*
     333         * Force 10/HALF
     334         */
     335        setMII(1, 0, 0x0);
     336        break;
     337
     338    case link_100Full:
     339        /*
     340         * Force 100/FULL
     341         */
     342        setMII(1, 0, 0x2100);
     343        break;
     344    }
     345    sc->mii_cr = getMII(1, 0);
    321346
    322347    /*
     
    800825    }
    801826    else {
    802         printf("Link speed %d Mb/s, %s-duplex.\n",
    803                                     sc->mii_sr2  & 0x4000 ? 100 : 10,
    804                                     sc->mii_sr2 & 0x200 ? "full" : "half");
     827        int speed;
     828        int full;
     829        int fixed;
     830        if (sc->mii_cr & 0x1000) {
     831            fixed = 0;
     832            speed = sc->mii_sr2 & 0x4000 ? 100 : 10;
     833            full = sc->mii_sr2 & 0x200 ? 1 : 0;
     834        }
     835        else {
     836            fixed = 1;
     837            speed = sc->mii_cr & 0x2000 ? 100 : 10;
     838            full = sc->mii_cr & 0x100 ? "full" : "half";
     839        }
     840        printf("Link %s %d Mb/s, %s-duplex.\n",
     841                                            fixed ? "fixed" : "auto-negotiate",
     842                                            speed,
     843                                            full ? "full" : "half");
    805844    }
    806845    printf(" EIR:%8.8lx  ",  MCF5282_FEC_EIR);
     
    9681007    if (((env = bsp_getbenv("IPADDR0_100FULL")) != NULL)
    9691008     && ((*env == 'y') || (*env == 'Y')))
    970         sc->force100Full = 1;
     1009        sc->link = link_100Full;
     1010    else if (((env = bsp_getbenv("IPADDR0_10HALF")) != NULL)
     1011     && ((*env == 'y') || (*env == 'Y')))
     1012        sc->link = link_10Half;
     1013    else
     1014        sc->link = link_auto;
    9711015
    9721016    /*
Note: See TracChangeset for help on using the changeset viewer.