Skip to content

Commit

Permalink
firewire: move rcode_string() to core
Browse files Browse the repository at this point in the history
There is nothing audio-specific about the rcode_string() helper, so move
it from snd-firewire-lib into firewire-core to allow other code to use it.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (fixed sound/firewire/cmp.c)
  • Loading branch information
Clemens Ladisch authored and Stefan Richter committed Apr 17, 2012
1 parent db7494e commit 7bdbff6
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 29 deletions.
26 changes: 26 additions & 0 deletions drivers/firewire/core-transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -994,6 +994,32 @@ void fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
}
EXPORT_SYMBOL(fw_core_handle_response);

/**
* fw_rcode_string - convert a firewire result code to an error description
* @rcode: the result code
*/
const char *fw_rcode_string(int rcode)
{
static const char *const names[] = {
[RCODE_COMPLETE] = "no error",
[RCODE_CONFLICT_ERROR] = "conflict error",
[RCODE_DATA_ERROR] = "data error",
[RCODE_TYPE_ERROR] = "type error",
[RCODE_ADDRESS_ERROR] = "address error",
[RCODE_SEND_ERROR] = "send error",
[RCODE_CANCELLED] = "timeout",
[RCODE_BUSY] = "busy",
[RCODE_GENERATION] = "bus reset",
[RCODE_NO_ACK] = "no ack",
};

if ((unsigned int)rcode < ARRAY_SIZE(names) && names[rcode])
return names[rcode];
else
return "unknown";
}
EXPORT_SYMBOL(fw_rcode_string);

static const struct fw_address_region topology_map_region =
{ .start = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP,
.end = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP_END, };
Expand Down
1 change: 1 addition & 0 deletions include/linux/firewire.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ int fw_cancel_transaction(struct fw_card *card,
int fw_run_transaction(struct fw_card *card, int tcode, int destination_id,
int generation, int speed, unsigned long long offset,
void *payload, size_t length);
const char *fw_rcode_string(int rcode);

static inline int fw_stream_packet_destination_id(int tag, int channel, int sy)
{
Expand Down
2 changes: 1 addition & 1 deletion sound/firewire/cmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ static int pcr_modify(struct cmp_connection *c,
return 0;

io_error:
cmp_error(c, "transaction failed: %s\n", rcode_string(rcode));
cmp_error(c, "transaction failed: %s\n", fw_rcode_string(rcode));
return -EIO;

bus_reset:
Expand Down
28 changes: 1 addition & 27 deletions sound/firewire/lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,6 @@

#define ERROR_RETRY_DELAY_MS 5

/**
* rcode_string - convert a firewire result code to a string
* @rcode: the result
*/
const char *rcode_string(unsigned int rcode)
{
static const char *const names[] = {
[RCODE_COMPLETE] = "complete",
[RCODE_CONFLICT_ERROR] = "conflict error",
[RCODE_DATA_ERROR] = "data error",
[RCODE_TYPE_ERROR] = "type error",
[RCODE_ADDRESS_ERROR] = "address error",
[RCODE_SEND_ERROR] = "send error",
[RCODE_CANCELLED] = "cancelled",
[RCODE_BUSY] = "busy",
[RCODE_GENERATION] = "generation",
[RCODE_NO_ACK] = "no ack",
};

if (rcode < ARRAY_SIZE(names) && names[rcode])
return names[rcode];
else
return "unknown";
}
EXPORT_SYMBOL(rcode_string);

/**
* snd_fw_transaction - send a request and wait for its completion
* @unit: the driver's unit on the target device
Expand Down Expand Up @@ -71,7 +45,7 @@ int snd_fw_transaction(struct fw_unit *unit, int tcode,

if (rcode_is_permanent_error(rcode) || ++tries >= 3) {
dev_err(&unit->device, "transaction failed: %s\n",
rcode_string(rcode));
fw_rcode_string(rcode));
return -EIO;
}

Expand Down
1 change: 0 additions & 1 deletion sound/firewire/lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ struct fw_unit;

int snd_fw_transaction(struct fw_unit *unit, int tcode,
u64 offset, void *buffer, size_t length);
const char *rcode_string(unsigned int rcode);

/* returns true if retrying the transaction would not make sense */
static inline bool rcode_is_permanent_error(int rcode)
Expand Down

0 comments on commit 7bdbff6

Please sign in to comment.