static u32 read_state_register(struct fw_card *card)
 {
-       /*
-        * Fixed bits (IEEE 1394-2008 8.3.2.2.1):
-        * Bits 0-1 (state) always read 00=running.
-        * Bits 2,3 (off, atn) are not implemented as per the spec.
-        * Bit 4 (elog) is not implemented because there is no error log.
-        * Bit 6 (dreq) cannot be set.  It is intended to "disable requests
-        *      from unreliable nodes"; however, IEEE 1212 states that devices
-        *      may "clear their own dreq bit when it has been improperly set".
-        *      Our implementation might be seen as an improperly extensive
-        *      interpretation of "improperly", but the 1212-2001 revision
-        *      dropped this bit altogether, so we're in the clear.  :o)
-        * Bit 7 (lost) always reads 0 because a power reset has never occurred
-        *      during normal operation.
-        * Bit 9 (linkoff) is not implemented because the PC is not powered
-        *      from the FireWire cable.
-        * Bit 15 (gone) always reads 0.  It must be set at a power/command/bus
-        *      reset, but then cleared when the units are ready again, which
-        *      happens immediately for us.
-        */
-       u32 value = 0x0000;
+       u32 value;
 
        /* Bit 8 (cmstr): */
-       value |= card->driver->read_csr_reg(card, CSR_STATE_CLEAR);
+       value = card->driver->read_csr_reg(card, CSR_STATE_CLEAR);
 
        /* Bit 10 (abdicate): */
        if (card->csr_abdicate)
                break;
 
        case CSR_NODE_IDS:
+               /*
+                * per IEEE 1394-2008 8.3.22.3, not IEEE 1394.1-2004 3.2.8
+                * and 9.6, but interoperable with IEEE 1394.1-2004 bridges
+                */
                if (tcode == TCODE_READ_QUADLET_REQUEST)
                        *data = cpu_to_be32(card->driver->
                                        read_csr_reg(card, CSR_NODE_IDS));