Module Name: src Committed By: skrll Date: Sun Jan 13 15:21:47 UTC 2013
Modified Files: src/sys/dev/usb: dwc_otg.c dwc_otgvar.h Log Message: Add some more counters (disabled by default) To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/dev/usb/dwc_otg.c cvs rdiff -u -r1.4 -r1.5 src/sys/dev/usb/dwc_otgvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/dwc_otg.c diff -u src/sys/dev/usb/dwc_otg.c:1.22 src/sys/dev/usb/dwc_otg.c:1.23 --- src/sys/dev/usb/dwc_otg.c:1.22 Sun Jan 13 14:46:21 2013 +++ src/sys/dev/usb/dwc_otg.c Sun Jan 13 15:21:47 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc_otg.c,v 1.22 2013/01/13 14:46:21 jmcneill Exp $ */ +/* $NetBSD: dwc_otg.c,v 1.23 2013/01/13 15:21:47 skrll Exp $ */ /*- * Copyright (c) 2012 Hans Petter Selasky. All rights reserved. @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dwc_otg.c,v 1.22 2013/01/13 14:46:21 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwc_otg.c,v 1.23 2013/01/13 15:21:47 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -3389,9 +3389,16 @@ dwc_otg_interrupt(struct dwc_otg_softc * status = DWC_OTG_READ_4(sc, DOTG_GINTSTS); DWC_OTG_WRITE_4(sc, DOTG_GINTSTS, status); + for (size_t i = 0; i < 32; i++) { + if (status & (1<<i)) { + DOTG_EVCNT_INCR(sc->sc_ev_intr_bit[i]); + } + } + KASSERT(mutex_owned(&sc->sc_intr_lock)); if (status & GINTSTS_USBRST) { DPRINTF("GINTSTS_USBRST\n"); + /* set correct state */ sc->sc_flags.status_device_mode = 1; sc->sc_flags.status_bus_reset = 0; @@ -4112,6 +4119,18 @@ dwc_otg_device_done(usbd_xfer_handle xfe usb_schedsoftintr(&sc->sc_bus); } +static const char * const intnames[32] = { + "curmod", "modemis", "otgint", "sof", + "rxflvl", "nptxfemp", "ginnakeff", "goutnakeff", + "ulpickint", "i2cint", "erlysusp", "usbsusp", + "usbrst", "enumdone", "isooutdrop", "eopf", + "restore_done", "epmis", "iepint", "oepint", + "incompisoin", "incomplp", "fetsusp", "resetdet", + "prtint", "hchint", "ptxfemp", "lpm", + "conidstschng", "disconnint", "sessreqint", "wkupint" +}; + + usbd_status dwc_otg_init(struct dwc_otg_softc *sc) { @@ -4165,6 +4184,12 @@ dwc_otg_init(struct dwc_otg_softc *sc) NULL, xname, "xfer pool get"); evcnt_attach_dynamic(&sc->sc_ev_xferpoolput, EVCNT_TYPE_MISC, NULL, xname, "xfer pool put"); + + for (size_t i = 0; i < 32; i++) { + evcnt_attach_dynamic(&sc->sc_ev_intr_bit[i], EVCNT_TYPE_INTR, + NULL, xname, intnames[i]); + } + #endif temp = DWC_OTG_READ_4(sc, DOTG_GUSBCFG); Index: src/sys/dev/usb/dwc_otgvar.h diff -u src/sys/dev/usb/dwc_otgvar.h:1.4 src/sys/dev/usb/dwc_otgvar.h:1.5 --- src/sys/dev/usb/dwc_otgvar.h:1.4 Sat Jan 12 23:26:06 2013 +++ src/sys/dev/usb/dwc_otgvar.h Sun Jan 13 15:21:47 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc_otgvar.h,v 1.4 2013/01/12 23:26:06 jmcneill Exp $ */ +/* $NetBSD: dwc_otgvar.h,v 1.5 2013/01/13 15:21:47 skrll Exp $ */ /* $FreeBSD: src/sys/dev/usb/controller/dwc_otg.h,v 1.12 2012/09/27 15:23:38 hselasky Exp $ */ /*- @@ -180,7 +180,6 @@ typedef struct dwc_otg_softc { kmutex_t sc_intr_lock; void *sc_rhc_si; - //void *sc_intr_si; struct workqueue *sc_wq; struct dwc_otg_work sc_timer_work; @@ -201,19 +200,20 @@ typedef struct dwc_otg_softc { pool_cache_t sc_tdpool; pool_cache_t sc_xferpool; - -#ifdef DOTG_COUNTERS +#ifdef DOTG_COUNTERS + struct evcnt sc_ev_intr; + struct evcnt sc_ev_intr_bit[32]; + struct evcnt sc_ev_soft_intr; struct evcnt sc_ev_work; - + struct evcnt sc_ev_tdpoolget; struct evcnt sc_ev_tdpoolput; struct evcnt sc_ev_xferpoolget; struct evcnt sc_ev_xferpoolput; - -#endif +#endif /* From FreeBSD softc */ struct callout sc_timer;