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