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: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://msgid.link/r/20240530151117.1130792-3-andriy.shevchenko@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a2fca8f2e2
commit
8aa5062e26
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user