Changeset 9f2205a in rtems-libbsd


Ignore:
Timestamp:
Jan 30, 2017, 4:58:16 PM (3 years ago)
Author:
Kevin Kirspel <kevin-kirspel@…>
Branches:
fd86c091b97759106da7355ce1dd81ebe030e285, f020f08430150c1656a0ad0a1de13699db9b980b
Children:
a739190
Parents:
803a495
git-author:
Kevin Kirspel <kevin-kirspel@…> (01/30/17 16:58:16)
git-committer:
Sebastian Huber <sebastian.huber@…> (02/14/17 08:40:01)
Message:

Port LPC32XX Ethernet and USB OHCI to RTEMS

Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/arm/lpc/if_lpe.c

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    4444#include <sys/socket.h>
    4545#include <machine/bus.h>
     46#ifndef __rtems__
    4647#include <machine/intr.h>
     48#endif /* __rtems__ */
    4749
    4850#include <net/if.h>
     
    5658#include <net/bpf.h>
    5759
     60#ifndef __rtems__
    5861#include <dev/ofw/ofw_bus.h>
    5962#include <dev/ofw/ofw_bus_subr.h>
     63#endif /* __rtems__ */
    6064
    6165#include <dev/mii/mii.h>
     
    6771
    6872#include <rtems/bsd/local/miibus_if.h>
     73#ifdef __rtems__
     74#include <machine/rtems-bsd-cache.h>
     75#endif /* __rtems__ */
    6976
    7077#ifdef DEBUG
     
    8188struct lpe_rxdesc {
    8289        struct mbuf *           lpe_rxdesc_mbuf;
     90#ifndef __rtems__
    8391        bus_dmamap_t            lpe_rxdesc_dmamap;
     92#endif /* __rtems__ */
    8493};
    8594
     
    8796        int                     lpe_txdesc_first;
    8897        struct mbuf *           lpe_txdesc_mbuf;
     98#ifndef __rtems__
    8999        bus_dmamap_t            lpe_txdesc_dmamap;
     100#endif /* __rtems__ */
    90101};
    91102
     
    123134        struct ifnet *          lpe_ifp;
    124135        struct mtx              lpe_mtx;
     136#ifndef __rtems__
    125137        phandle_t               lpe_ofw;
     138#endif /* __rtems__ */
    126139        device_t                lpe_dev;
    127140        device_t                lpe_miibus;
     
    193206{
    194207
     208#ifndef __rtems__
    195209        if (!ofw_bus_status_okay(dev))
    196210                return (ENXIO);
     
    198212        if (!ofw_bus_is_compatible(dev, "lpc,ethernet"))
    199213                return (ENXIO);
     214#endif /* __rtems__ */
    200215
    201216        device_set_desc(dev, "LPC32x0 10/100 Ethernet");
     
    212227
    213228        sc->lpe_dev = dev;
     229#ifndef __rtems__
    214230        sc->lpe_ofw = ofw_bus_get_node(dev);
    215231
     
    223239                sc->lpe_enaddr[5] = 0x55;
    224240        }
     241#else /* __rtems__ */
     242        rtems_bsd_get_mac_address(device_get_name(sc->lpe_dev), device_get_unit(sc->lpe_dev), &sc->lpe_enaddr);
     243#endif /* __rtems__ */
    225244
    226245        mtx_init(&sc->lpe_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
     
    276295
    277296        /* Enable Ethernet clock */
     297#ifndef __rtems__
    278298        lpc_pwr_write(dev, LPC_CLKPWR_MACCLK_CTRL,
    279299            LPC_CLKPWR_MACCLK_CTRL_REG |
     
    281301            LPC_CLKPWR_MACCLK_CTRL_MASTER |
    282302            LPC_CLKPWR_MACCLK_CTRL_HDWINF(3));
     303#else /* __rtems__ */
     304#ifdef LPC32XX_ETHERNET_RMII
     305        lpc_pwr_write(dev, LPC_CLKPWR_MACCLK_CTRL,
     306            LPC_CLKPWR_MACCLK_CTRL_REG |
     307            LPC_CLKPWR_MACCLK_CTRL_SLAVE |
     308            LPC_CLKPWR_MACCLK_CTRL_MASTER |
     309            LPC_CLKPWR_MACCLK_CTRL_HDWINF(3));
     310#else
     311        lpc_pwr_write(dev, LPC_CLKPWR_MACCLK_CTRL,
     312            LPC_CLKPWR_MACCLK_CTRL_REG |
     313            LPC_CLKPWR_MACCLK_CTRL_SLAVE |
     314            LPC_CLKPWR_MACCLK_CTRL_MASTER |
     315            LPC_CLKPWR_MACCLK_CTRL_HDWINF(1));
     316#endif
     317#endif /* __rtems__ */
    283318
    284319        /* Reset chip */
     
    286321
    287322        /* Initialize MII */
     323#ifndef __rtems__
    288324        val = lpe_read_4(sc, LPE_COMMAND);
    289325        lpe_write_4(sc, LPE_COMMAND, val | LPE_COMMAND_RMII);
     
    295331                goto fail;
    296332        }
     333#else /* __rtems__ */
     334        if (mii_attach(dev, &sc->lpe_miibus, ifp, lpe_ifmedia_upd,
     335            lpe_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY,
     336            MII_OFFSET_ANY, 0)) {
     337                device_printf(dev, "cannot find PHY\n");
     338                goto fail;
     339        }
     340#endif /* __rtems__ */
    297341
    298342        lpe_dma_alloc(sc);
     
    389433        struct mii_data *mii = device_get_softc(sc->lpe_miibus);
    390434
     435#ifndef __rtems__
    391436        lpe_lock(sc);
     437#endif /* __rtems__ */
    392438
    393439        if ((mii->mii_media_status & IFM_ACTIVE) &&
     
    397443                sc->lpe_flags &= ~LPE_FLAG_LINK;
    398444
     445#ifndef __rtems__
    399446        lpe_unlock(sc);
     447#endif /* __rtems__ */
    400448}
    401449
     
    405453        uint32_t mac1;
    406454
     455#ifndef __rtems__
    407456        /* Enter soft reset mode */
    408457        mac1 = lpe_read_4(sc, LPE_MAC1);
     
    423472        lpe_write_4(sc, LPE_MAC1, mac1 & ~(LPE_MAC1_SOFTRESET | LPE_MAC1_RESETTX |
    424473            LPE_MAC1_RESETMCSTX | LPE_MAC1_RESETRX | LPE_MAC1_RESETMCSRX));
     474#else /* __rtems__ */
     475        /* Reset registers, Tx path and Rx path */
     476        lpe_write_4(sc, LPE_COMMAND, LPE_COMMAND_REGRESET | LPE_COMMAND_TXRESET | LPE_COMMAND_RXRESET);
     477
     478        /* Enter soft reset mode */
     479        mac1 = lpe_read_4(sc, LPE_MAC1);
     480        lpe_write_4(sc, LPE_MAC1, mac1 | LPE_MAC1_SOFTRESET | LPE_MAC1_RESETTX |
     481            LPE_MAC1_RESETMCSTX | LPE_MAC1_RESETRX | LPE_MAC1_RESETMCSRX);
     482
     483        /* Leave soft reset mode */
     484        mac1 = lpe_read_4(sc, LPE_MAC1);
     485        lpe_write_4(sc, LPE_MAC1, mac1 & ~(LPE_MAC1_SOFTRESET | LPE_MAC1_RESETTX |
     486            LPE_MAC1_RESETMCSTX | LPE_MAC1_RESETRX | LPE_MAC1_RESETMCSRX));
     487
     488        /* Reinitialize registers */
     489        lpe_write_4(sc, LPE_MCFG, LPE_MCFG_CLKSEL(0x7));
     490        lpe_write_4(sc, LPE_MAC2, LPE_MAC2_PADCRCENABLE | LPE_MAC2_CRCENABLE | LPE_MAC2_FULLDUPLEX);
     491        lpe_write_4(sc, LPE_IPGT, 0x15);
     492        lpe_write_4(sc, LPE_IPGR, 0x12);
     493        lpe_write_4(sc, LPE_CLRT, 0x370f);
     494        lpe_write_4(sc, LPE_MAXF, 0x0600);
     495        lpe_write_4(sc, LPE_SUPP, LPE_SUPP_SPEED);
     496        lpe_write_4(sc, LPE_TEST, 0x0);
     497#ifdef LPC32XX_ETHERNET_RMII
     498        lpe_write_4(sc, LPE_COMMAND, LPE_COMMAND_FULLDUPLEX | LPE_COMMAND_RMII);
     499#else
     500        lpe_write_4(sc, LPE_COMMAND, LPE_COMMAND_FULLDUPLEX);
     501#endif
     502        lpe_write_4(sc, LPE_INTENABLE, 0x0);
     503        lpe_write_4(sc, LPE_INTCLEAR, 0x30ff);
     504        lpe_write_4(sc, LPE_POWERDOWN, 0x0);
     505
     506        /* Set station address */
     507        lpe_write_4(sc, LPE_SA2, sc->lpe_enaddr[1] << 8 | sc->lpe_enaddr[0]);
     508        lpe_write_4(sc, LPE_SA1, sc->lpe_enaddr[3] << 8 | sc->lpe_enaddr[2]);
     509        lpe_write_4(sc, LPE_SA0, sc->lpe_enaddr[5] << 8 | sc->lpe_enaddr[4]);
     510#endif /* __rtems__ */
    425511}
    426512
     
    534620}
    535621
     622#ifdef __rtems__
     623static int
     624lpe_get_segs_for_tx(struct mbuf *m, bus_dma_segment_t segs[LPE_MAXFRAGS],
     625    int *nsegs)
     626{
     627        int i = 0;
     628
     629        do {
     630                if (m->m_len > 0) {
     631                        segs[i].ds_addr = mtod(m, bus_addr_t);
     632                        segs[i].ds_len = m->m_len;
     633#ifdef CPU_DATA_CACHE_ALIGNMENT
     634                        rtems_cache_flush_multiple_data_lines(m->m_data, m->m_len);
     635#endif
     636                        ++i;
     637                }
     638                m = m->m_next;
     639                if (m == NULL) {
     640                        *nsegs = i;
     641                        return (0);
     642                }
     643        } while (i < LPE_MAXFRAGS);
     644        return (EFBIG);
     645}
     646#endif /* __rtems__ */
    536647static int
    537648lpe_encap(struct lpe_softc *sc, struct mbuf **m_head)
     
    550661        debugf("starting with prod=%d\n", prod);
    551662
     663#ifndef __rtems__
    552664        err = bus_dmamap_load_mbuf_sg(sc->lpe_cdata.lpe_tx_buf_tag,
    553665            txd->lpe_txdesc_dmamap, *m_head, segs, &nsegs, BUS_DMA_NOWAIT);
     666#else /* __rtems__ */
     667        err = lpe_get_segs_for_tx(*m_head, segs, &nsegs);
     668#endif /* __rtems__ */
    554669
    555670        if (err)
     
    562677        }
    563678
     679#ifndef __rtems__
    564680        bus_dmamap_sync(sc->lpe_cdata.lpe_tx_buf_tag, txd->lpe_txdesc_dmamap,
    565681          BUS_DMASYNC_PREREAD);
     682#endif /* __rtems__ */
    566683        bus_dmamap_sync(sc->lpe_cdata.lpe_tx_ring_tag, sc->lpe_cdata.lpe_tx_ring_map,
    567684            BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
     
    582699                }
    583700
     701#ifdef __rtems__
     702#ifdef CPU_DATA_CACHE_ALIGNMENT
     703                rtems_cache_flush_multiple_data_lines(hwd, sizeof(*hwd));
     704#endif
     705#endif /* __rtems__ */
    584706                LPE_INC(prod, LPE_TXDESC_NUM);
    585707        }
     
    725847                        lpe_rxintr(sc);
    726848
     849#ifndef __rtems__
    727850                if (intstatus & LPE_INT_TXDONE)
    728851                        lpe_txintr(sc);
    729852       
     853#else /* __rtems__ */
     854                if (intstatus & LPE_INT_TXUNDERRUN) {
     855                        if_inc_counter(sc->lpe_ifp, IFCOUNTER_OERRORS, 1);
     856                        lpe_stop_locked(sc);
     857                        lpe_init_locked(sc);
     858                }
     859                else if (intstatus & (LPE_INT_TXERROR | LPE_INT_TXFINISH | LPE_INT_TXDONE))
     860                        lpe_txintr(sc);
     861#endif /* __rtems__ */
    730862                lpe_write_4(sc, LPE_INTCLEAR, 0xffff);
    731863        }
     
    754886                hwd = &sc->lpe_rdata.lpe_rx_ring[cons];
    755887                hws = &sc->lpe_rdata.lpe_rx_status[cons];
     888#ifdef __rtems__
     889#ifdef CPU_DATA_CACHE_ALIGNMENT
     890                rtems_cache_invalidate_multiple_data_lines(rxd, sizeof(*rxd));
     891                rtems_cache_invalidate_multiple_data_lines(hwd, sizeof(*hwd));
     892                rtems_cache_invalidate_multiple_data_lines(hws, sizeof(*hws));
     893#endif
     894#endif /* __rtems__ */
    756895
    757896                /* Check received frame for errors */
     
    764903
    765904                m = rxd->lpe_rxdesc_mbuf;
     905#ifdef __rtems__
     906#ifdef CPU_DATA_CACHE_ALIGNMENT
     907                rtems_cache_invalidate_multiple_data_lines(m->m_data, m->m_len);
     908#endif
     909#endif /* __rtems__ */
    766910                m->m_pkthdr.rcvif = ifp;
    767911                m->m_data += 2;
     
    800944                hws = &sc->lpe_rdata.lpe_tx_status[last];
    801945
     946#ifndef __rtems__
    802947                bus_dmamap_sync(sc->lpe_cdata.lpe_tx_buf_tag,
    803948                    txd->lpe_txdesc_dmamap, BUS_DMASYNC_POSTWRITE);
     949#else /* __rtems__ */
     950#ifdef CPU_DATA_CACHE_ALIGNMENT
     951                rtems_cache_invalidate_multiple_data_lines(txd, sizeof(*txd));
     952                rtems_cache_invalidate_multiple_data_lines(hwd, sizeof(*hwd));
     953                rtems_cache_invalidate_multiple_data_lines(hws, sizeof(*hws));
     954#endif
     955#endif /* __rtems__ */
    804956
    805957                if_inc_counter(ifp, IFCOUNTER_COLLISIONS, LPE_HWDESC_COLLISIONS(hws->lhs_info));
     
    811963
    812964                if (txd->lpe_txdesc_first) {
     965#ifndef __rtems__
    813966                        bus_dmamap_unload(sc->lpe_cdata.lpe_tx_buf_tag,
    814967                            txd->lpe_txdesc_dmamap);   
     968#endif /* __rtems__ */
    815969
    816970                        m_freem(txd->lpe_txdesc_mbuf);
     
    9801134                rxd = &sc->lpe_cdata.lpe_rx_desc[i];
    9811135                rxd->lpe_rxdesc_mbuf = NULL;
     1136#ifndef __rtems__
    9821137                rxd->lpe_rxdesc_dmamap = NULL;
    9831138
     
    9891144                        return (err);
    9901145                }
     1146#endif /* __rtems__ */
    9911147        }
    9921148
     
    10821238                txd = &sc->lpe_cdata.lpe_tx_desc[i];
    10831239                txd->lpe_txdesc_mbuf = NULL;
     1240#ifndef __rtems__
    10841241                txd->lpe_txdesc_dmamap = NULL;
     1242#endif /* __rtems__ */
    10851243                txd->lpe_txdesc_first = 0;
    10861244
     1245#ifndef __rtems__
    10871246                err = bus_dmamap_create(sc->lpe_cdata.lpe_tx_buf_tag, 0,
    10881247                    &txd->lpe_txdesc_dmamap);
     1248#endif /* __rtems__ */
    10891249
    10901250                if (err) {
     
    11351295        m->m_len = m->m_pkthdr.len = MCLBYTES;
    11361296
     1297#ifndef __rtems__
    11371298        bus_dmamap_unload(sc->lpe_cdata.lpe_rx_buf_tag, rxd->lpe_rxdesc_dmamap);
    11381299
     
    11451306        bus_dmamap_sync(sc->lpe_cdata.lpe_rx_buf_tag, rxd->lpe_rxdesc_dmamap,
    11461307            BUS_DMASYNC_PREREAD);
     1308#else /* __rtems__ */
     1309#ifdef CPU_DATA_CACHE_ALIGNMENT
     1310        rtems_cache_invalidate_multiple_data_lines(m->m_data, m->m_len);
     1311#endif
     1312        segs[0].ds_addr = mtod(m, bus_addr_t);
     1313#endif /* __rtems__ */
    11471314
    11481315        rxd->lpe_rxdesc_mbuf = m;
    11491316        hwd->lhr_data = segs[0].ds_addr + 2;
    11501317        hwd->lhr_control = (segs[0].ds_len - 1) | LPE_HWDESC_INTERRUPT;
     1318#ifdef __rtems__
     1319#ifdef CPU_DATA_CACHE_ALIGNMENT
     1320        rtems_cache_flush_multiple_data_lines(hwd, sizeof(*hwd));
     1321#endif
     1322#endif /* __rtems__ */
    11511323
    11521324        return (0);
     
    11621334        hwd = &sc->lpe_rdata.lpe_rx_ring[n];
    11631335
     1336#ifndef __rtems__
    11641337        bus_dmamap_unload(sc->lpe_cdata.lpe_rx_buf_tag, rxd->lpe_rxdesc_dmamap);
     1338#endif /* __rtems__ */
    11651339
    11661340        hwd->lhr_data = 0;
     
    12281402static devclass_t lpe_devclass;
    12291403
     1404#ifndef __rtems__
    12301405DRIVER_MODULE(lpe, simplebus, lpe_driver, lpe_devclass, 0, 0);
     1406#else /* __rtems__ */
     1407DRIVER_MODULE(lpe, nexus, lpe_driver, lpe_devclass, 0, 0);
     1408#endif /* __rtems__ */
    12311409DRIVER_MODULE(miibus, lpe, miibus_driver, miibus_devclass, 0, 0);
    12321410MODULE_DEPEND(lpe, obio, 1, 1, 1);
  • freebsd/sys/arm/lpc/lpc_pwr.c

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    3939#include <sys/rman.h>
    4040#include <machine/bus.h>
     41#ifndef __rtems__
    4142#include <machine/intr.h>
    4243
    4344#include <dev/ofw/ofw_bus.h>
    4445#include <dev/ofw/ofw_bus_subr.h>
     46#endif /* __rtems__ */
    4547
    4648#include <arm/lpc/lpcreg.h>
     
    6870{
    6971       
     72#ifndef __rtems__
    7073        if (!ofw_bus_status_okay(dev))
    7174                return (ENXIO);
     
    7376        if (!ofw_bus_is_compatible(dev, "lpc,pwr"))
    7477                return (ENXIO);
     78#endif /* __rtems__ */
    7579
    7680        device_set_desc(dev, "LPC32x0 Power Controller");
     
    129133};
    130134
     135#ifndef __rtems__
    131136DRIVER_MODULE(pwr, simplebus, lpc_pwr_driver, lpc_pwr_devclass, 0, 0);
     137#else /* __rtems__ */
     138DRIVER_MODULE(pwr, nexus, lpc_pwr_driver, lpc_pwr_devclass, 0, 0);
     139#endif /* __rtems__ */
  • freebsd/sys/dev/mii/icsphy.c

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    114114        MII_PHY_DESC(ICS, 1892),
    115115        MII_PHY_DESC(ICS, 1893),
     116#ifdef __rtems__
     117        MII_PHY_DESC(ICS, 1893C),
     118#endif /* __rtems__ */
    116119        MII_PHY_END
    117120};
  • freebsd/sys/dev/usb/controller/ohci.h

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    235235        struct ohci_ed *sc_isoc_p_last;
    236236        struct ohci_ed *sc_intr_p_last[OHCI_NO_EDS];
    237 #ifndef __rtems__
    238237        void   *sc_intr_hdl;
    239 #endif /* __rtems__ */
    240238        device_t sc_dev;
    241239        bus_size_t sc_io_size;
  • libbsd.py

    r803a495 r9f2205a  
    149149            'sys/dev/usb/controller/ehci_mpc83xx.c',
    150150            'sys/dev/usb/controller/ohci_lpc.c',
     151            'sys/dev/usb/controller/ohci_lpc32xx.c',
    151152            'sys/dev/usb/controller/dwc_otg_nexus.c',
    152153            'sys/dev/usb/controller/usb_otg_transceiver.c',
     
    10841085            'sys/dev/dwc/if_dwcvar.h',
    10851086            'sys/arm/xilinx/zy7_slcr.h',
     1087            'sys/arm/lpc/if_lpereg.h',
     1088            'sys/arm/lpc/lpcreg.h',
     1089            'sys/arm/lpc/lpcvar.h',
    10861090        ]
    10871091    )
     
    11021106            'sys/dev/dwc/if_dwc.c',
    11031107            'sys/arm/xilinx/zy7_slcr.c',
     1108            'sys/arm/lpc/lpc_pwr.c',
     1109            'sys/arm/lpc/if_lpe.c',
    11041110        ],
    11051111        mm.generator['source']()
  • libbsd_waf.py

    r803a495 r9f2205a  
    723723    libbsd_use += ["objs07"]
    724724
    725     source = ['freebsd/sys/arm/xilinx/zy7_slcr.c',
     725    source = ['freebsd/sys/arm/lpc/if_lpe.c',
     726              'freebsd/sys/arm/lpc/lpc_pwr.c',
     727              'freebsd/sys/arm/xilinx/zy7_slcr.c',
    726728              'freebsd/sys/cam/cam.c',
    727729              'freebsd/sys/cam/scsi/scsi_all.c',
     
    13261328              'rtemsbsd/sys/dev/usb/controller/ehci_mpc83xx.c',
    13271329              'rtemsbsd/sys/dev/usb/controller/ohci_lpc.c',
     1330              'rtemsbsd/sys/dev/usb/controller/ohci_lpc32xx.c',
    13281331              'rtemsbsd/sys/dev/usb/controller/usb_otg_transceiver.c',
    13291332              'rtemsbsd/sys/dev/usb/controller/usb_otg_transceiver_dump.c',
  • rtemsbsd/include/bsp/nexus-devices.h

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    4646
    4747RTEMS_BSD_DRIVER_SMC0(0x4e000000,  RVPBXA9_IRQ_ETHERNET);
     48
     49#elif defined(LIBBSP_ARM_LPC32XX_BSP_H)
     50
     51#include <bsp/irq.h>
     52
     53RTEMS_BSD_DRIVER_LPC32XX_PWR;
     54RTEMS_BSD_DRIVER_LPC32XX_LPE;
     55RTEMS_BSD_DRIVER_ICSPHY;
     56RTEMS_BSD_DRIVER_LPC32XX_OHCI;
     57SYSINIT_DRIVER_REFERENCE(usbus, ohci);
     58RTEMS_BSD_DRIVER_USB;
     59RTEMS_BSD_DRIVER_USB_MASS;
    4860
    4961#elif defined(LIBBSP_M68K_GENMCF548X_BSP_H)
  • rtemsbsd/include/machine/rtems-bsd-nexus-bus.h

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    3939 *  Devices:
    4040 *   RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR
     41 *   RTEMS_BSD_DRIVER_LPC32XX_PWR
    4142 *
    4243 *  Buses:
     
    4748 *   RTEMS_BSD_DRIVER_DWCOTG0_BASE_ADDR
    4849 *    RTEMS_BSD_DRIVER_DWCOTG0_IRQ
     50 *   RTEMS_BSD_DRIVER_LPC32XX_OHCI
    4951 *   RTEMS_BSD_DRIVER_DWC_MMC
    5052 *   RTEMS_BSD_DRIVER_MMC
     
    5658 *    RTEMS_BSD_DRIVER_SMC0_BASE_ADDR
    5759 *    RTEMS_BSD_DRIVER_SMC0_IRQ
     60 *   RTEMS_BSD_DRIVER_LPC32XX_LPE
    5861 *   RTEMS_BSD_DRIVER_FEC
    5962 *   RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0
     
    7477 *  MMI PHY:
    7578 *   RTEMS_BSD_DRIVER_E1000PHY
     79 *   RTEMS_BSD_DRIVER_ICSPHY
    7680 *   RTEMS_BSD_DRIVER_REPHY
    7781 *   RTEMS_BSD_DRIVER_MIPHY
     
    116120#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR */
    117121
     122/*
     123 * LPC32XX Power Control (PWR).
     124 */
     125#if !defined(RTEMS_BSD_DRIVER_LPC32XX_PWR)
     126  #define RTEMS_BSD_DRIVER_LPC32XX_PWR                                        \
     127    static const rtems_bsd_device_resource lpc_pwr0_res[] = {                 \
     128      {                                                                       \
     129        .type = RTEMS_BSD_RES_MEMORY,                                         \
     130        .start_request = 0,                                                   \
     131        .start_actual = LPC32XX_BASE_SYSCON                                   \
     132      }                                                                       \
     133    };                                                                        \
     134    RTEMS_BSD_DEFINE_NEXUS_DEVICE_ORDERED(pwr, 0, RTEMS_SYSINIT_ORDER_FIRST,  \
     135                                  RTEMS_ARRAY_SIZE(lpc_pwr0_res),             \
     136                                  &lpc_pwr0_res[0])
     137#endif /* RTEMS_BSD_DRIVER_LPC32XX_PWR */
     138
    118139/**
    119140 ** Physical Buses
     
    156177
    157178/*
     179 * LPC32XX OHCI.
     180 */
     181#if !defined(RTEMS_BSD_DRIVER_LPC32XX_OHCI)
     182  #define RTEMS_BSD_DRIVER_LPC32XX_OHCI                                     \
     183    static const rtems_bsd_device_resource lpc_ohci0_res[] = {              \
     184      {                                                                     \
     185        .type = RTEMS_BSD_RES_MEMORY,                                       \
     186        .start_request = 0,                                                 \
     187        .start_actual = LPC32XX_BASE_USB                                    \
     188      }, {                                                                  \
     189        .type = RTEMS_BSD_RES_MEMORY,                                       \
     190        .start_request = 0,                                                 \
     191        .start_actual = (unsigned long)(&LPC32XX_I2C_RX)                    \
     192      }, {                                                                  \
     193        .type = RTEMS_BSD_RES_IRQ,                                          \
     194        .start_request = 0,                                                 \
     195        .start_actual = LPC32XX_IRQ_USB_HOST                                \
     196      }                                                                     \
     197    };                                                                      \
     198    RTEMS_BSD_DEFINE_NEXUS_DEVICE(ohci, 0,                                  \
     199                                  RTEMS_ARRAY_SIZE(lpc_ohci0_res),          \
     200                                  &lpc_ohci0_res[0])
     201#endif /* RTEMS_BSD_DRIVER_LPC32XX_OHCI */
     202
     203/*
    158204 * Designware/Synopsys MMC.
    159205 */
     
    213259                                  &smc0_res[0])
    214260#endif /* RTEMS_BSD_DRIVER_SMC */
     261
     262/*
     263 * LPC32XX LPE driver
     264 */
     265#if !defined(RTEMS_BSD_DRIVER_LPC32XX_LPE)
     266  #define RTEMS_BSD_DRIVER_LPC32XX_LPE                           \
     267    static const rtems_bsd_device_resource lpc_lpe0_res[] = {    \
     268      {                                                          \
     269        .type = RTEMS_BSD_RES_MEMORY,                            \
     270        .start_request = 0,                                      \
     271        .start_actual = LPC32XX_BASE_ETHERNET                    \
     272      }, {                                                       \
     273        .type = RTEMS_BSD_RES_IRQ,                               \
     274        .start_request = 0,                                      \
     275        .start_actual = LPC32XX_IRQ_ETHERNET                     \
     276      }                                                          \
     277    };                                                           \
     278    RTEMS_BSD_DEFINE_NEXUS_DEVICE(lpe, 0,                        \
     279                                  RTEMS_ARRAY_SIZE(lpc_lpe0_res),    \
     280                                  &lpc_lpe0_res[0])
     281#endif /* RTEMS_BSD_DRIVER_LPC32XX_LPE */
    215282
    216283/*
     
    346413
    347414/*
     415 * ICS PHY
     416 */
     417#if !defined(RTEMS_BSD_DRIVER_ICSPHY)
     418  #define RTEMS_BSD_DRIVER_ICSPHY               \
     419    SYSINIT_DRIVER_REFERENCE(icsphy, miibus);
     420#endif /* RTEMS_BSD_DRIVER_ICSPHY */
     421
     422/*
    348423 * Reltek PHY
    349424 */
  • rtemsbsd/include/rtems/bsd/local/miidevs.h

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    319319#define MII_MODEL_ICS_1893      0x0004
    320320#define MII_STR_ICS_1893        "ICS1893 10/100 media interface"
     321#define MII_MODEL_ICS_1893C     0x0005
     322#define MII_STR_ICS_1893C       "ICS1893C 10/100 media interface"
    321323
    322324/* Intel Corporation PHYs */
  • rtemsbsd/sys/dev/usb/controller/ohci_lpc.c

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    3737#include <errno.h>
    3838
    39 #if defined(LIBBSP_ARM_LPC24XX_BSP_H) || defined(LIBBSP_ARM_LPC32XX_BSP_H)
     39#if defined(LIBBSP_ARM_LPC24XX_BSP_H)
    4040
    4141#include <bsp/irq.h>
    42 
    43 #ifdef LIBBSP_ARM_LPC24XX_BSP_H
    44 
    4542#include <bsp/io.h>
    4643#include <bsp/lpc24xx.h>
     
    10198        OTG_STAT_CTRL = 0x3;
    10299}
    103 
    104 #endif /* LIBBSP_ARM_LPC24XX_BSP_H */
    105 
    106 #ifdef LIBBSP_ARM_LPC32XX_BSP_H
    107 
    108 #include <bsp/lpc32xx.h>
    109 
    110 #define LPC_USB_OHCI_BASE LPC32XX_BASE_USB
    111 
    112 #define LPC_USB_I2C_BASE (&LPC32XX_I2C_RX)
    113 
    114 #define LPC_OTG_CLK_CTRL LPC32XX_OTG_CLK_CTRL
    115 
    116 #define LPC_OTG_CLK_STAT LPC32XX_OTG_CLK_STAT
    117 
    118 #define LPC_USB_OHCI_IRQ LPC32XX_IRQ_USB_HOST
    119 
    120 #define USB_CTRL_SLAVE_HCLK_EN (1U << 24)
    121 #define USB_CTRL_I2C_EN (1U << 23)
    122 #define USB_CTRL_DEV_NEED_CLK_EN (1U << 22)
    123 #define USB_CTRL_HOST_NEED_CLK_EN (1U << 21)
    124 #define USB_CTRL_PC_MASK (0x3U << 19)
    125 #define USB_CTRL_PC_PULL_UP (0x0U << 19)
    126 #define USB_CTRL_PC_BUS_KEEPER (0x1U << 19)
    127 #define USB_CTRL_PC_NONE (0x2U << 19)
    128 #define USB_CTRL_PC_PULL_DOWN (0x3U << 19)
    129 #define USB_CTRL_CLKEN2 (1U << 18)
    130 #define USB_CTRL_CLKEN1 (1U << 17)
    131 #define USB_CTRL_POWER_UP (1U << 16)
    132 #define USB_CTRL_BYPASS (1U << 15)
    133 #define USB_CTRL_DIRECT (1U << 14)
    134 #define USB_CTRL_FEEDBACK (1U << 13)
    135 #define USB_CTRL_P_SHIFT 11
    136 #define USB_CTRL_P_MASK (0x3U << USB_CTRL_P_SHIFT)
    137 #define USB_CTRL_P_1 (0x0U << USB_CTRL_P_SHIFT)
    138 #define USB_CTRL_P_2 (0x1U << USB_CTRL_P_SHIFT)
    139 #define USB_CTRL_P_4 (0x2U << USB_CTRL_P_SHIFT)
    140 #define USB_CTRL_P_8 (0x3U << USB_CTRL_P_SHIFT)
    141 #define USB_CTRL_N_SHIFT 9
    142 #define USB_CTRL_N_MASK (0x3U << USB_CTRL_N_SHIFT)
    143 #define USB_CTRL_N_1 (0x0U << USB_CTRL_N_SHIFT)
    144 #define USB_CTRL_N_2 (0x1U << USB_CTRL_N_SHIFT)
    145 #define USB_CTRL_N_3 (0x2U << USB_CTRL_N_SHIFT)
    146 #define USB_CTRL_N_4 (0x3U << USB_CTRL_N_SHIFT)
    147 #define USB_CTRL_M_SHIFT 1
    148 #define USB_CTRL_M_MASK (0xffU << USB_CTRL_M_SHIFT)
    149 #define USB_CTRL_PLL_LOCK (1U << 0)
    150 
    151 static void lpc_usb_module_enable(void)
    152 {
    153         LPC32XX_USB_DIV = 0xc;
    154         LPC32XX_USB_CTRL = USB_CTRL_SLAVE_HCLK_EN
    155                 | USB_CTRL_PC_BUS_KEEPER
    156                 | USB_CTRL_CLKEN1
    157                 | USB_CTRL_POWER_UP
    158                 | USB_CTRL_P_2
    159                 | USB_CTRL_N_1
    160                 | (191U << USB_CTRL_M_SHIFT);
    161         while ((LPC32XX_USB_CTRL & USB_CTRL_PLL_LOCK) == 0) {
    162                 /* Wait */
    163         }
    164         LPC32XX_USB_CTRL |= USB_CTRL_CLKEN2;
    165 }
    166 
    167 static void lpc_usb_module_disable(void)
    168 {
    169         LPC32XX_OTG_CLK_CTRL = 0;
    170         LPC32XX_USB_CTRL = USB_CTRL_PC_BUS_KEEPER;
    171 }
    172 
    173 static void lpc_usb_pin_config(void)
    174 {
    175         /* Nothing to do */
    176 }
    177 
    178 static void lpc_usb_host_clock_enable(void)
    179 {
    180         LPC32XX_USB_CTRL |= USB_CTRL_HOST_NEED_CLK_EN;
    181 }
    182 
    183 static void lpc_otg_status_and_control(void)
    184 {
    185         LPC32XX_OTG_STAT_CTRL = 0x1;
    186 }
    187 
    188 #endif /* LIBBSP_ARM_LPC32XX_BSP_H */
    189100
    190101static rtems_interval lpc_usb_timeout_init(void)
     
    640551MODULE_DEPEND(ohci, usb, 1, 1, 1);
    641552
    642 #endif /* defined(LIBBSP_ARM_LPC24XX_BSP_H) || defined(LIBBSP_ARM_LPC32XX_BSP_H) */
     553#endif /* defined(LIBBSP_ARM_LPC24XX_BSP_H) */
  • rtemsbsd/sys/dev/usb/usb_otg_transceiver.h

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    8989        uint16_t product_id;
    9090        uint8_t i2c_addr;
     91        void *softc;
    9192};
    9293
  • testsuite/include/rtems/bsd/test/network-config.h.in

    • Property mode changed from 100644 to 100755
    r803a495 r9f2205a  
    4343#elif defined(LIBBSP_M68K_GENMCF548X_BSP_H)
    4444  #define NET_CFG_INTERFACE_0 "fec0"
     45#elif defined(LIBBSP_ARM_LPC32XX_BSP_H)
     46  #define NET_CFG_INTERFACE_0 "lpe0"
    4547#else
    4648  #define NET_CFG_INTERFACE_0 "lo0"
Note: See TracChangeset for help on using the changeset viewer.