mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 14:32:23 +00:00
firewire: core: use inline helper functions to serialize phy config packet
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>
This commit is contained in:
parent
75d47101fa
commit
67e51784c1
@ -30,19 +30,12 @@
|
||||
|
||||
#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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user