uboot/drivers/usb/musb/musb_debug.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 2009 Wind River Systems, Inc.
   4 * Tom Rix <Tom.Rix@windriver.com>
   5 */
   6
   7/* Define MUSB_DEBUG before including this file to get debug macros */
   8#ifdef MUSB_DEBUG
   9
  10#define MUSB_FLAGS_PRINT(v, x, y)               \
  11  if (((v) & MUSB_##x##_##y))                   \
  12                serial_printf("\t\t"#y"\n")
  13
  14static inline void musb_print_pwr(u8 b)
  15{
  16        serial_printf("\tpower   0x%2.2x\n", b);
  17        MUSB_FLAGS_PRINT(b, POWER, ISOUPDATE);
  18        MUSB_FLAGS_PRINT(b, POWER, SOFTCONN);
  19        MUSB_FLAGS_PRINT(b, POWER, HSENAB);
  20        MUSB_FLAGS_PRINT(b, POWER, HSMODE);
  21        MUSB_FLAGS_PRINT(b, POWER, RESET);
  22        MUSB_FLAGS_PRINT(b, POWER, RESUME);
  23        MUSB_FLAGS_PRINT(b, POWER, SUSPENDM);
  24        MUSB_FLAGS_PRINT(b, POWER, ENSUSPEND);
  25}
  26
  27static inline void musb_print_csr0(u16 w)
  28{
  29        serial_printf("\tcsr0    0x%4.4x\n", w);
  30        MUSB_FLAGS_PRINT(w, CSR0, FLUSHFIFO);
  31        MUSB_FLAGS_PRINT(w, CSR0_P, SVDSETUPEND);
  32        MUSB_FLAGS_PRINT(w, CSR0_P, SVDRXPKTRDY);
  33        MUSB_FLAGS_PRINT(w, CSR0_P, SENDSTALL);
  34        MUSB_FLAGS_PRINT(w, CSR0_P, SETUPEND);
  35        MUSB_FLAGS_PRINT(w, CSR0_P, DATAEND);
  36        MUSB_FLAGS_PRINT(w, CSR0_P, SENTSTALL);
  37        MUSB_FLAGS_PRINT(w, CSR0, TXPKTRDY);
  38        MUSB_FLAGS_PRINT(w, CSR0, RXPKTRDY);
  39}
  40
  41static inline void musb_print_intrusb(u8 b)
  42{
  43        serial_printf("\tintrusb 0x%2.2x\n", b);
  44        MUSB_FLAGS_PRINT(b, INTR, VBUSERROR);
  45        MUSB_FLAGS_PRINT(b, INTR, SESSREQ);
  46        MUSB_FLAGS_PRINT(b, INTR, DISCONNECT);
  47        MUSB_FLAGS_PRINT(b, INTR, CONNECT);
  48        MUSB_FLAGS_PRINT(b, INTR, SOF);
  49        MUSB_FLAGS_PRINT(b, INTR, RESUME);
  50        MUSB_FLAGS_PRINT(b, INTR, SUSPEND);
  51
  52        if (b & MUSB_INTR_BABBLE)
  53                serial_printf("\t\tMUSB_INTR_RESET or MUSB_INTR_BABBLE\n");
  54
  55}
  56
  57static inline void musb_print_intrtx(u16 w)
  58{
  59        serial_printf("\tintrtx 0x%4.4x\n", w);
  60}
  61
  62static inline void musb_print_intrrx(u16 w)
  63{
  64        serial_printf("\tintrx 0x%4.4x\n", w);
  65}
  66
  67static inline void musb_print_devctl(u8 b)
  68{
  69        serial_printf("\tdevctl  0x%2.2x\n", b);
  70        if (b & MUSB_DEVCTL_BDEVICE)
  71                serial_printf("\t\tB device\n");
  72        else
  73                serial_printf("\t\tA device\n");
  74        if (b & MUSB_DEVCTL_FSDEV)
  75                serial_printf("\t\tFast Device -(host mode)\n");
  76        if (b & MUSB_DEVCTL_LSDEV)
  77                serial_printf("\t\tSlow Device -(host mode)\n");
  78        if (b & MUSB_DEVCTL_HM)
  79                serial_printf("\t\tHost mode\n");
  80        else
  81                serial_printf("\t\tPeripherial mode\n");
  82        if (b & MUSB_DEVCTL_HR)
  83                serial_printf("\t\tHost request started(B device)\n");
  84        else
  85                serial_printf("\t\tHost request finished(B device)\n");
  86        if (b & MUSB_DEVCTL_BDEVICE) {
  87                if (b & MUSB_DEVCTL_SESSION)
  88                        serial_printf("\t\tStart of session(B device)\n");
  89                else
  90                        serial_printf("\t\tEnd of session(B device)\n");
  91        } else {
  92                if (b & MUSB_DEVCTL_SESSION)
  93                        serial_printf("\t\tStart of session(A device)\n");
  94                else
  95                        serial_printf("\t\tEnd of session(A device)\n");
  96        }
  97}
  98
  99static inline void musb_print_config(u8 b)
 100{
 101        serial_printf("\tconfig 0x%2.2x\n", b);
 102        if (b & MUSB_CONFIGDATA_MPRXE)
 103                serial_printf("\t\tAuto combine rx bulk packets\n");
 104        if (b & MUSB_CONFIGDATA_MPTXE)
 105                serial_printf("\t\tAuto split tx bulk packets\n");
 106        if (b & MUSB_CONFIGDATA_BIGENDIAN)
 107                serial_printf("\t\tBig Endian ordering\n");
 108        else
 109                serial_printf("\t\tLittle Endian ordering\n");
 110        if (b & MUSB_CONFIGDATA_HBRXE)
 111                serial_printf("\t\tHigh speed rx iso endpoint\n");
 112        if (b & MUSB_CONFIGDATA_HBTXE)
 113                serial_printf("\t\tHigh speed tx iso endpoint\n");
 114        if (b & MUSB_CONFIGDATA_DYNFIFO)
 115                serial_printf("\t\tDynamic fifo sizing\n");
 116        if (b & MUSB_CONFIGDATA_SOFTCONE)
 117                serial_printf("\t\tSoft Connect\n");
 118        if (b & MUSB_CONFIGDATA_UTMIDW)
 119                serial_printf("\t\t16 bit data width\n");
 120        else
 121                serial_printf("\t\t8 bit data width\n");
 122}
 123
 124static inline void musb_print_rxmaxp(u16 w)
 125{
 126        serial_printf("\trxmaxp  0x%4.4x\n", w);
 127}
 128
 129static inline void musb_print_rxcsr(u16 w)
 130{
 131        serial_printf("\trxcsr   0x%4.4x\n", w);
 132        MUSB_FLAGS_PRINT(w, RXCSR, AUTOCLEAR);
 133        MUSB_FLAGS_PRINT(w, RXCSR, DMAENAB);
 134        MUSB_FLAGS_PRINT(w, RXCSR, DISNYET);
 135        MUSB_FLAGS_PRINT(w, RXCSR, PID_ERR);
 136        MUSB_FLAGS_PRINT(w, RXCSR, DMAMODE);
 137        MUSB_FLAGS_PRINT(w, RXCSR, CLRDATATOG);
 138        MUSB_FLAGS_PRINT(w, RXCSR, FLUSHFIFO);
 139        MUSB_FLAGS_PRINT(w, RXCSR, DATAERROR);
 140        MUSB_FLAGS_PRINT(w, RXCSR, FIFOFULL);
 141        MUSB_FLAGS_PRINT(w, RXCSR, RXPKTRDY);
 142        MUSB_FLAGS_PRINT(w, RXCSR_P, SENTSTALL);
 143        MUSB_FLAGS_PRINT(w, RXCSR_P, SENDSTALL);
 144        MUSB_FLAGS_PRINT(w, RXCSR_P, OVERRUN);
 145
 146        if (w & MUSB_RXCSR_P_ISO)
 147                serial_printf("\t\tiso mode\n");
 148        else
 149                serial_printf("\t\tbulk mode\n");
 150
 151}
 152
 153static inline void musb_print_txmaxp(u16 w)
 154{
 155        serial_printf("\ttxmaxp  0x%4.4x\n", w);
 156}
 157
 158static inline void musb_print_txcsr(u16 w)
 159{
 160        serial_printf("\ttxcsr   0x%4.4x\n", w);
 161        MUSB_FLAGS_PRINT(w, TXCSR, TXPKTRDY);
 162        MUSB_FLAGS_PRINT(w, TXCSR, FIFONOTEMPTY);
 163        MUSB_FLAGS_PRINT(w, TXCSR, FLUSHFIFO);
 164        MUSB_FLAGS_PRINT(w, TXCSR, CLRDATATOG);
 165        MUSB_FLAGS_PRINT(w, TXCSR_P, UNDERRUN);
 166        MUSB_FLAGS_PRINT(w, TXCSR_P, SENTSTALL);
 167        MUSB_FLAGS_PRINT(w, TXCSR_P, SENDSTALL);
 168
 169        if (w & MUSB_TXCSR_MODE)
 170                serial_printf("\t\tTX mode\n");
 171        else
 172                serial_printf("\t\tRX mode\n");
 173}
 174
 175#else
 176
 177/* stubs */
 178
 179#define musb_print_pwr(b)
 180#define musb_print_csr0(w)
 181#define musb_print_intrusb(b)
 182#define musb_print_intrtx(w)
 183#define musb_print_intrrx(w)
 184#define musb_print_devctl(b)
 185#define musb_print_config(b)
 186#define musb_print_rxmaxp(w)
 187#define musb_print_rxcsr(w)
 188#define musb_print_txmaxp(w)
 189#define musb_print_txcsr(w)
 190
 191#endif /* MUSB_DEBUG */
 192