Lines Matching +full:reg +full:- +full:data

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2011-2012 Stefan Bethke.
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
66 uint16_t *reg) in arswitch_split_setpage() argument
73 *reg = (addr >> 1) & 0x1f; in arswitch_split_setpage()
75 if (sc->page != page) { in arswitch_split_setpage()
78 sc->page = page; in arswitch_split_setpage()
84 * the sequence of half-word accesses matters. The register addresses
85 * are word-even (mod 4).
90 uint16_t phy, reg; in arswitch_readreg16() local
92 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_readreg16()
93 return (MDIO_READREG(device_get_parent(dev), 0x10 | phy, reg)); in arswitch_readreg16()
100 arswitch_writereg16(device_t dev, int addr, int data) in arswitch_writereg16() argument
102 uint16_t phy, reg; in arswitch_writereg16() local
104 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_writereg16()
105 return (MDIO_WRITEREG(device_get_parent(dev), 0x10 | phy, reg, data)); in arswitch_writereg16()
129 arswitch_reg_read32(device_t dev, int phy, int reg) in arswitch_reg_read32() argument
132 lo = MDIO_READREG(device_get_parent(dev), phy, reg); in arswitch_reg_read32()
133 hi = MDIO_READREG(device_get_parent(dev), phy, reg + 1); in arswitch_reg_read32()
139 arswitch_reg_write32(device_t dev, int phy, int reg, uint32_t value) in arswitch_reg_write32() argument
149 if (sc->mii_lo_first) { in arswitch_reg_write32()
151 phy, reg, lo); in arswitch_reg_write32()
153 phy, reg + 1, hi); in arswitch_reg_write32()
156 phy, reg + 1, hi); in arswitch_reg_write32()
158 phy, reg, lo); in arswitch_reg_write32()
167 uint16_t phy, reg; in arswitch_readreg() local
169 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_readreg()
170 return arswitch_reg_read32(dev, 0x10 | phy, reg); in arswitch_readreg()
176 uint16_t phy, reg; in arswitch_writereg() local
178 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_writereg()
179 return (arswitch_reg_write32(dev, 0x10 | phy, reg, value)); in arswitch_writereg()
186 * data versus control space) and so need to be treated
204 arswitch_writereg_lsb(device_t dev, int addr, int data) in arswitch_writereg_lsb() argument
207 return (arswitch_writereg16(dev, addr, data & 0xffff)); in arswitch_writereg_lsb()
211 arswitch_writereg_msb(device_t dev, int addr, int data) in arswitch_writereg_msb() argument
214 return (arswitch_writereg16(dev, addr + 2, (data >> 16) & 0xffff)); in arswitch_writereg_msb()
221 uint16_t phy, reg; in arswitch_modifyreg() local
226 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_modifyreg()
228 value = arswitch_reg_read32(dev, 0x10 | phy, reg); in arswitch_modifyreg()
231 return (arswitch_reg_write32(dev, 0x10 | phy, reg, value)); in arswitch_modifyreg()
239 uint16_t phy, reg; in arswitch_waitreg() local
243 arswitch_split_setpage(dev, addr, &phy, &reg); in arswitch_waitreg()
245 err = -1; in arswitch_waitreg()
247 v = arswitch_reg_read32(dev, 0x10 | phy, reg); in arswitch_waitreg()
256 timeout--; in arswitch_waitreg()