firewire: move rcode_string() to core
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)
This commit is contained in:
parent
db7494e2ce
commit
7bdbff6762
|
@ -994,6 +994,32 @@ void fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(fw_core_handle_response);
|
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 =
|
static const struct fw_address_region topology_map_region =
|
||||||
{ .start = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP,
|
{ .start = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP,
|
||||||
.end = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP_END, };
|
.end = CSR_REGISTER_BASE | CSR_TOPOLOGY_MAP_END, };
|
||||||
|
|
|
@ -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 fw_run_transaction(struct fw_card *card, int tcode, int destination_id,
|
||||||
int generation, int speed, unsigned long long offset,
|
int generation, int speed, unsigned long long offset,
|
||||||
void *payload, size_t length);
|
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)
|
static inline int fw_stream_packet_destination_id(int tag, int channel, int sy)
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,7 +84,7 @@ static int pcr_modify(struct cmp_connection *c,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
io_error:
|
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;
|
return -EIO;
|
||||||
|
|
||||||
bus_reset:
|
bus_reset:
|
||||||
|
|
|
@ -13,32 +13,6 @@
|
||||||
|
|
||||||
#define ERROR_RETRY_DELAY_MS 5
|
#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
|
* snd_fw_transaction - send a request and wait for its completion
|
||||||
* @unit: the driver's unit on the target device
|
* @unit: the driver's unit on the target device
|
||||||
|
@ -71,7 +45,7 @@ int snd_fw_transaction(struct fw_unit *unit, int tcode,
|
||||||
|
|
||||||
if (rcode_is_permanent_error(rcode) || ++tries >= 3) {
|
if (rcode_is_permanent_error(rcode) || ++tries >= 3) {
|
||||||
dev_err(&unit->device, "transaction failed: %s\n",
|
dev_err(&unit->device, "transaction failed: %s\n",
|
||||||
rcode_string(rcode));
|
fw_rcode_string(rcode));
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ struct fw_unit;
|
||||||
|
|
||||||
int snd_fw_transaction(struct fw_unit *unit, int tcode,
|
int snd_fw_transaction(struct fw_unit *unit, int tcode,
|
||||||
u64 offset, void *buffer, size_t length);
|
u64 offset, void *buffer, size_t length);
|
||||||
const char *rcode_string(unsigned int rcode);
|
|
||||||
|
|
||||||
/* returns true if retrying the transaction would not make sense */
|
/* returns true if retrying the transaction would not make sense */
|
||||||
static inline bool rcode_is_permanent_error(int rcode)
|
static inline bool rcode_is_permanent_error(int rcode)
|
||||||
|
|
Loading…
Reference in New Issue