]> www.infradead.org Git - users/willy/xarray.git/commitdiff
firewire: core: use inline helper functions to serialize phy config packet
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Thu, 6 Jun 2024 23:51:33 +0000 (08:51 +0900)
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 16 Jun 2024 23:37:04 +0000 (08:37 +0900)
This commit uses the added helper functions to obsolete the existing
implementation for phy configuration packet.

Link: https://lore.kernel.org/r/20240606235133.231543-3-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
drivers/firewire/core-transaction.c

index 8410e7b4ab6032835aedf269db36c28e261f814b..4d2fc1f31fec90119c82727e4eb977c693f5e2c3 100644 (file)
 
 #include "core.h"
 #include "packet-header-definitions.h"
+#include "phy-packet-definitions.h"
 #include <trace/events/firewire.h>
 
 #define HEADER_DESTINATION_IS_BROADCAST(header) \
        ((async_header_get_destination(header) & 0x3f) == 0x3f)
 
-#define PHY_PACKET_CONFIG      0x0
-#define PHY_PACKET_LINK_ON     0x1
-#define PHY_PACKET_SELF_ID     0x2
-
-#define PHY_CONFIG_GAP_COUNT(gap_count)        (((gap_count) << 16) | (1 << 22))
-#define PHY_CONFIG_ROOT_ID(node_id)    ((((node_id) & 0x3f) << 24) | (1 << 23))
-#define PHY_IDENTIFIER(id)             ((id) << 30)
-
 /* returns 0 if the split timeout handler is already running */
 static int try_cancel_split_timeout(struct fw_transaction *t)
 {
@@ -481,10 +474,14 @@ void fw_send_phy_config(struct fw_card *card,
                        int node_id, int generation, int gap_count)
 {
        long timeout = DIV_ROUND_UP(HZ, 10);
-       u32 data = PHY_IDENTIFIER(PHY_PACKET_CONFIG);
+       u32 data = 0;
 
-       if (node_id != FW_PHY_CONFIG_NO_NODE_ID)
-               data |= PHY_CONFIG_ROOT_ID(node_id);
+       phy_packet_set_packet_identifier(&data, PHY_PACKET_PACKET_IDENTIFIER_PHY_CONFIG);
+
+       if (node_id != FW_PHY_CONFIG_NO_NODE_ID) {
+               phy_packet_phy_config_set_root_id(&data, node_id);
+               phy_packet_phy_config_set_force_root_node(&data, true);
+       }
 
        if (gap_count == FW_PHY_CONFIG_CURRENT_GAP_COUNT) {
                gap_count = card->driver->read_phy_reg(card, 1);
@@ -495,7 +492,8 @@ void fw_send_phy_config(struct fw_card *card,
                if (gap_count == 63)
                        return;
        }
-       data |= PHY_CONFIG_GAP_COUNT(gap_count);
+       phy_packet_phy_config_set_gap_count(&data, gap_count);
+       phy_packet_phy_config_set_gap_count_optimization(&data, true);
 
        mutex_lock(&phy_config_mutex);