From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 1/1] drm/msm/a6xx: Add support for an interconnect path Date: Thu, 29 Nov 2018 10:26:36 -0700 Message-ID: <20181129172636.12839-2-jcrouse@codeaurora.org> References: <20181129172636.12839-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181129172636.12839-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: georgi.djakov-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org VHJ5IHRvIGdldCB0aGUgaW50ZXJjb25uZWN0IHBhdGggZm9yIHRoZSBHUFUgYW5kIHZvdGUgZm9y IHRoZSBtYXhpbXVtCmJhbmR3aWR0aCB0byBzdXBwb3J0IGFsbCBmcmVxdWVuY2llcy4gVGhpcyBp cyBuZWVkZWQgZm9yIHBlcmZvcm1hbmNlLgpMYXRlciB3ZSB3aWxsIHdhbnQgdG8gc2NhbGUgdGhl IGJhbmR3aWR0aCBiYXNlZCBvbiB0aGUgZnJlcXVlbmN5IHRvCmFsc28gb3B0aW1pemUgZm9yIHBv d2VyIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGRldmljZSB0cmVlCmluZnJhc3RydWN0dXJl IHRoYXQgZG9lcyBub3QgeWV0IGV4aXN0LgoKdjM6IEFic29sdXRlIGJhbmR3aWR0aCB2YWx1ZXMg c2hvdWxkIGJlIHNwZWNpZmllZCBpbiBLQnBzCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNl IDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2E2eHhfZ211LmMgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgfCAgOSArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dwdS5oICAgICAgICAgICB8ICAzICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9n bXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ211LmMKaW5kZXggNTQ2NTk5 YTdhYjA1Li5mZTBmNWIxMGZkOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2E2eHhfZ211LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUu YwpAQCAtMyw2ICszLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgogI2luY2x1ZGUgPGxp bnV4L3BtX29wcC5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVyY29ubmVjdC5oPgogI2luY2x1ZGUg PHNvYy9xY29tL2NtZC1kYi5oPgogCiAjaW5jbHVkZSAiYTZ4eF9ncHUuaCIKQEAgLTYzLDYgKzY0 LDkgQEAgc3RhdGljIGJvb2wgYTZ4eF9nbXVfZ3hfaXNfb24oc3RydWN0IGE2eHhfZ211ICpnbXUp CiAKIHN0YXRpYyB2b2lkIF9fYTZ4eF9nbXVfc2V0X2ZyZXEoc3RydWN0IGE2eHhfZ211ICpnbXUs IGludCBpbmRleCkKIHsKKwlzdHJ1Y3QgYTZ4eF9ncHUgKmE2eHhfZ3B1ID0gY29udGFpbmVyX29m KGdtdSwgc3RydWN0IGE2eHhfZ3B1LCBnbXUpOworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9f Z3B1ID0gJmE2eHhfZ3B1LT5iYXNlOworCXN0cnVjdCBtc21fZ3B1ICpncHUgPSAmYWRyZW5vX2dw dS0+YmFzZTsKIAlpbnQgcmV0OwogCiAJZ211X3dyaXRlKGdtdSwgUkVHX0E2WFhfR01VX0RDVlNf QUNLX09QVElPTiwgMCk7CkBAIC04NSw2ICs4OSwxMiBAQCBzdGF0aWMgdm9pZCBfX2E2eHhfZ211 X3NldF9mcmVxKHN0cnVjdCBhNnh4X2dtdSAqZ211LCBpbnQgaW5kZXgpCiAJCWRldl9lcnIoZ211 LT5kZXYsICJHTVUgc2V0IEdQVSBmcmVxdWVuY3kgZXJyb3I6ICVkXG4iLCByZXQpOwogCiAJZ211 LT5mcmVxID0gZ211LT5ncHVfZnJlcXNbaW5kZXhdOworCisJLyoKKwkgKiBFdmVudHVhbGx5IHdl IHdpbGwgd2FudCB0byBzY2FsZSB0aGUgcGF0aCB2b3RlIHdpdGggdGhlIGZyZXF1ZW5jeSBidXQK KwkgKiBmb3Igbm93IGxlYXZlIGl0IHQgYXQgbWF4IHNvIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGlz IG5vbWluYWwuCisJICovCisJaWNjX3NldChncHUtPmljY19wYXRoLCAwLCA3MjE2MDAwKTsKIH0K IAogdm9pZCBhNnh4X2dtdV9zZXRfZnJlcShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1bnNpZ25lZCBs b25nIGZyZXEpCkBAIC02ODAsNiArNjkwLDggQEAgaW50IGE2eHhfZ211X3Jlc2V0KHN0cnVjdCBh Nnh4X2dwdSAqYTZ4eF9ncHUpCiAKIGludCBhNnh4X2dtdV9yZXN1bWUoc3RydWN0IGE2eHhfZ3B1 ICphNnh4X2dwdSkKIHsKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9ICZhNnh4X2dw dS0+YmFzZTsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gJmFkcmVub19ncHUtPmJhc2U7CiAJc3Ry dWN0IGE2eHhfZ211ICpnbXUgPSAmYTZ4eF9ncHUtPmdtdTsKIAlpbnQgc3RhdHVzLCByZXQ7CiAK QEAgLTY5NSw2ICs3MDcsOSBAQCBpbnQgYTZ4eF9nbXVfcmVzdW1lKHN0cnVjdCBhNnh4X2dwdSAq YTZ4eF9ncHUpCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKKwkvKiBTZXQgdGhlIGJ1cyBxdW90 YSB0byBhIHJlYXNvbmFibGUgdmFsdWUgZm9yIGJvb3QgKi8KKwlpY2Nfc2V0KGdwdS0+aWNjX3Bh dGgsIDAsIDMwNzIwMDApOworCiAJYTZ4eF9nbXVfaXJxX2VuYWJsZShnbXUpOwogCiAJLyogQ2hl Y2sgdG8gc2VlIGlmIHdlIGFyZSBkb2luZyBhIGNvbGQgb3Igd2FybSBib290ICovCkBAIC03MzUs NiArNzUwLDggQEAgYm9vbCBhNnh4X2dtdV9pc2lkbGUoc3RydWN0IGE2eHhfZ211ICpnbXUpCiAK IGludCBhNnh4X2dtdV9zdG9wKHN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9ncHUpCiB7CisJc3RydWN0 IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSAmYTZ4eF9ncHUtPmJhc2U7CisJc3RydWN0IG1zbV9n cHUgKmdwdSA9ICZhZHJlbm9fZ3B1LT5iYXNlOwogCXN0cnVjdCBhNnh4X2dtdSAqZ211ID0gJmE2 eHhfZ3B1LT5nbXU7CiAJdTMyIHZhbDsKIApAQCAtNzgxLDYgKzc5OCw5IEBAIGludCBhNnh4X2dt dV9zdG9wKHN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9ncHUpCiAJLyogVGVsbCBSUE1oIHRvIHBvd2Vy IG9mZiB0aGUgR1BVICovCiAJYTZ4eF9ycG1oX3N0b3AoZ211KTsKIAorCS8qIFJlbW92ZSB0aGUg YnVzIHZvdGUgKi8KKwlpY2Nfc2V0KGdwdS0+aWNjX3BhdGgsIDAsIDApOworCiAJY2xrX2J1bGtf ZGlzYWJsZV91bnByZXBhcmUoZ211LT5ucl9jbG9ja3MsIGdtdS0+Y2xvY2tzKTsKIAogCXBtX3J1 bnRpbWVfcHV0X3N5bmMoZ211LT5kZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9hZHJlbm8vYWRyZW5vX2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5v X2dwdS5jCmluZGV4IDkzZDcwZjRhMjE1NC4uOWJhYjQ5MTkxMmNmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5jbHVkZSA8bGludXgv c2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVyY29ubmVjdC5oPgogI2luY2x1ZGUgImFkcmVu b19ncHUuaCIKICNpbmNsdWRlICJtc21fZ2VtLmgiCiAjaW5jbHVkZSAibXNtX21tdS5oIgpAQCAt Njk1LDYgKzY5NiwxMSBAQCBzdGF0aWMgaW50IGFkcmVub19nZXRfcHdybGV2ZWxzKHN0cnVjdCBk ZXZpY2UgKmRldiwKIAogCURCRygiZmFzdF9yYXRlPSV1LCBzbG93X3JhdGU9MjcwMDAwMDAiLCBn cHUtPmZhc3RfcmF0ZSk7CiAKKwkvKiBDaGVjayBmb3IgYW4gaW50ZXJjb25uZWN0IHBhdGggZm9y IHRoZSBidXMgKi8KKwlncHUtPmljY19wYXRoID0gb2ZfaWNjX2dldChkZXYsICJwb3J0MCIpOwor CWlmIChJU19FUlIoZ3B1LT5pY2NfcGF0aCkpCisJCWdwdS0+aWNjX3BhdGggPSBOVUxMOworCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTczMywxMCArNzM5LDEzIEBAIGludCBhZHJlbm9fZ3B1X2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAog dm9pZCBhZHJlbm9fZ3B1X2NsZWFudXAoc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUpCiB7 CisJc3RydWN0IG1zbV9ncHUgKmdwdSA9ICZhZHJlbm9fZ3B1LT5iYXNlOwogCXVuc2lnbmVkIGlu dCBpOwogCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYWRyZW5vX2dwdS0+aW5mby0+Zncp OyBpKyspCiAJCXJlbGVhc2VfZmlybXdhcmUoYWRyZW5vX2dwdS0+ZndbaV0pOwogCisJaWNjX3B1 dChncHUtPmljY19wYXRoKTsKKwogCW1zbV9ncHVfY2xlYW51cCgmYWRyZW5vX2dwdS0+YmFzZSk7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaCBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5oCmluZGV4IGY4MmJhYzA4NjY2Ni4uN2IwNGQxNjY1NTU1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9ncHUuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSA8bGludXgv Y2xrLmg+CiAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8 bGludXgvaW50ZXJjb25uZWN0Lmg+CiAKICNpbmNsdWRlICJtc21fZHJ2LmgiCiAjaW5jbHVkZSAi bXNtX2ZlbmNlLmgiCkBAIC0xMTksNiArMTIwLDggQEAgc3RydWN0IG1zbV9ncHUgewogCXN0cnVj dCBjbGsgKmViaTFfY2xrLCAqY29yZV9jbGssICpyYmJtdGltZXJfY2xrOwogCXVpbnQzMl90IGZh c3RfcmF0ZTsKIAorCXN0cnVjdCBpY2NfcGF0aCAqaWNjX3BhdGg7CisKIAkvKiBIYW5nIGFuZCBJ bmFjdGl2aXR5IERldGVjdGlvbjoKIAkgKi8KICNkZWZpbmUgRFJNX01TTV9JTkFDVElWRV9QRVJJ T0QgICA2NiAvKiBpbiBtcyAocm91Z2hseSBmb3VyIGZyYW1lcykgKi8KLS0gCjIuMTguMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1h aWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg== 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=-10.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,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 3D7DAC43441 for ; Thu, 29 Nov 2018 17:27:10 +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 0A72F20863 for ; Thu, 29 Nov 2018 17:27:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="P/QwrcBa"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="JDeBLy7P"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="ltkowLdo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0A72F20863 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:References: In-Reply-To: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:List-Owner; bh=7GvQbGcCR5uAaHgxvlrihuLAzsSlrpEgvOOQS8wrGII=; b=P/QwrcBa4sIwclGMt61kp/5Tpp fzqFQGlIPz1vLtXB/QDvN0A3dDiBPejiYrYHnKmv3CV05vBEUqHc6dN1QZSqxWHV8VY90YVvI7aWj J4xbC8M+eYrmLC+cahS/81Npv4iLMQySdnAzN6BgAgPR+69cCewLrofMMb4CKH34TAwTgAJXTxVnC 7LTFwZVeRaWDhMIZsmZh7UudozZ3axTIdykDkRmn/XWB0bqwTlLnygpMwPSlB4IaXo2h0rdqvXwVd wxw9ed7V7/KS6fxqK4z9OcT2HdDhS+ZQgJVLui+M9bU55gwSBFcNVYd0nmaEKJK40uC7PoIgYEF2E 0OEMaMGQ==; 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 1gSQ5g-0001QM-9E; Thu, 29 Nov 2018 17:27:04 +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 1gSQ5S-0001FZ-SY for linux-arm-kernel@lists.infradead.org; Thu, 29 Nov 2018 17:26:52 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 4309660251; Thu, 29 Nov 2018 17:26:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512401; bh=3elEZXu4SNQdQzK8jfVJt9NlkcfEg1AgjFBSSsmdz8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JDeBLy7PFTw0vcRlV8r4qXeTZvj+5Q9LNM76fCqI0+u06N/8FjxmJ1UXFZTTIDMn9 9C80CA4Re7CZX+rco5haaMq/8wjehjetNOrTotsRNbQxngXt+X7awhEgP82EohWi0R ovi2pGsvnj5//W1KQrWcYZyroNOWSwtzvr9VYSLc= 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 F0B07602FE; Thu, 29 Nov 2018 17:26:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512400; bh=3elEZXu4SNQdQzK8jfVJt9NlkcfEg1AgjFBSSsmdz8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ltkowLdooawje0vSjFoZznoJ36HYxgJ4DJKYFdboOZjN8SLpyGOnL2aZQgKJ6SIrk rvR52exwRF+ydRwCeAQ4RJVeO9+3bGoXfE2SpSZP5u90RSisTMG5f6lOkahcYJRac9 clVp30yIUQf5mEPosUrEsJeNjBGpRtw/eK76FgWM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org F0B07602FE 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: georgi.djakov@linaro.org Subject: [PATCH 1/1] drm/msm/a6xx: Add support for an interconnect path Date: Thu, 29 Nov 2018 10:26:36 -0700 Message-Id: <20181129172636.12839-2-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181129172636.12839-1-jcrouse@codeaurora.org> References: <20181129172636.12839-1-jcrouse@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181129_092650_967983_27BC162B X-CRM114-Status: GOOD ( 17.99 ) 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, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.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: Absolute bandwidth values should be specified in KBps Signed-off-by: Jordan Crouse --- 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 +++ 3 files changed, 32 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 546599a7ab05..fe0f5b10fd9c 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -3,6 +3,7 @@ #include #include +#include #include #include "a6xx_gpu.h" @@ -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 t at max so that the performance is nominal. + */ + icc_set(gpu->icc_path, 0, 7216000); } 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, 3072000); + 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..9bab491912cf 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "adreno_gpu.h" #include "msm_gem.h" #include "msm_mmu.h" @@ -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, "port0"); + 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..7b04d1665555 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -20,6 +20,7 @@ #include #include +#include #include "msm_drv.h" #include "msm_fence.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,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 46DBBC43610 for ; Thu, 29 Nov 2018 17:26:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E3A5520863 for ; Thu, 29 Nov 2018 17:26:45 +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="JDeBLy7P"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="ltkowLdo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E3A5520863 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 S1729954AbeK3Ecu (ORCPT ); Thu, 29 Nov 2018 23:32:50 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:41730 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728535AbeK3Ect (ORCPT ); Thu, 29 Nov 2018 23:32:49 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BE0C7602FE; Thu, 29 Nov 2018 17:26:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512401; bh=3elEZXu4SNQdQzK8jfVJt9NlkcfEg1AgjFBSSsmdz8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JDeBLy7PFTw0vcRlV8r4qXeTZvj+5Q9LNM76fCqI0+u06N/8FjxmJ1UXFZTTIDMn9 9C80CA4Re7CZX+rco5haaMq/8wjehjetNOrTotsRNbQxngXt+X7awhEgP82EohWi0R ovi2pGsvnj5//W1KQrWcYZyroNOWSwtzvr9VYSLc= 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 F0B07602FE; Thu, 29 Nov 2018 17:26:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512400; bh=3elEZXu4SNQdQzK8jfVJt9NlkcfEg1AgjFBSSsmdz8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ltkowLdooawje0vSjFoZznoJ36HYxgJ4DJKYFdboOZjN8SLpyGOnL2aZQgKJ6SIrk rvR52exwRF+ydRwCeAQ4RJVeO9+3bGoXfE2SpSZP5u90RSisTMG5f6lOkahcYJRac9 clVp30yIUQf5mEPosUrEsJeNjBGpRtw/eK76FgWM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org F0B07602FE 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: georgi.djakov@linaro.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 1/1] drm/msm/a6xx: Add support for an interconnect path Date: Thu, 29 Nov 2018 10:26:36 -0700 Message-Id: <20181129172636.12839-2-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181129172636.12839-1-jcrouse@codeaurora.org> References: <20181129172636.12839-1-jcrouse@codeaurora.org> 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: Absolute bandwidth values should be specified in KBps Signed-off-by: Jordan Crouse --- 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 +++ 3 files changed, 32 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 546599a7ab05..fe0f5b10fd9c 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -3,6 +3,7 @@ #include #include +#include #include #include "a6xx_gpu.h" @@ -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 t at max so that the performance is nominal. + */ + icc_set(gpu->icc_path, 0, 7216000); } 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, 3072000); + 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..9bab491912cf 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "adreno_gpu.h" #include "msm_gem.h" #include "msm_mmu.h" @@ -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, "port0"); + 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..7b04d1665555 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -20,6 +20,7 @@ #include #include +#include #include "msm_drv.h" #include "msm_fence.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