| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Thunderbolt control channel messages |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2014 Andreas Noever <andreas.noever@gmail.com> |
|---|
| 5 | 6 | * Copyright (C) 2017, Intel Corporation |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 8 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 9 | | - * published by the Free Software Foundation. |
|---|
| 10 | 7 | */ |
|---|
| 11 | 8 | |
|---|
| 12 | 9 | #ifndef _TB_MSGS |
|---|
| .. | .. |
|---|
| 31 | 28 | TB_CFG_ERROR_LOOP = 8, |
|---|
| 32 | 29 | TB_CFG_ERROR_HEC_ERROR_DETECTED = 12, |
|---|
| 33 | 30 | TB_CFG_ERROR_FLOW_CONTROL_ERROR = 13, |
|---|
| 31 | + TB_CFG_ERROR_LOCK = 15, |
|---|
| 34 | 32 | }; |
|---|
| 35 | 33 | |
|---|
| 36 | 34 | /* common header */ |
|---|
| .. | .. |
|---|
| 70 | 68 | u32 zero1:4; |
|---|
| 71 | 69 | u32 port:6; |
|---|
| 72 | 70 | u32 zero2:2; /* Both should be zero, still they are different fields. */ |
|---|
| 73 | | - u32 zero3:16; |
|---|
| 71 | + u32 zero3:14; |
|---|
| 72 | + u32 pg:2; |
|---|
| 74 | 73 | } __packed; |
|---|
| 74 | + |
|---|
| 75 | +#define TB_CFG_ERROR_PG_HOT_PLUG 0x2 |
|---|
| 76 | +#define TB_CFG_ERROR_PG_HOT_UNPLUG 0x3 |
|---|
| 75 | 77 | |
|---|
| 76 | 78 | /* TB_CFG_PKG_EVENT */ |
|---|
| 77 | 79 | struct cfg_event_pkg { |
|---|
| .. | .. |
|---|
| 107 | 109 | }; |
|---|
| 108 | 110 | |
|---|
| 109 | 111 | enum icm_event_code { |
|---|
| 110 | | - ICM_EVENT_DEVICE_CONNECTED = 3, |
|---|
| 111 | | - ICM_EVENT_DEVICE_DISCONNECTED = 4, |
|---|
| 112 | | - ICM_EVENT_XDOMAIN_CONNECTED = 6, |
|---|
| 113 | | - ICM_EVENT_XDOMAIN_DISCONNECTED = 7, |
|---|
| 112 | + ICM_EVENT_DEVICE_CONNECTED = 0x3, |
|---|
| 113 | + ICM_EVENT_DEVICE_DISCONNECTED = 0x4, |
|---|
| 114 | + ICM_EVENT_XDOMAIN_CONNECTED = 0x6, |
|---|
| 115 | + ICM_EVENT_XDOMAIN_DISCONNECTED = 0x7, |
|---|
| 116 | + ICM_EVENT_RTD3_VETO = 0xa, |
|---|
| 114 | 117 | }; |
|---|
| 115 | 118 | |
|---|
| 116 | 119 | struct icm_pkg_header { |
|---|
| .. | .. |
|---|
| 124 | 127 | #define ICM_FLAGS_NO_KEY BIT(1) |
|---|
| 125 | 128 | #define ICM_FLAGS_SLEVEL_SHIFT 3 |
|---|
| 126 | 129 | #define ICM_FLAGS_SLEVEL_MASK GENMASK(4, 3) |
|---|
| 130 | +#define ICM_FLAGS_DUAL_LANE BIT(5) |
|---|
| 131 | +#define ICM_FLAGS_SPEED_GEN3 BIT(7) |
|---|
| 127 | 132 | #define ICM_FLAGS_WRITE BIT(7) |
|---|
| 128 | 133 | |
|---|
| 129 | 134 | struct icm_pkg_driver_ready { |
|---|
| .. | .. |
|---|
| 466 | 471 | uuid_t remote_uuid; |
|---|
| 467 | 472 | }; |
|---|
| 468 | 473 | |
|---|
| 474 | +/* Ice Lake messages */ |
|---|
| 475 | + |
|---|
| 476 | +struct icm_icl_event_rtd3_veto { |
|---|
| 477 | + struct icm_pkg_header hdr; |
|---|
| 478 | + u32 veto_reason; |
|---|
| 479 | +}; |
|---|
| 480 | + |
|---|
| 469 | 481 | /* XDomain messages */ |
|---|
| 470 | 482 | |
|---|
| 471 | 483 | struct tb_xdomain_header { |
|---|
| .. | .. |
|---|
| 495 | 507 | u32 type; |
|---|
| 496 | 508 | }; |
|---|
| 497 | 509 | |
|---|
| 510 | +struct tb_xdp_uuid { |
|---|
| 511 | + struct tb_xdp_header hdr; |
|---|
| 512 | +}; |
|---|
| 513 | + |
|---|
| 514 | +struct tb_xdp_uuid_response { |
|---|
| 515 | + struct tb_xdp_header hdr; |
|---|
| 516 | + uuid_t src_uuid; |
|---|
| 517 | + u32 src_route_hi; |
|---|
| 518 | + u32 src_route_lo; |
|---|
| 519 | +}; |
|---|
| 520 | + |
|---|
| 498 | 521 | struct tb_xdp_properties { |
|---|
| 499 | 522 | struct tb_xdp_header hdr; |
|---|
| 500 | 523 | uuid_t src_uuid; |
|---|