Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp695972pxa; Tue, 11 Aug 2020 12:38:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwA9WNcEbvLIMBhmnhPX6oqZF/AeST73Qn1qfCTXwI64oU/IKNBhBP3ZzYwo6IasWKkSzHV X-Received: by 2002:a50:dac6:: with SMTP id s6mr27521161edj.378.1597174723729; Tue, 11 Aug 2020 12:38:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597174723; cv=none; d=google.com; s=arc-20160816; b=ZztEPM+7Q+AVsi3sHy+fu42HmM3T0NQlLCNilWzWdP7XzHBQcCuYOh/Xw7idnsTCtS V+eOX3SKIpkqhfibDe7nFc9f1QYAeRNl10tqa0RHF4OWDY1ORzmM6FeF5KVBFnZVKRwa /vnDl85z1Xiar8qcqne268UqJ6plr7E1TlMs703b5vFSmN3Oo3bgw6oP1UoFuOB8KyVW rZzCpNM74iR54/8fRz97Bbje9mjEKdJ63xVUTECzh2sAmk8gZAbr6SKCZxrgoiXcFN1x zq5CVUC7lESXcVkRYXXL9uAXLhCu/sMRY4mChmdNKZS0A6aCttpm+rlzpRUgI3dkWBIJ +g8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:ironport-sdr; bh=pv3SYBDe4nJdakNJSTyH6Ezmv1ARvmllLALmIWLVRMs=; b=gecQoz331wm0r0OTIPr9ilmQ3H9LQkXOPIDouE9D00K18w0wV4xe3egZtv/O848gdH Fe/eTr42mSeqF0lTpC0PTFaBv6ElEZSKOeriQ0ZTgix5Q2DMBTrVC4ZuNj90AHAXKLRI sx5oEBksIxVs0jY9clsaN3hGmN5G361nDuWEBKuI7Cr0rSALBaSBA4ZPtcfy5cJ6SV7p j/oJ7hm8ytz81KZJsCgmOZfMfHPAKcIOySIrqlOndwN3/kS6A6tQSTQmHZduUKtNJYJW xJmWr8MkizK19r87PuE1fd+SYDw12dEf+2gtvUBPyJ8xgtE026gyV7Ifs01O0cTxySnw 0Y5g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j3si13183734edp.229.2020.08.11.12.38.18; Tue, 11 Aug 2020 12:38:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726472AbgHKThV (ORCPT + 99 others); Tue, 11 Aug 2020 15:37:21 -0400 Received: from mga17.intel.com ([192.55.52.151]:10833 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726426AbgHKThT (ORCPT ); Tue, 11 Aug 2020 15:37:19 -0400 IronPort-SDR: K/xLrFbCJl5agK5O8D84RsLdFDX50S1eYTWHKtnqfLvbwh/tRL3S3vfl3L/mRprEFQBQoTMW+M /QzkojzoqlZg== X-IronPort-AV: E=McAfee;i="6000,8403,9710"; a="133871957" X-IronPort-AV: E=Sophos;i="5.76,301,1592895600"; d="scan'208";a="133871957" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2020 12:37:19 -0700 IronPort-SDR: QQrvg9dp/N7BoRqNakMO+bwbI3GI1uZ6zc8arZy8bUf5hIGdOfA79/z7ewGaCyRTZkRPEeltKQ U9JUeAf9t4uw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,301,1592895600"; d="scan'208";a="317840443" Received: from otc-chromeosbuild-1.jf.intel.com ([10.54.30.83]) by fmsmga004.fm.intel.com with ESMTP; 11 Aug 2020 12:37:18 -0700 From: Azhar Shaikh To: bleung@chromium.org, enric.balletbo@collabora.com, groeck@chromium.org, heikki.krogerus@linux.intel.com, pmalani@chromium.org Cc: linux-kernel@vger.kernel.org, azhar.shaikh@intel.com, rajmohan.mani@intel.com, utkarsh.h.patel@intel.com, casey.g.bowman@intel.com Subject: [PATCH v3 3/3] platform/chrome: cros_ec_typec: Re-order connector configuration steps Date: Tue, 11 Aug 2020 12:37:57 -0700 Message-Id: <20200811193757.45057-4-azhar.shaikh@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811193757.45057-1-azhar.shaikh@intel.com> References: <20200811193757.45057-1-azhar.shaikh@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As per USB Type-C Spec R2.0 section 4.5.1.2 (Connecting Sources and Sinks) and section 4.5.2.2 (Connection State Machine Requirements), the typical flow for configuring a device connected to a typeC port is as below: 1. Source/sink detection 2. Orientation 3. Data role 4. VCONN 5. VBUS (USB Type-C currents) 6. The connector is now configured. We can start the PD communication that should lead into configuration of the mux if we enter a mode. But in existing code data role was set after the connector and mux are already configured. So fix this by following the spec to set the data role before the connector and mux are configured. Signed-off-by: Azhar Shaikh --- Changes in v3: - New patch added drivers/platform/chrome/cros_ec_typec.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c index 2b43e1176e73..9e4fad9ca59e 100644 --- a/drivers/platform/chrome/cros_ec_typec.c +++ b/drivers/platform/chrome/cros_ec_typec.c @@ -516,6 +516,12 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num, if (ret) return ret; + ret = usb_role_switch_set_role(typec->ports[port_num]->role_sw, + pd_ctrl->role & PD_CTRL_RESP_ROLE_DATA + ? USB_ROLE_HOST : USB_ROLE_DEVICE); + if (ret) + return ret; + if (mux_flags & USB_PD_MUX_TBT_COMPAT_ENABLED) { ret = cros_typec_enable_tbt(typec, port_num, pd_ctrl); } else if (mux_flags & USB_PD_MUX_DP_ENABLED) { @@ -533,12 +539,7 @@ static int cros_typec_configure_mux(struct cros_typec_data *typec, int port_num, ret = -ENOTSUPP; } - if (ret) - return ret; - - return usb_role_switch_set_role(typec->ports[port_num]->role_sw, - pd_ctrl->role & PD_CTRL_RESP_ROLE_DATA - ? USB_ROLE_HOST : USB_ROLE_DEVICE); + return ret; } static int cros_typec_port_update(struct cros_typec_data *typec, int port_num) -- 2.17.1