Changeset 62ba2cbe in mainline for uspace/drv/bus/usb/xhci/debug.c


Ignore:
Timestamp:
2017-06-16T01:25:16Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cb89430
Parents:
ce6e001
Message:

xhci: dumping operational state

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/xhci/debug.c

    rce6e001 r62ba2cbe  
    3838
    3939#include "debug.h"
     40#include "hc.h"
     41
     42#define PX "\t%-21s = "
    4043
    4144#define DUMP_REG_FIELD(ptr, title, size, ...) \
    42         usb_log_debug2(title "%" PRIu##size, XHCI_REG_RD_FIELD(ptr, size, ##__VA_ARGS__))
     45        usb_log_debug2(PX "%" PRIu##size, title, XHCI_REG_RD_FIELD(ptr, size, ##__VA_ARGS__))
    4346
    4447#define DUMP_REG_RANGE(ptr, title, size, ...) \
    45         usb_log_debug2(title "%" PRIu##size, XHCI_REG_RD_RANGE(ptr, size, ##__VA_ARGS__))
     48        usb_log_debug2(PX "%" PRIu##size, title, XHCI_REG_RD_RANGE(ptr, size, ##__VA_ARGS__))
    4649
    4750#define DUMP_REG_FLAG(ptr, title, size, ...) \
    48         usb_log_debug2(title "%s", XHCI_REG_RD_FLAG(ptr, size, ##__VA_ARGS__) ? "true" : "false")
     51        usb_log_debug2(PX "%s", title, XHCI_REG_RD_FLAG(ptr, size, ##__VA_ARGS__) ? "true" : "false")
    4952
    5053#define DUMP_REG_INNER(set, title, field, size, type, ...) \
    5154        DUMP_REG_##type(&(set)->field, title, size, ##__VA_ARGS__)
    5255
    53 #define DUMP_REG(set, c) DUMP_REG_INNER(set, "\t" #c ": ", c)
     56#define DUMP_REG(set, c) DUMP_REG_INNER(set, #c, c)
    5457
    5558/**
     
    9295}
    9396
     97void xhci_dump_port(xhci_port_regs_t *port)
     98{
     99        DUMP_REG(port, XHCI_PORT_CCS);
     100        DUMP_REG(port, XHCI_PORT_PED);
     101        DUMP_REG(port, XHCI_PORT_OCA);
     102        DUMP_REG(port, XHCI_PORT_PR);
     103        DUMP_REG(port, XHCI_PORT_PLS);
     104        DUMP_REG(port, XHCI_PORT_PP);
     105        DUMP_REG(port, XHCI_PORT_PIC);
     106        DUMP_REG(port, XHCI_PORT_LWS);
     107        DUMP_REG(port, XHCI_PORT_CSC);
     108        DUMP_REG(port, XHCI_PORT_PEC);
     109        DUMP_REG(port, XHCI_PORT_WRC);
     110        DUMP_REG(port, XHCI_PORT_OCC);
     111        DUMP_REG(port, XHCI_PORT_PRC);
     112        DUMP_REG(port, XHCI_PORT_PLC);
     113        DUMP_REG(port, XHCI_PORT_CEC);
     114        DUMP_REG(port, XHCI_PORT_CAS);
     115        DUMP_REG(port, XHCI_PORT_WCE);
     116        DUMP_REG(port, XHCI_PORT_WDE);
     117        DUMP_REG(port, XHCI_PORT_WOE);
     118        DUMP_REG(port, XHCI_PORT_DR);
     119        DUMP_REG(port, XHCI_PORT_WPR);
     120}
     121
     122void xhci_dump_state(xhci_hc_t *hc)
     123{
     124        usb_log_debug2("Operational registers:");
     125
     126        DUMP_REG(hc->op_regs, XHCI_OP_RS);
     127        DUMP_REG(hc->op_regs, XHCI_OP_RS);
     128        DUMP_REG(hc->op_regs, XHCI_OP_HCRST);
     129        DUMP_REG(hc->op_regs, XHCI_OP_INTE);
     130        DUMP_REG(hc->op_regs, XHCI_OP_HSEE);
     131        DUMP_REG(hc->op_regs, XHCI_OP_LHCRST);
     132        DUMP_REG(hc->op_regs, XHCI_OP_CSS);
     133        DUMP_REG(hc->op_regs, XHCI_OP_CRS);
     134        DUMP_REG(hc->op_regs, XHCI_OP_EWE);
     135        DUMP_REG(hc->op_regs, XHCI_OP_EU3S);
     136        DUMP_REG(hc->op_regs, XHCI_OP_CME);
     137        DUMP_REG(hc->op_regs, XHCI_OP_HCH);
     138        DUMP_REG(hc->op_regs, XHCI_OP_HSE);
     139        DUMP_REG(hc->op_regs, XHCI_OP_EINT);
     140        DUMP_REG(hc->op_regs, XHCI_OP_PCD);
     141        DUMP_REG(hc->op_regs, XHCI_OP_SSS);
     142        DUMP_REG(hc->op_regs, XHCI_OP_RSS);
     143        DUMP_REG(hc->op_regs, XHCI_OP_SRE);
     144        DUMP_REG(hc->op_regs, XHCI_OP_CNR);
     145        DUMP_REG(hc->op_regs, XHCI_OP_HCE);
     146        DUMP_REG(hc->op_regs, XHCI_OP_PAGESIZE);
     147        DUMP_REG(hc->op_regs, XHCI_OP_NOTIFICATION);
     148        DUMP_REG(hc->op_regs, XHCI_OP_RCS);
     149        DUMP_REG(hc->op_regs, XHCI_OP_CS);
     150        DUMP_REG(hc->op_regs, XHCI_OP_CA);
     151        DUMP_REG(hc->op_regs, XHCI_OP_CRR);
     152        DUMP_REG(hc->op_regs, XHCI_OP_CRCR_LO);
     153        DUMP_REG(hc->op_regs, XHCI_OP_CRCR_HI);
     154
     155        const size_t num_ports = XHCI_REG_RD(hc->cap_regs, XHCI_CAP_MAX_PORTS);
     156        for (size_t i = 0; i < num_ports; i++) {
     157                usb_log_debug2("Port %zu state:", i);
     158
     159                xhci_dump_port(&hc->op_regs->portrs[i]);
     160        }
     161}
    94162/**
    95163 * @}
Note: See TracChangeset for help on using the changeset viewer.