firewire: core: add CSR MAINT_UTILITY support
authorClemens Ladisch <clemens@ladisch.de>
Thu, 10 Jun 2010 06:35:37 +0000 (08:35 +0200)
committerClemens Ladisch <clemens@ladisch.de>
Thu, 10 Jun 2010 06:35:37 +0000 (08:35 +0200)
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>
drivers/firewire/core-transaction.c
include/linux/firewire.h

index a61eb3fb957397aee8c3dd4868dcb7fbbad767bc..dd8ef650a7cb8fa9622493b5b0b17ea5059ab04c 100644 (file)
@@ -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);
index a50377d9125492af64a03ee5136fdf08700322f5..f1160e831dadc872d40bbdd3d0dd8ec5266f454a 100644 (file)
@@ -38,6 +38,7 @@
 #define CSR_CHANNELS_AVAILABLE         0x224
 #define CSR_CHANNELS_AVAILABLE_HI      0x224
 #define CSR_CHANNELS_AVAILABLE_LO      0x228
+#define CSR_MAINT_UTILITY              0x230
 #define CSR_BROADCAST_CHANNEL          0x234
 #define CSR_CONFIG_ROM                 0x400
 #define CSR_CONFIG_ROM_END             0x800
@@ -122,6 +123,8 @@ struct fw_card {
        bool broadcast_channel_allocated;
        u32 broadcast_channel;
        __be32 topology_map[(CSR_TOPOLOGY_MAP_END - CSR_TOPOLOGY_MAP) / 4];
+
+       __be32 maint_utility_register;
 };
 
 struct fw_attribute_group {