Lines Matching +full:3 +full:- +full:c45
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2009-2016 Cavium, Inc.
11 #include "mdio-cavium.h"
18 if (m == p->mode) in cavium_mdiobus_set_mode()
21 smi_clk.u64 = oct_mdio_readq(p->register_base + SMI_CLK); in cavium_mdiobus_set_mode()
22 smi_clk.s.mode = (m == C45) ? 1 : 0; in cavium_mdiobus_set_mode()
24 oct_mdio_writeq(smi_clk.u64, p->register_base + SMI_CLK); in cavium_mdiobus_set_mode()
25 p->mode = m; in cavium_mdiobus_set_mode()
35 cavium_mdiobus_set_mode(p, C45); in cavium_mdiobus_c45_addr()
39 oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); in cavium_mdiobus_c45_addr()
47 oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); in cavium_mdiobus_c45_addr()
54 smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); in cavium_mdiobus_c45_addr()
55 } while (smi_wr.s.pending && --timeout); in cavium_mdiobus_c45_addr()
58 return -EIO; in cavium_mdiobus_c45_addr()
64 struct cavium_mdiobus *p = bus->priv; in cavium_mdiobus_read()
77 op = 3; /* MDIO_CLAUSE_45_READ */ in cavium_mdiobus_read()
86 oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); in cavium_mdiobus_read()
93 smi_rd.u64 = oct_mdio_readq(p->register_base + SMI_RD_DAT); in cavium_mdiobus_read()
94 } while (smi_rd.s.pending && --timeout); in cavium_mdiobus_read()
99 return -EIO; in cavium_mdiobus_read()
105 struct cavium_mdiobus *p = bus->priv; in cavium_mdiobus_write()
125 oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); in cavium_mdiobus_write()
131 oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); in cavium_mdiobus_write()
138 smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); in cavium_mdiobus_write()
139 } while (smi_wr.s.pending && --timeout); in cavium_mdiobus_write()
142 return -EIO; in cavium_mdiobus_write()