| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*
- * Copyright : (C) 2022 Phytium Information Technology, Inc.
- * All Rights Reserved.
- *
- * This program is OPEN SOURCE software: you can redistribute it and/or modify it
- * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd,
- * either version 1.0 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the Phytium Public License for more details.
- *
- *
- * FilePath: fxhci_debug.c
- * Date: 2022-02-11 13:33:12
- * LastEditTime: 2022-02-18 09:12:15
- * Description: This files is for implementation of XHCI debug utilities
- *
- * Modify History:
- * Ver Who Date Changes
- * ----- ------ -------- --------------------------------------
- * 1.0 Zhugengyu 2022/2/7 init commit
- */
- #include <inttypes.h>
- #include "fdebug.h"
- #include "fxhci_private.h"
- #define FUSB_DEBUG_TAG "FXHCI_DEBUG"
- #define FUSB_ERROR(format, ...) FT_DEBUG_PRINT_E(FUSB_DEBUG_TAG, format, ##__VA_ARGS__)
- #define FUSB_WARN(format, ...) FT_DEBUG_PRINT_W(FUSB_DEBUG_TAG, format, ##__VA_ARGS__)
- #define FUSB_INFO(format, ...) FT_DEBUG_PRINT_I(FUSB_DEBUG_TAG, format, ##__VA_ARGS__)
- #define FUSB_DEBUG(format, ...) FT_DEBUG_PRINT_D(FUSB_DEBUG_TAG, format, ##__VA_ARGS__)
- void FXhciDumpSlotCtx(const FXhciSlotCtx *const sc)
- {
- FUSB_INFO("Slot Context (@%p): ", sc);
- FUSB_INFO(" FIELD1\t0x%08x ", sc->f1);
- FUSB_INFO(" FIELD2\t0x%08x ", sc->f2);
- FUSB_INFO(" FIELD3\t0x%08x ", sc->f3);
- FUSB_INFO(" FIELD4\t0x%08x ", sc->f4);
- FXHCI_SC_DUMP(FUSB_INFO, ROUTE, sc);
- FXHCI_SC_DUMP(FUSB_INFO, SPEED1, sc);
- FXHCI_SC_DUMP(FUSB_INFO, MTT, sc);
- FXHCI_SC_DUMP(FUSB_INFO, HUB, sc);
- FXHCI_SC_DUMP(FUSB_INFO, CTXENT, sc);
- FXHCI_SC_DUMP(FUSB_INFO, RHPORT, sc);
- FXHCI_SC_DUMP(FUSB_INFO, NPORTS, sc);
- FXHCI_SC_DUMP(FUSB_INFO, TTID, sc);
- FXHCI_SC_DUMP(FUSB_INFO, TTPORT, sc);
- FXHCI_SC_DUMP(FUSB_INFO, TTT, sc);
- FXHCI_SC_DUMP(FUSB_INFO, UADDR, sc);
- FXHCI_SC_DUMP(FUSB_INFO, STATE, sc);
- }
- void FXhciDumpEpCtx(const FXhciEpCtx *const ec)
- {
- FUSB_INFO("Endpoint Context (@%p): ", ec);
- FUSB_INFO(" FIELD1\t0x%08x ", ec->f1);
- FUSB_INFO(" FIELD2\t0x%08x ", ec->f2);
- FUSB_INFO(" TRDQ_L\t0x%08x ", ec->tr_dq_low);
- FUSB_INFO(" TRDQ_H\t0x%08x ", ec->tr_dq_high);
- FUSB_INFO(" FIELD5\t0x%08x ", ec->f5);
- FXHCI_EC_DUMP(FUSB_INFO, STATE, ec);
- FXHCI_EC_DUMP(FUSB_INFO, INTVAL, ec);
- FXHCI_EC_DUMP(FUSB_INFO, CERR, ec);
- FXHCI_EC_DUMP(FUSB_INFO, TYPE, ec);
- FXHCI_EC_DUMP(FUSB_INFO, MBS, ec);
- FXHCI_EC_DUMP(FUSB_INFO, MPS, ec);
- FXHCI_EC_DUMP(FUSB_INFO, DCS, ec);
- FXHCI_EC_DUMP(FUSB_INFO, AVRTRB, ec);
- FXHCI_EC_DUMP(FUSB_INFO, MXESIT, ec);
- }
- void FXhciDumpDevCtx(const FXhciDevCtx *const dc, const u32 ctx_mask)
- {
- unsigned int i;
- if (ctx_mask & 1)
- FXhciDumpSlotCtx(dc->slot);
- for (i = 1; i <= FXHCI_SC_GET(CTXENT, dc->slot); ++i)
- {
- if (ctx_mask & (1 << i))
- FXhciDumpEpCtx(dc->ep[i]);
- }
- }
- void FXhciDumpInputCtx(const FXhciInputCtx *const ic)
- {
- FUSB_INFO("Input Control add: 0x%08x ", *ic->add);
- FUSB_INFO("Input Control drop: 0x%08x ", *ic->drop);
- FXhciDumpDevCtx(&ic->dev, *ic->add);
- }
- void FXhciDumpTransferTrb(const FXhciTrb *const cur)
- {
- FUSB_INFO("Transfer TRB (@%p): ", cur);
- FUSB_INFO(" PTR_L\t0x%08x ", cur->ptr_low);
- FUSB_INFO(" PTR_H\t0x%08x ", cur->ptr_high);
- FUSB_INFO(" STATUS\t0x%08x ", cur->status);
- FUSB_INFO(" CNTRL\t0x%08x ", cur->control);
- FXHCI_TRB_DUMP(FUSB_INFO, TL, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, TDS, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, C, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, ISP, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, CH, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, IOC, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, IDT, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, TT, cur);
- FXHCI_TRB_DUMP(FUSB_INFO, DIR, cur);
- }
- static const FXhciTrb *FXhciNextTrb(const FXhciTrb *const cur)
- {
- if (FXHCI_TRB_GET(TT, cur) == FXHCI_TRB_LINK)
- return (!cur->ptr_low) ? NULL : (void *)(uintptr)(cur->ptr_low);
- else
- return cur + 1;
- }
- void FXhciDumpTransferTrbs(const FXhciTrb *const first, const FXhciTrb *const last)
- {
- const FXhciTrb *cur;
- for (cur = first; cur; cur = FXhciNextTrb(cur))
- {
- FXhciDumpTransferTrb(cur);
- if (cur == last)
- break;
- }
- }
|