From 0cc830637156dd0f6529ca182acc62083a09cf14 Mon Sep 17 00:00:00 2001 From: Wayne Chang Date: Fri, 8 Jul 2022 11:47:41 +0000 Subject: [PATCH] usb: typec: ucsi: ccg: return EOPNOTSUPP on alt cmd Xaviers do not support UCSI_GET_CAM_SUPPORTED in current firmware implementation. usci driver will send UCSI_GET_CAM_SUPPORTED cmd , discard the result when connector changed and result in a 5 secs delay. The change return EOPNOTSUPP on Xaviers when getting UCSI_GET_CAM_SUPPORTED cmd. Bug 3662706 Bug 3977671 Change-Id: Ie3579aa022733735108ba2e56c699898ebe79d94 Signed-off-by: Wayne Chang Reviewed-on: https://git-master.nvidia.com/r/c/linux-5.10/+/2741886 (cherry picked from commit 0b2471b9e2878d747d8d78707001f234b5a42ffc) Reviewed-on: https://git-master.nvidia.com/r/c/linux-5.10/+/2857103 Reviewed-by: Sing-Han Chen Reviewed-by: Haotien Hsu Reviewed-by: WK Tsai GVS: Gerrit_Virtual_Submit --- drivers/usb/typec/ucsi/ucsi_ccg.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c index d4e80c1639f01..e4526949e6caf 100644 --- a/drivers/usb/typec/ucsi/ucsi_ccg.c +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c @@ -2,7 +2,7 @@ /* * UCSI driver for Cypress CCGx Type-C controller * - * Copyright (C) 2017-2022 NVIDIA Corporation. All rights reserved. + * Copyright (C) 2017-2023 NVIDIA Corporation. All rights reserved. * Author: Ajay Gupta * * Some code borrowed from drivers/usb/typec/ucsi/ucsi_acpi.c @@ -638,6 +638,11 @@ static int ucsi_ccg_sync_write(struct ucsi *ucsi, unsigned int offset, int con_index; int ret; + if (offset == UCSI_CONTROL && + UCSI_COMMAND(*(u64 *)val) == UCSI_GET_CAM_SUPPORTED && + uc->fw_build == CCG_FW_BUILD_NVIDIA_XAVIER) + return -EOPNOTSUPP; + mutex_lock(&uc->lock); pm_runtime_get_sync(uc->dev); set_bit(DEV_CMD_PENDING, &uc->flags);