linux/drivers/firewire/fw-topology.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2003-2006 Kristian Hoegsberg <krh@bitplanet.net>
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License as published by
   6 * the Free Software Foundation; either version 2 of the License, or
   7 * (at your option) any later version.
   8 *
   9 * This program is distributed in the hope that it will be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write to the Free Software Foundation,
  16 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17 */
  18
  19#ifndef __fw_topology_h
  20#define __fw_topology_h
  21
  22enum {
  23        FW_NODE_CREATED,
  24        FW_NODE_UPDATED,
  25        FW_NODE_DESTROYED,
  26        FW_NODE_LINK_ON,
  27        FW_NODE_LINK_OFF,
  28        FW_NODE_INITIATED_RESET,
  29};
  30
  31struct fw_node {
  32        u16 node_id;
  33        u8 color;
  34        u8 port_count;
  35        u8 link_on : 1;
  36        u8 initiated_reset : 1;
  37        u8 b_path : 1;
  38        u8 phy_speed : 2; /* As in the self ID packet. */
  39        u8 max_speed : 2; /* Minimum of all phy-speeds on the path from the
  40                           * local node to this node. */
  41        u8 max_depth : 4; /* Maximum depth to any leaf node */
  42        u8 max_hops : 4;  /* Max hops in this sub tree */
  43        atomic_t ref_count;
  44
  45        /* For serializing node topology into a list. */
  46        struct list_head link;
  47
  48        /* Upper layer specific data. */
  49        void *data;
  50
  51        struct fw_node *ports[0];
  52};
  53
  54static inline struct fw_node *
  55fw_node_get(struct fw_node *node)
  56{
  57        atomic_inc(&node->ref_count);
  58
  59        return node;
  60}
  61
  62static inline void
  63fw_node_put(struct fw_node *node)
  64{
  65        if (atomic_dec_and_test(&node->ref_count))
  66                kfree(node);
  67}
  68
  69void
  70fw_destroy_nodes(struct fw_card *card);
  71
  72int
  73fw_compute_block_crc(u32 *block);
  74
  75
  76#endif /* __fw_topology_h */
  77
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.