From patchwork Tue Feb 28 13:43:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 657651 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4A0BC64EC7 for ; Tue, 28 Feb 2023 13:44:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229587AbjB1No1 (ORCPT ); Tue, 28 Feb 2023 08:44:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229572AbjB1No0 (ORCPT ); Tue, 28 Feb 2023 08:44:26 -0500 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5E7B92CFE4 for ; Tue, 28 Feb 2023 05:44:25 -0800 (PST) Received: by mail-lj1-x22a.google.com with SMTP id h9so10290601ljq.2 for ; Tue, 28 Feb 2023 05:44:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1677591863; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=BgcRqq5hFGEX3BEro6fthR6P07V21dEOCMjIIXnOPY0=; b=av/SAEHha3iPD2uss5t1mt4KAHHpScXr7aiCMuieRJ0WhLXLv6kaga8vKKjgUdqvXy tC13tOnXH4ien+XIsyMxwGuEL6vxts0UZQmbS2TB2t+4y/MgLfo+GSKPQGi27zK7SyqS VxCXNWRAH6N6OoCRtxanxb/ynGHsw1dWAzC54zNHyrzuYeL77YfJ57RwS3EEiLLyYWAC daZvh3Lo1fiJimEjXiCz07cqxGSHG27vr4EDhpoyl+mDJBH63RBH5a8I9cXbQuN8uTIU 90iub/xojlkhX72PPR2dLsrTzDrSmtV/xlu+pNaX1w57fnJk2gzZ2i4csxzIZplwpBXI tMAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677591863; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BgcRqq5hFGEX3BEro6fthR6P07V21dEOCMjIIXnOPY0=; b=4/W2/tkIsv30QciciTbwUQee9NFLyolMXKqClq4Dqjph59tC7jp9sFpoBl5ARSx6/h 6PwTWF4E6uEAbmehobgZlEHgqTOos2aAobGQW1PK3RCxej9ZdmjKnCsOKTmhwj/AGipq 2FWxCJ/ukwkf+RZ8D44AwBPODtVRU/iE65iV49mc0wiEcXRLVO8lR23/XAMWGgI0jpte bHqdJedz+yrnEjQPtz+ejYO8I5MucHks7ZGg7G1blYgV0LPBlW4q9XOQ5CYzwx53yKH5 eR/Kj57fSU6qK5Ff4hhkZ/qf8hGC/Q6uKi5tg3S7yk7CSVptoiaHEy7rtTXt+hpypBrp 42Bg== X-Gm-Message-State: AO0yUKW2xQV25MDjHMynplD6qUtcUWoJAD/Ctvnjaz9v861r/btURRWG 5jW1AAyrYZ0MVs/KwyfrkPalKg== X-Google-Smtp-Source: AK7set+oy0MWrzMbmigtyjvYvu32OfeesLtpCcGBMYD11xPUjlgh71wgPcN5Gp3AsQomDXI1Xq419w== X-Received: by 2002:a2e:7c0b:0:b0:295:941d:76fa with SMTP id x11-20020a2e7c0b000000b00295941d76famr793479ljc.40.1677591863665; Tue, 28 Feb 2023 05:44:23 -0800 (PST) Received: from [192.168.1.101] (abym99.neoplus.adsl.tpnet.pl. [83.9.32.99]) by smtp.gmail.com with ESMTPSA id j20-20020a2e3c14000000b00295a583a20bsm1203975lja.74.2023.02.28.05.44.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 05:44:23 -0800 (PST) From: Konrad Dybcio Date: Tue, 28 Feb 2023 14:43:58 +0100 Subject: [PATCH v6 1/9] interconnect: qcom: rpm: make QoS INVALID default MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v6-1-3c37a349656f@linaro.org> References: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> In-Reply-To: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1677591861; l=3885; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=uWME2VC3uqK55iDqVPz0UNlT1NXsdJFrQS1F8gIjU68=; b=UW1+3PAtFkCnoPCZYU1ZKYicBpoTW1M+yUDZLEtdsa0iUN0oIuyMr+FK80/HpqWj/s0mcJNKo95Y sEUTinmjDrYaQsunaBvFK21iNDwwBw73lV69pfsfqwk3qUsFjvPY X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Currently NOC_QOS_MODE_FIXED is defined as 0x0 which makes it the default option (partial struct initialization). The default option however should be NOC_QOS_MODE_INVALID. That results in bogus QoS configurations being sent for port 0 (which is used for the DRAM endpoint on BIMC, for example) coming from all nodes with .qos.ap_owned = true and uninitialized .qos.qos_mode. It's also an issue for newer SoCs where all nodes are treated as if they were ap_owned, but not all of them have QoS configuration. The NOC_QOS_MODEs are defined as preprocessor constants and are not used anywhere outside qcom_icc_set_noc_qos(), which is easily worked around. Separate the desc->type values from the values sent to msmbus in the aforementioned function. Make the former an enum for better mainainability. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 24 +++++++++++++----------- drivers/interconnect/qcom/icc-rpm.h | 10 ++++++---- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index df3196f72536..ffbeeca8c2b0 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -48,6 +48,9 @@ #define NOC_QOS_MODEn_ADDR(n) (0xc + (n * 0x1000)) #define NOC_QOS_MODEn_MASK 0x3 +#define NOC_QOS_MODE_FIXED_VAL 0x0 +#define NOC_QOS_MODE_BYPASS_VAL 0x2 + static int qcom_icc_set_qnoc_qos(struct icc_node *src, u64 max_bw) { struct icc_provider *provider = src->provider; @@ -153,7 +156,7 @@ static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw) struct qcom_icc_provider *qp; struct qcom_icc_node *qn; struct icc_provider *provider; - u32 mode = NOC_QOS_MODE_BYPASS; + u32 mode = NOC_QOS_MODE_BYPASS_VAL; int rc = 0; qn = src->data; @@ -167,18 +170,17 @@ static int qcom_icc_set_noc_qos(struct icc_node *src, u64 max_bw) return 0; } - if (qn->qos.qos_mode != NOC_QOS_MODE_INVALID) - mode = qn->qos.qos_mode; - - if (mode == NOC_QOS_MODE_FIXED) { - dev_dbg(src->provider->dev, "NoC QoS: %s: Set Fixed mode\n", - qn->name); + if (qn->qos.qos_mode == NOC_QOS_MODE_FIXED) { + dev_dbg(src->provider->dev, "NoC QoS: %s: Set Fixed mode\n", qn->name); + mode = NOC_QOS_MODE_FIXED_VAL; rc = qcom_icc_noc_set_qos_priority(qp, &qn->qos); if (rc) return rc; - } else if (mode == NOC_QOS_MODE_BYPASS) { - dev_dbg(src->provider->dev, "NoC QoS: %s: Set Bypass mode\n", - qn->name); + } else if (qn->qos.qos_mode == NOC_QOS_MODE_BYPASS) { + dev_dbg(src->provider->dev, "NoC QoS: %s: Set Bypass mode\n", qn->name); + mode = NOC_QOS_MODE_BYPASS_VAL; + } else { + /* How did we get here? */ } return regmap_update_bits(qp->regmap, @@ -244,7 +246,7 @@ static int __qcom_icc_set(struct icc_node *n, struct qcom_icc_node *qn, ret = qcom_icc_rpm_set(qn->mas_rpm_id, qn->slv_rpm_id, sum_bw); if (ret) return ret; - } else if (qn->qos.qos_mode != -1) { + } else if (qn->qos.qos_mode != NOC_QOS_MODE_INVALID) { /* set bandwidth directly from the AP */ ret = qcom_icc_qos_set(n, sum_bw); if (ret) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index a49af844ab13..8ba1918d7997 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -97,10 +97,12 @@ struct qcom_icc_desc { unsigned int qos_offset; }; -/* Valid for both NoC and BIMC */ -#define NOC_QOS_MODE_INVALID -1 -#define NOC_QOS_MODE_FIXED 0x0 -#define NOC_QOS_MODE_BYPASS 0x2 +/* Valid for all bus types */ +enum qos_mode { + NOC_QOS_MODE_INVALID = 0, + NOC_QOS_MODE_FIXED, + NOC_QOS_MODE_BYPASS, +}; int qnoc_probe(struct platform_device *pdev); int qnoc_remove(struct platform_device *pdev); From patchwork Tue Feb 28 13:44:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 657650 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCAADC7EE36 for ; Tue, 28 Feb 2023 13:44:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229608AbjB1Noa (ORCPT ); Tue, 28 Feb 2023 08:44:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229593AbjB1No2 (ORCPT ); Tue, 28 Feb 2023 08:44:28 -0500 Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85EEE2CFE4 for ; Tue, 28 Feb 2023 05:44:27 -0800 (PST) Received: by mail-lj1-x22f.google.com with SMTP id y14so10281556ljq.4 for ; Tue, 28 Feb 2023 05:44:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1677591866; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rV1fhlo3d+5jqHbCH3aEpZYk1ZijM8P8h8hsb2YwO9c=; b=W7Sy/y2onzIyxmgt4z39SPajh86w0VHy6ae5q59uMRGlVZq2nBk+m2bQy1qI19zMJJ vkRjJzhH0rdtAsVNaQskpxS9tD6s9SLVMXI0n+7PbwQjiofnE3HoKPplOGIa0Nl80Z3B O50H3CJ6KPfHx1cRIK7PEHlPwQChFunOXa1J8Eoma2tds4ZV4VceY7WqD4Yi6XCmrZY7 sHyk75z/DCZMZkou2nElWPktm/qLGwOZaXSUlEnFZu54VjYrCWUO+qY9Wnqj38wKq88L E5ClgbwidJcHajh47SuUz3h6FNGRzj6DQEI7Ll/1uu6XSUXVb1zCrDXEP4YLW4zLb8yJ SSLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677591866; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rV1fhlo3d+5jqHbCH3aEpZYk1ZijM8P8h8hsb2YwO9c=; b=iDlhLwapxuglBCSOFFgnzvqatBmE8E+DISw+lyyN0dFA8W0oNGt7G+BcnX3WlnvKYV O1SsjlNdwKOociEK+yXwuy4coz8tbV9F07vdJVOdhmHdwwZiBkq0RbMq7R8hEeKYIPdh B/cvVCYQAmIN9VoS4sXz0CAqYW1/uIul8+/72vRKunuAqYnfM3Irr3daFuuyPI96GLki 8goTjINn1ntqg2rQvZj6B8kv0gEa6iX4TCowP96yXSSDTw3zNpwPeM5dcR1iB89U5JpE JXF4/505klE9IdHRvVz0ZbOrPAAPAhUHuGvFwOpcePf28JdO0hnXTa+Qw0s20M/jo7wy oDCg== X-Gm-Message-State: AO0yUKXkBufUdOJUAoQNGZJmQC9/eVlmNC+sUr301jXsJ4R4WdUdcypv rKQMqe4bwveGmjwgQrpVY6QWSA== X-Google-Smtp-Source: AK7set/W3+UTuJlyeNhivmDLtdqcxP32//zQsiK9r2awwDh6eZfx/fgfpSdCnlRha8MITMrIIxAPEA== X-Received: by 2002:a2e:b687:0:b0:290:6e3b:be34 with SMTP id l7-20020a2eb687000000b002906e3bbe34mr867728ljo.42.1677591865866; Tue, 28 Feb 2023 05:44:25 -0800 (PST) Received: from [192.168.1.101] (abym99.neoplus.adsl.tpnet.pl. [83.9.32.99]) by smtp.gmail.com with ESMTPSA id j20-20020a2e3c14000000b00295a583a20bsm1203975lja.74.2023.02.28.05.44.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 05:44:25 -0800 (PST) From: Konrad Dybcio Date: Tue, 28 Feb 2023 14:44:00 +0100 Subject: [PATCH v6 3/9] interconnect: qcom: Sort kerneldoc entries MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v6-3-3c37a349656f@linaro.org> References: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> In-Reply-To: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1677591861; l=1082; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=5QScrGeiOGfZL7HfpuChoBRhoWNcpAGpYtvwcTxAXqc=; b=MjI6nH538sQxDeLAdiyxmWxIutkkkXPLtzw8UjcYfXgL47ublxVZT2Dj0MIxLTktyl3wtoiSVG5+ EG2ru9cfDbb+EfUb053T1dKxU5dSwVArM+hJNHE8L9688wrXnvNp X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Sort the kerneldoc entries the same way the struct members are sorted. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index 8aed5400afda..21f440beda86 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -23,12 +23,12 @@ enum qcom_icc_type { /** * struct qcom_icc_provider - Qualcomm specific interconnect provider * @provider: generic interconnect provider - * @bus_clks: the clk_bulk_data table of bus clocks * @num_clks: the total number of clk_bulk_data entries * @type: the ICC provider type - * @qos_offset: offset to QoS registers * @regmap: regmap for QoS registers read/write access + * @qos_offset: offset to QoS registers * @bus_clk_rate: bus clock rate in Hz + * @bus_clks: the clk_bulk_data table of bus clocks */ struct qcom_icc_provider { struct icc_provider provider; From patchwork Tue Feb 28 13:44:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 657649 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2EFD2C64EC7 for ; Tue, 28 Feb 2023 13:44:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229662AbjB1Nom (ORCPT ); Tue, 28 Feb 2023 08:44:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229620AbjB1Nod (ORCPT ); Tue, 28 Feb 2023 08:44:33 -0500 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 181642FCC5 for ; Tue, 28 Feb 2023 05:44:29 -0800 (PST) Received: by mail-lf1-x136.google.com with SMTP id m7so13230018lfj.8 for ; Tue, 28 Feb 2023 05:44:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1677591868; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oMiTxpwM33fLoo3zljfiICDBPzjHi5z55E4EhRlk6DU=; b=Rv2uVtNFZx1qdQLUfaqkrs4kShtmKGiOiXAwhtza3pciKtGD1BmHlxhcKTQLlWBo76 EiIDVlPazD7LtqyfRjeGdQ/bn9Z/yJMvwzkyYg1qdKM+9s/RfM6XQX85NUyr4jRXH3k6 rH3puDHljW8QIW6Ll3tvMIo5u7/NpAPvxAjWDhl0uekLoC31eRWAMpez4LHLO5S2TH8s c6Dc82nPa1OnNk9tWRo7v/8v14Upuehds3F1kNehO9R/yrA0jGVOm/VOpk4dgVfRh3D3 jkuNaGAfdi2564B3h5L0PHeEljHjbQr6gGzvxiXFsqUM7ymdjj1xx8YgFohaxkb/eZMj 5HQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677591868; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oMiTxpwM33fLoo3zljfiICDBPzjHi5z55E4EhRlk6DU=; b=B1UddUXaBvtWpnfBqs3S8BGYWB+VGK8oAnOZ47NcX8i/qbncp/GxJdsZlmN40fzCpf YlhMm2hPaq7GobIuXDMv3dSgfOYB8fVwhwE3AD1wEr0JEGM/xqM+SDjPTuBYwlUskriv VrnFRqc0bSAF5AP9WVE6cdKG9DofiG44tRGMV90zbaZFQnCJ6R9C7I9fgdfIIiniJKRo uUYewV8UAfTRO9XpT6vULYAmkicWp9jQvQ8LCfuPMD5YMUglbxOTmeRh6ND9yNg1/Z2N zSn/mXrw76jWsEvPaGOmQ5HUzNylq6bEbVexNWwOilZXl2MrxXXEJMA5UpCbfKEDG+w6 3wsw== X-Gm-Message-State: AO0yUKX2udOT6H6UtpIxQ76hicy7cLvzrUneusoWbgX4YslLlmLTkIml OiOBga//xRsXG52w6uj/HqMt9Q== X-Google-Smtp-Source: AK7set+PAbXVpQwEQu9t0sSQpQ+lc16KnHWFYdS8RH7M40om9xt7/ZMNqXvsxPQPLMiEWU6vKHS3+A== X-Received: by 2002:ac2:5ddc:0:b0:4b6:f51e:b8b6 with SMTP id x28-20020ac25ddc000000b004b6f51eb8b6mr696561lfq.56.1677591868306; Tue, 28 Feb 2023 05:44:28 -0800 (PST) Received: from [192.168.1.101] (abym99.neoplus.adsl.tpnet.pl. [83.9.32.99]) by smtp.gmail.com with ESMTPSA id j20-20020a2e3c14000000b00295a583a20bsm1203975lja.74.2023.02.28.05.44.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 05:44:27 -0800 (PST) From: Konrad Dybcio Date: Tue, 28 Feb 2023 14:44:02 +0100 Subject: [PATCH v6 5/9] interconnect: qcom: rpm: Rename icc provider num_clocks to num_bus_clocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v6-5-3c37a349656f@linaro.org> References: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> In-Reply-To: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1677591861; l=3438; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=7FqLtMqh4mIUzsD3NmcdtRjn6IINUaYjtwsFkF9J5aM=; b=7Ylg7yC4+IMm3JNEtAClcZSbAikiiS+uVO09S/eygmI37u8ZoedL4Gbyme9unThk4epjLNNvExw5 ducLfHzXCHrV9ONGaxyyslt7FUW1aPnAFLiTTY5neV6Dp//SuBRA X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org In preparation for handling non-scaling clocks that we still have to enable, rename num_clocks to more descriptive num_bus_clocks. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 14 +++++++------- drivers/interconnect/qcom/icc-rpm.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 7a54fe4ccadd..f78c13e6c5ce 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -380,7 +380,7 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) return ret; } - for (i = 0; i < qp->num_clks; i++) { + for (i = 0; i < qp->num_bus_clks; i++) { /* * Use WAKE bucket for active clock, otherwise, use SLEEP bucket * for other clocks. If a platform doesn't set interconnect @@ -465,7 +465,7 @@ int qnoc_probe(struct platform_device *pdev) for (i = 0; i < cd_num; i++) qp->bus_clks[i].id = cds[i]; - qp->num_clks = cd_num; + qp->num_bus_clks = cd_num; qp->type = desc->type; qp->qos_offset = desc->qos_offset; @@ -495,11 +495,11 @@ int qnoc_probe(struct platform_device *pdev) } regmap_done: - ret = devm_clk_bulk_get_optional(dev, qp->num_clks, qp->bus_clks); + ret = devm_clk_bulk_get_optional(dev, qp->num_bus_clks, qp->bus_clks); if (ret) return ret; - ret = clk_bulk_prepare_enable(qp->num_clks, qp->bus_clks); + ret = clk_bulk_prepare_enable(qp->num_bus_clks, qp->bus_clks); if (ret) return ret; @@ -521,7 +521,7 @@ int qnoc_probe(struct platform_device *pdev) ret = icc_provider_add(provider); if (ret) { dev_err(dev, "error adding interconnect provider: %d\n", ret); - clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks); + clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); return ret; } @@ -554,7 +554,7 @@ int qnoc_probe(struct platform_device *pdev) return 0; err: icc_nodes_remove(provider); - clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks); + clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); icc_provider_del(provider); return ret; @@ -566,7 +566,7 @@ int qnoc_remove(struct platform_device *pdev) struct qcom_icc_provider *qp = platform_get_drvdata(pdev); icc_nodes_remove(&qp->provider); - clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks); + clk_bulk_disable_unprepare(qp->num_bus_clks, qp->bus_clks); icc_provider_del(&qp->provider); return 0; diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index d6b4c56bf02c..d4401f35f6d2 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -23,7 +23,7 @@ enum qcom_icc_type { /** * struct qcom_icc_provider - Qualcomm specific interconnect provider * @provider: generic interconnect provider - * @num_clks: the total number of clk_bulk_data entries + * @num_bus_clks: the total number of bus_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access * @qos_offset: offset to QoS registers @@ -32,7 +32,7 @@ enum qcom_icc_type { */ struct qcom_icc_provider { struct icc_provider provider; - int num_clks; + int num_bus_clks; enum qcom_icc_type type; struct regmap *regmap; unsigned int qos_offset; From patchwork Tue Feb 28 13:44:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 657648 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4063DC7EE31 for ; Tue, 28 Feb 2023 13:44:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229775AbjB1Nou (ORCPT ); Tue, 28 Feb 2023 08:44:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229627AbjB1Nom (ORCPT ); Tue, 28 Feb 2023 08:44:42 -0500 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36BB52F783 for ; Tue, 28 Feb 2023 05:44:32 -0800 (PST) Received: by mail-lf1-x12e.google.com with SMTP id s22so13236485lfi.9 for ; Tue, 28 Feb 2023 05:44:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1677591870; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pd9x+d7515sKxUNxCoW/Rv03ypHAqgqe3FjxGAthHkQ=; b=xmyiSwoB6ksw76lPWURTXa1OtcQ8deSc8qxFSCEF9jwdGGulPCdimgisoZGjo4kmP3 1SH1w1Vm1qGWSGwbmQ8iCQep48NwTpNQw0DWA2rAL9EcBvoM81hlXyM08rD1LHwLGMen F3Tdiu/GrNShQU/fICjKpEfZSv7+LK1ScriUGYAeujsJ++IcikkW7PYYmnKMgx8N3NPh KOPKXDF/3VMHUkgMYIH/L1uVWbeU3bH1RHBOFS8dgNTj/0PZVnioFCs5oGJ/yKxJAXm3 iOVX3uT+yosNI/s37hTjkvywAoubm5WiFOECBA7XYbjibGos+DmAeaNh+kYc5y5q1aKP P7iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677591870; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pd9x+d7515sKxUNxCoW/Rv03ypHAqgqe3FjxGAthHkQ=; b=QL/1fcP/zXNfgte2i+nuXe0ERjt3uCCYXakVhYtz1q/n+yFw90Wz+enm3KGPqIe5yV 9/qZmRkVxunAorUKocVehqsP6nrWpfn8g4f5Lsx4a6EmuTCzWUswAUab6Q+G5t4c+Zuy VmP5l0zb2FvnCINQsp6hL+7T2h2aOD36z9VJgc7nNMB8rCfvcLbO/fY2LsvPbftSNiNu JzS4T3Z9DaV7Q7nhhNjc2M0E41nYLwQSp/X5L5os5EB3JEQmN5128lY/kXgyt9Ga0wuU Y7xs2LHfpRPLqd8E+8hwJwuWZnLMkRpf2b5ggQlDEK9VimvOYy69Mkg5glNB71KnM5sL /zhQ== X-Gm-Message-State: AO0yUKXdHiId9divgb2Mi0jz8Iw1UIFx9hlPRK0UDi12Ce4enXJcgihv yxFJzH6XfVvpQ4EJXOKOiHqbWw== X-Google-Smtp-Source: AK7set/jiIvRGelGf9ZhVzkFhcmmf0fs+TUEGSTAhJQkhN2w2udFHyHQ4k0pct4UBKWpo9oFgYrO+w== X-Received: by 2002:ac2:5451:0:b0:4de:3f1e:cdc4 with SMTP id d17-20020ac25451000000b004de3f1ecdc4mr585207lfn.13.1677591870562; Tue, 28 Feb 2023 05:44:30 -0800 (PST) Received: from [192.168.1.101] (abym99.neoplus.adsl.tpnet.pl. [83.9.32.99]) by smtp.gmail.com with ESMTPSA id j20-20020a2e3c14000000b00295a583a20bsm1203975lja.74.2023.02.28.05.44.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 05:44:30 -0800 (PST) From: Konrad Dybcio Date: Tue, 28 Feb 2023 14:44:04 +0100 Subject: [PATCH v6 7/9] interconnect: qcom: icc-rpm: Enforce 2 or 0 bus clocks MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v6-7-3c37a349656f@linaro.org> References: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> In-Reply-To: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1677591861; l=3956; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=j9XF4WxaLfGj9Ej6rkDHnjJlz9ADRRyGeXxkSRrXYCQ=; b=M35JcJbA4z7xVPt78oyUt8q1B96IPmZiN7M3R/pvpsHCHr4+uzvAmsdDhA2yk+jvIkg71yk3//ph jUAuZfHqABAngnnLpshAN45cGAeUqMNWoq/wICZzASvAitTUv4fD X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org For SMD RPM bus scaling to work, we need a pair of sleep-wake clocks. The variable number of them we previously supported was only a hack to keep the clocks required for QoS register access, but now that these are separated, we can leave bus_clks to the actual bus clocks. In cases where there is no actual bus scaling (such as A0NoC on MSM8996 and GNoC on SDM660 where the HLOS is only supposed to program the QoS registers and the bus is either static or controlled remotely), allow for no clock scaling with a boolean property. Remove all the code related to allowing an arbitrary number of bus_clks, replace the number by BUS_CLK_MAX (= 2) and guard the bus clock paths to ensure they are not taken on non-scaling buses. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/icc-rpm.c | 14 +++----------- drivers/interconnect/qcom/icc-rpm.h | 4 ++-- drivers/interconnect/qcom/msm8996.c | 1 + drivers/interconnect/qcom/sdm660.c | 1 + 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 446f6df9bc98..48eb4394b84e 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -485,17 +485,9 @@ int qnoc_probe(struct platform_device *pdev) for (i = 0; i < cd_num; i++) qp->intf_clks[i].id = cds[i]; - if (desc->num_bus_clocks) { - cds = desc->bus_clocks; - cd_num = desc->num_bus_clocks; - } else { - cds = bus_clocks; - cd_num = ARRAY_SIZE(bus_clocks); - } - - for (i = 0; i < cd_num; i++) - qp->bus_clks[i].id = cds[i]; - qp->num_bus_clks = cd_num; + qp->num_bus_clks = desc->no_clk_scaling ? 0 : NUM_BUS_CLKS; + for (i = 0; i < qp->num_bus_clks; i++) + qp->bus_clks[i].id = bus_clocks[i]; qp->type = desc->type; qp->qos_offset = desc->qos_offset; diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h index a4ef45b4a9e0..3cddff44b4ef 100644 --- a/drivers/interconnect/qcom/icc-rpm.h +++ b/drivers/interconnect/qcom/icc-rpm.h @@ -25,7 +25,7 @@ enum qcom_icc_type { /** * struct qcom_icc_provider - Qualcomm specific interconnect provider * @provider: generic interconnect provider - * @num_bus_clks: the total number of bus_clks clk_bulk_data entries + * @num_bus_clks: the total number of bus_clks clk_bulk_data entries (0 or 2) * @num_intf_clks: the total number of intf_clks clk_bulk_data entries * @type: the ICC provider type * @regmap: regmap for QoS registers read/write access @@ -100,10 +100,10 @@ struct qcom_icc_desc { struct qcom_icc_node * const *nodes; size_t num_nodes; const char * const *bus_clocks; - size_t num_bus_clocks; const char * const *intf_clocks; size_t num_intf_clocks; bool has_bus_pd; + bool no_clk_scaling; enum qcom_icc_type type; const struct regmap_config *regmap_cfg; unsigned int qos_offset; diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qcom/msm8996.c index 1a5e0ad36cc4..347fe59ec293 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -1820,6 +1820,7 @@ static const struct qcom_icc_desc msm8996_a0noc = { .intf_clocks = a0noc_intf_clocks, .num_intf_clocks = ARRAY_SIZE(a0noc_intf_clocks), .has_bus_pd = true, + .no_clk_scaling = true, .regmap_cfg = &msm8996_a0noc_regmap_config }; diff --git a/drivers/interconnect/qcom/sdm660.c b/drivers/interconnect/qcom/sdm660.c index 0e8a96f4ce90..7ffaf70d62d3 100644 --- a/drivers/interconnect/qcom/sdm660.c +++ b/drivers/interconnect/qcom/sdm660.c @@ -1616,6 +1616,7 @@ static const struct qcom_icc_desc sdm660_gnoc = { .nodes = sdm660_gnoc_nodes, .num_nodes = ARRAY_SIZE(sdm660_gnoc_nodes), .regmap_cfg = &sdm660_gnoc_regmap_config, + .no_clk_scaling = true, }; static struct qcom_icc_node * const sdm660_mnoc_nodes[] = { From patchwork Tue Feb 28 13:44:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Dybcio X-Patchwork-Id: 657647 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 522F2C7EE2E for ; Tue, 28 Feb 2023 13:44:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229674AbjB1Now (ORCPT ); Tue, 28 Feb 2023 08:44:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229677AbjB1Nop (ORCPT ); Tue, 28 Feb 2023 08:44:45 -0500 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F3E62F78A for ; Tue, 28 Feb 2023 05:44:35 -0800 (PST) Received: by mail-lj1-x229.google.com with SMTP id x6so4659723ljq.1 for ; Tue, 28 Feb 2023 05:44:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1677591872; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=vveGd9sf9fGz7xfjIX4ynPRPTvQaFdGwhHtakqOTRYg=; b=VLXw8x/HVK++rxyPE+23hHMFMSwTE3HGtekASbnCMGHZuPar3hClhNxfuQMN3uM/81 wNZlRETtkblRSd4rX6fxZtGipiuG/FJ3TPjMnVggM+q6Vqq3HAR9ozypQtbRcNDNxfl8 sjwWPtULXuothLPeRoF0e+yauL/i5EyFg0zsKoO+kaHb47CeXIuI4+V+QkmsXKOMNfVs p9+75OjV2WKORkcqYS006WBS+44oaBFLj7qSQR2dF8MvlSmfWqQLNM10Snd8eW7CCuC6 FsszgvA5bu7t7l+bkKGo/4q1TYNWhk7Y0LnWnhTRY6FnksSMMI/Hv7BfRQexSQ1fwAKM f0gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677591872; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vveGd9sf9fGz7xfjIX4ynPRPTvQaFdGwhHtakqOTRYg=; b=mWdgXqZ+CIuOc+F/V87ixmwNWC5DeoiEroONQSchpn7UQWsBZVfDhabKv6XOlzys5Z cVOmC0OK5d5yoripISweV+G2HnVtjcu5z5mW+/0TXMOnimAr7lb4n3xLy7ng4B59lWOc RPuAuLk0xjV9vL6KEpE3kUKog91PJ9hXCdrLLzWzLVsqs2JNF9WWsZog5INkAmk3JlIf Y0eWk8wjdulcKzc8gjiw95K8veqoiFHNb+X9IAADH/des5UKFFcrvL4RXn1V5eR0amPf XoTgXhvxcczVIOwChGj8JuXb3n2iTbf40K8ObotypGWslZaWt/eLlCODrErTia0mk5k4 Orqg== X-Gm-Message-State: AO0yUKX7SqO1kU9W1Zz8V+ypiaOEMKoDPUNs2NDaa34/ZKjxTDmF72zs Td5xAu5N/MTYDPCEADFaf5z7OQ== X-Google-Smtp-Source: AK7set/yNx+ztYP2VxaFAU39vtO3EyYHHb4UMqld4Hkcce54kgL2KmeBXxl+aeseQybRjjAqsX3EoQ== X-Received: by 2002:a2e:9bc9:0:b0:295:9970:9f73 with SMTP id w9-20020a2e9bc9000000b0029599709f73mr766874ljj.29.1677591872728; Tue, 28 Feb 2023 05:44:32 -0800 (PST) Received: from [192.168.1.101] (abym99.neoplus.adsl.tpnet.pl. [83.9.32.99]) by smtp.gmail.com with ESMTPSA id j20-20020a2e3c14000000b00295a583a20bsm1203975lja.74.2023.02.28.05.44.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 05:44:32 -0800 (PST) From: Konrad Dybcio Date: Tue, 28 Feb 2023 14:44:06 +0100 Subject: [PATCH v6 9/9] interconnect: qcom: msm8996: Promote to core_initcall MIME-Version: 1.0 Message-Id: <20230228-topic-qos-v6-9-3c37a349656f@linaro.org> References: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> In-Reply-To: <20230228-topic-qos-v6-0-3c37a349656f@linaro.org> To: Andy Gross , Bjorn Andersson , Georgi Djakov , Dmitry Baryshkov Cc: Bryan O'Donoghue , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1677591861; l=1279; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=5H1KJ2r/pG170nOV3v3bsq3JNwWcNEZN04iD5DDB2kw=; b=yLfZUq5Z5xp1LtHleRTEckj0GMI3jzrt+GgHuw7jqq6epsR/JDBZ7/xLzu+YM7S7gah/Xn53SHWj OuJtKAZHBxh/lb5Uh3LGOzCaGd3xbVcn5ijbSbrKBi1QLMJaEP7c X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The interconnect driver is (or soon will be) vital to many other devices, as it's not a given that the bootloader will set up enough bandwidth for us or that the values we come into are reasonable. Promote the driver to core_initcall to ensure the consumers (i.e. most "meaningful" parts of the SoC) can probe without deferrals. Signed-off-by: Konrad Dybcio --- drivers/interconnect/qcom/msm8996.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/msm8996.c b/drivers/interconnect/qcom/msm8996.c index 347fe59ec293..1eb51ed18b0b 100644 --- a/drivers/interconnect/qcom/msm8996.c +++ b/drivers/interconnect/qcom/msm8996.c @@ -2109,7 +2109,17 @@ static struct platform_driver qnoc_driver = { .sync_state = icc_sync_state, } }; -module_platform_driver(qnoc_driver); +static int __init qnoc_driver_init(void) +{ + return platform_driver_register(&qnoc_driver); +} +core_initcall(qnoc_driver_init); + +static void __exit qnoc_driver_exit(void) +{ + platform_driver_unregister(&qnoc_driver); +} +module_exit(qnoc_driver_exit); MODULE_AUTHOR("Yassine Oudjana "); MODULE_DESCRIPTION("Qualcomm MSM8996 NoC driver");