From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Andreas Noever <andreas.noever@gmail.com>,
Michael Jamet <michael.jamet@intel.com>,
Yehezkel Bernat <yehezkel.bernat@intel.com>,
Lukas Wunner <lukas@wunner.de>,
Amir Levy <amir.jer.levy@intel.com>,
Andy Lutomirski <luto@kernel.org>,
Mario.Limonciello@dell.com, Jared.Dominguez@dell.com,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH v3 14/27] thunderbolt: Move control channel messages to tb_msgs.h
Date: Fri, 2 Jun 2017 17:05:11 +0300 [thread overview]
Message-ID: <20170602140524.23367-15-mika.westerberg@linux.intel.com> (raw)
In-Reply-To: <20170602140524.23367-1-mika.westerberg@linux.intel.com>
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>
---
drivers/thunderbolt/ctl.c | 76 -----------------------------
drivers/thunderbolt/ctl.h | 16 +------
drivers/thunderbolt/tb_msgs.h | 108 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 109 insertions(+), 91 deletions(-)
create mode 100644 drivers/thunderbolt/tb_msgs.h
diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c
index f8290a577b2b..24118c60b062 100644
--- a/drivers/thunderbolt/ctl.c
+++ b/drivers/thunderbolt/ctl.c
@@ -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)
diff --git a/drivers/thunderbolt/ctl.h b/drivers/thunderbolt/ctl.h
index 83ae54947082..610980e3232f 100644
--- a/drivers/thunderbolt/ctl.h
+++ b/drivers/thunderbolt/ctl.h
@@ -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
index 000000000000..761d56287149
--- /dev/null
+++ b/drivers/thunderbolt/tb_msgs.h
@@ -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
--
2.11.0
next prev parent reply other threads:[~2017-06-02 14:12 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-02 14:04 [PATCH v3 00/27] Thunderbolt security levels and NVM firmware upgrade Mika Westerberg
2017-06-02 14:04 ` [PATCH v3 01/27] thunderbolt: Use const buffer pointer in write operations Mika Westerberg
2017-06-02 14:04 ` [PATCH v3 02/27] thunderbolt: No need to read UID of the root switch on resume Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 03/27] thunderbolt: Do not try to read UID if DROM offset is read as 0 Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 04/27] thunderbolt: Do not warn about newer DROM versions Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 05/27] thunderbolt: Add MSI-X support Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 06/27] thunderbolt: Rework capability handling Mika Westerberg
2017-06-04 13:52 ` Lukas Wunner
2017-06-04 15:00 ` Mika Westerberg
2017-06-04 15:06 ` Mika Westerberg
2017-06-04 18:15 ` Andy Shevchenko
2017-06-05 6:42 ` Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 07/27] thunderbolt: Allow passing NULL to tb_ctl_free() Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 08/27] thunderbolt: Introduce thunderbolt bus and connection manager Mika Westerberg
2017-06-05 15:10 ` Andreas Noever
2017-06-02 14:05 ` [PATCH v3 09/27] thunderbolt: Convert switch to a device Mika Westerberg
2017-06-03 9:11 ` Greg Kroah-Hartman
2017-06-02 14:05 ` [PATCH v3 10/27] thunderbolt: Fail switch adding operation if reading DROM fails Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 11/27] thunderbolt: Do not fail if DROM data CRC32 is invalid Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 12/27] thunderbolt: Refactor and fix parsing of port drom entries Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 13/27] thunderbolt: Read vendor and device name from DROM Mika Westerberg
2017-06-02 14:05 ` Mika Westerberg [this message]
2017-06-02 14:05 ` [PATCH v3 15/27] thunderbolt: Expose get_route() to other files Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 16/27] thunderbolt: Expose make_header() " Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 17/27] thunderbolt: Let the connection manager handle all notifications Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 18/27] thunderbolt: Rework control channel to be more reliable Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 19/27] thunderbolt: Add new Thunderbolt PCI IDs Mika Westerberg
2017-06-05 8:14 ` Lukas Wunner
2017-06-05 9:32 ` Mika Westerberg
2017-06-05 12:07 ` Lukas Wunner
2017-06-05 12:55 ` Mika Westerberg
2017-06-05 13:33 ` Mika Westerberg
2017-06-05 13:46 ` Lukas Wunner
2017-06-05 13:52 ` Mika Westerberg
2017-06-05 14:21 ` Andy Shevchenko
2017-06-05 14:44 ` Mika Westerberg
2017-06-05 15:20 ` Greg Kroah-Hartman
2017-06-05 15:40 ` Mika Westerberg
2017-06-05 15:50 ` Mario.Limonciello
2017-06-05 16:49 ` Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 20/27] thunderbolt: Add support for NHI mailbox Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 21/27] thunderbolt: Store Thunderbolt generation in the switch structure Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 22/27] thunderbolt: Add support for DMA configuration based mailbox Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 23/27] thunderbolt: Do not touch the hardware if the NHI is gone on resume Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 24/27] thunderbolt: Add support for Internal Connection Manager (ICM) Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 25/27] thunderbolt: Add support for host and device NVM firmware upgrade Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 26/27] thunderbolt: Add documentation how Thunderbolt bus can be used Mika Westerberg
2017-06-03 9:14 ` Greg Kroah-Hartman
2017-06-02 14:05 ` [PATCH v3 27/27] MAINTAINERS: Add maintainers for Thunderbolt driver Mika Westerberg
2017-06-02 17:58 ` [PATCH v3 00/27] Thunderbolt security levels and NVM firmware upgrade Andy Shevchenko
2017-06-03 9:17 ` Greg Kroah-Hartman
2017-06-05 7:18 ` Mika Westerberg
2017-06-05 17:01 ` Andreas Noever
2017-06-05 19:43 ` Mika Westerberg
2017-06-06 6:03 ` Greg Kroah-Hartman
2017-06-06 6:41 ` Mika Westerberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170602140524.23367-15-mika.westerberg@linux.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=Jared.Dominguez@dell.com \
--cc=Mario.Limonciello@dell.com \
--cc=amir.jer.levy@intel.com \
--cc=andreas.noever@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=luto@kernel.org \
--cc=michael.jamet@intel.com \
--cc=yehezkel.bernat@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).