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:21:24 -0700 Message-ID: <20181129172124.6851-2-jcrouse@codeaurora.org> References: <20181129172124.6851-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181129172124.6851-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 IHRoYXQgZG9lcyBub3QgeWV0IGV4aXN0LgoKdjI6IEFic29sdXRlIGJhbmR3aWR0aCB2YWx1ZXMg c2hvdWxkIGJlIGluIEtCcHMKClNpZ25lZC1vZmYtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VA Y29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUu YyAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2FkcmVub19ncHUuYyB8ICA5ICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1 LmggICAgICAgICAgIHwgIDMgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYwppbmRleCA1NDY1OTlhN2FiMDUuLmI5 NmFlMmFiMDRiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9n bXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jCkBAIC0zLDYg KzMsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3Bw Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJjb25uZWN0Lmg+CiAjaW5jbHVkZSA8c29jL3Fjb20v Y21kLWRiLmg+CiAKICNpbmNsdWRlICJhNnh4X2dwdS5oIgpAQCAtNjMsNiArNjQsOSBAQCBzdGF0 aWMgYm9vbCBhNnh4X2dtdV9neF9pc19vbihzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSkKIAogc3RhdGlj IHZvaWQgX19hNnh4X2dtdV9zZXRfZnJlcShzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSwgaW50IGluZGV4 KQogeworCXN0cnVjdCBhNnh4X2dwdSAqYTZ4eF9ncHUgPSBjb250YWluZXJfb2YoZ211LCBzdHJ1 Y3QgYTZ4eF9ncHUsIGdtdSk7CisJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSAmYTZ4 eF9ncHUtPmJhc2U7CisJc3RydWN0IG1zbV9ncHUgKmdwdSA9ICZhZHJlbm9fZ3B1LT5iYXNlOwog CWludCByZXQ7CiAKIAlnbXVfd3JpdGUoZ211LCBSRUdfQTZYWF9HTVVfRENWU19BQ0tfT1BUSU9O LCAwKTsKQEAgLTg1LDYgKzg5LDEyIEBAIHN0YXRpYyB2b2lkIF9fYTZ4eF9nbXVfc2V0X2ZyZXEo c3RydWN0IGE2eHhfZ211ICpnbXUsIGludCBpbmRleCkKIAkJZGV2X2VycihnbXUtPmRldiwgIkdN VSBzZXQgR1BVIGZyZXF1ZW5jeSBlcnJvcjogJWRcbiIsIHJldCk7CiAKIAlnbXUtPmZyZXEgPSBn bXUtPmdwdV9mcmVxc1tpbmRleF07CisKKwkvKgorCSAqIEV2ZW50dWFsbHkgd2Ugd2lsbCB3YW50 IHRvIHNjYWxlIHRoZSBwYXRoIHZvdGUgd2l0aCB0aGUgZnJlcXVlbmN5IGJ1dAorCSAqIGZvciBu b3cgbGVhdmUgaXQgdCBhdCBtYXggc28gdGhhdCB0aGUgcGVyZm9ybWFuY2UgaXMgbm9taW5hbC4K KwkgKi8KKwlpY2Nfc2V0KGdwdS0+aWNjX3BhdGgsIDAsIDcyMTYwMDAwMDApOwogfQogCiB2b2lk IGE2eHhfZ211X3NldF9mcmVxKHN0cnVjdCBtc21fZ3B1ICpncHUsIHVuc2lnbmVkIGxvbmcgZnJl cSkKQEAgLTY4MCw2ICs2OTAsOCBAQCBpbnQgYTZ4eF9nbXVfcmVzZXQoc3RydWN0IGE2eHhfZ3B1 ICphNnh4X2dwdSkKIAogaW50IGE2eHhfZ211X3Jlc3VtZShzdHJ1Y3QgYTZ4eF9ncHUgKmE2eHhf Z3B1KQogeworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gJmE2eHhfZ3B1LT5iYXNl OworCXN0cnVjdCBtc21fZ3B1ICpncHUgPSAmYWRyZW5vX2dwdS0+YmFzZTsKIAlzdHJ1Y3QgYTZ4 eF9nbXUgKmdtdSA9ICZhNnh4X2dwdS0+Z211OwogCWludCBzdGF0dXMsIHJldDsKIApAQCAtNjk1 LDYgKzcwNyw5IEBAIGludCBhNnh4X2dtdV9yZXN1bWUoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dw dSkKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAorCS8qIFNldCB0aGUgYnVzIHF1b3RhIHRvIGEg cmVhc29uYWJsZSB2YWx1ZSBmb3IgYm9vdCAqLworCWljY19zZXQoZ3B1LT5pY2NfcGF0aCwgMCwg MzA3MjAwMDAwMCk7CisKIAlhNnh4X2dtdV9pcnFfZW5hYmxlKGdtdSk7CiAKIAkvKiBDaGVjayB0 byBzZWUgaWYgd2UgYXJlIGRvaW5nIGEgY29sZCBvciB3YXJtIGJvb3QgKi8KQEAgLTczNSw2ICs3 NTAsOCBAQCBib29sIGE2eHhfZ211X2lzaWRsZShzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSkKIAogaW50 IGE2eHhfZ211X3N0b3Aoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSkKIHsKKwlzdHJ1Y3QgYWRy ZW5vX2dwdSAqYWRyZW5vX2dwdSA9ICZhNnh4X2dwdS0+YmFzZTsKKwlzdHJ1Y3QgbXNtX2dwdSAq Z3B1ID0gJmFkcmVub19ncHUtPmJhc2U7CiAJc3RydWN0IGE2eHhfZ211ICpnbXUgPSAmYTZ4eF9n cHUtPmdtdTsKIAl1MzIgdmFsOwogCkBAIC03ODEsNiArNzk4LDkgQEAgaW50IGE2eHhfZ211X3N0 b3Aoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSkKIAkvKiBUZWxsIFJQTWggdG8gcG93ZXIgb2Zm IHRoZSBHUFUgKi8KIAlhNnh4X3JwbWhfc3RvcChnbXUpOwogCisJLyogUmVtb3ZlIHRoZSBidXMg dm90ZSAqLworCWljY19zZXQoZ3B1LT5pY2NfcGF0aCwgMCwgMCk7CisKIAljbGtfYnVsa19kaXNh YmxlX3VucHJlcGFyZShnbXUtPm5yX2Nsb2NrcywgZ211LT5jbG9ja3MpOwogCiAJcG1fcnVudGlt ZV9wdXRfc3luYyhnbXUtPmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmMKaW5kZXggOTNkNzBmNGEyMTU0Li45YmFiNDkxOTEyY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hZHJlbm9fZ3B1LmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9vcHAuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJjb25uZWN0Lmg+CiAjaW5jbHVkZSAiYWRyZW5vX2dw dS5oIgogI2luY2x1ZGUgIm1zbV9nZW0uaCIKICNpbmNsdWRlICJtc21fbW11LmgiCkBAIC02OTUs NiArNjk2LDExIEBAIHN0YXRpYyBpbnQgYWRyZW5vX2dldF9wd3JsZXZlbHMoc3RydWN0IGRldmlj ZSAqZGV2LAogCiAJREJHKCJmYXN0X3JhdGU9JXUsIHNsb3dfcmF0ZT0yNzAwMDAwMCIsIGdwdS0+ ZmFzdF9yYXRlKTsKIAorCS8qIENoZWNrIGZvciBhbiBpbnRlcmNvbm5lY3QgcGF0aCBmb3IgdGhl IGJ1cyAqLworCWdwdS0+aWNjX3BhdGggPSBvZl9pY2NfZ2V0KGRldiwgInBvcnQwIik7CisJaWYg KElTX0VSUihncHUtPmljY19wYXRoKSkKKwkJZ3B1LT5pY2NfcGF0aCA9IE5VTEw7CisKIAlyZXR1 cm4gMDsKIH0KIApAQCAtNzMzLDEwICs3MzksMTMgQEAgaW50IGFkcmVub19ncHVfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiB2b2lk IGFkcmVub19ncHVfY2xlYW51cChzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSkKIHsKKwlz dHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gJmFkcmVub19ncHUtPmJhc2U7CiAJdW5zaWduZWQgaW50IGk7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhZHJlbm9fZ3B1LT5pbmZvLT5mdyk7IGkr KykKIAkJcmVsZWFzZV9maXJtd2FyZShhZHJlbm9fZ3B1LT5md1tpXSk7CiAKKwlpY2NfcHV0KGdw dS0+aWNjX3BhdGgpOworCiAJbXNtX2dwdV9jbGVhbnVwKCZhZHJlbm9fZ3B1LT5iYXNlKTsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ3B1LmgKaW5kZXggZjgyYmFjMDg2NjY2Li43YjA0ZDE2NjU1NTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2dwdS5oCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9jbGsu aD4KICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbnRlcmNvbm5lY3QuaD4KIAogI2luY2x1ZGUgIm1zbV9kcnYuaCIKICNpbmNsdWRlICJtc21f ZmVuY2UuaCIKQEAgLTExOSw2ICsxMjAsOCBAQCBzdHJ1Y3QgbXNtX2dwdSB7CiAJc3RydWN0IGNs ayAqZWJpMV9jbGssICpjb3JlX2NsaywgKnJiYm10aW1lcl9jbGs7CiAJdWludDMyX3QgZmFzdF9y YXRlOwogCisJc3RydWN0IGljY19wYXRoICppY2NfcGF0aDsKKwogCS8qIEhhbmcgYW5kIEluYWN0 aXZpdHkgRGV0ZWN0aW9uOgogCSAqLwogI2RlZmluZSBEUk1fTVNNX0lOQUNUSVZFX1BFUklPRCAg IDY2IC8qIGluIG1zIChyb3VnaGx5IGZvdXIgZnJhbWVzKSAqLwotLSAKMi4xOC4wCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGlu ZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K 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 9E299C43610 for ; Thu, 29 Nov 2018 17:22:03 +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 6A97120989 for ; Thu, 29 Nov 2018 17:22:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="aHG4cgP4"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="L+A6W0Wp"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="kXYqICyo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6A97120989 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=1IJwt/1XtZ5XyCiWpNCbANglnstlovHwsjrVTrxiDhA=; b=aHG4cgP4L+UApWR140XbfEXYeK dDofS2HhmO59L8TZBdqts41isWaxszU2uYkVe7+da1ff15w9a7ygl2IW5sDGR9hGaODoqY7Hix0Vn UZEpNmLvcH5MR6JYqe3itn+DngjD+pUlAkqblG6MVSNred7DBhDbVEcizFdXjloSAUgRvGy4GPMGs OASyglIZyDZm1EP8zFAYzPurbDWOtmTn+LdfqjYhh8at6bEqL1zLirEo6P8tXWOGPMaiIe5MC24qb jmD2ooHEqJ1YneBHxu4QbcFoYjXVWtqCgS0fZ9pUkV97gJHwZu7h+O8yX9KEKIsBZLgDqdmQynyPo f3kVTFFg==; 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 1gSQ0j-0005CR-3q; Thu, 29 Nov 2018 17:21:57 +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 1gSQ0T-0004r5-QA for linux-arm-kernel@lists.infradead.org; Thu, 29 Nov 2018 17:21:43 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id EE3A761327; Thu, 29 Nov 2018 17:21:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512091; bh=NFUgxHICUN5E14dYRFKcVoC/UBmWHlL+Dni+4jISyRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L+A6W0WpHvh5GoTROx4IxanuGJ+be9XHlrBB87eKuqdrDSJQDgik9JZ/O2NcNKTrG mcimSwR/sn02sksdYSTj1wQ1HSv2bSm3mdLx/apnu9AZRwsrbmCXTCoGgStBFJ7Hdu C7vRzY2+k6zbk7Db6VKplG9ELjUarZv8J6Ot9zfA= 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 C0C2561330; Thu, 29 Nov 2018 17:21:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512089; bh=NFUgxHICUN5E14dYRFKcVoC/UBmWHlL+Dni+4jISyRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kXYqICyo/Yaqt8vRtvDPz6lqw2C93Y0LJYmg2F87wvUDBICX/5NHx0XEQ3/CKWm5Q mB8flNpCCimFen0DSCXw4encqJrZaWyf+XAApL60s9rIE+6qFRRPPwilsPDnpgyhYE yssOoSdzHGdOy2CWVCqZ1/Py4xbMF9hXB30pchbI= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C0C2561330 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:21:24 -0700 Message-Id: <20181129172124.6851-2-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181129172124.6851-1-jcrouse@codeaurora.org> References: <20181129172124.6851-1-jcrouse@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181129_092141_890241_1CD1F467 X-CRM114-Status: GOOD ( 18.00 ) 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. v2: Absolute bandwidth values should be 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..b96ae2ab04bb 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, 7216000000); } 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, 3072000000); + 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,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 95533C07E85 for ; Thu, 29 Nov 2018 17:21:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 52A4220863 for ; Thu, 29 Nov 2018 17:21:35 +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="L+A6W0Wp"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="kXYqICyo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 52A4220863 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 S1729831AbeK3E1j (ORCPT ); Thu, 29 Nov 2018 23:27:39 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:50874 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728423AbeK3E1i (ORCPT ); Thu, 29 Nov 2018 23:27:38 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id C9FFF61371; Thu, 29 Nov 2018 17:21:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512091; bh=NFUgxHICUN5E14dYRFKcVoC/UBmWHlL+Dni+4jISyRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L+A6W0WpHvh5GoTROx4IxanuGJ+be9XHlrBB87eKuqdrDSJQDgik9JZ/O2NcNKTrG mcimSwR/sn02sksdYSTj1wQ1HSv2bSm3mdLx/apnu9AZRwsrbmCXTCoGgStBFJ7Hdu C7vRzY2+k6zbk7Db6VKplG9ELjUarZv8J6Ot9zfA= 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 C0C2561330; Thu, 29 Nov 2018 17:21:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1543512089; bh=NFUgxHICUN5E14dYRFKcVoC/UBmWHlL+Dni+4jISyRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kXYqICyo/Yaqt8vRtvDPz6lqw2C93Y0LJYmg2F87wvUDBICX/5NHx0XEQ3/CKWm5Q mB8flNpCCimFen0DSCXw4encqJrZaWyf+XAApL60s9rIE+6qFRRPPwilsPDnpgyhYE yssOoSdzHGdOy2CWVCqZ1/Py4xbMF9hXB30pchbI= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C0C2561330 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:21:24 -0700 Message-Id: <20181129172124.6851-2-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181129172124.6851-1-jcrouse@codeaurora.org> References: <20181129172124.6851-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. v2: Absolute bandwidth values should be 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..b96ae2ab04bb 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, 7216000000); } 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, 3072000000); + 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