thunderbolt: Move control channel messages to tb_msgs.h
authorMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 6 Jun 2017 12:25:06 +0000 (15:25 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Jun 2017 09:42:42 +0000 (11:42 +0200)
We will be forwarding notifications received from the control channel to
the connection manager implementations. This way they can decide what to
do if anything when a notification is received.

To be able to use control channel messages from other files, move them
to tb_msgs.h.

No functional changes intended.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Yehezkel Bernat <yehezkel.bernat@intel.com>
Reviewed-by: Michael Jamet <michael.jamet@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andreas Noever <andreas.noever@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/thunderbolt/ctl.c
drivers/thunderbolt/ctl.h
drivers/thunderbolt/tb_msgs.h [new file with mode: 0644]

index f8290a577b2ba6cdd2948fe8d79f8e519bbf072c..24118c60b062be35846ef3f15838b641e483cb16 100644 (file)
@@ -52,82 +52,6 @@ struct tb_ctl {
 #define tb_ctl_info(ctl, format, arg...) \
        dev_info(&(ctl)->nhi->pdev->dev, format, ## arg)
 
-
-/* configuration packets definitions */
-
-enum tb_cfg_pkg_type {
-       TB_CFG_PKG_READ = 1,
-       TB_CFG_PKG_WRITE = 2,
-       TB_CFG_PKG_ERROR = 3,
-       TB_CFG_PKG_NOTIFY_ACK = 4,
-       TB_CFG_PKG_EVENT = 5,
-       TB_CFG_PKG_XDOMAIN_REQ = 6,
-       TB_CFG_PKG_XDOMAIN_RESP = 7,
-       TB_CFG_PKG_OVERRIDE = 8,
-       TB_CFG_PKG_RESET = 9,
-       TB_CFG_PKG_PREPARE_TO_SLEEP = 0xd,
-};
-
-/* common header */
-struct tb_cfg_header {
-       u32 route_hi:22;
-       u32 unknown:10; /* highest order bit is set on replies */
-       u32 route_lo;
-} __packed;
-
-/* additional header for read/write packets */
-struct tb_cfg_address {
-       u32 offset:13; /* in dwords */
-       u32 length:6; /* in dwords */
-       u32 port:6;
-       enum tb_cfg_space space:2;
-       u32 seq:2; /* sequence number  */
-       u32 zero:3;
-} __packed;
-
-/* TB_CFG_PKG_READ, response for TB_CFG_PKG_WRITE */
-struct cfg_read_pkg {
-       struct tb_cfg_header header;
-       struct tb_cfg_address addr;
-} __packed;
-
-/* TB_CFG_PKG_WRITE, response for TB_CFG_PKG_READ */
-struct cfg_write_pkg {
-       struct tb_cfg_header header;
-       struct tb_cfg_address addr;
-       u32 data[64]; /* maximum size, tb_cfg_address.length has 6 bits */
-} __packed;
-
-/* TB_CFG_PKG_ERROR */
-struct cfg_error_pkg {
-       struct tb_cfg_header header;
-       enum tb_cfg_error error:4;
-       u32 zero1:4;
-       u32 port:6;
-       u32 zero2:2; /* Both should be zero, still they are different fields. */
-       u32 zero3:16;
-} __packed;
-
-/* TB_CFG_PKG_EVENT */
-struct cfg_event_pkg {
-       struct tb_cfg_header header;
-       u32 port:6;
-       u32 zero:25;
-       bool unplug:1;
-} __packed;
-
-/* TB_CFG_PKG_RESET */
-struct cfg_reset_pkg {
-       struct tb_cfg_header header;
-} __packed;
-
-/* TB_CFG_PKG_PREPARE_TO_SLEEP */
-struct cfg_pts_pkg {
-       struct tb_cfg_header header;
-       u32 data;
-} __packed;
-
-
 /* utility functions */
 
 static u64 get_route(struct tb_cfg_header header)
index 83ae54947082eeac1c207b6cab78ebb8bdae3bcd..610980e3232f11cf28963b9af60e835624e10f0b 100644 (file)
@@ -8,6 +8,7 @@
 #define _TB_CFG
 
 #include "nhi.h"
+#include "tb_msgs.h"
 
 /* control channel */
 struct tb_ctl;
@@ -23,21 +24,6 @@ void tb_ctl_free(struct tb_ctl *ctl);
 
 #define TB_CFG_DEFAULT_TIMEOUT 5000 /* msec */
 
-enum tb_cfg_space {
-       TB_CFG_HOPS = 0,
-       TB_CFG_PORT = 1,
-       TB_CFG_SWITCH = 2,
-       TB_CFG_COUNTERS = 3,
-};
-
-enum tb_cfg_error {
-       TB_CFG_ERROR_PORT_NOT_CONNECTED = 0,
-       TB_CFG_ERROR_INVALID_CONFIG_SPACE = 2,
-       TB_CFG_ERROR_NO_SUCH_PORT = 4,
-       TB_CFG_ERROR_ACK_PLUG_EVENT = 7, /* send as reply to TB_CFG_PKG_EVENT */
-       TB_CFG_ERROR_LOOP = 8,
-};
-
 struct tb_cfg_result {
        u64 response_route;
        u32 response_port; /*
diff --git a/drivers/thunderbolt/tb_msgs.h b/drivers/thunderbolt/tb_msgs.h
new file mode 100644 (file)
index 0000000..761d562
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Thunderbolt control channel messages
+ *
+ * Copyright (C) 2014 Andreas Noever <andreas.noever@gmail.com>
+ * Copyright (C) 2017, Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _TB_MSGS
+#define _TB_MSGS
+
+#include <linux/types.h>
+
+enum tb_cfg_pkg_type {
+       TB_CFG_PKG_READ = 1,
+       TB_CFG_PKG_WRITE = 2,
+       TB_CFG_PKG_ERROR = 3,
+       TB_CFG_PKG_NOTIFY_ACK = 4,
+       TB_CFG_PKG_EVENT = 5,
+       TB_CFG_PKG_XDOMAIN_REQ = 6,
+       TB_CFG_PKG_XDOMAIN_RESP = 7,
+       TB_CFG_PKG_OVERRIDE = 8,
+       TB_CFG_PKG_RESET = 9,
+       TB_CFG_PKG_PREPARE_TO_SLEEP = 0xd,
+
+};
+
+enum tb_cfg_space {
+       TB_CFG_HOPS = 0,
+       TB_CFG_PORT = 1,
+       TB_CFG_SWITCH = 2,
+       TB_CFG_COUNTERS = 3,
+};
+
+enum tb_cfg_error {
+       TB_CFG_ERROR_PORT_NOT_CONNECTED = 0,
+       TB_CFG_ERROR_LINK_ERROR = 1,
+       TB_CFG_ERROR_INVALID_CONFIG_SPACE = 2,
+       TB_CFG_ERROR_NO_SUCH_PORT = 4,
+       TB_CFG_ERROR_ACK_PLUG_EVENT = 7, /* send as reply to TB_CFG_PKG_EVENT */
+       TB_CFG_ERROR_LOOP = 8,
+       TB_CFG_ERROR_HEC_ERROR_DETECTED = 12,
+       TB_CFG_ERROR_FLOW_CONTROL_ERROR = 13,
+};
+
+/* common header */
+struct tb_cfg_header {
+       u32 route_hi:22;
+       u32 unknown:10; /* highest order bit is set on replies */
+       u32 route_lo;
+} __packed;
+
+/* additional header for read/write packets */
+struct tb_cfg_address {
+       u32 offset:13; /* in dwords */
+       u32 length:6; /* in dwords */
+       u32 port:6;
+       enum tb_cfg_space space:2;
+       u32 seq:2; /* sequence number  */
+       u32 zero:3;
+} __packed;
+
+/* TB_CFG_PKG_READ, response for TB_CFG_PKG_WRITE */
+struct cfg_read_pkg {
+       struct tb_cfg_header header;
+       struct tb_cfg_address addr;
+} __packed;
+
+/* TB_CFG_PKG_WRITE, response for TB_CFG_PKG_READ */
+struct cfg_write_pkg {
+       struct tb_cfg_header header;
+       struct tb_cfg_address addr;
+       u32 data[64]; /* maximum size, tb_cfg_address.length has 6 bits */
+} __packed;
+
+/* TB_CFG_PKG_ERROR */
+struct cfg_error_pkg {
+       struct tb_cfg_header header;
+       enum tb_cfg_error error:4;
+       u32 zero1:4;
+       u32 port:6;
+       u32 zero2:2; /* Both should be zero, still they are different fields. */
+       u32 zero3:16;
+} __packed;
+
+/* TB_CFG_PKG_EVENT */
+struct cfg_event_pkg {
+       struct tb_cfg_header header;
+       u32 port:6;
+       u32 zero:25;
+       bool unplug:1;
+} __packed;
+
+/* TB_CFG_PKG_RESET */
+struct cfg_reset_pkg {
+       struct tb_cfg_header header;
+} __packed;
+
+/* TB_CFG_PKG_PREPARE_TO_SLEEP */
+struct cfg_pts_pkg {
+       struct tb_cfg_header header;
+       u32 data;
+} __packed;
+
+#endif