From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH v6] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 18 Jan 2019 13:24:18 -0700 Message-ID: <1547843058-27933-1-git-send-email-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: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Kees Cook , Jonathan Marek , David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Sharat Masetty , dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bjorn.andersson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, Rob Clark , Mamta Shukla , Daniel Vetter , andy.gross-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, Colin Ian King , Stephen Boyd , georgi.djakov-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org VHJ5IHRvIGdldCB0aGUgaW50ZXJjb25uZWN0IHBhdGggZm9yIHRoZSBHUFUgYW5kIHZvdGUgZm9y IHRoZSBtYXhpbXVtCmJhbmR3aWR0aCB0byBzdXBwb3J0IGFsbCBmcmVxdWVuY2llcy4gVGhpcyBp cyBuZWVkZWQgZm9yIHBlcmZvcm1hbmNlLgpMYXRlciB3ZSB3aWxsIHdhbnQgdG8gc2NhbGUgdGhl IGJhbmR3aWR0aCBiYXNlZCBvbiB0aGUgZnJlcXVlbmN5IHRvCmFsc28gb3B0aW1pemUgZm9yIHBv d2VyIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGRldmljZSB0cmVlCmluZnJhc3RydWN0dXJl IHRoYXQgZG9lcyBub3QgeWV0IGV4aXN0LgoKdjY6IHVzZSBpY2Nfc2V0X2J3KCkgaW5zdGVhZCBv ZiBpY2Nfc2V0KCkKdjU6IFJlbW92ZSBoYXJkY29kZWQgaW50ZXJjb25uZWN0IG5hbWUgYW5kIGp1 c3QgdXNlIHRoZSBkZWZhdWx0CnY0OiBEb24ndCB1c2UgYSBwb3J0IHN0cmluZyBhdCBhbGwgdG8g c2tpcCB0aGUgbmVlZCBmb3IgbmFtZXMgaW4gdGhlIERUCnYzOiBVc2UgbWFjcm9zIGFuZCBjaGFu Z2UgcG9ydCBzdHJpbmcgcGVyIEdlb3JnaSBEamFrb3YKClNpZ25lZC1vZmYtYnk6IEpvcmRhbiBD cm91c2UgPGpjcm91c2VAY29kZWF1cm9yYS5vcmc+Ci0tLQoKIGRyaXZlcnMvZ3B1L2RybS9tc20v S2NvbmZpZyAgICAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2 eHhfZ211LmMgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hZHJlbm9fZ3B1LmMgfCAgOSArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2dwdS5oICAgICAgICAgICB8ICAzICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9LY29uZmlnCmluZGV4IGNmNTQ5ZjEuLjc4YzllNWE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9L Y29uZmlnCkBAIC01LDYgKzUsNyBAQCBjb25maWcgRFJNX01TTQogCWRlcGVuZHMgb24gQVJDSF9R Q09NIHx8IFNPQ19JTVg1IHx8IChBUk0gJiYgQ09NUElMRV9URVNUKQogCWRlcGVuZHMgb24gT0Yg JiYgQ09NTU9OX0NMSwogCWRlcGVuZHMgb24gTU1VCisJZGVwZW5kcyBvbiBJTlRFUkNPTk5FQ1Qg fHwgIUlOVEVSQ09OTkVDVAogCXNlbGVjdCBRQ09NX01EVF9MT0FERVIgaWYgQVJDSF9RQ09NCiAJ c2VsZWN0IFJFR1VMQVRPUgogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2E2eHhfZ211LmMKaW5kZXggNWJlYjgzZC4uYzQ4ZmU0NiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hNnh4X2dtdS5jCkBAIC0yLDYgKzIsNyBAQAogLyogQ29weXJpZ2h0IChjKSAy MDE3LTIwMTggVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICovCiAK ICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcmNvbm5lY3QuaD4K ICNpbmNsdWRlIDxsaW51eC9wbV9vcHAuaD4KICNpbmNsdWRlIDxzb2MvcWNvbS9jbWQtZGIuaD4K IApAQCAtODQsNiArODUsOSBAQCBib29sIGE2eHhfZ211X2d4X2lzX29uKHN0cnVjdCBhNnh4X2dt dSAqZ211KQogCiBzdGF0aWMgdm9pZCBfX2E2eHhfZ211X3NldF9mcmVxKHN0cnVjdCBhNnh4X2dt dSAqZ211LCBpbnQgaW5kZXgpCiB7CisJc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSA9IGNvbnRh aW5lcl9vZihnbXUsIHN0cnVjdCBhNnh4X2dwdSwgZ211KTsKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAq YWRyZW5vX2dwdSA9ICZhNnh4X2dwdS0+YmFzZTsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gJmFk cmVub19ncHUtPmJhc2U7CiAJaW50IHJldDsKIAogCWdtdV93cml0ZShnbXUsIFJFR19BNlhYX0dN VV9EQ1ZTX0FDS19PUFRJT04sIDApOwpAQCAtMTA2LDYgKzExMCwxMiBAQCBzdGF0aWMgdm9pZCBf X2E2eHhfZ211X3NldF9mcmVxKHN0cnVjdCBhNnh4X2dtdSAqZ211LCBpbnQgaW5kZXgpCiAJCWRl dl9lcnIoZ211LT5kZXYsICJHTVUgc2V0IEdQVSBmcmVxdWVuY3kgZXJyb3I6ICVkXG4iLCByZXQp OwogCiAJZ211LT5mcmVxID0gZ211LT5ncHVfZnJlcXNbaW5kZXhdOworCisJLyoKKwkgKiBFdmVu dHVhbGx5IHdlIHdpbGwgd2FudCB0byBzY2FsZSB0aGUgcGF0aCB2b3RlIHdpdGggdGhlIGZyZXF1 ZW5jeSBidXQKKwkgKiBmb3Igbm93IGxlYXZlIGl0IGF0IG1heCBzbyB0aGF0IHRoZSBwZXJmb3Jt YW5jZSBpcyBub21pbmFsLgorCSAqLworCWljY19zZXRfYncoZ3B1LT5pY2NfcGF0aCwgMCwgTUJw c190b19pY2MoNzIxNikpOwogfQogCiB2b2lkIGE2eHhfZ211X3NldF9mcmVxKHN0cnVjdCBtc21f Z3B1ICpncHUsIHVuc2lnbmVkIGxvbmcgZnJlcSkKQEAgLTcwNSw2ICs3MTUsOCBAQCBpbnQgYTZ4 eF9nbXVfcmVzZXQoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSkKIAogaW50IGE2eHhfZ211X3Jl c3VtZShzdHJ1Y3QgYTZ4eF9ncHUgKmE2eHhfZ3B1KQogeworCXN0cnVjdCBhZHJlbm9fZ3B1ICph ZHJlbm9fZ3B1ID0gJmE2eHhfZ3B1LT5iYXNlOworCXN0cnVjdCBtc21fZ3B1ICpncHUgPSAmYWRy ZW5vX2dwdS0+YmFzZTsKIAlzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSA9ICZhNnh4X2dwdS0+Z211Owog CWludCBzdGF0dXMsIHJldDsKIApAQCAtNzIwLDYgKzczMiw5IEBAIGludCBhNnh4X2dtdV9yZXN1 bWUoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSkKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAor CS8qIFNldCB0aGUgYnVzIHF1b3RhIHRvIGEgcmVhc29uYWJsZSB2YWx1ZSBmb3IgYm9vdCAqLwor CWljY19zZXRfYncoZ3B1LT5pY2NfcGF0aCwgMCwgTUJwc190b19pY2MoMzA3MikpOworCiAJYTZ4 eF9nbXVfaXJxX2VuYWJsZShnbXUpOwogCiAJLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBkb2lu ZyBhIGNvbGQgb3Igd2FybSBib290ICovCkBAIC03NjAsNiArNzc1LDggQEAgYm9vbCBhNnh4X2dt dV9pc2lkbGUoc3RydWN0IGE2eHhfZ211ICpnbXUpCiAKIGludCBhNnh4X2dtdV9zdG9wKHN0cnVj dCBhNnh4X2dwdSAqYTZ4eF9ncHUpCiB7CisJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUg PSAmYTZ4eF9ncHUtPmJhc2U7CisJc3RydWN0IG1zbV9ncHUgKmdwdSA9ICZhZHJlbm9fZ3B1LT5i YXNlOwogCXN0cnVjdCBhNnh4X2dtdSAqZ211ID0gJmE2eHhfZ3B1LT5nbXU7CiAJdTMyIHZhbDsK IApAQCAtODA2LDYgKzgyMyw5IEBAIGludCBhNnh4X2dtdV9zdG9wKHN0cnVjdCBhNnh4X2dwdSAq YTZ4eF9ncHUpCiAJLyogVGVsbCBSUE1oIHRvIHBvd2VyIG9mZiB0aGUgR1BVICovCiAJYTZ4eF9y cG1oX3N0b3AoZ211KTsKIAorCS8qIFJlbW92ZSB0aGUgYnVzIHZvdGUgKi8KKwlpY2Nfc2V0X2J3 KGdwdS0+aWNjX3BhdGgsIDAsIDApOworCiAJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoZ211 LT5ucl9jbG9ja3MsIGdtdS0+Y2xvY2tzKTsKIAogCXBtX3J1bnRpbWVfcHV0X3N5bmMoZ211LT5k ZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCmluZGV4IDJlNDM3MmUu LjkxYTk4YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19n cHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKQEAgLTE4 LDYgKzE4LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvYXNjaWk4NS5oPgorI2luY2x1ZGUg PGxpbnV4L2ludGVyY29ubmVjdC5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1 ZGUgPGxpbnV4L3BtX29wcC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTc0Nyw2ICs3 NDgsMTEgQEAgc3RhdGljIGludCBhZHJlbm9fZ2V0X3B3cmxldmVscyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCiAKIAlEQkcoImZhc3RfcmF0ZT0ldSwgc2xvd19yYXRlPTI3MDAwMDAwIiwgZ3B1LT5mYXN0 X3JhdGUpOwogCisJLyogQ2hlY2sgZm9yIGFuIGludGVyY29ubmVjdCBwYXRoIGZvciB0aGUgYnVz ICovCisJZ3B1LT5pY2NfcGF0aCA9IG9mX2ljY19nZXQoZGV2LCBOVUxMKTsKKwlpZiAoSVNfRVJS KGdwdS0+aWNjX3BhdGgpKQorCQlncHUtPmljY19wYXRoID0gTlVMTDsKKwogCXJldHVybiAwOwog fQogCkBAIC03ODgsMTAgKzc5NCwxMyBAQCBpbnQgYWRyZW5vX2dwdV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAKIHZvaWQgYWRyZW5v X2dwdV9jbGVhbnVwKHN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1KQogeworCXN0cnVjdCBt c21fZ3B1ICpncHUgPSAmYWRyZW5vX2dwdS0+YmFzZTsKIAl1bnNpZ25lZCBpbnQgaTsKIAogCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFkcmVub19ncHUtPmluZm8tPmZ3KTsgaSsrKQogCQly ZWxlYXNlX2Zpcm13YXJlKGFkcmVub19ncHUtPmZ3W2ldKTsKIAorCWljY19wdXQoZ3B1LT5pY2Nf cGF0aCk7CisKIAltc21fZ3B1X2NsZWFudXAoJmFkcmVub19ncHUtPmJhc2UpOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9ncHUuaAppbmRleCBlZmI0OWJiLi4yZjEzNTkyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgK QEAgLTE5LDYgKzE5LDcgQEAKICNkZWZpbmUgX19NU01fR1BVX0hfXwogCiAjaW5jbHVkZSA8bGlu dXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJjb25uZWN0Lmg+CiAjaW5jbHVkZSA8bGlu dXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CiAKICNpbmNsdWRlICJtc21fZHJ2LmgiCkBAIC0xMTks NiArMTIwLDggQEAgc3RydWN0IG1zbV9ncHUgewogCXN0cnVjdCBjbGsgKmViaTFfY2xrLCAqY29y ZV9jbGssICpyYmJtdGltZXJfY2xrOwogCXVpbnQzMl90IGZhc3RfcmF0ZTsKIAorCXN0cnVjdCBp Y2NfcGF0aCAqaWNjX3BhdGg7CisKIAkvKiBIYW5nIGFuZCBJbmFjdGl2aXR5IERldGVjdGlvbjoK IAkgKi8KICNkZWZpbmUgRFJNX01TTV9JTkFDVElWRV9QRVJJT0QgICA2NiAvKiBpbiBtcyAocm91 Z2hseSBmb3VyIGZyYW1lcykgKi8KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0Bs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9mcmVlZHJlbm8K 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.1 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 4FECFC1B0FD for ; Fri, 18 Jan 2019 20:24:35 +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 1B13E20657 for ; Fri, 18 Jan 2019 20:24:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ftcXhjI3"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="RMVSrsF5"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="Et2X1p/d" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B13E20657 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=0k9A8CE2ApQpuf1b2vNNMz6jctkMRjPdIz3QbnJ9iBc=; b=ftc XhjI3NFTbt3rV0YM8ZwCelDLfZYqmB1LQBg8Cb991/wcggVRxv14wCc+2vsAL+1XnpVUIxdX2Sha5 kqOVPivlj/zjdix7UYMP1b+P1bvh12KhW+pqfkkp1pFCFofnsbQVyn9pLKHzA0iYrnObussRHR1cR BATm7kE1QN2ybS5DvI6PEc3NEVM9vzHs0ze4BpndeTT63XQPepKlVY3HPahGVilBT576ndl7/9VA0 6MMBUDliSNWLbzg5OHF6qouq6wdqEYYoTVAN6PwyFAgwcsgvcmSWkzF5yuYJhkSD/f5EnWz0dKWgu ENc62wf+WjYDqGreEZAnNW4eiF1C79w==; 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 1gkago-00069X-JW; Fri, 18 Jan 2019 20:24:30 +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 1gkagl-000699-4X for linux-arm-kernel@lists.infradead.org; Fri, 18 Jan 2019 20:24:28 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id DA8F5607CA; Fri, 18 Jan 2019 20:24:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547843065; bh=g+mkw7M9tmeK++NCdrxliQFrdP0aKf98Qfk4n02U+gk=; h=From:To:Cc:Subject:Date:From; b=RMVSrsF5zGYxfzfGj2eUb2qh60n9Y3rfwQhGzHSJ85zvWAvvfJnhwDIXi3SVyd4FW HgU+evLTNlFO3xj/qf/uRtFL8/0bDIJiAmgeiK3BqsTjoahdAbAuAb42EsgmWFlW1g TlYF1Abm2wJ6bw8A4PzOUQyC6b0BkxkxRdrKmCwI= Received: from jcrouse1-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 0C2BD601D3; Fri, 18 Jan 2019 20:24:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547843064; bh=g+mkw7M9tmeK++NCdrxliQFrdP0aKf98Qfk4n02U+gk=; h=From:To:Cc:Subject:Date:From; b=Et2X1p/dgq4U6OlBurY1Z0aLDIdZSl1eXLDe2YCcUqb/55fMVwkQhVn7foXgeBQKP 2/Al+V8DJct3UF7hmiXKNu7pioKonIiu1nb/v1uDP8quxbsTzq1DON0cDSfkW5cPxL OrivsJYJQ+Px78AFxUZLlsp80N/7pa83YvKrMMCE= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 0C2BD601D3 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 v6] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 18 Jan 2019 13:24:18 -0700 Message-Id: <1547843058-27933-1-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190118_122427_229637_F701475D X-CRM114-Status: GOOD ( 19.84 ) 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-kernel@vger.kernel.org, Kees Cook , Jonathan Marek , David Airlie , linux-arm-msm@vger.kernel.org, Sharat Masetty , dianders@chromium.org, dri-devel@lists.freedesktop.org, bjorn.andersson@linaro.org, Rob Clark , Mamta Shukla , Daniel Vetter , andy.gross@linaro.org, Colin Ian King , Stephen Boyd , 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. v6: use icc_set_bw() instead of icc_set() v5: Remove hardcoded interconnect name and just use the default v4: Don't use a port string at all to skip the need for names in the DT 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 cf549f1..78c9e5a5 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -5,6 +5,7 @@ config DRM_MSM depends on ARCH_QCOM || SOC_IMX5 || (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 5beb83d..c48fe46 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 @@ -84,6 +85,9 @@ 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); @@ -106,6 +110,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_bw(gpu->icc_path, 0, MBps_to_icc(7216)); } void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) @@ -705,6 +715,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; @@ -720,6 +732,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_bw(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 */ @@ -760,6 +775,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; @@ -806,6 +823,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_bw(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 2e4372e..91a98c8 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 @@ -747,6 +748,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, NULL); + if (IS_ERR(gpu->icc_path)) + gpu->icc_path = NULL; + return 0; } @@ -788,10 +794,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 efb49bb..2f13592a 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.7.4 _______________________________________________ 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 3A9B5C1B0F7 for ; Fri, 18 Jan 2019 20:24:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E189320883 for ; Fri, 18 Jan 2019 20:24:29 +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="UMU01Rc6"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="Et2X1p/d" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729444AbfARUY1 (ORCPT ); Fri, 18 Jan 2019 15:24:27 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:49490 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729309AbfARUY1 (ORCPT ); Fri, 18 Jan 2019 15:24:27 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id F32956081E; Fri, 18 Jan 2019 20:24:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547843066; bh=g+mkw7M9tmeK++NCdrxliQFrdP0aKf98Qfk4n02U+gk=; h=From:To:Cc:Subject:Date:From; b=UMU01Rc6visJ51/S1JSATuYnoRHBuuaJJk1aKPHnCQaTwHspTS41RCCHPJE/eQnYd 257qcuuU1Rio+cx4K2aNs7x4dKwVHScsjXRjnAe7O5uthldmaGA5fU9MJ431AFm9QR G7aUNV0VwWCdWWTKvcwhYC4dg1p0KD0+S5Fs78rs= Received: from jcrouse1-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 0C2BD601D3; Fri, 18 Jan 2019 20:24:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547843064; bh=g+mkw7M9tmeK++NCdrxliQFrdP0aKf98Qfk4n02U+gk=; h=From:To:Cc:Subject:Date:From; b=Et2X1p/dgq4U6OlBurY1Z0aLDIdZSl1eXLDe2YCcUqb/55fMVwkQhVn7foXgeBQKP 2/Al+V8DJct3UF7hmiXKNu7pioKonIiu1nb/v1uDP8quxbsTzq1DON0cDSfkW5cPxL OrivsJYJQ+Px78AFxUZLlsp80N/7pa83YvKrMMCE= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 0C2BD601D3 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-arm-msm@vger.kernel.org, dianders@chromium.org, bjorn.andersson@linaro.org, andy.gross@linaro.org, georgi.djakov@linaro.org, linux-arm-kernel@lists.infradead.org, Stephen Boyd , Kees Cook , Colin Ian King , Sharat Masetty , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Rob Clark , David Airlie , Jonathan Marek , Mamta Shukla , Daniel Vetter Subject: [PATCH v6] drm/msm/a6xx: Add support for an interconnect path Date: Fri, 18 Jan 2019 13:24:18 -0700 Message-Id: <1547843058-27933-1-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 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. v6: use icc_set_bw() instead of icc_set() v5: Remove hardcoded interconnect name and just use the default v4: Don't use a port string at all to skip the need for names in the DT 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 cf549f1..78c9e5a5 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -5,6 +5,7 @@ config DRM_MSM depends on ARCH_QCOM || SOC_IMX5 || (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 5beb83d..c48fe46 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 @@ -84,6 +85,9 @@ 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); @@ -106,6 +110,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_bw(gpu->icc_path, 0, MBps_to_icc(7216)); } void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) @@ -705,6 +715,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; @@ -720,6 +732,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_bw(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 */ @@ -760,6 +775,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; @@ -806,6 +823,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_bw(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 2e4372e..91a98c8 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 @@ -747,6 +748,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, NULL); + if (IS_ERR(gpu->icc_path)) + gpu->icc_path = NULL; + return 0; } @@ -788,10 +794,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 efb49bb..2f13592a 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.7.4