Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic Add flags to control IRQ polarity and buffer type...



details:   https://anonhg.NetBSD.org/src/rev/b969875c7726
branches:  trunk
changeset: 824326:b969875c7726
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Thu Jun 01 16:59:20 2017 +0000

description:
Add flags to control IRQ polarity and buffer type. These can be set by
the bus glue to switch to active high and/or push-pull configurations.

diffstat:

 sys/dev/ic/lan9118.c    |  22 ++++++++++++++++------
 sys/dev/ic/lan9118var.h |   4 +++-
 2 files changed, 19 insertions(+), 7 deletions(-)

diffs (82 lines):

diff -r c4c79efab03c -r b969875c7726 sys/dev/ic/lan9118.c
--- a/sys/dev/ic/lan9118.c      Thu Jun 01 16:57:12 2017 +0000
+++ b/sys/dev/ic/lan9118.c      Thu Jun 01 16:59:20 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lan9118.c,v 1.24 2017/02/20 07:43:29 ozaki-r Exp $     */
+/*     $NetBSD: lan9118.c,v 1.25 2017/06/01 16:59:20 jmcneill Exp $    */
 /*
  * Copyright (c) 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -25,7 +25,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lan9118.c,v 1.24 2017/02/20 07:43:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lan9118.c,v 1.25 2017/06/01 16:59:20 jmcneill Exp $");
 
 /*
  * The LAN9118 Family
@@ -156,7 +156,7 @@
 lan9118_attach(struct lan9118_softc *sc)
 {
        struct ifnet *ifp = &sc->sc_ec.ec_if;
-       uint32_t val;
+       uint32_t val, irq_cfg;
        int timo, i;
 
        if (sc->sc_flags & LAN9118_FLAGS_SWAP)
@@ -206,6 +206,14 @@
        aprint_normal_dev(sc->sc_dev, "MAC address %s\n",
            ether_sprintf(sc->sc_enaddr));
 
+       /* Set IRQ config */
+       irq_cfg = 0;
+       if (sc->sc_flags & LAN9118_FLAGS_IRQ_ACTHI)
+               irq_cfg |= LAN9118_IRQ_CFG_IRQ_POL;
+       if (sc->sc_flags & LAN9118_FLAGS_IRQ_PP)
+               irq_cfg |= LAN9118_IRQ_CFG_IRQ_TYPE;
+       bus_space_write_4(sc->sc_iot, sc->sc_ioh, LAN9118_IRQ_CFG, irq_cfg);
+
        KASSERT(LAN9118_TX_FIF_SZ >= 2 && LAN9118_TX_FIF_SZ < 15);
        sc->sc_afc_cfg = afc_cfg[LAN9118_TX_FIF_SZ];
 
@@ -514,7 +522,7 @@
 {
        struct lan9118_softc *sc = ifp->if_softc;
        struct ifmedia *ifm = &sc->sc_mii.mii_media;
-       uint32_t reg, hw_cfg, mac_cr;
+       uint32_t reg, hw_cfg, mac_cr, irq_cfg;
        int timo, s;
 
        DPRINTFN(2, ("%s\n", __func__));
@@ -588,8 +596,10 @@
            LAN9118_GPIO_CFG_GPIOBUFN(1) |
            LAN9118_GPIO_CFG_GPIOBUFN(0));
 
-       bus_space_write_4(sc->sc_iot, sc->sc_ioh, LAN9118_IRQ_CFG,
-           LAN9118_IRQ_CFG_IRQ_EN);
+       irq_cfg = bus_space_read_4(sc->sc_iot, sc->sc_ioh, LAN9118_IRQ_CFG);
+       irq_cfg |= LAN9118_IRQ_CFG_IRQ_EN;
+       bus_space_write_4(sc->sc_iot, sc->sc_ioh, LAN9118_IRQ_CFG, irq_cfg);
+
        bus_space_write_4(sc->sc_iot, sc->sc_ioh, LAN9118_INT_STS,
            bus_space_read_4(sc->sc_iot, sc->sc_ioh, LAN9118_INT_STS));
        bus_space_write_4(sc->sc_iot, sc->sc_ioh, LAN9118_FIFO_INT,
diff -r c4c79efab03c -r b969875c7726 sys/dev/ic/lan9118var.h
--- a/sys/dev/ic/lan9118var.h   Thu Jun 01 16:57:12 2017 +0000
+++ b/sys/dev/ic/lan9118var.h   Thu Jun 01 16:59:20 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lan9118var.h,v 1.5 2015/04/13 16:33:24 riastradh Exp $ */
+/*     $NetBSD: lan9118var.h,v 1.6 2017/06/01 16:59:20 jmcneill Exp $  */
 /*
  * Copyright (c) 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -70,6 +70,8 @@
        int sc_flags;
 #define LAN9118_FLAGS_SWAP     0x00000001
 #define LAN9118_FLAGS_NO_EEPROM        0x00000002
+#define LAN9118_FLAGS_IRQ_ACTHI        0x00000004
+#define LAN9118_FLAGS_IRQ_PP   0x00000008
 
        krndsource_t rnd_source;
 };



Home | Main Index | Thread Index | Old Index