PERFORCE change 198110 for review
Jakub Wojciech Klama
jceel at FreeBSD.org
Thu Aug 25 00:52:58 UTC 2011
http://p4web.freebsd.org/@@198110?ac=10
Change 198110 by jceel at jceel_cyclone on 2011/08/25 00:52:30
Cosmetic changes and fixes, added #defines instead of
hadcoded values, added proper resource handling in *_attach()
method, added lpe_miibus_statchg() body.
Affected files ...
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/if_lpe.c#6 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/if_lpereg.h#5 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_dmac.c#5 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_fb.c#2 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_gpio.c#5 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_intc.c#2 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_mmc.c#6 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_ohci.c#4 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcreg.h#12 edit
Differences ...
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/if_lpe.c#6 (text+ko) ====
@@ -43,8 +43,6 @@
#include <machine/bus.h>
#include <machine/intr.h>
-#include <sys/kdb.h>
-
#include <net/if.h>
#include <net/if_arp.h>
#include <net/ethernet.h>
@@ -66,6 +64,16 @@
#include "miibus_if.h"
+#define DEBUG
+#undef DEBUG
+
+#ifdef DEBUG
+#define debugf(fmt, args...) do { printf("%s(): ", __func__); \
+ printf(fmt,##args); } while (0)
+#else
+#define debugf(fmt, args...)
+#endif
+
struct lpe_dmamap_arg {
bus_addr_t lpe_dma_busaddr;
};
@@ -123,6 +131,7 @@
void * lpe_intrhand;
bus_space_tag_t lpe_bst;
bus_space_handle_t lpe_bsh;
+#define LPE_FLAG_LINK (1 << 0)
uint32_t lpe_flags;
struct callout lpe_tick;
@@ -324,7 +333,9 @@
lpe_write_4(sc, LPE_MCMD, 0);
int x = (lpe_read_4(sc, LPE_MRDD) & LPE_MRDD_DATAMASK);
-// printf("mii read: phy=%d reg=%d result=0x%04x\n", phy, reg, x);
+
+
+ debugf("phy=%d reg=%d result=0x%04x\n", phy, reg, x);
return (x);
}
@@ -334,7 +345,7 @@
struct lpe_softc *sc = device_get_softc(dev);
uint32_t val;
-// printf("mii write: phy=%d reg=%d data=0x%04x\n", phy, reg, data);
+ debugf("phy=%d reg=%d data=0x%04x\n", phy, reg, data);
lpe_write_4(sc, LPE_MCMD, LPE_MCMD_WRITE);
lpe_write_4(sc, LPE_MADR,
@@ -358,10 +369,16 @@
lpe_miibus_statchg(device_t dev)
{
struct lpe_softc *sc = device_get_softc(dev);
- //struct mii_data *mii = device_get_softc(sc->lpe_miibus);
+ struct mii_data *mii = device_get_softc(sc->lpe_miibus);
lpe_lock(sc);
+ if ((mii->mii_media_status & IFM_ACTIVE) &&
+ (mii->mii_media_status & IFM_AVALID))
+ sc->lpe_flags |= LPE_FLAG_LINK;
+ else
+ sc->lpe_flags &= ~LPE_FLAG_LINK;
+
lpe_unlock(sc);
}
@@ -423,12 +440,10 @@
mac1 = lpe_read_4(sc, LPE_MAC1);
lpe_write_4(sc, LPE_MAC1, /*mac1 |*/ LPE_MAC1_RXENABLE | LPE_MAC1_PASSALL);
- /* XXX */
lpe_write_4(sc, LPE_MAC2, LPE_MAC2_CRCENABLE | LPE_MAC2_PADCRCENABLE |
LPE_MAC2_FULLDUPLEX);
- /* XXX */
- lpe_write_4(sc, LPE_MCFG, (((7) & 0x7) << 2));
+ lpe_write_4(sc, LPE_MCFG, LPE_MCFG_CLKSEL(7));
/* Set up Rx filter */
lpe_write_4(sc, LPE_RXFILTER_CTRL, 0xffffffff);
@@ -489,7 +504,7 @@
lpe_lock_assert(sc);
-// device_printf(sc->lpe_dev, "lpe_start_locked()\n");
+ debugf("entry");
while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
if (lpe_read_4(sc, LPE_TXDESC_PROD) ==
@@ -518,7 +533,6 @@
{
struct lpe_txdesc *txd;
struct lpe_hwdesc *hwd;
- //struct lpe_hwstatus *hws;
bus_dma_segment_t segs[LPE_MAXFRAGS];
int i, err, nsegs, prod;
@@ -528,10 +542,7 @@
prod = sc->lpe_cdata.lpe_tx_prod;
txd = &sc->lpe_cdata.lpe_tx_desc[prod];
-// device_printf(sc->lpe_dev, "lpe_encap: starting with prod=%d\n", prod);
-
-// device_printf(sc->lpe_dev, "lpe_encap: packet data: %16D\n",
-// mtod(*m_head, const char *), " ");
+ debugf("lpe_encap: starting with prod=%d\n", prod);
err = bus_dmamap_load_mbuf_sg(sc->lpe_cdata.lpe_tx_buf_tag,
txd->lpe_txdesc_dmamap, *m_head, segs, &nsegs, BUS_DMA_NOWAIT);
@@ -553,7 +564,7 @@
for (i = 0; i < nsegs; i++) {
hwd = &sc->lpe_rdata.lpe_tx_ring[prod];
hwd->lhr_data = segs[i].ds_addr;
- hwd->lhr_control = segs[i].ds_len - 1;// & LPE_HWDESC_SIZE_MASK;
+ hwd->lhr_control = segs[i].ds_len - 1;
if (i == nsegs - 1) {
hwd->lhr_control |= LPE_HWDESC_LASTFLAG;
@@ -563,9 +574,6 @@
}
LPE_INC(prod, LPE_TXDESC_NUM);
-
-// device_printf(sc->lpe_dev, "lpe_encap: 1 segment done @ %p, size: %ld\n",
-// hwd, segs[i].ds_len);
}
bus_dmamap_sync(sc->lpe_cdata.lpe_tx_ring_tag, sc->lpe_cdata.lpe_tx_ring_map,
@@ -618,7 +626,7 @@
struct lpe_softc *sc = (struct lpe_softc *)arg;
uint32_t intstatus;
-// device_printf(sc->lpe_dev, "intr(): 0x%08x\n", lpe_read_4(sc, LPE_INTSTATUS));
+ debugf("status=0x%08x\n", lpe_read_4(sc, LPE_INTSTATUS));
while ((intstatus = lpe_read_4(sc, LPE_INTSTATUS))) {
if (intstatus & LPE_INT_RXDONE)
@@ -643,8 +651,6 @@
struct mbuf *m;
int prod, cons;
-// device_printf(sc->lpe_dev, "receive interrupt\n");
-
for (;;) {
prod = lpe_read_4(sc, LPE_RXDESC_PROD);
cons = lpe_read_4(sc, LPE_RXDESC_CONS);
@@ -655,11 +661,6 @@
hwd = &sc->lpe_rdata.lpe_rx_ring[cons];
hws = &sc->lpe_rdata.lpe_rx_status[cons];
-// device_printf(sc->lpe_dev, "incoming packet: idx=%d len=%d data=%16D\n",
-// cons, hws->lhs_info & 0x7ff,
-// mtod(rxd->lpe_rxdesc_mbuf, const char *), " ");
-
-
m = rxd->lpe_rxdesc_mbuf;
m->m_pkthdr.rcvif = ifp;
m->m_data += 2;
@@ -671,14 +672,14 @@
LPE_INC(cons, LPE_RXDESC_NUM);
lpe_write_4(sc, LPE_RXDESC_CONS, cons);
}
-
-// device_printf(sc->lpe_dev, "rx: prod=%d cons=%d\n", prod, cons);
}
static void
lpe_txintr(struct lpe_softc *sc)
{
-/// device_printf(sc->lpe_dev, "transmit interrupt\n");
+
+ /* XXX add TX error handling */
+ debugf("transmit interrupt\n");
}
static void
@@ -968,9 +969,6 @@
bus_dmamap_unload(sc->lpe_cdata.lpe_rx_buf_tag, rxd->lpe_rxdesc_dmamap);
-// printf("i=%d sc=%p lpe_rx_buf_tag=%p lpe_rxdesc_dmamap=%p m=%p\n",
-// n, sc, sc->lpe_cdata.lpe_rx_buf_tag, rxd->lpe_rxdesc_dmamap, m);
-
if (bus_dmamap_load_mbuf_sg(sc->lpe_cdata.lpe_rx_buf_tag,
rxd->lpe_rxdesc_dmamap, m, segs, &nsegs, 0)) {
m_freem(m);
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/if_lpereg.h#5 (text+ko) ====
@@ -61,6 +61,10 @@
#define LPE_SUPP_SPEED (1 << 8)
#define LPE_TEST 0x01c
#define LPE_MCFG 0x020
+#define LPE_MCFG_SCANINCR (1 << 0)
+#define LPE_MCFG_SUPPREAMBLE (1 << 1)
+#define LPE_MCFG_CLKSEL(_n) ((_n & 0x7) << 2)
+#define LPC_MCFG_RESETMII (1 << 15)
#define LPE_MCMD 0x024
#define LPE_MCMD_READ (1 << 0)
#define LPE_MCMD_WRITE (0 << 0)
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_dmac.c#5 (text+ko) ====
@@ -218,7 +218,7 @@
cfg = LPC_DMAC_CH_CONFIG_ITC | LPC_DMAC_CH_CONFIG_IE |
LPC_DMAC_CH_CONFIG_FLOWCNTL(ch->ldc_config->ldc_fcntl) |
LPC_DMAC_CH_CONFIG_DESTP(ch->ldc_config->ldc_dst_periph) |
- LPC_DMAC_CH_CONFIG_SRCP(ch->ldc_config->ldc_src_periph) | LPC_DMAC_CH_CONFIG_E; // XXX
+ LPC_DMAC_CH_CONFIG_SRCP(ch->ldc_config->ldc_src_periph) | LPC_DMAC_CH_CONFIG_E;
lpc_dmac_write_ch_4(sc, chno, LPC_DMAC_CH_SRCADDR, src);
lpc_dmac_write_ch_4(sc, chno, LPC_DMAC_CH_DSTADDR, dst);
lpc_dmac_write_ch_4(sc, chno, LPC_DMAC_CH_LLI, 0);
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_fb.c#2 (text+ko) ====
@@ -429,7 +429,7 @@
lpc_fb_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int x,
struct thread *td)
{
- /* XXX */
+
return (EINVAL);
}
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_gpio.c#5 (text+ko) ====
@@ -443,9 +443,8 @@
static int
lpc_gpio_pin_toggle(device_t dev, uint32_t pin)
{
- //struct lpc_gpio_softc *sc = device_get_softc(dev);
const struct lpc_gpio_pinmap *map;
- uint32_t /*state,*/ flags;
+ uint32_t flags;
map = lpc_gpio_get_pinmap(pin);
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_intc.c#2 (text+ko) ====
@@ -220,8 +220,6 @@
}
-/* XXX */
-
struct fdt_fixup_entry fdt_fixup_table[] = {
{ NULL, NULL }
};
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_mmc.c#6 (text+ko) ====
@@ -66,7 +66,7 @@
#include <arm/lpc/lpcvar.h>
#define DEBUG
-//#undef DEBUG
+#undef DEBUG
#ifdef DEBUG
#define debugf(fmt, args...) do { printf("%s(): ", __func__); \
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_ohci.c#4 (text+ko) ====
@@ -151,7 +151,7 @@
strlcpy(sc->sc_vendor, "NXP", sizeof(sc->sc_vendor));
err = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
- NULL , (void *)ohci_interrupt, sc, &sc->sc_intr_hdl);
+ NULL, (void *)ohci_interrupt, sc, &sc->sc_intr_hdl);
if (err) {
sc->sc_intr_hdl = NULL;
goto fail;
@@ -215,7 +215,13 @@
return (0);
fail:
- /* XXX */
+ if (sc->sc_intr_hdl)
+ bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_intr_hdl);
+ if (sc->sc_irq_res)
+ bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res);
+ if (sc->sc_io_res)
+ bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_io_res);
+
return (ENXIO);
}
==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcreg.h#12 (text+ko) ====
More information about the p4-projects
mailing list