From patchwork Fri Jul 7 11:03:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krishna chaitanya chundru X-Patchwork-Id: 117112 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp3193716vqx; Fri, 7 Jul 2023 04:27:13 -0700 (PDT) X-Google-Smtp-Source: APBJJlFLWQIPoBibg8qCxtvfVpy8B6imE06CmCFavIvv5bTjUk+/Udixf34Lh++p0Nwr2jevzmks X-Received: by 2002:a05:6808:23cd:b0:3a3:69e0:5c03 with SMTP id bq13-20020a05680823cd00b003a369e05c03mr5482398oib.26.1688729232883; Fri, 07 Jul 2023 04:27:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688729232; cv=none; d=google.com; s=arc-20160816; b=rt9NuHpNhGLkbv7xDJyYNe/n0xejOUnnFAHrNxvm1O+a7pIAsU9LC49QJZJYmJIFeh 9TK0zHGaacHo2/qAcIgOGRE20aR9nZzfnxUJ+ljKnor18CiLCjC2A8qmFSXTtbCxOuEe y6GbHg3yK3t7tTCNcnOMYXF4zMQ5b1KrOx04Lq5JeP5LdQX5Vy+57deF8VlvYZMfXdN8 M/Lmpzax52GR6DDjHE3IdRMRJ0iVqU26g+wssDU5yfFJWvAOf0jmK8RGpsp011NLvvjJ TjYyeaNiy1QfI5t7h/upK3NRaAX8guoNE25ZN1Atcm2w04m2BwmpojVEBPiHiukzDnl3 t3fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=65CovnBWbNUvoSm0fQgVTIwLHVM4Q2BHmiAQqTz3EYI=; fh=G1XFE93s4lIUKCTXsaoRJzSc804FqcaqkscJu5qXRxo=; b=TpHdy6z5R7mLKnj+qv2y4tGe/ZADPtTHGSXg2qZkqO2x4bJ+1y5zlWFqIFuXq5Bsjm qoiIr5bLJcmFWZaMF9rZV1c/axV8agEYO0T5+JvdHypaQieih9RadI2GU507JnamCDu+ DvQ7HW6ayBt708Ebusu74l2m0YPRI4TgDNI7jJH/kEe9XcjR0aNoLcTzM5jyAm8ZkDah RiNEp47a2QcJwBxnRkiBMhWH0hJYX1nldrNZq+Ee7HjyS9zKTk9pioVVRUZqtXZ4uyyX 4OSXaK19e/7dkgLPtkKrGmA9AX12dqo+tYxQEsfm+I8GMIGBbFMIjSZ4wK/r5tukcDs7 XbGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=M0DJlzkc; 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 y9-20020a056a001c8900b0066aa7b0e3c8si3328457pfw.322.2023.07.07.04.26.58; Fri, 07 Jul 2023 04:27:12 -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=M0DJlzkc; 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 S232807AbjGGLFZ (ORCPT + 99 others); Fri, 7 Jul 2023 07:05:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230036AbjGGLFP (ORCPT ); Fri, 7 Jul 2023 07:05:15 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D47C2682; Fri, 7 Jul 2023 04:04:46 -0700 (PDT) Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36781iJY021693; Fri, 7 Jul 2023 11:04:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=qcppdkim1; bh=65CovnBWbNUvoSm0fQgVTIwLHVM4Q2BHmiAQqTz3EYI=; b=M0DJlzkcTDVG7ixcv52Dyzypt+UAyV4Kma2rD9dcWhFpUea8La6kU6MKT1zpHcFYfgMt J1F2tLf6qCaHE8/zaoo4wGzsoG7j7jhlEFH9zIT6e7qWdpadoSLuvU/99NCEE2wPb+Ue SjfsuhxZmS08oP/cQYuaYXrjxrUzsqs65NxtXMyf/g+H2lUzojPO90FJCbi4QOnWtXzY fOK1xHigGfNmnshGzcUkfpQCyKERc6beSJv8XAsV8bm/3sB0tOpTIO7hFu8f0bu21PEo dXFxylbN83R7BbL/MajVTym2L5D1EuJGGPycbr5AGSubGmz7N/kUqLY2KuSRVXeJ4etk ww== Received: from apblrppmta02.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3rnx4x2mbn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Jul 2023 11:04:33 +0000 Received: from pps.filterd (APBLRPPMTA02.qualcomm.com [127.0.0.1]) by APBLRPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTP id 367B40F2022731; Fri, 7 Jul 2023 11:04:18 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA02.qualcomm.com (PPS) with ESMTPS id 3rjd7kq5ag-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 07 Jul 2023 11:04:18 +0000 Received: from APBLRPPMTA02.qualcomm.com (APBLRPPMTA02.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 367B3xqC022722; Fri, 7 Jul 2023 11:04:18 GMT Received: from hu-sgudaval-hyd.qualcomm.com (hu-krichai-hyd.qualcomm.com [10.213.110.112]) by APBLRPPMTA02.qualcomm.com (PPS) with ESMTP id 367B4Ir8022899; Fri, 07 Jul 2023 11:04:18 +0000 Received: by hu-sgudaval-hyd.qualcomm.com (Postfix, from userid 4058933) id 6BE8446E0; Fri, 7 Jul 2023 16:34:17 +0530 (+0530) From: Krishna chaitanya chundru To: manivannan.sadhasivam@linaro.org Cc: helgaas@kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, quic_vbadigan@quicinc.com, quic_nitegupt@quicinc.com, quic_skananth@quicinc.com, quic_ramkri@quicinc.com, krzysztof.kozlowski@linaro.org, Krishna chaitanya chundru , Manivannan Sadhasivam , Jeffrey Hugo , Bo Liu , Greg Kroah-Hartman , Dan Carpenter , mhi@lists.linux.dev (open list:MHI BUS) Subject: [PATCH v3 9/9] bus: mhi: ep: wake up host is the MHI state is in M3 Date: Fri, 7 Jul 2023 16:33:56 +0530 Message-Id: <1688727836-11141-10-git-send-email-quic_krichai@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1688727836-11141-1-git-send-email-quic_krichai@quicinc.com> References: <1688727836-11141-1-git-send-email-quic_krichai@quicinc.com> X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: j7lnuVVTRFr90927m03mBTypOa34UxSx X-Proofpoint-GUID: j7lnuVVTRFr90927m03mBTypOa34UxSx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-07_07,2023-07-06_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 mlxscore=0 malwarescore=0 suspectscore=0 clxscore=1015 spamscore=0 mlxlogscore=985 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2307070103 X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_NONE,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: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770760943814126121?= X-GMAIL-MSGID: =?utf-8?q?1770760943814126121?= If the MHI state is in M3 then the most probably the host kept the device in D3 hot or D3 cold, due to that endpoint transctions will not be read by the host, so endpoint wakes up host to bring the host to D0 which eventually bring back the MHI state to M0. Signed-off-by: Krishna chaitanya chundru --- drivers/bus/mhi/ep/main.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/bus/mhi/ep/main.c b/drivers/bus/mhi/ep/main.c index 6008818..46a8a3c 100644 --- a/drivers/bus/mhi/ep/main.c +++ b/drivers/bus/mhi/ep/main.c @@ -25,6 +25,27 @@ static DEFINE_IDA(mhi_ep_cntrl_ida); static int mhi_ep_create_device(struct mhi_ep_cntrl *mhi_cntrl, u32 ch_id); static int mhi_ep_destroy_device(struct device *dev, void *data); +static bool mhi_ep_wake_host(struct mhi_ep_cntrl *mhi_cntrl) +{ + enum mhi_state state; + bool mhi_reset; + u32 count = 0; + + mhi_cntrl->wakeup_host(mhi_cntrl); + + /* Wait for Host to set the M0 state */ + do { + msleep(M0_WAIT_DELAY_MS); + mhi_ep_mmio_get_mhi_state(mhi_cntrl, &state, &mhi_reset); + count++; + } while (state != MHI_STATE_M0 && count < M0_WAIT_COUNT); + + if (state != MHI_STATE_M0) + return false; + + return true; +} + static int mhi_ep_send_event(struct mhi_ep_cntrl *mhi_cntrl, u32 ring_idx, struct mhi_ring_element *el, bool bei) { @@ -464,6 +485,13 @@ int mhi_ep_queue_skb(struct mhi_ep_device *mhi_dev, struct sk_buff *skb) buf_left = skb->len; ring = &mhi_cntrl->mhi_chan[mhi_chan->chan].ring; + if (mhi_cntrl->mhi_state == MHI_STATE_M3) { + if (mhi_ep_wake_host(mhi_cntrl)) { + dev_err(dev, "Failed to wakeup host\n"); + return -ENODEV; + } + } + mutex_lock(&mhi_chan->lock); do {