Author: mav
Date: Thu Aug 31 13:41:44 2017
New Revision: 323053
URL: https://svnweb.freebsd.org/changeset/base/323053

Log:
  Fix port control for PEX 8749.
  
  That chip has three Station Ports, so previous address math was incorrect.
  
  MFC after:    13 days
  Sponsored by: iXsystems, Inc.

Modified:
  head/sys/dev/ntb/ntb_hw/ntb_hw_plx.c

Modified: head/sys/dev/ntb/ntb_hw/ntb_hw_plx.c
==============================================================================
--- head/sys/dev/ntb/ntb_hw/ntb_hw_plx.c        Thu Aug 31 13:32:01 2017        
(r323052)
+++ head/sys/dev/ntb/ntb_hw/ntb_hw_plx.c        Thu Aug 31 13:41:44 2017        
(r323053)
@@ -473,7 +473,7 @@ ntb_plx_link_enable(device_t dev, enum ntb_speed speed
                return (0);
        }
 
-       reg = (sc->port < 8) ? 0x00208 : 0x08208;
+       reg = ((sc->port & ~7) << 12) | 0x208;
        val = bus_read_4(sc->conf_res, reg);
        if ((val & (1 << (sc->port & 7))) == 0) {
                /* If already enabled, generate fake link event and exit. */
@@ -495,7 +495,7 @@ ntb_plx_link_disable(device_t dev)
        if (sc->link)
                return (0);
 
-       reg = (sc->port < 8) ? 0x00208 : 0x08208;
+       reg = ((sc->port & ~7) << 12) | 0x208;
        val = bus_read_4(sc->conf_res, reg);
        val |= (1 << (sc->port & 7));
        bus_write_4(sc->conf_res, reg, val);
@@ -512,7 +512,7 @@ ntb_plx_link_enabled(device_t dev)
        if (sc->link)
                return (TRUE);
 
-       reg = (sc->port < 8) ? 0x00208 : 0x08208;
+       reg = ((sc->port & ~7) << 12) | 0x208;
        val = bus_read_4(sc->conf_res, reg);
        return ((val & (1 << (sc->port & 7))) == 0);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to