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

b43: HT-PHY: allow writing longer tables with a single call

Sometimes we need to write table which is 2-10 elements long. It's
easier to create such a function instead of defining array every time.

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
87a8c8cb 98f8dc72

+46
+45
drivers/net/wireless/b43/tables_phy_ht.c
··· 710 710 return; 711 711 } 712 712 713 + void b43_httab_write_few(struct b43_wldev *dev, u32 offset, size_t num, ...) 714 + { 715 + va_list args; 716 + u32 type, value; 717 + unsigned int i; 718 + 719 + type = offset & B43_HTTAB_TYPEMASK; 720 + offset &= 0xFFFF; 721 + 722 + va_start(args, num); 723 + switch (type) { 724 + case B43_HTTAB_8BIT: 725 + b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset); 726 + for (i = 0; i < num; i++) { 727 + value = va_arg(args, int); 728 + B43_WARN_ON(value & ~0xFF); 729 + b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value); 730 + } 731 + break; 732 + case B43_HTTAB_16BIT: 733 + b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset); 734 + for (i = 0; i < num; i++) { 735 + value = va_arg(args, int); 736 + B43_WARN_ON(value & ~0xFFFF); 737 + b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value); 738 + } 739 + break; 740 + case B43_HTTAB_32BIT: 741 + b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset); 742 + for (i = 0; i < num; i++) { 743 + value = va_arg(args, int); 744 + b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI, 745 + value >> 16); 746 + b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, 747 + value & 0xFFFF); 748 + } 749 + break; 750 + default: 751 + B43_WARN_ON(1); 752 + } 753 + va_end(args); 754 + 755 + return; 756 + } 757 + 713 758 void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset, 714 759 unsigned int nr_elements, const void *_data) 715 760 {
+1
drivers/net/wireless/b43/tables_phy_ht.h
··· 14 14 void b43_httab_read_bulk(struct b43_wldev *dev, u32 offset, 15 15 unsigned int nr_elements, void *_data); 16 16 void b43_httab_write(struct b43_wldev *dev, u32 offset, u32 value); 17 + void b43_httab_write_few(struct b43_wldev *dev, u32 offset, size_t num, ...); 17 18 void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset, 18 19 unsigned int nr_elements, const void *_data); 19 20