1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2019 NVIDIA Corporation. All rights reserved.
4 *
5 * NVIDIA USB Type-C Alt Mode Driver
6 */
7#include <linux/module.h>
8#include <linux/usb/typec_altmode.h>
9#include <linux/usb/typec_dp.h>
10#include "displayport.h"
11
12static int nvidia_altmode_probe(struct typec_altmode *alt)
13{
14	if (alt->svid == USB_TYPEC_NVIDIA_VLINK_SID)
15		return dp_altmode_probe(alt);
16	else
17		return -ENOTSUPP;
18}
19
20static void nvidia_altmode_remove(struct typec_altmode *alt)
21{
22	if (alt->svid == USB_TYPEC_NVIDIA_VLINK_SID)
23		dp_altmode_remove(alt);
24}
25
26static const struct typec_device_id nvidia_typec_id[] = {
27	{ USB_TYPEC_NVIDIA_VLINK_SID, TYPEC_ANY_MODE },
28	{ },
29};
30MODULE_DEVICE_TABLE(typec, nvidia_typec_id);
31
32static struct typec_altmode_driver nvidia_altmode_driver = {
33	.id_table = nvidia_typec_id,
34	.probe = nvidia_altmode_probe,
35	.remove = nvidia_altmode_remove,
36	.driver = {
37		.name = "typec_nvidia",
38		.owner = THIS_MODULE,
39	},
40};
41module_typec_altmode_driver(nvidia_altmode_driver);
42
43MODULE_LICENSE("GPL v2");
44MODULE_DESCRIPTION("NVIDIA USB Type-C Alt Mode Driver");
45