From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B3412F6192; Fri, 13 Mar 2026 11:39:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773401997; cv=none; b=Jfw1PW3AFvAiv4xpjhWjJ4TqLDjYz8guZKm3UymoobQoUlbDtv+9aJmIWK/AO/UsGOKz2PpjEyk7bYkDTnePTfyRLwLtr3CAAfdWNI7YVSb+VAV+oP29MQRaXIjJJi6PjBb3AFzxRQy6k9/49sB5KS40MdU37LnX/hEZWeAEQSg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773401997; c=relaxed/simple; bh=i+aFsWzO9tIXNu6Ej8Jx68B17i34ahjmDr02FiuMQNI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=NP5BG5Q/2V6cODjRplhsLyaLG1l22BDGmoNLs1tmpHRCpVzPZZm+t/WLlgR/sBxwk+ynz2yW7fRsmfQnDZufcc+oTeLgnx1uT3Ps9kb+UeB9HWkLLTH5zqG6ovU9ljWLIlAF54ewlop7CO+7hPU/bNtjWus4cbqtBDOelhB/bwI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bAWaxm3i; arc=none smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bAWaxm3i" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773401996; x=1804937996; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=i+aFsWzO9tIXNu6Ej8Jx68B17i34ahjmDr02FiuMQNI=; b=bAWaxm3i03ylrIR+7BSS+E7JMgBzKnh0da5zi9lG+b7Uw9n9BUGSEC7K DNCFcwfqrGbqbxdULJUk1u5e5gcGM96i6GEdqlCyzNAsf4pRQBeC9XG0c /eIpJhaxj4PD+jVSP0ZBntkv2pQEoUYOBgauOlCxval6f+0XJndc3/Bc4 zZZNcvyuTfkaO2GwqWIFiuq5CiKD8gGK3eHbQGYQUxyvIRqi1LJmmTtdw ahM6bnAkCbnGahcJ7sDpxqUorkOXTJy7cOxGPohNRPf5ewt1K/9OM+6NP iOqFRKhE/ZsbjN/kcp04SYsUMNJwTC/Mx3SspCBUPel0S3Bm1GP/oM05K Q==; X-CSE-ConnectionGUID: zMqhcJHITUKWpjGkdu/mjA== X-CSE-MsgGUID: WKGhi9EXRjWJtKJhe8rifg== X-IronPort-AV: E=McAfee;i="6800,10657,11727"; a="78106014" X-IronPort-AV: E=Sophos;i="6.23,118,1770624000"; d="scan'208";a="78106014" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Mar 2026 04:39:46 -0700 X-CSE-ConnectionGUID: S91NXOlqQuCuzaZGDi60TA== X-CSE-MsgGUID: 7KwB5vrRSzuXBUGN0q+qkw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,118,1770624000"; d="scan'208";a="221351996" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa007.jf.intel.com with ESMTP; 13 Mar 2026 04:39:42 -0700 Received: by black.igk.intel.com (Postfix, from userid 1008) id 7400D95; Fri, 13 Mar 2026 12:39:41 +0100 (CET) Date: Fri, 13 Mar 2026 13:38:57 +0200 From: Heikki Krogerus To: Krishna Kurapati Cc: Greg Kroah-Hartman , Andrei Kuchynski , Abel Vesa , Pooja Katiyar , Johan Hovold , Venkat Jayaraman , Jameson Thies , Hsin-Te Yuan , Benson Leung , Dmitry Baryshkov , Anjelique Melendez , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] usb: typec: ucsi: Add UCSI_USB4_IMPLIES_USB quirk for X1E80100 Message-ID: References: <20260312101431.2375709-1-krishna.kurapati@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260312101431.2375709-1-krishna.kurapati@oss.qualcomm.com> Thu, Mar 12, 2026 at 03:44:31PM +0530, Krishna Kurapati kirjoitti: > On X1E80100, when we connect a USB4 capable dock, the PARTNER_FLAGS > indicate USB4_GEN3 being set whilst keeping the PARTNER_FLAGS_USB > cleared. Due to this, during ucsi_partner_change call, the usb role > is marked as ROLE_NONE and passed to DWC3 controller the same way. > > Fix this by adding UCSI_USB4_IMPLIES_USB quirk and check for it to > decide and pass on proper ROLE information to DWC3 layer. > > Signed-off-by: Krishna Kurapati Reviewed-by: Heikki Krogerus > --- > drivers/usb/typec/ucsi/ucsi.c | 6 ++++-- > drivers/usb/typec/ucsi/ucsi.h | 3 +++ > drivers/usb/typec/ucsi/ucsi_glink.c | 2 ++ > 3 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c > index f38a4d7ebc42..e042499613c9 100644 > --- a/drivers/usb/typec/ucsi/ucsi.c > +++ b/drivers/usb/typec/ucsi/ucsi.c > @@ -1182,8 +1182,10 @@ static void ucsi_partner_change(struct ucsi_connector *con) > } > } > > - /* Only notify USB controller if partner supports USB data */ > - if (!(UCSI_CONSTAT(con, PARTNER_FLAG_USB))) > + if ((!UCSI_CONSTAT(con, PARTNER_FLAG_USB)) && > + ((con->ucsi->quirks & UCSI_USB4_IMPLIES_USB) && > + (!(UCSI_CONSTAT(con, PARTNER_FLAG_USB4_GEN3) || > + UCSI_CONSTAT(con, PARTNER_FLAG_USB4_GEN4))))) > u_role = USB_ROLE_NONE; > > ret = usb_role_switch_set_role(con->usb_role_sw, u_role); > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h > index 43a0d01ade8f..cff9ddc2ae21 100644 > --- a/drivers/usb/typec/ucsi/ucsi.h > +++ b/drivers/usb/typec/ucsi/ucsi.h > @@ -497,6 +497,9 @@ struct ucsi { > unsigned long quirks; > #define UCSI_NO_PARTNER_PDOS BIT(0) /* Don't read partner's PDOs */ > #define UCSI_DELAY_DEVICE_PDOS BIT(1) /* Reading PDOs fails until the parter is in PD mode */ > + > +/* USB4 connection can imply that USB communcation is supported */ > +#define UCSI_USB4_IMPLIES_USB BIT(2) > }; > > #define UCSI_MAX_DATA_LENGTH(u) (((u)->version < UCSI_VERSION_2_0) ? 0x10 : 0xff) > diff --git a/drivers/usb/typec/ucsi/ucsi_glink.c b/drivers/usb/typec/ucsi/ucsi_glink.c > index 11b3e24e34e2..1cb519cc0532 100644 > --- a/drivers/usb/typec/ucsi/ucsi_glink.c > +++ b/drivers/usb/typec/ucsi/ucsi_glink.c > @@ -371,6 +371,7 @@ static void pmic_glink_ucsi_destroy(void *data) > static unsigned long quirk_sc8180x = UCSI_NO_PARTNER_PDOS; > static unsigned long quirk_sc8280xp = UCSI_NO_PARTNER_PDOS | UCSI_DELAY_DEVICE_PDOS; > static unsigned long quirk_sm8450 = UCSI_DELAY_DEVICE_PDOS; > +static unsigned long quirk_x1e80100 = UCSI_DELAY_DEVICE_PDOS | UCSI_USB4_IMPLIES_USB; > > static const struct of_device_id pmic_glink_ucsi_of_quirks[] = { > { .compatible = "qcom,qcm6490-pmic-glink", .data = &quirk_sc8280xp, }, > @@ -379,6 +380,7 @@ static const struct of_device_id pmic_glink_ucsi_of_quirks[] = { > { .compatible = "qcom,sm8350-pmic-glink", .data = &quirk_sc8180x, }, > { .compatible = "qcom,sm8450-pmic-glink", .data = &quirk_sm8450, }, > { .compatible = "qcom,sm8550-pmic-glink", .data = &quirk_sm8450, }, > + { .compatible = "qcom,x1e80100-pmic-glink", .data = &quirk_x1e80100, }, > {} > }; > > -- > 2.34.1 -- heikki