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

Commit 04825cfe authored by Suthikulpanit, Suravee's avatar Suthikulpanit, Suravee Committed by Rafael J. Wysocki
Browse files

crypto: ccp - Unify coherency checking logic with device_dma_is_coherent()



Currently, the driver has separate logic to determine device coherency
for DT vs ACPI.  This patch simplifies the code with a call to
device_dma_is_coherent().

Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: default avatarSuravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 05ca5560
Loading
Loading
Loading
Loading
+1 −59
Original line number Diff line number Diff line
@@ -90,58 +90,6 @@ static struct resource *ccp_find_mmio_area(struct ccp_device *ccp)
	return NULL;
}

#ifdef CONFIG_ACPI
static int ccp_acpi_support(struct ccp_device *ccp)
{
	struct ccp_platform *ccp_platform = ccp->dev_specific;
	struct acpi_device *adev = ACPI_COMPANION(ccp->dev);
	acpi_handle handle;
	acpi_status status;
	unsigned long long data;
	int cca;

	/* Retrieve the device cache coherency value */
	handle = adev->handle;
	do {
		status = acpi_evaluate_integer(handle, "_CCA", NULL, &data);
		if (!ACPI_FAILURE(status)) {
			cca = data;
			break;
		}
	} while (!ACPI_FAILURE(status));

	if (ACPI_FAILURE(status)) {
		dev_err(ccp->dev, "error obtaining acpi coherency value\n");
		return -EINVAL;
	}

	ccp_platform->coherent = !!cca;

	return 0;
}
#else	/* CONFIG_ACPI */
static int ccp_acpi_support(struct ccp_device *ccp)
{
	return -EINVAL;
}
#endif

#ifdef CONFIG_OF
static int ccp_of_support(struct ccp_device *ccp)
{
	struct ccp_platform *ccp_platform = ccp->dev_specific;

	ccp_platform->coherent = of_dma_is_coherent(ccp->dev->of_node);

	return 0;
}
#else
static int ccp_of_support(struct ccp_device *ccp)
{
	return -EINVAL;
}
#endif

static int ccp_platform_probe(struct platform_device *pdev)
{
	struct ccp_device *ccp;
@@ -182,13 +130,7 @@ static int ccp_platform_probe(struct platform_device *pdev)
		goto e_err;
	}

	if (ccp_platform->use_acpi)
		ret = ccp_acpi_support(ccp);
	else
		ret = ccp_of_support(ccp);
	if (ret)
		goto e_err;

	ccp_platform->coherent = device_dma_is_coherent(ccp->dev);
	if (ccp_platform->coherent)
		ccp->axcache = CACHE_WB_NO_ALLOC;
	else