Lines Matching refs:fp
50 static int fixed_phy_update_regs(struct fixed_phy *fp) in fixed_phy_update_regs() argument
57 if (gpio_is_valid(fp->link_gpio)) in fixed_phy_update_regs()
58 fp->status.link = !!gpio_get_value_cansleep(fp->link_gpio); in fixed_phy_update_regs()
60 if (fp->status.duplex) { in fixed_phy_update_regs()
61 switch (fp->status.speed) { in fixed_phy_update_regs()
75 switch (fp->status.speed) { in fixed_phy_update_regs()
90 if (fp->status.link) { in fixed_phy_update_regs()
93 if (fp->status.duplex) { in fixed_phy_update_regs()
96 switch (fp->status.speed) { in fixed_phy_update_regs()
113 switch (fp->status.speed) { in fixed_phy_update_regs()
131 if (fp->status.pause) in fixed_phy_update_regs()
134 if (fp->status.asym_pause) in fixed_phy_update_regs()
138 fp->regs[MII_PHYSID1] = 0; in fixed_phy_update_regs()
139 fp->regs[MII_PHYSID2] = 0; in fixed_phy_update_regs()
141 fp->regs[MII_BMSR] = bmsr; in fixed_phy_update_regs()
142 fp->regs[MII_BMCR] = bmcr; in fixed_phy_update_regs()
143 fp->regs[MII_LPA] = lpa; in fixed_phy_update_regs()
144 fp->regs[MII_STAT1000] = lpagb; in fixed_phy_update_regs()
152 struct fixed_phy *fp; in fixed_mdio_read() local
168 list_for_each_entry(fp, &fmb->phys, node) { in fixed_mdio_read()
169 if (fp->addr == phy_addr) { in fixed_mdio_read()
171 if (fp->link_update) { in fixed_mdio_read()
172 fp->link_update(fp->phydev->attached_dev, in fixed_mdio_read()
173 &fp->status); in fixed_mdio_read()
174 fixed_phy_update_regs(fp); in fixed_mdio_read()
176 return fp->regs[reg_num]; in fixed_mdio_read()
199 struct fixed_phy *fp; in fixed_phy_set_link_update() local
204 list_for_each_entry(fp, &fmb->phys, node) { in fixed_phy_set_link_update()
205 if (fp->addr == phydev->addr) { in fixed_phy_set_link_update()
206 fp->link_update = link_update; in fixed_phy_set_link_update()
207 fp->phydev = phydev; in fixed_phy_set_link_update()
221 struct fixed_phy *fp; in fixed_phy_update_state() local
226 list_for_each_entry(fp, &fmb->phys, node) { in fixed_phy_update_state()
227 if (fp->addr == phydev->addr) { in fixed_phy_update_state()
229 fp->status.x = status->x in fixed_phy_update_state()
236 fixed_phy_update_regs(fp); in fixed_phy_update_state()
251 struct fixed_phy *fp; in fixed_phy_add() local
253 fp = kzalloc(sizeof(*fp), GFP_KERNEL); in fixed_phy_add()
254 if (!fp) in fixed_phy_add()
257 memset(fp->regs, 0xFF, sizeof(fp->regs[0]) * MII_REGS_NUM); in fixed_phy_add()
261 fp->addr = phy_addr; in fixed_phy_add()
262 fp->status = *status; in fixed_phy_add()
263 fp->link_gpio = link_gpio; in fixed_phy_add()
265 if (gpio_is_valid(fp->link_gpio)) { in fixed_phy_add()
266 ret = gpio_request_one(fp->link_gpio, GPIOF_DIR_IN, in fixed_phy_add()
272 ret = fixed_phy_update_regs(fp); in fixed_phy_add()
276 list_add_tail(&fp->node, &fmb->phys); in fixed_phy_add()
281 if (gpio_is_valid(fp->link_gpio)) in fixed_phy_add()
282 gpio_free(fp->link_gpio); in fixed_phy_add()
284 kfree(fp); in fixed_phy_add()
292 struct fixed_phy *fp, *tmp; in fixed_phy_del() local
294 list_for_each_entry_safe(fp, tmp, &fmb->phys, node) { in fixed_phy_del()
295 if (fp->addr == phy_addr) { in fixed_phy_del()
296 list_del(&fp->node); in fixed_phy_del()
297 if (gpio_is_valid(fp->link_gpio)) in fixed_phy_del()
298 gpio_free(fp->link_gpio); in fixed_phy_del()
299 kfree(fp); in fixed_phy_del()
418 struct fixed_phy *fp, *tmp; in fixed_mdio_bus_exit() local
424 list_for_each_entry_safe(fp, tmp, &fmb->phys, node) { in fixed_mdio_bus_exit()
425 list_del(&fp->node); in fixed_mdio_bus_exit()
426 kfree(fp); in fixed_mdio_bus_exit()