Message ID | 1685004036-17273-1-git-send-email-quic_prashk@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp213654vqr; Thu, 25 May 2023 01:53:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5b+it+X3q2qthWwvWcaudu3OnxlopvgXCWf4MAMogJSby6iung4JrjEnuQTF0v6EoHNiGU X-Received: by 2002:a05:6a00:139d:b0:64f:3fc8:5d3a with SMTP id t29-20020a056a00139d00b0064f3fc85d3amr8057140pfg.16.1685004786061; Thu, 25 May 2023 01:53:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685004786; cv=none; d=google.com; s=arc-20160816; b=JcuFKFYJRF9owkb7BjF5315lU63AyEA7deCZ169bgddRqn8SEHL2hLnIW67RF9xDWm ZX7qjd4VtWL7K6dkAxtHmNfETtsj8dHOXq+QneVzCicJ2FPVSyPckpM0mgfwUTueLD2d pVs4c2xop8mwWdgqcXQS3SYu+Ag5kr/tc5WsQQwX4f0uSO2purLO4Mwz7YZ9SWNl/qrA Iu5AmHhQT/YS4p2VvkphLJ9+j3sWU+xFu53yDSLXy3QdMXLo/N0lBrhw4oV73THYKVb2 Rn8htko2fkVIHjPwnvpYiP0M4+Cd3Lbb1cvuJKy4gMZe4Qt7+tJIAyxFX5bhUXYSb6/x QL+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=joWOuU6davKvosaprm4wGIdzV1Vsr0pL74sOk8Hi4bo=; b=qZUMrFiEwd8TtrkDIwbxZgFPqTeb1g1NJ3aCIiwlt8pjvD+1OhxpZKOiQNRFD+Sb0I OTY1SbbSMbqeuS17afsMB7M9y9B5scCYrBGchqDahMYALwdX8RQKe3pg+a2wnIDB1uF/ MaDipEpWYZukAdkKXbqat4ikRTcOSp9zMku53DUKGaUFP8M+RkV8U8UkXG6I7jl09i6G n36RBg4zfuuBMlmQtLg7P656aX/j+3s33xjynJ53lcrRDP1TyiMJsyg4oQcdogPigOIP UH42iI8fdUiEXlsYeJQDzwMR8k67avqytTSVXoykY/Cqyil4oQbScev/DlZ2x8llCI31 Kzog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=nd0wPSMl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w20-20020a637b14000000b005347e036056si661961pgc.633.2023.05.25.01.52.51; Thu, 25 May 2023 01:53:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=nd0wPSMl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240079AbjEYIla (ORCPT <rfc822;ahmedalshaiji.dev@gmail.com> + 99 others); Thu, 25 May 2023 04:41:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239928AbjEYIl2 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Thu, 25 May 2023 04:41:28 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AAF218C; Thu, 25 May 2023 01:41:25 -0700 (PDT) Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34P6r7ac008888; Thu, 25 May 2023 08:41:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=qcppdkim1; bh=joWOuU6davKvosaprm4wGIdzV1Vsr0pL74sOk8Hi4bo=; b=nd0wPSMlFsOgXbDwDfc8iBl5X3cTzeocuEOSYxgTz8lwI5r6Lwk7HQ+tiHFxUebkP1T2 oaLMRo7LPdBsoeVuNLc3vdxDE+Z1y0lwTK7+nk6UMHO7ZKgERD+4vsblNDJMIEBXMy2d ik7rHEAGY5JuNqaw72RYLFF0DeG6r9X+/FgjHsZCvclGhrDJk3ZDNrp2SF8U5IERCuAN 7mOfguNQDUg3ZtDQ7la/S83GSH/pflNhhx3K7+Mx2FFyEVsmDY0bR1jjc5MYFWCaCn/h NJ8uEshbnLNsf19WhrWfiK00ThO0J9Nm/S5AOv0awi8ScCbZvLxL1AarUviYo/amxFcl 3g== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3qsp509reg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 May 2023 08:41:16 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 34P8fFGm029472 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 May 2023 08:41:15 GMT Received: from hu-prashk-hyd.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Thu, 25 May 2023 01:41:13 -0700 From: Prashanth K <quic_prashk@quicinc.com> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Matthias Brugger <matthias.bgg@gmail.com> CC: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, <linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Prashanth K <quic_prashk@quicinc.com> Subject: [PATCH v3] usb: common: usb-conn-gpio: Set last role to unknown before initial detection Date: Thu, 25 May 2023 14:10:36 +0530 Message-ID: <1685004036-17273-1-git-send-email-quic_prashk@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: f8rZFyfKr3IPNnStissTlkExl4mPB6EQ X-Proofpoint-ORIG-GUID: f8rZFyfKr3IPNnStissTlkExl4mPB6EQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-05-25_04,2023-05-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 spamscore=0 suspectscore=0 priorityscore=1501 mlxscore=0 mlxlogscore=865 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2305250071 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766766285470192139?= X-GMAIL-MSGID: =?utf-8?q?1766855578577541448?= |
Series |
[v3] usb: common: usb-conn-gpio: Set last role to unknown before initial detection
|
|
Commit Message
Prashanth K
May 25, 2023, 8:40 a.m. UTC
Currently if we bootup a device without cable connected, then
usb-conn-gpio won't call set_role() since last_role is same as
current role. This happens because during probe last_role gets
initialised to zero.
To avoid this, added a new constant in enum usb_role, last_role
is set to USB_ROLE_UNKNOWN before performing initial detection.
Fixes: 4602f3bff266 ("usb: common: add USB GPIO based connection detection driver")
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
---
v3: Added a default case in drivers/usb/cdns3/core.c as pointed out by
the test robot
v2: Added USB_ROLE_UNKNWON to enum usb_role
drivers/usb/cdns3/core.c | 2 ++
drivers/usb/common/usb-conn-gpio.c | 3 +++
include/linux/usb/role.h | 1 +
3 files changed, 6 insertions(+)
Comments
Il 25/05/23 10:40, Prashanth K ha scritto: > Currently if we bootup a device without cable connected, then > usb-conn-gpio won't call set_role() since last_role is same as > current role. This happens because during probe last_role gets > initialised to zero. > > To avoid this, added a new constant in enum usb_role, last_role > is set to USB_ROLE_UNKNOWN before performing initial detection. > > Fixes: 4602f3bff266 ("usb: common: add USB GPIO based connection detection driver") > Signed-off-by: Prashanth K <quic_prashk@quicinc.com> I'm sorry to make a call for v4, but you have to mention that you're touching the cdns3 driver in the commit description, if you want to keep the entire change set in one commit... otherwise you'll have to split it in two, one adding the new entry to the enum and fixing cdns3; the other setting the last role to unknown in usb-conn-gpio.c. I can suggest text for keeping that in one commit, but the choice is yours; "While at it, also handle default case for the usb_role switch in cdns3 to avoid build warnings." > --- > v3: Added a default case in drivers/usb/cdns3/core.c as pointed out by > the test robot > v2: Added USB_ROLE_UNKNWON to enum usb_role > > drivers/usb/cdns3/core.c | 2 ++ > drivers/usb/common/usb-conn-gpio.c | 3 +++ > include/linux/usb/role.h | 1 + > 3 files changed, 6 insertions(+) > > diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c > index dbcdf3b..69d2921 100644 > --- a/drivers/usb/cdns3/core.c > +++ b/drivers/usb/cdns3/core.c > @@ -252,6 +252,8 @@ static enum usb_role cdns_hw_role_state_machine(struct cdns *cdns) > if (!vbus) > role = USB_ROLE_NONE; > break; > + default: > + break; > } > > dev_dbg(cdns->dev, "role %d -> %d\n", cdns->role, role); > diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c > index e20874c..30bdb81 100644 > --- a/drivers/usb/common/usb-conn-gpio.c > +++ b/drivers/usb/common/usb-conn-gpio.c > @@ -257,6 +257,9 @@ static int usb_conn_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, info); > device_set_wakeup_capable(&pdev->dev, true); > > + /* Set last role to unknown before performing the initial detection */ > + info->last_role = USB_ROLE_UNKNOWN; > + > /* Perform initial detection */ > usb_conn_queue_dwork(info, 0); > > diff --git a/include/linux/usb/role.h b/include/linux/usb/role.h > index b5deafd..221d462 100644 > --- a/include/linux/usb/role.h > +++ b/include/linux/usb/role.h > @@ -8,6 +8,7 @@ > struct usb_role_switch; > > enum usb_role { > + USB_ROLE_UNKNOWN = -1, > USB_ROLE_NONE, > USB_ROLE_HOST, > USB_ROLE_DEVICE,
On 25-05-23 02:15 pm, AngeloGioacchino Del Regno wrote: > Il 25/05/23 10:40, Prashanth K ha scritto: >> Currently if we bootup a device without cable connected, then >> usb-conn-gpio won't call set_role() since last_role is same as >> current role. This happens because during probe last_role gets >> initialised to zero. >> >> To avoid this, added a new constant in enum usb_role, last_role >> is set to USB_ROLE_UNKNOWN before performing initial detection. >> >> Fixes: 4602f3bff266 ("usb: common: add USB GPIO based connection >> detection driver") >> Signed-off-by: Prashanth K <quic_prashk@quicinc.com> > > I'm sorry to make a call for v4, but you have to mention that you're > touching > the cdns3 driver in the commit description, if you want to keep the entire > change set in one commit... otherwise you'll have to split it in two, > one adding > the new entry to the enum and fixing cdns3; the other setting the last > role to > unknown in usb-conn-gpio.c. > > I can suggest text for keeping that in one commit, but the choice is yours; > > "While at it, also handle default case for the usb_role switch > in cdns3 to avoid build warnings." > Yea that's right, will add it in next version. Thanks for the suggestion. Regards, Prashanth K
diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c index dbcdf3b..69d2921 100644 --- a/drivers/usb/cdns3/core.c +++ b/drivers/usb/cdns3/core.c @@ -252,6 +252,8 @@ static enum usb_role cdns_hw_role_state_machine(struct cdns *cdns) if (!vbus) role = USB_ROLE_NONE; break; + default: + break; } dev_dbg(cdns->dev, "role %d -> %d\n", cdns->role, role); diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c index e20874c..30bdb81 100644 --- a/drivers/usb/common/usb-conn-gpio.c +++ b/drivers/usb/common/usb-conn-gpio.c @@ -257,6 +257,9 @@ static int usb_conn_probe(struct platform_device *pdev) platform_set_drvdata(pdev, info); device_set_wakeup_capable(&pdev->dev, true); + /* Set last role to unknown before performing the initial detection */ + info->last_role = USB_ROLE_UNKNOWN; + /* Perform initial detection */ usb_conn_queue_dwork(info, 0); diff --git a/include/linux/usb/role.h b/include/linux/usb/role.h index b5deafd..221d462 100644 --- a/include/linux/usb/role.h +++ b/include/linux/usb/role.h @@ -8,6 +8,7 @@ struct usb_role_switch; enum usb_role { + USB_ROLE_UNKNOWN = -1, USB_ROLE_NONE, USB_ROLE_HOST, USB_ROLE_DEVICE,