Unverified Commit 8aa5062e authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mark Brown
Browse files

spi: pxa2xx: Reorganize the SSP type retrieval



The old Intel platforms, such as Intel Braswell, also provide
the property of SSP type. Reorganize the pxa2xx_spi_init_pdata()
to take that into account.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://msgid.link/r/20240530151117.1130792-3-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a2fca8f2
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -1331,19 +1331,21 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
	struct pxa2xx_spi_controller *pdata;
	struct device *dev = &pdev->dev;
	struct device *parent = dev->parent;
	const void *match = device_get_match_data(dev);
	enum pxa_ssp_type type = SSP_UNDEFINED;
	struct ssp_device *ssp = NULL;
	const void *match;
	struct ssp_device *ssp;
	bool is_lpss_priv;
	u32 num_cs = 1;
	int status;

	is_lpss_priv = platform_get_resource_byname(pdev, IORESOURCE_MEM, "lpss_priv");

	match = device_get_match_data(dev);
	if (match)
		type = (uintptr_t)match;
	else if (is_lpss_priv) {
	ssp = pxa2xx_spi_ssp_request(pdev);
	if (IS_ERR(ssp))
		return ERR_CAST(ssp);
	if (ssp) {
		type = ssp->type;
	} else if (match) {
		type = (enum pxa_ssp_type)(uintptr_t)match;
	} else {
		u32 value;

		status = device_property_read_u32(dev, "intel,spi-pxa2xx-type", &value);
@@ -1351,12 +1353,6 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
			return ERR_PTR(status);

		type = (enum pxa_ssp_type)value;
	} else {
		ssp = pxa2xx_spi_ssp_request(pdev);
		if (IS_ERR(ssp))
			return ERR_CAST(ssp);
		if (ssp)
			type = ssp->type;
	}

	/* Validate the SSP type correctness */
@@ -1368,6 +1364,7 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
		return ERR_PTR(-ENOMEM);

	/* Platforms with iDMA 64-bit */
	is_lpss_priv = platform_get_resource_byname(pdev, IORESOURCE_MEM, "lpss_priv");
	if (is_lpss_priv) {
		pdata->tx_param = parent;
		pdata->rx_param = parent;