diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2010-06-10 06:35:37 (GMT) |
---|---|---|
committer | Clemens Ladisch <clemens@ladisch.de> | 2010-06-10 06:35:37 (GMT) |
commit | 3d1f46eb60b155c705e389ecdf313f11b4b91976 (patch) | |
tree | 6a28e68a7372d49f172f73a2c30e1a72dd124ffa /drivers/firewire | |
parent | a1a1132bd83d0aea51d4f19be4b4a58a064a0131 (diff) | |
download | linux-3d1f46eb60b155c705e389ecdf313f11b4b91976.tar.xz |
firewire: core: add CSR MAINT_UTILITY support
Implement the MAIN_UTILITY register, which is utterly optional
but useful as a safe target for diagnostic read/write/broadcast
transactions.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/core-transaction.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c index a61eb3f..dd8ef65 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -1140,6 +1140,15 @@ static void handle_registers(struct fw_card *card, struct fw_request *request, rcode = RCODE_TYPE_ERROR; break; + case CSR_MAINT_UTILITY: + if (tcode == TCODE_READ_QUADLET_REQUEST) + *data = card->maint_utility_register; + else if (tcode == TCODE_WRITE_QUADLET_REQUEST) + card->maint_utility_register = *data; + else + rcode = RCODE_TYPE_ERROR; + break; + case CSR_BROADCAST_CHANNEL: if (tcode == TCODE_READ_QUADLET_REQUEST) *data = cpu_to_be32(card->broadcast_channel); |