1 // SPDX-License-Identifier: GPL-2.0+
2 /* Copyright (c) 2022 Microchip Technology Inc. and its subsidiaries. */
3
4 #include <stdio.h>
5 #include <string.h>
6 #include "internal.h"
7
8 #define LAN743X_ETH_REG_VERSION 1
9
10 enum {
11 ETH_PRIV_FLAGS,
12 ETH_ID_REV,
13 ETH_FPGA_REV,
14 ETH_STRAP_READ,
15 ETH_INT_STS,
16 ETH_HW_CFG,
17 ETH_PMT_CTL,
18 ETH_E2P_CMD,
19 ETH_E2P_DATA,
20 ETH_MAC_CR,
21 ETH_MAC_RX,
22 ETH_MAC_TX,
23 ETH_FLOW,
24 ETH_MII_ACC,
25 ETH_MII_DATA,
26 ETH_EEE_TX_LPI_REQ_DLY,
27 ETH_WUCSR,
28 ETH_WK_SRC,
29
30 /* Add new registers above */
31 MAX_LAN743X_ETH_REGS
32 };
33
lan743x_comm_dump_regs(struct ethtool_drvinfo * info __maybe_unused,struct ethtool_regs * regs)34 void lan743x_comm_dump_regs(struct ethtool_drvinfo *info __maybe_unused,
35 struct ethtool_regs *regs)
36 {
37 u32 *lan743x_reg = (u32 *)regs->data;
38
39 fprintf(stdout, "LAN743x Registers:\n");
40 fprintf(stdout, "------------------\n");
41 fprintf(stdout, "CHIP_ID_REV = 0x%08X\n", lan743x_reg[ETH_ID_REV]);
42 fprintf(stdout, "FPGA_REV = 0x%08X\n", lan743x_reg[ETH_FPGA_REV]);
43 fprintf(stdout, "STRAP_READ = 0x%08X\n", lan743x_reg[ETH_STRAP_READ]);
44 fprintf(stdout, "INT_STS = 0x%08X\n", lan743x_reg[ETH_INT_STS]);
45 fprintf(stdout, "HW_CFG = 0x%08X\n", lan743x_reg[ETH_HW_CFG]);
46 fprintf(stdout, "PMT_CTRL = 0x%08X\n", lan743x_reg[ETH_PMT_CTL]);
47 fprintf(stdout, "E2P_CMD = 0x%08X\n", lan743x_reg[ETH_E2P_CMD]);
48 fprintf(stdout, "E2P_DATA = 0x%08X\n", lan743x_reg[ETH_E2P_DATA]);
49 fprintf(stdout, "\n");
50
51 fprintf(stdout, "MAC Registers:\n");
52 fprintf(stdout, "--------------\n");
53 fprintf(stdout, "MAC_CR = 0x%08X\n", lan743x_reg[ETH_MAC_CR]);
54 fprintf(stdout, "MAC_RX = 0x%08X\n", lan743x_reg[ETH_MAC_RX]);
55 fprintf(stdout, "MAC_TX = 0x%08X\n", lan743x_reg[ETH_MAC_TX]);
56 fprintf(stdout, "FLOW = 0x%08X\n", lan743x_reg[ETH_FLOW]);
57 fprintf(stdout, "MII_ACC = 0x%08X\n", lan743x_reg[ETH_MII_ACC]);
58 fprintf(stdout, "MII_DATA = 0x%08X\n", lan743x_reg[ETH_MII_DATA]);
59 fprintf(stdout, "WUCSR = 0x%08X\n", lan743x_reg[ETH_WUCSR]);
60 fprintf(stdout, "WK_SRC = 0x%08X\n", lan743x_reg[ETH_WK_SRC]);
61 fprintf(stdout, "EEE_TX_LPI_REQ_DLY = 0x%08X\n",
62 lan743x_reg[ETH_EEE_TX_LPI_REQ_DLY]);
63 fprintf(stdout, "\n");
64 }
65
lan743x_dump_regs(struct ethtool_drvinfo * info __maybe_unused,struct ethtool_regs * regs)66 int lan743x_dump_regs(struct ethtool_drvinfo *info __maybe_unused,
67 struct ethtool_regs *regs)
68 {
69
70 lan743x_comm_dump_regs(info, regs);
71
72 return 0;
73 }
74