mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
thunderbolt: Move control channel messages to tb_msgs.h
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>
This commit is contained in:
parent
72ee33907b
commit
32af9434f0
@ -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)
|
||||
|
@ -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; /*
|
||||
|
108
drivers/thunderbolt/tb_msgs.h
Normal file
108
drivers/thunderbolt/tb_msgs.h
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user