Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

b43: don't duplicate common PHY read/write ops

Most of the PHYs use the same way of accessing registers, so move that
code to the shared place. An exception is G-PHY which sometimes access
A-PHY regs and requires special handling.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Rafał Miłecki and committed by
John W. Linville
d342b95d 6247d2aa

+12 -60
+12 -2
drivers/net/wireless/b43/phy_common.c
··· 274 274 { 275 275 assert_mac_suspended(dev); 276 276 dev->phy.writes_counter = 0; 277 - return dev->phy.ops->phy_read(dev, reg); 277 + 278 + if (dev->phy.ops->phy_read) 279 + return dev->phy.ops->phy_read(dev, reg); 280 + 281 + b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 282 + return b43_read16(dev, B43_MMIO_PHY_DATA); 278 283 } 279 284 280 285 void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value) ··· 290 285 b43_read16(dev, B43_MMIO_PHY_VER); 291 286 dev->phy.writes_counter = 1; 292 287 } 293 - dev->phy.ops->phy_write(dev, reg, value); 288 + 289 + if (dev->phy.ops->phy_write) 290 + return dev->phy.ops->phy_write(dev, reg, value); 291 + 292 + b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 293 + b43_write16(dev, B43_MMIO_PHY_DATA, value); 294 294 } 295 295 296 296 void b43_phy_copy(struct b43_wldev *dev, u16 destreg, u16 srcreg)
-14
drivers/net/wireless/b43/phy_ht.c
··· 1071 1071 * R/W ops. 1072 1072 **************************************************/ 1073 1073 1074 - static u16 b43_phy_ht_op_read(struct b43_wldev *dev, u16 reg) 1075 - { 1076 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1077 - return b43_read16(dev, B43_MMIO_PHY_DATA); 1078 - } 1079 - 1080 - static void b43_phy_ht_op_write(struct b43_wldev *dev, u16 reg, u16 value) 1081 - { 1082 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1083 - b43_write16(dev, B43_MMIO_PHY_DATA, value); 1084 - } 1085 - 1086 1074 static void b43_phy_ht_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 1087 1075 u16 set) 1088 1076 { ··· 1114 1126 .free = b43_phy_ht_op_free, 1115 1127 .prepare_structs = b43_phy_ht_op_prepare_structs, 1116 1128 .init = b43_phy_ht_op_init, 1117 - .phy_read = b43_phy_ht_op_read, 1118 - .phy_write = b43_phy_ht_op_write, 1119 1129 .phy_maskset = b43_phy_ht_op_maskset, 1120 1130 .radio_read = b43_phy_ht_op_radio_read, 1121 1131 .radio_write = b43_phy_ht_op_radio_write,
-14
drivers/net/wireless/b43/phy_lcn.c
··· 810 810 * R/W ops. 811 811 **************************************************/ 812 812 813 - static u16 b43_phy_lcn_op_read(struct b43_wldev *dev, u16 reg) 814 - { 815 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 816 - return b43_read16(dev, B43_MMIO_PHY_DATA); 817 - } 818 - 819 - static void b43_phy_lcn_op_write(struct b43_wldev *dev, u16 reg, u16 value) 820 - { 821 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 822 - b43_write16(dev, B43_MMIO_PHY_DATA, value); 823 - } 824 - 825 813 static void b43_phy_lcn_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 826 814 u16 set) 827 815 { ··· 843 855 .free = b43_phy_lcn_op_free, 844 856 .prepare_structs = b43_phy_lcn_op_prepare_structs, 845 857 .init = b43_phy_lcn_op_init, 846 - .phy_read = b43_phy_lcn_op_read, 847 - .phy_write = b43_phy_lcn_op_write, 848 858 .phy_maskset = b43_phy_lcn_op_maskset, 849 859 .radio_read = b43_phy_lcn_op_radio_read, 850 860 .radio_write = b43_phy_lcn_op_radio_write,
-14
drivers/net/wireless/b43/phy_lp.c
··· 1985 1985 b43_mac_enable(dev); 1986 1986 } 1987 1987 1988 - static u16 b43_lpphy_op_read(struct b43_wldev *dev, u16 reg) 1989 - { 1990 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1991 - return b43_read16(dev, B43_MMIO_PHY_DATA); 1992 - } 1993 - 1994 - static void b43_lpphy_op_write(struct b43_wldev *dev, u16 reg, u16 value) 1995 - { 1996 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1997 - b43_write16(dev, B43_MMIO_PHY_DATA, value); 1998 - } 1999 - 2000 1988 static void b43_lpphy_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 2001 1989 u16 set) 2002 1990 { ··· 2701 2713 .free = b43_lpphy_op_free, 2702 2714 .prepare_structs = b43_lpphy_op_prepare_structs, 2703 2715 .init = b43_lpphy_op_init, 2704 - .phy_read = b43_lpphy_op_read, 2705 - .phy_write = b43_lpphy_op_write, 2706 2716 .phy_maskset = b43_lpphy_op_maskset, 2707 2717 .radio_read = b43_lpphy_op_radio_read, 2708 2718 .radio_write = b43_lpphy_op_radio_write,
-16
drivers/net/wireless/b43/phy_n.c
··· 6497 6497 #endif /* B43_DEBUG */ 6498 6498 } 6499 6499 6500 - static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg) 6501 - { 6502 - check_phyreg(dev, reg); 6503 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 6504 - return b43_read16(dev, B43_MMIO_PHY_DATA); 6505 - } 6506 - 6507 - static void b43_nphy_op_write(struct b43_wldev *dev, u16 reg, u16 value) 6508 - { 6509 - check_phyreg(dev, reg); 6510 - b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 6511 - b43_write16(dev, B43_MMIO_PHY_DATA, value); 6512 - } 6513 - 6514 6500 static void b43_nphy_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 6515 6501 u16 set) 6516 6502 { ··· 6639 6653 .free = b43_nphy_op_free, 6640 6654 .prepare_structs = b43_nphy_op_prepare_structs, 6641 6655 .init = b43_nphy_op_init, 6642 - .phy_read = b43_nphy_op_read, 6643 - .phy_write = b43_nphy_op_write, 6644 6656 .phy_maskset = b43_nphy_op_maskset, 6645 6657 .radio_read = b43_nphy_op_radio_read, 6646 6658 .radio_write = b43_nphy_op_radio_write,