Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3698356pxv; Mon, 26 Jul 2021 09:39:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXRFnDtWFMWYL8MFcNU6qOR09nNwVZZM4wwCP9P4D3iCVBJSsYAucuEbxcLu9g2K2xbYF7 X-Received: by 2002:aa7:d2ca:: with SMTP id k10mr23080648edr.379.1627317580974; Mon, 26 Jul 2021 09:39:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627317580; cv=none; d=google.com; s=arc-20160816; b=Vt4BKuFTuUpG+xPq4S3hQ4ThFHaPn418pB+NIoH5NUhQcykAZ6Ttqtw4I8nxM7Cm/P rLyFRpdl9UqjV8evS3a4rjod3JysQ75thOfxHkAnRRrNN26EGM6crxnXxAQ8WRaAL9X1 jfvrvtpMtyTi9d51s7AtbyuxmNsMXMLFWBcwThcXWtb/xTxBUflU0N+pggxT4qT6gIvj Ls5+391oZfyplSmJeqAAmDhbGjyuZO2pAdWP/vaGYgQ1D9No4nwLWKowkXJDCBRzE33g 6PPATC+4L377AdNOboeNoyuJ2mfkPeRgnjILpX64RGTvTZssT30JeidN4T7Rztx8PLNV APWQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=3frSPqsbT8P1E/nqukmZwo3+xWSvA1T+ZLTFc6VmouE=; b=iY2gmKumqgMkiD4vVRDAA6CLEsDkHw2LLf4JchZF8rmO4HeTJFLHFb+hsEQFVpTqDf m0Q8RZCVk78YVNrexZX6RkCZKcNF0rgROSfHVyTlRAQ5eQ2d6s90Wm3Vc8ZYeSnt4Mvx ez0ZPTbEJmzkYCWQwKCuYg8SVEn6xaDokBLaMUy5gUOEHCCdCTGVuLTRhXHFZuTSAcBF Ck82QlbO4iXU+x7+RJzQdi7h4sHNa6tky7BsXaMDLlxNEFxLL6v724qosVXanTtIDbLj Pobzf993l51Lkn89bIhFiCmFRYBz5t3tgLvEa6rIGomyrLZjaKTfvvnzH/u/a/iDCFNb mTaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=B24FDUTO; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x14si441342edd.191.2021.07.26.09.39.18; Mon, 26 Jul 2021 09:39:40 -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=@linuxfoundation.org header.s=korg header.b=B24FDUTO; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239441AbhGZP45 (ORCPT + 99 others); Mon, 26 Jul 2021 11:56:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:53570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236884AbhGZPfz (ORCPT ); Mon, 26 Jul 2021 11:35:55 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DC83360F6B; Mon, 26 Jul 2021 16:16:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1627316183; bh=TUxbx0dsEUujwCCzZ3h4JIqB77mC8846Vl+ah7g+S3M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B24FDUTOX/vefxkXVriMKWPTo/uR/gofb9f8wYu9Y8ZW8P9ATI92GPM7Eo/SIxWl2 bHrT/r8G0/jKHPZfVLOAZ49RSj7QHW7owjJf08SHvKP8oa5Z+4eCPDzP5XAH4myPRi 7/AaB99GExErl7i8PVbBj8wYcM2yaS4BPSGOb8G4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Manivannan Sadhasivam , Bhaumik Bhatt Subject: [PATCH 5.13 187/223] bus: mhi: pci_generic: Apply no-op for wake using sideband wake boolean Date: Mon, 26 Jul 2021 17:39:39 +0200 Message-Id: <20210726153852.311683682@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210726153846.245305071@linuxfoundation.org> References: <20210726153846.245305071@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bhaumik Bhatt commit 56f6f4c4eb2a710ec8878dd9373d3d2b2eb75f5c upstream. 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. Link: https://lore.kernel.org/r/1624560809-30610-1-git-send-email-bbhatt@codeaurora.org Fixes: e3e5e6508fc1 ("bus: mhi: pci_generic: No-Op for device_wake operations") Cc: stable@vger.kernel.org #5.12 Reviewed-by: Manivannan Sadhasivam Signed-off-by: Bhaumik Bhatt Signed-off-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/20210716075106.49938-2-manivannan.sadhasivam@linaro.org Signed-off-by: Greg Kroah-Hartman --- drivers/bus/mhi/pci_generic.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) --- 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 .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 .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 .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 .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 .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 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)