diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2011-05-17 20:06:40 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-06-01 15:10:57 -0400 |
commit | a18c715e63505850edd2b69ded5373d6d464cd80 (patch) | |
tree | 9f248a7f220e195ff1a4bea6cd71cf372092b466 | |
parent | 0581483afe1a6f90f828b36111b05a70c162137d (diff) |
b43: bus: abstract device structs and irq
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/b43/bus.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/b43/bus.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/b43/dma.c | 28 | ||||
-rw-r--r-- | drivers/net/wireless/b43/leds.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/b43/main.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/b43/sysfs.c | 4 |
6 files changed, 30 insertions, 22 deletions
diff --git a/drivers/net/wireless/b43/bus.c b/drivers/net/wireless/b43/bus.c index c116f123aea4..ec59a129bae7 100644 --- a/drivers/net/wireless/b43/bus.c +++ b/drivers/net/wireless/b43/bus.c | |||
@@ -70,6 +70,10 @@ struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev) | |||
70 | dev->block_read = b43_bus_ssb_block_read; | 70 | dev->block_read = b43_bus_ssb_block_read; |
71 | dev->block_write = b43_bus_ssb_block_write; | 71 | dev->block_write = b43_bus_ssb_block_write; |
72 | 72 | ||
73 | dev->dev = sdev->dev; | ||
74 | dev->dma_dev = sdev->dma_dev; | ||
75 | dev->irq = sdev->irq; | ||
76 | |||
73 | dev->bus_sprom = &sdev->bus->sprom; | 77 | dev->bus_sprom = &sdev->bus->sprom; |
74 | 78 | ||
75 | dev->core_id = sdev->id.coreid; | 79 | dev->core_id = sdev->id.coreid; |
diff --git a/drivers/net/wireless/b43/bus.h b/drivers/net/wireless/b43/bus.h index 6d575d6c8111..d432f5ceecb9 100644 --- a/drivers/net/wireless/b43/bus.h +++ b/drivers/net/wireless/b43/bus.h | |||
@@ -20,6 +20,10 @@ struct b43_bus_dev { | |||
20 | void (*block_write)(struct b43_bus_dev *dev, const void *buffer, | 20 | void (*block_write)(struct b43_bus_dev *dev, const void *buffer, |
21 | size_t count, u16 offset, u8 reg_width); | 21 | size_t count, u16 offset, u8 reg_width); |
22 | 22 | ||
23 | struct device *dev; | ||
24 | struct device *dma_dev; | ||
25 | unsigned int irq; | ||
26 | |||
23 | struct ssb_sprom *bus_sprom; | 27 | struct ssb_sprom *bus_sprom; |
24 | 28 | ||
25 | u16 core_id; | 29 | u16 core_id; |
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index ee45ab9af238..11e66cd2e26c 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -333,10 +333,10 @@ static inline | |||
333 | dma_addr_t dmaaddr; | 333 | dma_addr_t dmaaddr; |
334 | 334 | ||
335 | if (tx) { | 335 | if (tx) { |
336 | dmaaddr = dma_map_single(ring->dev->sdev->dma_dev, | 336 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
337 | buf, len, DMA_TO_DEVICE); | 337 | buf, len, DMA_TO_DEVICE); |
338 | } else { | 338 | } else { |
339 | dmaaddr = dma_map_single(ring->dev->sdev->dma_dev, | 339 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
340 | buf, len, DMA_FROM_DEVICE); | 340 | buf, len, DMA_FROM_DEVICE); |
341 | } | 341 | } |
342 | 342 | ||
@@ -348,10 +348,10 @@ static inline | |||
348 | dma_addr_t addr, size_t len, int tx) | 348 | dma_addr_t addr, size_t len, int tx) |
349 | { | 349 | { |
350 | if (tx) { | 350 | if (tx) { |
351 | dma_unmap_single(ring->dev->sdev->dma_dev, | 351 | dma_unmap_single(ring->dev->dev->dma_dev, |
352 | addr, len, DMA_TO_DEVICE); | 352 | addr, len, DMA_TO_DEVICE); |
353 | } else { | 353 | } else { |
354 | dma_unmap_single(ring->dev->sdev->dma_dev, | 354 | dma_unmap_single(ring->dev->dev->dma_dev, |
355 | addr, len, DMA_FROM_DEVICE); | 355 | addr, len, DMA_FROM_DEVICE); |
356 | } | 356 | } |
357 | } | 357 | } |
@@ -361,7 +361,7 @@ static inline | |||
361 | dma_addr_t addr, size_t len) | 361 | dma_addr_t addr, size_t len) |
362 | { | 362 | { |
363 | B43_WARN_ON(ring->tx); | 363 | B43_WARN_ON(ring->tx); |
364 | dma_sync_single_for_cpu(ring->dev->sdev->dma_dev, | 364 | dma_sync_single_for_cpu(ring->dev->dev->dma_dev, |
365 | addr, len, DMA_FROM_DEVICE); | 365 | addr, len, DMA_FROM_DEVICE); |
366 | } | 366 | } |
367 | 367 | ||
@@ -370,7 +370,7 @@ static inline | |||
370 | dma_addr_t addr, size_t len) | 370 | dma_addr_t addr, size_t len) |
371 | { | 371 | { |
372 | B43_WARN_ON(ring->tx); | 372 | B43_WARN_ON(ring->tx); |
373 | dma_sync_single_for_device(ring->dev->sdev->dma_dev, | 373 | dma_sync_single_for_device(ring->dev->dev->dma_dev, |
374 | addr, len, DMA_FROM_DEVICE); | 374 | addr, len, DMA_FROM_DEVICE); |
375 | } | 375 | } |
376 | 376 | ||
@@ -401,7 +401,7 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
401 | */ | 401 | */ |
402 | if (ring->type == B43_DMA_64BIT) | 402 | if (ring->type == B43_DMA_64BIT) |
403 | flags |= GFP_DMA; | 403 | flags |= GFP_DMA; |
404 | ring->descbase = dma_alloc_coherent(ring->dev->sdev->dma_dev, | 404 | ring->descbase = dma_alloc_coherent(ring->dev->dev->dma_dev, |
405 | B43_DMA_RINGMEMSIZE, | 405 | B43_DMA_RINGMEMSIZE, |
406 | &(ring->dmabase), flags); | 406 | &(ring->dmabase), flags); |
407 | if (!ring->descbase) { | 407 | if (!ring->descbase) { |
@@ -415,7 +415,7 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
415 | 415 | ||
416 | static void free_ringmemory(struct b43_dmaring *ring) | 416 | static void free_ringmemory(struct b43_dmaring *ring) |
417 | { | 417 | { |
418 | dma_free_coherent(ring->dev->sdev->dma_dev, B43_DMA_RINGMEMSIZE, | 418 | dma_free_coherent(ring->dev->dev->dma_dev, B43_DMA_RINGMEMSIZE, |
419 | ring->descbase, ring->dmabase); | 419 | ring->descbase, ring->dmabase); |
420 | } | 420 | } |
421 | 421 | ||
@@ -523,7 +523,7 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring, | |||
523 | dma_addr_t addr, | 523 | dma_addr_t addr, |
524 | size_t buffersize, bool dma_to_device) | 524 | size_t buffersize, bool dma_to_device) |
525 | { | 525 | { |
526 | if (unlikely(dma_mapping_error(ring->dev->sdev->dma_dev, addr))) | 526 | if (unlikely(dma_mapping_error(ring->dev->dev->dma_dev, addr))) |
527 | return 1; | 527 | return 1; |
528 | 528 | ||
529 | switch (ring->type) { | 529 | switch (ring->type) { |
@@ -869,7 +869,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
869 | goto err_kfree_meta; | 869 | goto err_kfree_meta; |
870 | 870 | ||
871 | /* test for ability to dma to txhdr_cache */ | 871 | /* test for ability to dma to txhdr_cache */ |
872 | dma_test = dma_map_single(dev->sdev->dma_dev, | 872 | dma_test = dma_map_single(dev->dev->dma_dev, |
873 | ring->txhdr_cache, | 873 | ring->txhdr_cache, |
874 | b43_txhdr_size(dev), | 874 | b43_txhdr_size(dev), |
875 | DMA_TO_DEVICE); | 875 | DMA_TO_DEVICE); |
@@ -884,7 +884,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
884 | if (!ring->txhdr_cache) | 884 | if (!ring->txhdr_cache) |
885 | goto err_kfree_meta; | 885 | goto err_kfree_meta; |
886 | 886 | ||
887 | dma_test = dma_map_single(dev->sdev->dma_dev, | 887 | dma_test = dma_map_single(dev->dev->dma_dev, |
888 | ring->txhdr_cache, | 888 | ring->txhdr_cache, |
889 | b43_txhdr_size(dev), | 889 | b43_txhdr_size(dev), |
890 | DMA_TO_DEVICE); | 890 | DMA_TO_DEVICE); |
@@ -898,7 +898,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
898 | } | 898 | } |
899 | } | 899 | } |
900 | 900 | ||
901 | dma_unmap_single(dev->sdev->dma_dev, | 901 | dma_unmap_single(dev->dev->dma_dev, |
902 | dma_test, b43_txhdr_size(dev), | 902 | dma_test, b43_txhdr_size(dev), |
903 | DMA_TO_DEVICE); | 903 | DMA_TO_DEVICE); |
904 | } | 904 | } |
@@ -1013,9 +1013,9 @@ static int b43_dma_set_mask(struct b43_wldev *dev, u64 mask) | |||
1013 | /* Try to set the DMA mask. If it fails, try falling back to a | 1013 | /* Try to set the DMA mask. If it fails, try falling back to a |
1014 | * lower mask, as we can always also support a lower one. */ | 1014 | * lower mask, as we can always also support a lower one. */ |
1015 | while (1) { | 1015 | while (1) { |
1016 | err = dma_set_mask(dev->sdev->dma_dev, mask); | 1016 | err = dma_set_mask(dev->dev->dma_dev, mask); |
1017 | if (!err) { | 1017 | if (!err) { |
1018 | err = dma_set_coherent_mask(dev->sdev->dma_dev, mask); | 1018 | err = dma_set_coherent_mask(dev->dev->dma_dev, mask); |
1019 | if (!err) | 1019 | if (!err) |
1020 | break; | 1020 | break; |
1021 | } | 1021 | } |
diff --git a/drivers/net/wireless/b43/leds.c b/drivers/net/wireless/b43/leds.c index 26d37ef01084..70bcf4276146 100644 --- a/drivers/net/wireless/b43/leds.c +++ b/drivers/net/wireless/b43/leds.c | |||
@@ -138,7 +138,7 @@ static int b43_register_led(struct b43_wldev *dev, struct b43_led *led, | |||
138 | led->led_dev.default_trigger = default_trigger; | 138 | led->led_dev.default_trigger = default_trigger; |
139 | led->led_dev.brightness_set = b43_led_brightness_set; | 139 | led->led_dev.brightness_set = b43_led_brightness_set; |
140 | 140 | ||
141 | err = led_classdev_register(dev->sdev->dev, &led->led_dev); | 141 | err = led_classdev_register(dev->dev->dev, &led->led_dev); |
142 | if (err) { | 142 | if (err) { |
143 | b43warn(dev->wl, "LEDs: Failed to register %s\n", name); | 143 | b43warn(dev->wl, "LEDs: Failed to register %s\n", name); |
144 | led->wl = NULL; | 144 | led->wl = NULL; |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 0f3a104a0ac8..fd1e74ce0c3f 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -2063,7 +2063,7 @@ int b43_do_request_fw(struct b43_request_fw_context *ctx, | |||
2063 | B43_WARN_ON(1); | 2063 | B43_WARN_ON(1); |
2064 | return -ENOSYS; | 2064 | return -ENOSYS; |
2065 | } | 2065 | } |
2066 | err = request_firmware(&blob, ctx->fwname, ctx->dev->sdev->dev); | 2066 | err = request_firmware(&blob, ctx->fwname, ctx->dev->dev->dev); |
2067 | if (err == -ENOENT) { | 2067 | if (err == -ENOENT) { |
2068 | snprintf(ctx->errors[ctx->req_type], | 2068 | snprintf(ctx->errors[ctx->req_type], |
2069 | sizeof(ctx->errors[ctx->req_type]), | 2069 | sizeof(ctx->errors[ctx->req_type]), |
@@ -3970,8 +3970,8 @@ redo: | |||
3970 | if (dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO) { | 3970 | if (dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO) { |
3971 | b43_sdio_free_irq(dev); | 3971 | b43_sdio_free_irq(dev); |
3972 | } else { | 3972 | } else { |
3973 | synchronize_irq(dev->sdev->irq); | 3973 | synchronize_irq(dev->dev->irq); |
3974 | free_irq(dev->sdev->irq, dev); | 3974 | free_irq(dev->dev->irq, dev); |
3975 | } | 3975 | } |
3976 | mutex_lock(&wl->mutex); | 3976 | mutex_lock(&wl->mutex); |
3977 | dev = wl->current_dev; | 3977 | dev = wl->current_dev; |
@@ -4011,12 +4011,12 @@ static int b43_wireless_core_start(struct b43_wldev *dev) | |||
4011 | goto out; | 4011 | goto out; |
4012 | } | 4012 | } |
4013 | } else { | 4013 | } else { |
4014 | err = request_threaded_irq(dev->sdev->irq, b43_interrupt_handler, | 4014 | err = request_threaded_irq(dev->dev->irq, b43_interrupt_handler, |
4015 | b43_interrupt_thread_handler, | 4015 | b43_interrupt_thread_handler, |
4016 | IRQF_SHARED, KBUILD_MODNAME, dev); | 4016 | IRQF_SHARED, KBUILD_MODNAME, dev); |
4017 | if (err) { | 4017 | if (err) { |
4018 | b43err(dev->wl, "Cannot request IRQ-%d\n", | 4018 | b43err(dev->wl, "Cannot request IRQ-%d\n", |
4019 | dev->sdev->irq); | 4019 | dev->dev->irq); |
4020 | goto out; | 4020 | goto out; |
4021 | } | 4021 | } |
4022 | } | 4022 | } |
diff --git a/drivers/net/wireless/b43/sysfs.c b/drivers/net/wireless/b43/sysfs.c index 57af619725c3..f1ae4e05a32c 100644 --- a/drivers/net/wireless/b43/sysfs.c +++ b/drivers/net/wireless/b43/sysfs.c | |||
@@ -140,7 +140,7 @@ static DEVICE_ATTR(interference, 0644, | |||
140 | 140 | ||
141 | int b43_sysfs_register(struct b43_wldev *wldev) | 141 | int b43_sysfs_register(struct b43_wldev *wldev) |
142 | { | 142 | { |
143 | struct device *dev = wldev->sdev->dev; | 143 | struct device *dev = wldev->dev->dev; |
144 | 144 | ||
145 | B43_WARN_ON(b43_status(wldev) != B43_STAT_INITIALIZED); | 145 | B43_WARN_ON(b43_status(wldev) != B43_STAT_INITIALIZED); |
146 | 146 | ||
@@ -149,7 +149,7 @@ int b43_sysfs_register(struct b43_wldev *wldev) | |||
149 | 149 | ||
150 | void b43_sysfs_unregister(struct b43_wldev *wldev) | 150 | void b43_sysfs_unregister(struct b43_wldev *wldev) |
151 | { | 151 | { |
152 | struct device *dev = wldev->sdev->dev; | 152 | struct device *dev = wldev->dev->dev; |
153 | 153 | ||
154 | device_remove_file(dev, &dev_attr_interference); | 154 | device_remove_file(dev, &dev_attr_interference); |
155 | } | 155 | } |