Author: hselasky
Date: Wed Jun 29 10:21:45 2016
New Revision: 302266
URL: https://svnweb.freebsd.org/changeset/base/302266

Log:
  MFC r302076:
  Update the definition for number of scratch pages to match the latest
  version of the XHCI specification. Make sure the code can handle the
  maximum number of allowed scratch pages.
  
  Submitted by: shichun...@dell.com

Modified:
  stable/10/sys/dev/usb/controller/xhci.c
  stable/10/sys/dev/usb/controller/xhci.h
  stable/10/sys/dev/usb/controller/xhcireg.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/usb/controller/xhci.c
==============================================================================
--- stable/10/sys/dev/usb/controller/xhci.c     Wed Jun 29 07:55:45 2016        
(r302265)
+++ stable/10/sys/dev/usb/controller/xhci.c     Wed Jun 29 10:21:45 2016        
(r302266)
@@ -215,7 +215,7 @@ static void
 xhci_iterate_hw_softc(struct usb_bus *bus, usb_bus_mem_sub_cb_t *cb)
 {
        struct xhci_softc *sc = XHCI_BUS2SC(bus);
-       uint8_t i;
+       uint16_t i;
 
        cb(bus, &sc->sc_hw.root_pc, &sc->sc_hw.root_pg,
           sizeof(struct xhci_hw_root), XHCI_PAGE_SIZE);
@@ -223,7 +223,7 @@ xhci_iterate_hw_softc(struct usb_bus *bu
        cb(bus, &sc->sc_hw.ctx_pc, &sc->sc_hw.ctx_pg,
           sizeof(struct xhci_dev_ctx_addr), XHCI_PAGE_SIZE);
 
-       for (i = 0; i != XHCI_MAX_SCRATCHPADS; i++) {
+       for (i = 0; i != sc->sc_noscratch; i++) {
                cb(bus, &sc->sc_hw.scratch_pc[i], &sc->sc_hw.scratch_pg[i],
                    XHCI_PAGE_SIZE, XHCI_PAGE_SIZE);
        }

Modified: stable/10/sys/dev/usb/controller/xhci.h
==============================================================================
--- stable/10/sys/dev/usb/controller/xhci.h     Wed Jun 29 07:55:45 2016        
(r302265)
+++ stable/10/sys/dev/usb/controller/xhci.h     Wed Jun 29 10:21:45 2016        
(r302266)
@@ -30,7 +30,7 @@
 
 #define        XHCI_MAX_DEVICES        MIN(USB_MAX_DEVICES, 128)
 #define        XHCI_MAX_ENDPOINTS      32      /* hardcoded - do not change */
-#define        XHCI_MAX_SCRATCHPADS    32
+#define        XHCI_MAX_SCRATCHPADS    1024
 #define        XHCI_MAX_EVENTS         (16 * 13)
 #define        XHCI_MAX_COMMANDS       (16 * 1)
 #define        XHCI_MAX_RSEG           1
@@ -495,14 +495,15 @@ struct xhci_softc {
        uint16_t                sc_command_idx;
        uint16_t                sc_imod_default;
 
+       /* number of scratch pages */
+       uint16_t                sc_noscratch;
+
        uint8_t                 sc_event_ccs;
        uint8_t                 sc_command_ccs;
        /* number of XHCI device slots */
        uint8_t                 sc_noslot;
        /* number of ports on root HUB */
        uint8_t                 sc_noport;
-       /* number of scratch pages */
-       uint8_t                 sc_noscratch;
        /* root HUB device configuration */
        uint8_t                 sc_conf;
        /* root HUB port event bitmap, max 256 ports */

Modified: stable/10/sys/dev/usb/controller/xhcireg.h
==============================================================================
--- stable/10/sys/dev/usb/controller/xhcireg.h  Wed Jun 29 07:55:45 2016        
(r302265)
+++ stable/10/sys/dev/usb/controller/xhcireg.h  Wed Jun 29 10:21:45 2016        
(r302266)
@@ -52,8 +52,8 @@
 #define        XHCI_HCSPARAMS2         0x08    /* RO structual parameters 2 */
 #define        XHCI_HCS2_IST(x)        ((x) & 0xF)
 #define        XHCI_HCS2_ERST_MAX(x)   (((x) >> 4) & 0xF)
-#define        XHCI_HCS2_SPR(x)        (((x) >> 24) & 0x1)
-#define        XHCI_HCS2_SPB_MAX(x)    (((x) >> 27) & 0x7F)
+#define        XHCI_HCS2_SPR(x)        (((x) >> 26) & 0x1)
+#define        XHCI_HCS2_SPB_MAX(x)    ((((x) >> 16) & 0x3E0) | (((x) >> 27) & 
0x1F))
 #define        XHCI_HCSPARAMS3         0x0C    /* RO structual parameters 3 */
 #define        XHCI_HCS3_U1_DEL(x)     ((x) & 0xFF)
 #define        XHCI_HCS3_U2_DEL(x)     (((x) >> 16) & 0xFFFF)
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to