aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorChris Boot <bootc@bootc.net>2012-02-01 17:36:02 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2012-05-09 18:25:17 -0400
commitfc5f80b152896c1ffded2a91d11dcb08ffcffebb (patch)
tree4596cd1ee2c896df4259ee2c75ad3b027b6f2469 /drivers/firewire
parent253d92371ca29a470b2bbf91fb9824a9fef05657 (diff)
firewire: Move fw_card kref functions into linux/firewire.h
When writing a firewire driver that doesn't deal with struct fw_device objects (e.g. it only publishes FireWire units and doesn't subscribe to them), you likely need to keep referenced to struct fw_card objects so that you can send messages to other nodes. This patch moves fw_card_put(), fw_card_get() and fw_card_release() into the public include/linux/firewire.h header instead of drivers/firewire/core.h, and adds EXPORT_SYMBOL_GPL(fw_card_release). The firewire-sbp-target module requires these so it can keep a reference to the fw_card object in order that it can fetch ORBs to execute and read/write related data and status information. Signed-off-by: Chris Boot <bootc@bootc.net> Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Cc: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/firewire')
-rw-r--r--drivers/firewire/core-card.c1
-rw-r--r--drivers/firewire/core.h15
2 files changed, 1 insertions, 15 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c
index cc595eba7ba..f5552b362ef 100644
--- a/drivers/firewire/core-card.c
+++ b/drivers/firewire/core-card.c
@@ -676,6 +676,7 @@ void fw_card_release(struct kref *kref)
676 676
677 complete(&card->done); 677 complete(&card->done);
678} 678}
679EXPORT_SYMBOL_GPL(fw_card_release);
679 680
680void fw_core_remove_card(struct fw_card *card) 681void fw_core_remove_card(struct fw_card *card)
681{ 682{
diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
index 9047f5547d9..b5a2f619705 100644
--- a/drivers/firewire/core.h
+++ b/drivers/firewire/core.h
@@ -120,21 +120,6 @@ int fw_compute_block_crc(__be32 *block);
120void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset); 120void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset);
121void fw_schedule_bm_work(struct fw_card *card, unsigned long delay); 121void fw_schedule_bm_work(struct fw_card *card, unsigned long delay);
122 122
123static inline struct fw_card *fw_card_get(struct fw_card *card)
124{
125 kref_get(&card->kref);
126
127 return card;
128}
129
130void fw_card_release(struct kref *kref);
131
132static inline void fw_card_put(struct fw_card *card)
133{
134 kref_put(&card->kref, fw_card_release);
135}
136
137
138/* -cdev */ 123/* -cdev */
139 124
140extern const struct file_operations fw_device_ops; 125extern const struct file_operations fw_device_ops;