Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp1081741pxv; Fri, 16 Jul 2021 00:52:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCQk7mOnKz48gBktkxFUXCDR8HYKQEyJD9dWslnEk+BpP1Cw7Cwl5mE4WgKQa5oILXLPAu X-Received: by 2002:a17:907:1ddb:: with SMTP id og27mr10362319ejc.540.1626421973486; Fri, 16 Jul 2021 00:52:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626421973; cv=none; d=google.com; s=arc-20160816; b=Cxi5CELeU62Ryr/BDkWicmt4Yk2Ce99yx19QMDAt3/1hC+ZiGxZTqCAFQbNYma/pLH lJy6+Hb6OwnxYAiTXrGPpobV+/fTinw5QcXrqzfDR5aY34QI95qUIOjO3U6PgI7hGNK4 GSIzmOzdTICz0GpHFrQ3900taABSrTC56XF0XgoG3j07bFxZw4DchAJdui9f0QBwgKe5 2NRkla9tqLsoxj9dz9BUr8ijZNcPdZMiDMTmH9JqPmU4dqnB77SJaYRMoFVx15Yp+cgv vZidA/kCfsdrEH6Dg+3x1sFrWdhqUhR9Pzim9ETgL1E4g6xNH00HRahZNlMnfS3rwM98 hiUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3drlnqLci8b92FvhLSUmW1dM18kTxe4HZJWDZW845h8=; b=L7GfZnejEmmQV05WzNhNhhZsIfNMWm2IS2eRyBK/DdTuDwDb8FnN/0F1WTLLPQFJ+L vRsV8wTYtTXAesDtvm+Hn8TjlE8sAHwJQ0tVi6CR/HtTLp0m42yfIYPVNmyiYR6DjivG PI47EcdC8ffhrzwWE9qNsU93lnNbdH6MgfknXmrgUQgZxwoP+Oh0biU97Xt9LxkGWdNk XvvCkFUHyY4VwZHHyA7QL4Bjhy6hOxc6JdsyULGL81DMYwdjXbNFC65MzNedr0ytsyYg +WJNh/PT4oWcXnbT8Z1OWnbdy3cxwj7rXlNPw9d4PpVE+plaEs0TQStrwRWa33Wsj9gN iL1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Jdj9wk8b; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ji4si2617927ejc.469.2021.07.16.00.52.29; Fri, 16 Jul 2021 00:52:53 -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; dkim=pass header.i=@linaro.org header.s=google header.b=Jdj9wk8b; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236793AbhGPHyX (ORCPT + 99 others); Fri, 16 Jul 2021 03:54:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236765AbhGPHyX (ORCPT ); Fri, 16 Jul 2021 03:54:23 -0400 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDE77C061760 for ; Fri, 16 Jul 2021 00:51:28 -0700 (PDT) Received: by mail-pl1-x633.google.com with SMTP id y3so529628plp.4 for ; Fri, 16 Jul 2021 00:51:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3drlnqLci8b92FvhLSUmW1dM18kTxe4HZJWDZW845h8=; b=Jdj9wk8b2VbsBv1/xEpWv+SR/MxQH9P6VEjUfs0n1DxUpd3I6H1opD1dIAsBSKGSVu xeOJH1Sv4HM1ta6lO09VyrteUsmy7dEPpNojMlcaojxdmQHzd/0B1tIXYMylZaSpKyJG qwIjcStYGt/uy+esecFXWnHUPHhLf6Blk8XIZ4zW8qVPuGAq93kWcdm9zLP8GRPWNtMp BRJyhJKfPOZVd6Wj1WZ9iFF1qi6+LciVxiZyvOms6YJJ4Sj2EU8XNJKAynJAvOsB+9wl tcKqqCNgbhw4d3fe5qJiCH+2u9QHa3oksL1q5GwZw+9LVUnJ/jOBw8VeJOu6SJ/35v8E b7ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3drlnqLci8b92FvhLSUmW1dM18kTxe4HZJWDZW845h8=; b=ZtDP2NchuRfVUelkV1YP61ip7+DB2HVNEZzaNJnA/OUBKwOq76Isnvf3kM9oefkJ0f pvwpkX2CZuyl6yjBbeOA5dB8j364EfVZvk4KuHL4F/Cc/3LC/NNhZgMhlk1nhsCztr8J 36BBH6F7iedBiPg28HXSbMa305u2kM6sKA+11sGJIv4UYLK3XTQMZHHWpq2M6+fYoHKa j0BZWYTiEV9JvmrONu3mC3oXc0LLnacOJDIm/fQUmEs7dFz1/6LGXxHeEuPRaOFEEHWZ hDPB7UvOID9sTpT35nurGxMJAtRYFmCJ5faSEuyo6Cvs5dtmpP/nm58LAhE7FBwzCtPX /ffA== X-Gm-Message-State: AOAM531ladvVIkN/6CPriSmGJ9bjo2OnL/ST1cNvkYQlXa7Fle1rgVQH Q8EUfmWUHwkOf7+FcglSOHn2 X-Received: by 2002:a17:90a:5204:: with SMTP id v4mr14324567pjh.147.1626421888238; Fri, 16 Jul 2021 00:51:28 -0700 (PDT) Received: from localhost.localdomain ([120.138.12.214]) by smtp.gmail.com with ESMTPSA id 21sm9253357pfp.211.2021.07.16.00.51.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Jul 2021 00:51:27 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, jhugo@codeaurora.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, stable@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 1/3] bus: mhi: pci_generic: Apply no-op for wake using sideband wake boolean Date: Fri, 16 Jul 2021 13:21:04 +0530 Message-Id: <20210716075106.49938-2-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210716075106.49938-1-manivannan.sadhasivam@linaro.org> References: <20210716075106.49938-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bhaumik Bhatt Devices such as SDX24 do not have the provision for inband wake doorbell in the form of channel 127 and instead have a sideband GPIO for it. Newer devices such as SDX55 or SDX65 support inband wake method by default. Ensure the functionality is used based on this such that device wake stays held when a client driver uses mhi_device_get() API or the equivalent debugfs entry. Cc: stable@vger.kernel.org #5.12 Fixes: e3e5e6508fc1 ("bus: mhi: pci_generic: No-Op for device_wake operations") Signed-off-by: Bhaumik Bhatt Reviewed-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/1624560809-30610-1-git-send-email-bbhatt@codeaurora.org Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/pci_generic.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c index ca3bc40427f8..3396cb30ebec 100644 --- a/drivers/bus/mhi/pci_generic.c +++ b/drivers/bus/mhi/pci_generic.c @@ -32,6 +32,8 @@ * @edl: emergency download mode firmware path (if any) * @bar_num: PCI base address register to use for MHI MMIO register space * @dma_data_width: DMA transfer word size (32 or 64 bits) + * @sideband_wake: Devices using dedicated sideband GPIO for wakeup instead + * of inband wake support (such as sdx24) */ struct mhi_pci_dev_info { const struct mhi_controller_config *config; @@ -40,6 +42,7 @@ struct mhi_pci_dev_info { const char *edl; unsigned int bar_num; unsigned int dma_data_width; + bool sideband_wake; }; #define MHI_CHANNEL_CONFIG_UL(ch_num, ch_name, el_count, ev_ring) \ @@ -242,7 +245,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = { .edl = "qcom/sdx65m/edl.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false, }; static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = { @@ -251,7 +255,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = { .edl = "qcom/sdx55m/edl.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false, }; static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = { @@ -259,7 +264,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = { .edl = "qcom/prog_firehose_sdx24.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = true, }; static const struct mhi_channel_config mhi_quectel_em1xx_channels[] = { @@ -301,7 +307,8 @@ static const struct mhi_pci_dev_info mhi_quectel_em1xx_info = { .edl = "qcom/prog_firehose_sdx24.mbn", .config = &modem_quectel_em1xx_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = true, }; static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = { @@ -339,7 +346,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = { .edl = "qcom/sdx55m/edl.mbn", .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false, }; static const struct pci_device_id mhi_pci_id_table[] = { @@ -640,9 +648,12 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) mhi_cntrl->status_cb = mhi_pci_status_cb; mhi_cntrl->runtime_get = mhi_pci_runtime_get; mhi_cntrl->runtime_put = mhi_pci_runtime_put; - mhi_cntrl->wake_get = mhi_pci_wake_get_nop; - mhi_cntrl->wake_put = mhi_pci_wake_put_nop; - mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop; + + if (info->sideband_wake) { + mhi_cntrl->wake_get = mhi_pci_wake_get_nop; + mhi_cntrl->wake_put = mhi_pci_wake_put_nop; + mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop; + } err = mhi_pci_claim(mhi_cntrl, info->bar_num, DMA_BIT_MASK(info->dma_data_width)); if (err) -- 2.25.1