Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp427842pxx; Wed, 28 Oct 2020 08:08:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYkI+rm41I2YbQju3VAUu07ZwxxNLlFz6dZuXr89M1bLryu4TlnQi/Fe0cwjvUYNH/taU0 X-Received: by 2002:a17:906:a10a:: with SMTP id t10mr8338648ejy.89.1603897694300; Wed, 28 Oct 2020 08:08:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603897694; cv=none; d=google.com; s=arc-20160816; b=Ngso/heBxNn8w3NLZJgb/Gs/py/ULSqGqfgroxanV196uMKP3AyyJyrZWiWbTkF8+G R6tIGoE3x3ROPX9ArwiG2MuPuoQgGZeimJ2jvv7Sr2ulhiJzdfUXtj0UQPqorHoTECJX QBqZasO+7n/PaQ0vOgfst7GmoCRQV39fmBK4EM4qZ4w3UzJNVQTbQnWnYFQ7j47rCxqe KIY/0j8kHDmfnhwRFWMx/Vs0ZCzFjkQk2desoddYPtrJJWP8nFJo2b6Ln2Ml9oFWsnfb fwNUFgWtt7JPq0QAJ/0XIrrhr3mbgmcNGJNP0eI2325jJ8mJSCUz7kMRCAugODg0sSm9 e9QQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OwMwA9Efli/9oBJFf0B6EA8PeDnPFc0b2A4xb0NvCKg=; b=lmKTLXHVANm+7bl/TYR7bTgJt0cc9XFKEPRZmRwQcpmWHq5c7IGpjKmGyLZgJv+FBo +jCIJoJoztsR/pFglJkIAJXV23wxkj181EtRb9HvF4QZxCnAAGYTof1ht3OTpr4tr33I EI45/L2KJfBHXs06hEz/KCqMGf7R/eO478WifI9F+CC4EIY3pzyiBv5zVcXLEQiCRTec kxZuuQxma+S347of4khYWRc0an4Y9Bj7xqNJHTVQxGdYJCvOVSUCXAA+Kp16NNFd27e9 t7wOyla12+g2q4hqbRJ29xOSWJC75rx/YCWC4GRfzHXU6lRvw7Ff/7Z2qP7FgLy9F1Qs 9AvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2bdUp3qt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g1si3663191edn.100.2020.10.28.08.07.51; Wed, 28 Oct 2020 08:08:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2bdUp3qt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1809777AbgJ0Q2P (ORCPT + 99 others); Tue, 27 Oct 2020 12:28:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:52716 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1802758AbgJ0PvO (ORCPT ); Tue, 27 Oct 2020 11:51:14 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5700A2065C; Tue, 27 Oct 2020 15:51:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603813873; bh=gPSiEeiV42B9c4CxYzoSvDQvifyXtKapRDX7C2GEKS8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2bdUp3qtR6dOfer0z4+KB1kiqj6KoYYXtVawrB0tSIbxrCAooBzszPcByxvi7EuIY OThrOY1/gM0Q6c+sgO4Q9cmwfHcpkA+B/1Q5qrQivT5i/rmyUWLscgd3+pavxwxCKS f0O9yX3HFjX+f6RInZircJMzlUGQDDveuPKv5FeE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Neil Armstrong , Steven Price , Alyssa Rosenzweig , Sasha Levin Subject: [PATCH 5.9 699/757] drm/panfrost: add amlogic reset quirk callback Date: Tue, 27 Oct 2020 14:55:49 +0100 Message-Id: <20201027135523.301522271@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Neil Armstrong [ Upstream commit 110003002291525bb209f47e6dbf121a63249a97 ] The T820, G31 & G52 GPUs integrated by Amlogic in the respective GXM, G12A/SM1 & G12B SoCs needs a quirk in the PWR registers at the GPU reset time. Since the Amlogic's integration of the GPU cores with the SoC is not publicly documented we do not know what does these values, but they permit having a fully functional GPU running with Panfrost. Signed-off-by: Neil Armstrong [Steven: Fix typo in commit log] Reviewed-by: Steven Price Reviewed-by: Alyssa Rosenzweig Signed-off-by: Steven Price Link: https://patchwork.freedesktop.org/patch/msgid/20200916150147.25753-3-narmstrong@baylibre.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/panfrost/panfrost_gpu.c | 11 +++++++++++ drivers/gpu/drm/panfrost/panfrost_gpu.h | 2 ++ drivers/gpu/drm/panfrost/panfrost_regs.h | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c index dfe4c9151eaf2..a9d08a2927aa3 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c @@ -75,6 +75,17 @@ int panfrost_gpu_soft_reset(struct panfrost_device *pfdev) return 0; } +void panfrost_gpu_amlogic_quirk(struct panfrost_device *pfdev) +{ + /* + * The Amlogic integrated Mali-T820, Mali-G31 & Mali-G52 needs + * these undocumented bits in GPU_PWR_OVERRIDE1 to be set in order + * to operate correctly. + */ + gpu_write(pfdev, GPU_PWR_KEY, GPU_PWR_KEY_UNLOCK); + gpu_write(pfdev, GPU_PWR_OVERRIDE1, 0xfff | (0x20 << 16)); +} + static void panfrost_gpu_init_quirks(struct panfrost_device *pfdev) { u32 quirks = 0; diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.h b/drivers/gpu/drm/panfrost/panfrost_gpu.h index 4112412087b27..468c51e7e46db 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gpu.h +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.h @@ -16,4 +16,6 @@ int panfrost_gpu_soft_reset(struct panfrost_device *pfdev); void panfrost_gpu_power_on(struct panfrost_device *pfdev); void panfrost_gpu_power_off(struct panfrost_device *pfdev); +void panfrost_gpu_amlogic_quirk(struct panfrost_device *pfdev); + #endif diff --git a/drivers/gpu/drm/panfrost/panfrost_regs.h b/drivers/gpu/drm/panfrost/panfrost_regs.h index ea38ac60581c6..eddaa62ad8b0e 100644 --- a/drivers/gpu/drm/panfrost/panfrost_regs.h +++ b/drivers/gpu/drm/panfrost/panfrost_regs.h @@ -51,6 +51,10 @@ #define GPU_STATUS 0x34 #define GPU_STATUS_PRFCNT_ACTIVE BIT(2) #define GPU_LATEST_FLUSH_ID 0x38 +#define GPU_PWR_KEY 0x50 /* (WO) Power manager key register */ +#define GPU_PWR_KEY_UNLOCK 0x2968A819 +#define GPU_PWR_OVERRIDE0 0x54 /* (RW) Power manager override settings */ +#define GPU_PWR_OVERRIDE1 0x58 /* (RW) Power manager override settings */ #define GPU_FAULT_STATUS 0x3C #define GPU_FAULT_ADDRESS_LO 0x40 #define GPU_FAULT_ADDRESS_HI 0x44 -- 2.25.1