]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/wireless/b43/tables_lpphy.c
Merge branch 'for-2.6.30' of git://git.kernel.dk/linux-2.6-block
[linux-2.6-omap-h63xx.git] / drivers / net / wireless / b43 / tables_lpphy.c
index 18f6e3256766755e6290150705f33b8f2ce6aca1..4ea734dce218919f5a361f1fa3b2c9a6dc431b1f 100644 (file)
@@ -303,6 +303,36 @@ u32 b43_lptab_read(struct b43_wldev *dev, u32 offset)
        return value;
 }
 
+void b43_lptab_read_bulk(struct b43_wldev *dev, u32 offset,
+                        unsigned int nr_elements, void *_data)
+{
+       u32 type, value;
+       u8 *data = _data;
+       unsigned int i;
+
+       type = offset & B43_LPTAB_TYPEMASK;
+       for (i = 0; i < nr_elements; i++) {
+               value = b43_lptab_read(dev, offset);
+               switch (type) {
+               case B43_LPTAB_8BIT:
+                       *data = value;
+                       data++;
+                       break;
+               case B43_LPTAB_16BIT:
+                       *((u16 *)data) = value;
+                       data += 2;
+                       break;
+               case B43_LPTAB_32BIT:
+                       *((u32 *)data) = value;
+                       data += 4;
+                       break;
+               default:
+                       B43_WARN_ON(1);
+               }
+               offset++;
+       }
+}
+
 void b43_lptab_write(struct b43_wldev *dev, u32 offset, u32 value)
 {
        u32 type;
@@ -331,3 +361,34 @@ void b43_lptab_write(struct b43_wldev *dev, u32 offset, u32 value)
                B43_WARN_ON(1);
        }
 }
+
+void b43_lptab_write_bulk(struct b43_wldev *dev, u32 offset,
+                         unsigned int nr_elements, const void *_data)
+{
+       u32 type, value;
+       const u8 *data = _data;
+       unsigned int i;
+
+       type = offset & B43_LPTAB_TYPEMASK;
+       for (i = 0; i < nr_elements; i++) {
+               switch (type) {
+               case B43_LPTAB_8BIT:
+                       value = *data;
+                       data++;
+                       break;
+               case B43_LPTAB_16BIT:
+                       value = *((u16 *)data);
+                       data += 2;
+                       break;
+               case B43_LPTAB_32BIT:
+                       value = *((u32 *)data);
+                       data += 4;
+                       break;
+               default:
+                       B43_WARN_ON(1);
+                       value = 0;
+               }
+               b43_lptab_write(dev, offset, value);
+               offset++;
+       }
+}