]> err.no Git - linux-2.6/blobdiff - drivers/firewire/fw-device.c
bnx2x: Change GPIO for any port
[linux-2.6] / drivers / firewire / fw-device.c
index 75365cd0008a3f0ee6d5b3e9752e4cc86ae9afcc..0855fb5568e806cf92546e466b73a702e9f55de6 100644 (file)
@@ -26,7 +26,8 @@
 #include <linux/delay.h>
 #include <linux/idr.h>
 #include <linux/string.h>
-#include <asm/semaphore.h>
+#include <linux/rwsem.h>
+#include <linux/semaphore.h>
 #include <asm/system.h>
 #include <linux/ctype.h>
 #include "fw-transaction.h"
@@ -167,7 +168,7 @@ static void fw_device_release(struct device *dev)
        fw_node_put(device->node);
        kfree(device->config_rom);
        kfree(device);
-       atomic_dec(&card->device_count);
+       fw_card_put(card);
 }
 
 int fw_device_enable_phys_dma(struct fw_device *device)
@@ -410,7 +411,7 @@ read_rom(struct fw_device *device, int generation, int index, u32 *data)
 
        init_completion(&callback_data.done);
 
-       offset = 0xfffff0000400ULL + index * 4;
+       offset = (CSR_REGISTER_BASE | CSR_CONFIG_ROM) + index * 4;
        fw_send_request(device->card, &t, TCODE_READ_QUADLET_REQUEST,
                        device->node_id, generation, device->max_speed,
                        offset, NULL, 4, complete_transaction, &callback_data);
@@ -945,8 +946,7 @@ void fw_node_event(struct fw_card *card, struct fw_node *node, int event)
                 */
                device_initialize(&device->device);
                atomic_set(&device->state, FW_DEVICE_INITIALIZING);
-               atomic_inc(&card->device_count);
-               device->card = card;
+               device->card = fw_card_get(card);
                device->node = fw_node_get(node);
                device->node_id = node->node_id;
                device->generation = card->generation;