Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f1c0af6 authored by Jordan Crouse's avatar Jordan Crouse
Browse files

msm: kgsl: Use the GPU platform device when it is appropriate



Throughout the history of the driver the GPU platform device and the
KGSL pseudo device have been used somewhat interchangeably which is
bad. The platform device should be used whenever dealing with hardware
or kernel resources so that we can get proper cleanup during probe.

While it is still okay to use the pseudo device for log messages,
using the platform device for log messages having to do with
resources is better since you can make a more direct correlation
between the log message and the device tree entry.

Change-Id: Ic0dedbad1fe2fd4d75ff738fc3942c7b20125683
Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
parent ed253b59
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -991,13 +991,14 @@ static void adreno_of_get_limits(struct adreno_device *adreno_dev,
static int adreno_of_get_legacy_pwrlevels(struct adreno_device *adreno_dev,
		struct device_node *parent)
{
	struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
	struct device_node *node;
	int ret;

	node = of_find_node_by_name(parent, "qcom,gpu-pwrlevels");

	if (node == NULL) {
		dev_err(KGSL_DEVICE(adreno_dev)->dev,
		dev_err(&device->pdev->dev,
			"Unable to find 'qcom,gpu-pwrlevels'\n");
		return -EINVAL;
	}
@@ -1016,6 +1017,7 @@ static int adreno_of_get_legacy_pwrlevels(struct adreno_device *adreno_dev,
static int adreno_of_get_pwrlevels(struct adreno_device *adreno_dev,
		struct device_node *parent)
{
	struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
	struct device_node *node, *child;
	unsigned int bin = 0;

@@ -1048,7 +1050,7 @@ static int adreno_of_get_pwrlevels(struct adreno_device *adreno_dev,
		}
	}

	dev_err(KGSL_DEVICE(adreno_dev)->dev,
	dev_err(&device->pdev->dev,
		"GPU speed_bin:%d mismatch for efused bin:%d\n",
		adreno_dev->speed_bin, bin);
	return -ENODEV;
@@ -1147,7 +1149,7 @@ static void adreno_cx_dbgc_probe(struct kgsl_device *device)

	adreno_dev->cx_dbgc_base = res->start - device->reg_phys;
	adreno_dev->cx_dbgc_len = resource_size(res);
	adreno_dev->cx_dbgc_virt = devm_ioremap(device->dev,
	adreno_dev->cx_dbgc_virt = devm_ioremap(&device->pdev->dev,
					device->reg_phys +
						adreno_dev->cx_dbgc_base,
					adreno_dev->cx_dbgc_len);
@@ -1168,7 +1170,7 @@ static void adreno_cx_misc_probe(struct kgsl_device *device)
		return;

	adreno_dev->cx_misc_len = resource_size(res);
	adreno_dev->cx_misc_virt = devm_ioremap(device->dev,
	adreno_dev->cx_misc_virt = devm_ioremap(&device->pdev->dev,
					res->start, adreno_dev->cx_misc_len);
}

@@ -1185,7 +1187,7 @@ static void adreno_rscc_probe(struct kgsl_device *device)

	adreno_dev->rscc_base = res->start - device->reg_phys;
	adreno_dev->rscc_len = resource_size(res);
	adreno_dev->rscc_virt = devm_ioremap(device->dev, res->start,
	adreno_dev->rscc_virt = devm_ioremap(&device->pdev->dev, res->start,
						adreno_dev->rscc_len);
	if (adreno_dev->rscc_virt == NULL)
		dev_warn(device->dev, "rscc ioremap failed\n");
@@ -1203,7 +1205,7 @@ static void adreno_isense_probe(struct kgsl_device *device)

	adreno_dev->isense_base = res->start - device->reg_phys;
	adreno_dev->isense_len = resource_size(res);
	adreno_dev->isense_virt = devm_ioremap(device->dev, res->start,
	adreno_dev->isense_virt = devm_ioremap(&device->pdev->dev, res->start,
					adreno_dev->isense_len);
	if (adreno_dev->isense_virt == NULL)
		dev_warn(device->dev, "isense ioremap failed\n");
+2 −2
Original line number Diff line number Diff line
@@ -1233,10 +1233,10 @@ static int _load_firmware(struct kgsl_device *device, const char *fwfile,
	const struct firmware *fw = NULL;
	int ret;

	ret = request_firmware(&fw, fwfile, device->dev);
	ret = request_firmware(&fw, fwfile, &device->pdev->dev);

	if (ret) {
		dev_err(device->dev, "request_firmware(%s) failed: %d\n",
		dev_err(&device->pdev->dev, "request_firmware(%s) failed: %d\n",
			     fwfile, ret);
		return ret;
	}
+6 −5
Original line number Diff line number Diff line
@@ -563,9 +563,10 @@ static int _load_gpmu_firmware(struct adreno_device *adreno_dev)
	if (a5xx_core->gpmufw_name == NULL)
		return 0;

	ret = request_firmware(&fw, a5xx_core->gpmufw_name, device->dev);
	ret = request_firmware(&fw, a5xx_core->gpmufw_name, &device->pdev->dev);
	if (ret || fw == NULL) {
		dev_err(device->dev, "request_firmware (%s) failed: %d\n",
		dev_err(&device->pdev->dev,
			"request_firmware (%s) failed: %d\n",
			a5xx_core->gpmufw_name, ret);
		return ret;
	}
@@ -804,9 +805,9 @@ static void _load_regfile(struct adreno_device *adreno_dev)
	if (!a5xx_core->regfw_name)
		return;

	ret = request_firmware(&fw, a5xx_core->regfw_name, device->dev);
	ret = request_firmware(&fw, a5xx_core->regfw_name, &device->pdev->dev);
	if (ret) {
		dev_err(device->dev, "request firmware failed %d, %s\n",
		dev_err(&device->pdev->dev, "request firmware failed %d, %s\n",
				ret, a5xx_core->regfw_name);
		return;
	}
+2 −2
Original line number Diff line number Diff line
@@ -1153,9 +1153,9 @@ static int a6xx_gmu_load_firmware(struct kgsl_device *device)
		return -EINVAL;

	ret = request_firmware(&gmu->fw_image, a6xx_core->gmufw_name,
			device->dev);
			&gmu->pdev->dev);
	if (ret) {
		dev_err(device->dev, "request_firmware (%s) failed: %d\n",
		dev_err(&gmu->pdev->dev, "request_firmware (%s) failed: %d\n",
				a6xx_core->gmufw_name, ret);
		return ret;
	}
+3 −3
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 */

#include <linux/firmware.h>
@@ -498,9 +498,9 @@ static int a6xx_rgmu_load_firmware(struct kgsl_device *device)
	if (rgmu->fw_hostptr)
		return 0;

	ret = request_firmware(&fw, a6xx_core->gmufw_name, device->dev);
	ret = request_firmware(&fw, a6xx_core->gmufw_name, &rgmu->pdev->dev);
	if (ret < 0) {
		pr_err("request_firmware (%s) failed: %d\n",
		dev_err(&rgmu->pdev->dev, "request_firmware (%s) failed: %d\n",
				a6xx_core->gmufw_name, ret);
		return ret;
	}
Loading