diff options
| -rw-r--r-- | drivers/firewire/core-device.c | 10 | ||||
| -rw-r--r-- | drivers/firewire/core-iso.c | 2 | ||||
| -rw-r--r-- | drivers/firewire/core-topology.c | 16 | ||||
| -rw-r--r-- | drivers/firewire/core-transaction.c | 84 |
4 files changed, 57 insertions, 55 deletions
diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c index 92b633d643f2..781fd7374ae9 100644 --- a/drivers/firewire/core-device.c +++ b/drivers/firewire/core-device.c | |||
| @@ -107,11 +107,11 @@ static int textual_leaf_to_string(const u32 *block, char *buf, size_t size) | |||
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | /** | 109 | /** |
| 110 | * fw_csr_string - reads a string from the configuration ROM | 110 | * fw_csr_string() - reads a string from the configuration ROM |
| 111 | * @directory: e.g. root directory or unit directory | 111 | * @directory: e.g. root directory or unit directory |
| 112 | * @key: the key of the preceding directory entry | 112 | * @key: the key of the preceding directory entry |
| 113 | * @buf: where to put the string | 113 | * @buf: where to put the string |
| 114 | * @size: size of @buf, in bytes | 114 | * @size: size of @buf, in bytes |
| 115 | * | 115 | * |
| 116 | * The string is taken from a minimal ASCII text descriptor leaf after | 116 | * The string is taken from a minimal ASCII text descriptor leaf after |
| 117 | * the immediate entry with @key. The string is zero-terminated. | 117 | * the immediate entry with @key. The string is zero-terminated. |
diff --git a/drivers/firewire/core-iso.c b/drivers/firewire/core-iso.c index 99c20f1b613a..4fe932e60fb8 100644 --- a/drivers/firewire/core-iso.c +++ b/drivers/firewire/core-iso.c | |||
| @@ -272,7 +272,7 @@ static void deallocate_channel(struct fw_card *card, int irm_id, | |||
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | /** | 274 | /** |
| 275 | * fw_iso_resource_manage - Allocate or deallocate a channel and/or bandwidth | 275 | * fw_iso_resource_manage() - Allocate or deallocate a channel and/or bandwidth |
| 276 | * | 276 | * |
| 277 | * In parameters: card, generation, channels_mask, bandwidth, allocate | 277 | * In parameters: card, generation, channels_mask, bandwidth, allocate |
| 278 | * Out parameters: channel, bandwidth | 278 | * Out parameters: channel, bandwidth |
diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topology.c index 88d5133ae702..09be1a635505 100644 --- a/drivers/firewire/core-topology.c +++ b/drivers/firewire/core-topology.c | |||
| @@ -174,12 +174,7 @@ static inline struct fw_node *fw_node(struct list_head *l) | |||
| 174 | return list_entry(l, struct fw_node, link); | 174 | return list_entry(l, struct fw_node, link); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | /** | 177 | /* |
| 178 | * build_tree - Build the tree representation of the topology | ||
| 179 | * @self_ids: array of self IDs to create the tree from | ||
| 180 | * @self_id_count: the length of the self_ids array | ||
| 181 | * @local_id: the node ID of the local node | ||
| 182 | * | ||
| 183 | * This function builds the tree representation of the topology given | 178 | * This function builds the tree representation of the topology given |
| 184 | * by the self IDs from the latest bus reset. During the construction | 179 | * by the self IDs from the latest bus reset. During the construction |
| 185 | * of the tree, the function checks that the self IDs are valid and | 180 | * of the tree, the function checks that the self IDs are valid and |
| @@ -420,11 +415,10 @@ static void move_tree(struct fw_node *node0, struct fw_node *node1, int port) | |||
| 420 | } | 415 | } |
| 421 | } | 416 | } |
| 422 | 417 | ||
| 423 | /** | 418 | /* |
| 424 | * update_tree - compare the old topology tree for card with the new | 419 | * Compare the old topology tree for card with the new one specified by root. |
| 425 | * one specified by root. Queue the nodes and mark them as either | 420 | * Queue the nodes and mark them as either found, lost or updated. |
| 426 | * found, lost or updated. Update the nodes in the card topology tree | 421 | * Update the nodes in the card topology tree as we go. |
| 427 | * as we go. | ||
| 428 | */ | 422 | */ |
| 429 | static void update_tree(struct fw_card *card, struct fw_node *root) | 423 | static void update_tree(struct fw_card *card, struct fw_node *root) |
| 430 | { | 424 | { |
diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c index fcb455c08200..7813da8a1293 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c | |||
| @@ -273,43 +273,49 @@ static int allocate_tlabel(struct fw_card *card) | |||
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | /** | 275 | /** |
| 276 | * This function provides low-level access to the IEEE1394 transaction | 276 | * fw_send_request() - submit a request packet for transmission |
| 277 | * logic. Most C programs would use either fw_read(), fw_write() or | 277 | * @card: interface to send the request at |
| 278 | * fw_lock() instead - those function are convenience wrappers for | 278 | * @t: transaction instance to which the request belongs |
| 279 | * this function. The fw_send_request() function is primarily | 279 | * @tcode: transaction code |
| 280 | * provided as a flexible, one-stop entry point for languages bindings | 280 | * @destination_id: destination node ID, consisting of bus_ID and phy_ID |
| 281 | * and protocol bindings. | 281 | * @generation: bus generation in which request and response are valid |
| 282 | * @speed: transmission speed | ||
| 283 | * @offset: 48bit wide offset into destination's address space | ||
| 284 | * @payload: data payload for the request subaction | ||
| 285 | * @length: length of the payload, in bytes | ||
| 286 | * @callback: function to be called when the transaction is completed | ||
| 287 | * @callback_data: data to be passed to the transaction completion callback | ||
| 282 | * | 288 | * |
| 283 | * FIXME: Document this function further, in particular the possible | 289 | * Submit a request packet into the asynchronous request transmission queue. |
| 284 | * values for rcode in the callback. In short, we map ACK_COMPLETE to | 290 | * Can be called from atomic context. If you prefer a blocking API, use |
| 285 | * RCODE_COMPLETE, internal errors set errno and set rcode to | 291 | * fw_run_transaction() in a context that can sleep. |
| 286 | * RCODE_SEND_ERROR (which is out of range for standard ieee1394 | ||
| 287 | * rcodes). All other rcodes are forwarded unchanged. For all | ||
| 288 | * errors, payload is NULL, length is 0. | ||
| 289 | * | 292 | * |
| 290 | * Can not expect the callback to be called before the function | 293 | * In case of lock requests, specify one of the firewire-core specific %TCODE_ |
| 291 | * returns, though this does happen in some cases (ACK_COMPLETE and | 294 | * constants instead of %TCODE_LOCK_REQUEST in @tcode. |
| 292 | * errors). | ||
| 293 | * | 295 | * |
| 294 | * The payload is only used for write requests and must not be freed | 296 | * Make sure that the value in @destination_id is not older than the one in |
| 295 | * until the callback has been called. | 297 | * @generation. Otherwise the request is in danger to be sent to a wrong node. |
| 296 | * | 298 | * |
| 297 | * @param card the card from which to send the request | 299 | * In case of asynchronous stream packets i.e. %TCODE_STREAM_DATA, the caller |
| 298 | * @param tcode the tcode for this transaction. Do not use | ||
| 299 | * TCODE_LOCK_REQUEST directly, instead use TCODE_LOCK_MASK_SWAP | ||
| 300 | * etc. to specify tcode and ext_tcode. | ||
| 301 | * @param node_id the destination node ID (bus ID and PHY ID concatenated) | ||
| 302 | * @param generation the generation for which node_id is valid | ||
| 303 | * @param speed the speed to use for sending the request | ||
| 304 | * @param offset the 48 bit offset on the destination node | ||
| 305 | * @param payload the data payload for the request subaction | ||
| 306 | * @param length the length in bytes of the data to read | ||
| 307 | * @param callback function to be called when the transaction is completed | ||
| 308 | * @param callback_data pointer to arbitrary data, which will be | ||
| 309 | * passed to the callback | ||
| 310 | * | ||
| 311 | * In case of asynchronous stream packets i.e. TCODE_STREAM_DATA, the caller | ||
| 312 | * needs to synthesize @destination_id with fw_stream_packet_destination_id(). | 300 | * needs to synthesize @destination_id with fw_stream_packet_destination_id(). |
| 301 | * It will contain tag, channel, and sy data instead of a node ID then. | ||
| 302 | * | ||
| 303 | * The payload buffer at @data is going to be DMA-mapped except in case of | ||
| 304 | * quadlet-sized payload or of local (loopback) requests. Hence make sure that | ||
| 305 | * the buffer complies with the restrictions for DMA-mapped memory. The | ||
| 306 | * @payload must not be freed before the @callback is called. | ||
| 307 | * | ||
| 308 | * In case of request types without payload, @data is NULL and @length is 0. | ||
| 309 | * | ||
| 310 | * After the transaction is completed successfully or unsuccessfully, the | ||
| 311 | * @callback will be called. Among its parameters is the response code which | ||
| 312 | * is either one of the rcodes per IEEE 1394 or, in case of internal errors, | ||
| 313 | * the firewire-core specific %RCODE_SEND_ERROR. | ||
| 314 | * | ||
| 315 | * Note some timing corner cases: fw_send_request() may complete much earlier | ||
| 316 | * than when the request packet actually hits the wire. On the other hand, | ||
| 317 | * transaction completion and hence execution of @callback may happen even | ||
| 318 | * before fw_send_request() returns. | ||
| 313 | */ | 319 | */ |
| 314 | void fw_send_request(struct fw_card *card, struct fw_transaction *t, int tcode, | 320 | void fw_send_request(struct fw_card *card, struct fw_transaction *t, int tcode, |
| 315 | int destination_id, int generation, int speed, | 321 | int destination_id, int generation, int speed, |
| @@ -375,9 +381,11 @@ static void transaction_callback(struct fw_card *card, int rcode, | |||
| 375 | } | 381 | } |
| 376 | 382 | ||
| 377 | /** | 383 | /** |
| 378 | * fw_run_transaction - send request and sleep until transaction is completed | 384 | * fw_run_transaction() - send request and sleep until transaction is completed |
| 379 | * | 385 | * |
| 380 | * Returns the RCODE. | 386 | * Returns the RCODE. See fw_send_request() for parameter documentation. |
| 387 | * Unlike fw_send_request(), @data points to the payload of the request or/and | ||
| 388 | * to the payload of the response. | ||
| 381 | */ | 389 | */ |
| 382 | int fw_run_transaction(struct fw_card *card, int tcode, int destination_id, | 390 | int fw_run_transaction(struct fw_card *card, int tcode, int destination_id, |
| 383 | int generation, int speed, unsigned long long offset, | 391 | int generation, int speed, unsigned long long offset, |
| @@ -495,9 +503,9 @@ static bool is_in_fcp_region(u64 offset, size_t length) | |||
| 495 | } | 503 | } |
| 496 | 504 | ||
| 497 | /** | 505 | /** |
| 498 | * fw_core_add_address_handler - register for incoming requests | 506 | * fw_core_add_address_handler() - register for incoming requests |
| 499 | * @handler: callback | 507 | * @handler: callback |
| 500 | * @region: region in the IEEE 1212 node space address range | 508 | * @region: region in the IEEE 1212 node space address range |
| 501 | * | 509 | * |
| 502 | * region->start, ->end, and handler->length have to be quadlet-aligned. | 510 | * region->start, ->end, and handler->length have to be quadlet-aligned. |
| 503 | * | 511 | * |
| @@ -552,7 +560,7 @@ int fw_core_add_address_handler(struct fw_address_handler *handler, | |||
| 552 | EXPORT_SYMBOL(fw_core_add_address_handler); | 560 | EXPORT_SYMBOL(fw_core_add_address_handler); |
| 553 | 561 | ||
| 554 | /** | 562 | /** |
| 555 | * fw_core_remove_address_handler - unregister an address handler | 563 | * fw_core_remove_address_handler() - unregister an address handler |
| 556 | */ | 564 | */ |
| 557 | void fw_core_remove_address_handler(struct fw_address_handler *handler) | 565 | void fw_core_remove_address_handler(struct fw_address_handler *handler) |
| 558 | { | 566 | { |
