linux/drivers/thunderbolt/quirks.c
<<
>>
Prefs
   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
  10static void quirk_force_power_link(struct tb_switch *sw)
  11{
  12        sw->quirks |= QUIRK_FORCE_POWER_LINK_CONTROLLER;
  13}
  14
  15struct tb_quirk {
  16        u16 vendor;
  17        u16 device;
  18        void (*hook)(struct tb_switch *sw);
  19};
  20
  21static 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 */
  32void 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}
  43