]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - drivers/thunderbolt/quirks.c
Merge tag 'aspeed-5.11-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/joel...
[mirror_ubuntu-hirsute-kernel.git] / drivers / thunderbolt / quirks.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Thunderbolt driver - quirks
4 *
5 * Copyright (c) 2020 Mario Limonciello <mario.limonciello@dell.com>
6 */
7
8 #include "tb.h"
9
10 static void quirk_force_power_link(struct tb_switch *sw)
11 {
12 sw->quirks |= QUIRK_FORCE_POWER_LINK_CONTROLLER;
13 }
14
15 struct tb_quirk {
16 u16 vendor;
17 u16 device;
18 void (*hook)(struct tb_switch *sw);
19 };
20
21 static const struct tb_quirk tb_quirks[] = {
22 /* Dell WD19TB supports self-authentication on unplug */
23 { 0x00d4, 0xb070, quirk_force_power_link },
24 };
25
26 /**
27 * tb_check_quirks() - Check for quirks to apply
28 * @sw: Thunderbolt switch
29 *
30 * Apply any quirks for the Thunderbolt controller.
31 */
32 void tb_check_quirks(struct tb_switch *sw)
33 {
34 int i;
35
36 for (i = 0; i < ARRAY_SIZE(tb_quirks); i++) {
37 const struct tb_quirk *q = &tb_quirks[i];
38
39 if (sw->device == q->device && sw->vendor == q->vendor)
40 q->hook(sw);
41 }
42 }