From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 7 Dec 2018 10:06:56 -0700 Message-ID: <20181207170656.13208-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: freedreno@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, georgi.djakov@linaro.org, linux-arm-kernel@lists.infradead.org List-Id: linux-arm-msm@vger.kernel.org VHJ5IHRvIGdldCB0aGUgaW50ZXJjb25uZWN0IHBhdGggZm9yIHRoZSBHUFUgYW5kIHZvdGUgZm9y IHRoZSBtYXhpbXVtCmJhbmR3aWR0aCB0byBzdXBwb3J0IGFsbCBmcmVxdWVuY2llcy4gVGhpcyBp cyBuZWVkZWQgZm9yIHBlcmZvcm1hbmNlLgpMYXRlciB3ZSB3aWxsIHdhbnQgdG8gc2NhbGUgdGhl IGJhbmR3aWR0aCBiYXNlZCBvbiB0aGUgZnJlcXVlbmN5IHRvCmFsc28gb3B0aW1pemUgZm9yIHBv d2VyIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGRldmljZSB0cmVlCmluZnJhc3RydWN0dXJl IHRoYXQgZG9lcyBub3QgeWV0IGV4aXN0LgoKdjM6IFVzZSBtYWNyb3MgYW5kIGNoYW5nZSBwb3J0 IHN0cmluZyBwZXIgR2VvcmdpIERqYWtvdgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8 amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcg ICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5j ICAgfCAyMCArKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YWRyZW5vX2dwdS5jIHwgIDkgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUu aCAgICAgICAgICAgfCAgMyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vS2NvbmZpZwppbmRleCA4NDNhOWQ0MGMwNWUuLjk5MGM0MzUwZjBjNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v S2NvbmZpZwpAQCAtNSw2ICs1LDcgQEAgY29uZmlnIERSTV9NU00KIAlkZXBlbmRzIG9uIEFSQ0hf UUNPTSB8fCAoQVJNICYmIENPTVBJTEVfVEVTVCkKIAlkZXBlbmRzIG9uIE9GICYmIENPTU1PTl9D TEsKIAlkZXBlbmRzIG9uIE1NVQorCWRlcGVuZHMgb24gSU5URVJDT05ORUNUIHx8ICFJTlRFUkNP Tk5FQ1QKIAlzZWxlY3QgUUNPTV9NRFRfTE9BREVSIGlmIEFSQ0hfUUNPTQogCXNlbGVjdCBSRUdV TEFUT1IKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2E2eHhfZ211LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4 X2dtdS5jCmluZGV4IDU0NjU5OWE3YWIwNS4uZjM3YTliZmU1YzMwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E2eHhfZ211LmMKQEAgLTIsNiArMiw3IEBACiAvKiBDb3B5cmlnaHQgKGMpIDIw MTctMjAxOCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKi8KIAog I2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVyY29ubmVjdC5oPgog I2luY2x1ZGUgPGxpbnV4L3BtX29wcC5oPgogI2luY2x1ZGUgPHNvYy9xY29tL2NtZC1kYi5oPgog CkBAIC02Myw2ICs2NCw5IEBAIHN0YXRpYyBib29sIGE2eHhfZ211X2d4X2lzX29uKHN0cnVjdCBh Nnh4X2dtdSAqZ211KQogCiBzdGF0aWMgdm9pZCBfX2E2eHhfZ211X3NldF9mcmVxKHN0cnVjdCBh Nnh4X2dtdSAqZ211LCBpbnQgaW5kZXgpCiB7CisJc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSA9 IGNvbnRhaW5lcl9vZihnbXUsIHN0cnVjdCBhNnh4X2dwdSwgZ211KTsKKwlzdHJ1Y3QgYWRyZW5v X2dwdSAqYWRyZW5vX2dwdSA9ICZhNnh4X2dwdS0+YmFzZTsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1 ID0gJmFkcmVub19ncHUtPmJhc2U7CiAJaW50IHJldDsKIAogCWdtdV93cml0ZShnbXUsIFJFR19B NlhYX0dNVV9EQ1ZTX0FDS19PUFRJT04sIDApOwpAQCAtODUsNiArODksMTIgQEAgc3RhdGljIHZv aWQgX19hNnh4X2dtdV9zZXRfZnJlcShzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSwgaW50IGluZGV4KQog CQlkZXZfZXJyKGdtdS0+ZGV2LCAiR01VIHNldCBHUFUgZnJlcXVlbmN5IGVycm9yOiAlZFxuIiwg cmV0KTsKIAogCWdtdS0+ZnJlcSA9IGdtdS0+Z3B1X2ZyZXFzW2luZGV4XTsKKworCS8qCisJICog RXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdG8gc2NhbGUgdGhlIHBhdGggdm90ZSB3aXRoIHRoZSBm cmVxdWVuY3kgYnV0CisJICogZm9yIG5vdyBsZWF2ZSBpdCBhdCBtYXggc28gdGhhdCB0aGUgcGVy Zm9ybWFuY2UgaXMgbm9taW5hbC4KKwkgKi8KKwlpY2Nfc2V0KGdwdS0+aWNjX3BhdGgsIDAsIE1C cHNfdG9faWNjKDcyMTYpKTsKIH0KIAogdm9pZCBhNnh4X2dtdV9zZXRfZnJlcShzdHJ1Y3QgbXNt X2dwdSAqZ3B1LCB1bnNpZ25lZCBsb25nIGZyZXEpCkBAIC02ODAsNiArNjkwLDggQEAgaW50IGE2 eHhfZ211X3Jlc2V0KHN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9ncHUpCiAKIGludCBhNnh4X2dtdV9y ZXN1bWUoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSkKIHsKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAq YWRyZW5vX2dwdSA9ICZhNnh4X2dwdS0+YmFzZTsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gJmFk cmVub19ncHUtPmJhc2U7CiAJc3RydWN0IGE2eHhfZ211ICpnbXUgPSAmYTZ4eF9ncHUtPmdtdTsK IAlpbnQgc3RhdHVzLCByZXQ7CiAKQEAgLTY5NSw2ICs3MDcsOSBAQCBpbnQgYTZ4eF9nbXVfcmVz dW1lKHN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9ncHUpCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAK KwkvKiBTZXQgdGhlIGJ1cyBxdW90YSB0byBhIHJlYXNvbmFibGUgdmFsdWUgZm9yIGJvb3QgKi8K KwlpY2Nfc2V0KGdwdS0+aWNjX3BhdGgsIDAsIE1CcHNfdG9faWNjKDMwNzIpKTsKKwogCWE2eHhf Z211X2lycV9lbmFibGUoZ211KTsKIAogCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgZG9pbmcg YSBjb2xkIG9yIHdhcm0gYm9vdCAqLwpAQCAtNzM1LDYgKzc1MCw4IEBAIGJvb2wgYTZ4eF9nbXVf aXNpZGxlKHN0cnVjdCBhNnh4X2dtdSAqZ211KQogCiBpbnQgYTZ4eF9nbXVfc3RvcChzdHJ1Y3Qg YTZ4eF9ncHUgKmE2eHhfZ3B1KQogeworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0g JmE2eHhfZ3B1LT5iYXNlOworCXN0cnVjdCBtc21fZ3B1ICpncHUgPSAmYWRyZW5vX2dwdS0+YmFz ZTsKIAlzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSA9ICZhNnh4X2dwdS0+Z211OwogCXUzMiB2YWw7CiAK QEAgLTc4MSw2ICs3OTgsOSBAQCBpbnQgYTZ4eF9nbXVfc3RvcChzdHJ1Y3QgYTZ4eF9ncHUgKmE2 eHhfZ3B1KQogCS8qIFRlbGwgUlBNaCB0byBwb3dlciBvZmYgdGhlIEdQVSAqLwogCWE2eHhfcnBt aF9zdG9wKGdtdSk7CiAKKwkvKiBSZW1vdmUgdGhlIGJ1cyB2b3RlICovCisJaWNjX3NldChncHUt PmljY19wYXRoLCAwLCAwKTsKKwogCWNsa19idWxrX2Rpc2FibGVfdW5wcmVwYXJlKGdtdS0+bnJf Y2xvY2tzLCBnbXUtPmNsb2Nrcyk7CiAKIAlwbV9ydW50aW1lX3B1dF9zeW5jKGdtdS0+ZGV2KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYwppbmRleCA5M2Q3MGY0YTIxNTQu Ljc0MDNhZGU5YWFiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRy ZW5vX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYwpA QCAtMTgsNiArMTgsNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9hc2NpaTg1Lmg+CisjaW5j bHVkZSA8bGludXgvaW50ZXJjb25uZWN0Lmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAj aW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgpAQCAtNjk1 LDYgKzY5NiwxMSBAQCBzdGF0aWMgaW50IGFkcmVub19nZXRfcHdybGV2ZWxzKHN0cnVjdCBkZXZp Y2UgKmRldiwKIAogCURCRygiZmFzdF9yYXRlPSV1LCBzbG93X3JhdGU9MjcwMDAwMDAiLCBncHUt PmZhc3RfcmF0ZSk7CiAKKwkvKiBDaGVjayBmb3IgYW4gaW50ZXJjb25uZWN0IHBhdGggZm9yIHRo ZSBidXMgKi8KKwlncHUtPmljY19wYXRoID0gb2ZfaWNjX2dldChkZXYsICJnZngtbWVtIik7CisJ aWYgKElTX0VSUihncHUtPmljY19wYXRoKSkKKwkJZ3B1LT5pY2NfcGF0aCA9IE5VTEw7CisKIAly ZXR1cm4gMDsKIH0KIApAQCAtNzMzLDEwICs3MzksMTMgQEAgaW50IGFkcmVub19ncHVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiB2 b2lkIGFkcmVub19ncHVfY2xlYW51cChzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSkKIHsK KwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gJmFkcmVub19ncHUtPmJhc2U7CiAJdW5zaWduZWQgaW50 IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhZHJlbm9fZ3B1LT5pbmZvLT5mdyk7 IGkrKykKIAkJcmVsZWFzZV9maXJtd2FyZShhZHJlbm9fZ3B1LT5md1tpXSk7CiAKKwlpY2NfcHV0 KGdwdS0+aWNjX3BhdGgpOworCiAJbXNtX2dwdV9jbGVhbnVwKCZhZHJlbm9fZ3B1LT5iYXNlKTsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZ3B1LmgKaW5kZXggZjgyYmFjMDg2NjY2Li4xMmZjNWIxY2IzOWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2dwdS5oCkBAIC0xOSw2ICsxOSw3IEBACiAjZGVmaW5lIF9fTVNNX0dQVV9I X18KIAogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVyY29ubmVj dC5oPgogI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgogCiAjaW5jbHVkZSAi bXNtX2Rydi5oIgpAQCAtMTE5LDYgKzEyMCw4IEBAIHN0cnVjdCBtc21fZ3B1IHsKIAlzdHJ1Y3Qg Y2xrICplYmkxX2NsaywgKmNvcmVfY2xrLCAqcmJibXRpbWVyX2NsazsKIAl1aW50MzJfdCBmYXN0 X3JhdGU7CiAKKwlzdHJ1Y3QgaWNjX3BhdGggKmljY19wYXRoOworCiAJLyogSGFuZyBhbmQgSW5h Y3Rpdml0eSBEZXRlY3Rpb246CiAJICovCiAjZGVmaW5lIERSTV9NU01fSU5BQ1RJVkVfUEVSSU9E ICAgNjYgLyogaW4gbXMgKHJvdWdobHkgZm91ciBmcmFtZXMpICovCi0tIAoyLjE4LjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,T_DKIMWL_WL_HIGH,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63C36C64EB1 for ; Fri, 7 Dec 2018 17:07:19 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 308682082D for ; Fri, 7 Dec 2018 17:07:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Gqkn6qci"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="gCh8xvlV"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="fSCus484" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 308682082D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=UFDMA7SzIJnNqBWvKTnmhUrpRtqkjPpHIWWpD9ZFMjc=; b=Gqk n6qciT2VAI6eoh/IHxJWMSPhUTo/BhplXyvzIsMIiGb8GbdK2Ys43zM4A6moLfuqbNoMxsXhOI1H8 pn0NnRQTUU0IkkjA3z/ldRiTw6BCUglBxHtnkLTpIi7dJvXTG/c5GWccZmV7Ust/KFFHhoyXQsGFT 2MK0VzC04EbDh9A76aAhqYhLtIagACfNhjTjmY0W5PJDmgR2K9bB73CXfbA84LfqxibNBtyRJHpjQ ILmahDO26r9OK5NHeI+HrOA/HE3jd6gtR1F3RH6rFL5a4lV+xKTKtPwlE5peBZEki8NO2SvNxZ+SE WNsWTHteHa+IZ56P+PTsLxBYJLdcFBw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gVJau-0007Sx-Eo; Fri, 07 Dec 2018 17:07:16 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gVJap-0007Ra-Af for linux-arm-kernel@lists.infradead.org; Fri, 07 Dec 2018 17:07:13 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 196F7601D7; Fri, 7 Dec 2018 17:07:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1544202420; bh=ctGa3E2FImQ/l5c/QYJfD6LwEaRRe8nR8VQJ3p8Aesw=; h=From:To:Cc:Subject:Date:From; b=gCh8xvlVRClxKD2Exvcr44dLMyr3BkVbbYE+OIEwFUUClcMyd6XGOVPNfA4pdEpr8 QYt36hl7G1DMFvnznfXb+zNm4QPxHRbh7ThEI3hfHQXjw3hYm2ypMa0A4m//Sr6sEW W3V6Yfidnhqz+AFqj0MDxr4X3SQIKyr5WF3wdUE4= Received: from jcrouse-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id E640D6063A; Fri, 7 Dec 2018 17:06:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1544202419; bh=ctGa3E2FImQ/l5c/QYJfD6LwEaRRe8nR8VQJ3p8Aesw=; h=From:To:Cc:Subject:Date:From; b=fSCus484AruRjOiHKSQeQHP3SC5u8vl5USGgnultqGJ2wu1Bc9MGGfobc2/3krPhQ Kkf/r1puGUEIzfbDUr2HBsmQryIfBYvLOzf9MDt7iIvgbvvVntHO0FMobrTuLX/wAz EO6SIUZAJzZl0Y0YMNWYXsopOc4dnOJEKHACIRnM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E640D6063A Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Subject: [PATCH] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 7 Dec 2018 10:06:56 -0700 Message-Id: <20181207170656.13208-1-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181207_090711_403983_C30C95B8 X-CRM114-Status: GOOD ( 18.21 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-msm@vger.kernel.org, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, georgi.djakov@linaro.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Try to get the interconnect path for the GPU and vote for the maximum bandwidth to support all frequencies. This is needed for performance. Later we will want to scale the bandwidth based on the frequency to also optimize for power but that will require some device tree infrastructure that does not yet exist. v3: Use macros and change port string per Georgi Djakov Signed-off-by: Jordan Crouse --- drivers/gpu/drm/msm/Kconfig | 1 + drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 20 ++++++++++++++++++++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 9 +++++++++ drivers/gpu/drm/msm/msm_gpu.h | 3 +++ 4 files changed, 33 insertions(+) diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index 843a9d40c05e..990c4350f0c4 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -5,6 +5,7 @@ config DRM_MSM depends on ARCH_QCOM || (ARM && COMPILE_TEST) depends on OF && COMMON_CLK depends on MMU + depends on INTERCONNECT || !INTERCONNECT select QCOM_MDT_LOADER if ARCH_QCOM select REGULATOR select DRM_KMS_HELPER diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 546599a7ab05..f37a9bfe5c30 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -2,6 +2,7 @@ /* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. */ #include +#include #include #include @@ -63,6 +64,9 @@ static bool a6xx_gmu_gx_is_on(struct a6xx_gmu *gmu) static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) { + struct a6xx_gpu *a6xx_gpu = container_of(gmu, struct a6xx_gpu, gmu); + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; int ret; gmu_write(gmu, REG_A6XX_GMU_DCVS_ACK_OPTION, 0); @@ -85,6 +89,12 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) dev_err(gmu->dev, "GMU set GPU frequency error: %d\n", ret); gmu->freq = gmu->gpu_freqs[index]; + + /* + * Eventually we will want to scale the path vote with the frequency but + * for now leave it at max so that the performance is nominal. + */ + icc_set(gpu->icc_path, 0, MBps_to_icc(7216)); } void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) @@ -680,6 +690,8 @@ int a6xx_gmu_reset(struct a6xx_gpu *a6xx_gpu) int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) { + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; struct a6xx_gmu *gmu = &a6xx_gpu->gmu; int status, ret; @@ -695,6 +707,9 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) if (ret) goto out; + /* Set the bus quota to a reasonable value for boot */ + icc_set(gpu->icc_path, 0, MBps_to_icc(3072)); + a6xx_gmu_irq_enable(gmu); /* Check to see if we are doing a cold or warm boot */ @@ -735,6 +750,8 @@ bool a6xx_gmu_isidle(struct a6xx_gmu *gmu) int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu) { + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; struct a6xx_gmu *gmu = &a6xx_gpu->gmu; u32 val; @@ -781,6 +798,9 @@ int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu) /* Tell RPMh to power off the GPU */ a6xx_rpmh_stop(gmu); + /* Remove the bus vote */ + icc_set(gpu->icc_path, 0, 0); + clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks); pm_runtime_put_sync(gmu->dev); diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 93d70f4a2154..7403ade9aabc 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -695,6 +696,11 @@ static int adreno_get_pwrlevels(struct device *dev, DBG("fast_rate=%u, slow_rate=27000000", gpu->fast_rate); + /* Check for an interconnect path for the bus */ + gpu->icc_path = of_icc_get(dev, "gfx-mem"); + if (IS_ERR(gpu->icc_path)) + gpu->icc_path = NULL; + return 0; } @@ -733,10 +739,13 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu) { + struct msm_gpu *gpu = &adreno_gpu->base; unsigned int i; for (i = 0; i < ARRAY_SIZE(adreno_gpu->info->fw); i++) release_firmware(adreno_gpu->fw[i]); + icc_put(gpu->icc_path); + msm_gpu_cleanup(&adreno_gpu->base); } diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index f82bac086666..12fc5b1cb39d 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -19,6 +19,7 @@ #define __MSM_GPU_H__ #include +#include #include #include "msm_drv.h" @@ -119,6 +120,8 @@ struct msm_gpu { struct clk *ebi1_clk, *core_clk, *rbbmtimer_clk; uint32_t fast_rate; + struct icc_path *icc_path; + /* Hang and Inactivity Detection: */ #define DRM_MSM_INACTIVE_PERIOD 66 /* in ms (roughly four frames) */ -- 2.18.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC2F3C07E85 for ; Fri, 7 Dec 2018 17:07:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8758C2082D for ; Fri, 7 Dec 2018 17:07:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="gCh8xvlV"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="fSCus484" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8758C2082D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726164AbeLGRHC (ORCPT ); Fri, 7 Dec 2018 12:07:02 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:44376 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726045AbeLGRHB (ORCPT ); Fri, 7 Dec 2018 12:07:01 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 6EADC609F3; Fri, 7 Dec 2018 17:07:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1544202420; bh=ctGa3E2FImQ/l5c/QYJfD6LwEaRRe8nR8VQJ3p8Aesw=; h=From:To:Cc:Subject:Date:From; b=gCh8xvlVRClxKD2Exvcr44dLMyr3BkVbbYE+OIEwFUUClcMyd6XGOVPNfA4pdEpr8 QYt36hl7G1DMFvnznfXb+zNm4QPxHRbh7ThEI3hfHQXjw3hYm2ypMa0A4m//Sr6sEW W3V6Yfidnhqz+AFqj0MDxr4X3SQIKyr5WF3wdUE4= Received: from jcrouse-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id E640D6063A; Fri, 7 Dec 2018 17:06:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1544202419; bh=ctGa3E2FImQ/l5c/QYJfD6LwEaRRe8nR8VQJ3p8Aesw=; h=From:To:Cc:Subject:Date:From; b=fSCus484AruRjOiHKSQeQHP3SC5u8vl5USGgnultqGJ2wu1Bc9MGGfobc2/3krPhQ Kkf/r1puGUEIzfbDUr2HBsmQryIfBYvLOzf9MDt7iIvgbvvVntHO0FMobrTuLX/wAz EO6SIUZAJzZl0Y0YMNWYXsopOc4dnOJEKHACIRnM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E640D6063A Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, georgi.djakov@linaro.org, dianders@chromium.org Subject: [PATCH] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 7 Dec 2018 10:06:56 -0700 Message-Id: <20181207170656.13208-1-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Try to get the interconnect path for the GPU and vote for the maximum bandwidth to support all frequencies. This is needed for performance. Later we will want to scale the bandwidth based on the frequency to also optimize for power but that will require some device tree infrastructure that does not yet exist. v3: Use macros and change port string per Georgi Djakov Signed-off-by: Jordan Crouse --- drivers/gpu/drm/msm/Kconfig | 1 + drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 20 ++++++++++++++++++++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 9 +++++++++ drivers/gpu/drm/msm/msm_gpu.h | 3 +++ 4 files changed, 33 insertions(+) diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index 843a9d40c05e..990c4350f0c4 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -5,6 +5,7 @@ config DRM_MSM depends on ARCH_QCOM || (ARM && COMPILE_TEST) depends on OF && COMMON_CLK depends on MMU + depends on INTERCONNECT || !INTERCONNECT select QCOM_MDT_LOADER if ARCH_QCOM select REGULATOR select DRM_KMS_HELPER diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 546599a7ab05..f37a9bfe5c30 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -2,6 +2,7 @@ /* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. */ #include +#include #include #include @@ -63,6 +64,9 @@ static bool a6xx_gmu_gx_is_on(struct a6xx_gmu *gmu) static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) { + struct a6xx_gpu *a6xx_gpu = container_of(gmu, struct a6xx_gpu, gmu); + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; int ret; gmu_write(gmu, REG_A6XX_GMU_DCVS_ACK_OPTION, 0); @@ -85,6 +89,12 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) dev_err(gmu->dev, "GMU set GPU frequency error: %d\n", ret); gmu->freq = gmu->gpu_freqs[index]; + + /* + * Eventually we will want to scale the path vote with the frequency but + * for now leave it at max so that the performance is nominal. + */ + icc_set(gpu->icc_path, 0, MBps_to_icc(7216)); } void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) @@ -680,6 +690,8 @@ int a6xx_gmu_reset(struct a6xx_gpu *a6xx_gpu) int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) { + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; struct a6xx_gmu *gmu = &a6xx_gpu->gmu; int status, ret; @@ -695,6 +707,9 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) if (ret) goto out; + /* Set the bus quota to a reasonable value for boot */ + icc_set(gpu->icc_path, 0, MBps_to_icc(3072)); + a6xx_gmu_irq_enable(gmu); /* Check to see if we are doing a cold or warm boot */ @@ -735,6 +750,8 @@ bool a6xx_gmu_isidle(struct a6xx_gmu *gmu) int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu) { + struct adreno_gpu *adreno_gpu = &a6xx_gpu->base; + struct msm_gpu *gpu = &adreno_gpu->base; struct a6xx_gmu *gmu = &a6xx_gpu->gmu; u32 val; @@ -781,6 +798,9 @@ int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu) /* Tell RPMh to power off the GPU */ a6xx_rpmh_stop(gmu); + /* Remove the bus vote */ + icc_set(gpu->icc_path, 0, 0); + clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks); pm_runtime_put_sync(gmu->dev); diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 93d70f4a2154..7403ade9aabc 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -695,6 +696,11 @@ static int adreno_get_pwrlevels(struct device *dev, DBG("fast_rate=%u, slow_rate=27000000", gpu->fast_rate); + /* Check for an interconnect path for the bus */ + gpu->icc_path = of_icc_get(dev, "gfx-mem"); + if (IS_ERR(gpu->icc_path)) + gpu->icc_path = NULL; + return 0; } @@ -733,10 +739,13 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu) { + struct msm_gpu *gpu = &adreno_gpu->base; unsigned int i; for (i = 0; i < ARRAY_SIZE(adreno_gpu->info->fw); i++) release_firmware(adreno_gpu->fw[i]); + icc_put(gpu->icc_path); + msm_gpu_cleanup(&adreno_gpu->base); } diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index f82bac086666..12fc5b1cb39d 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -19,6 +19,7 @@ #define __MSM_GPU_H__ #include +#include #include #include "msm_drv.h" @@ -119,6 +120,8 @@ struct msm_gpu { struct clk *ebi1_clk, *core_clk, *rbbmtimer_clk; uint32_t fast_rate; + struct icc_path *icc_path; + /* Hang and Inactivity Detection: */ #define DRM_MSM_INACTIVE_PERIOD 66 /* in ms (roughly four frames) */ -- 2.18.0