| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (C) 2019 NVIDIA Corporation. All rights reserved. |
| * |
| * NVIDIA USB Type-C Alt Mode Driver |
| */ |
| #include <linux/module.h> |
| #include <linux/usb/typec_altmode.h> |
| #include <linux/usb/typec_dp.h> |
| #include "displayport.h" |
| |
| static int nvidia_altmode_probe(struct typec_altmode *alt) |
| { |
| if (alt->svid == USB_TYPEC_NVIDIA_VLINK_SID) |
| return dp_altmode_probe(alt); |
| else |
| return -ENOTSUPP; |
| } |
| |
| static void nvidia_altmode_remove(struct typec_altmode *alt) |
| { |
| if (alt->svid == USB_TYPEC_NVIDIA_VLINK_SID) |
| dp_altmode_remove(alt); |
| } |
| |
| static const struct typec_device_id nvidia_typec_id[] = { |
| { USB_TYPEC_NVIDIA_VLINK_SID, TYPEC_ANY_MODE }, |
| { }, |
| }; |
| MODULE_DEVICE_TABLE(typec, nvidia_typec_id); |
| |
| static struct typec_altmode_driver nvidia_altmode_driver = { |
| .id_table = nvidia_typec_id, |
| .probe = nvidia_altmode_probe, |
| .remove = nvidia_altmode_remove, |
| .driver = { |
| .name = "typec_nvidia", |
| .owner = THIS_MODULE, |
| }, |
| }; |
| module_typec_altmode_driver(nvidia_altmode_driver); |
| |
| MODULE_LICENSE("GPL v2"); |
| MODULE_DESCRIPTION("NVIDIA USB Type-C Alt Mode Driver"); |