mirror of
https://github.com/torvalds/linux.git
synced 2024-10-31 17:21:49 +00:00
spi/spi_s3c64xx: Make probe more robust against missing board config
The S3C64xx SPI driver requires the machine to call s3c64xx_spi_set_info() to select a few options, including the clock to use for the SPI controller. If this is not done then a NULL will be passed as the clock name for clk_get(), causing an obscure crash. Guard against this and other missing configuration by validating that the clock name has been filled in in the platform data that ets passed in. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
2bfc96a127
commit
cc0fc0bbeb
@ -919,6 +919,13 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sci = pdev->dev.platform_data;
|
||||||
|
if (!sci->src_clk_name) {
|
||||||
|
dev_err(&pdev->dev,
|
||||||
|
"Board init must call s3c64xx_spi_set_info()\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check for availability of necessary resource */
|
/* Check for availability of necessary resource */
|
||||||
|
|
||||||
dmatx_res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
|
dmatx_res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
|
||||||
@ -946,8 +953,6 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
sci = pdev->dev.platform_data;
|
|
||||||
|
|
||||||
platform_set_drvdata(pdev, master);
|
platform_set_drvdata(pdev, master);
|
||||||
|
|
||||||
sdd = spi_master_get_devdata(master);
|
sdd = spi_master_get_devdata(master);
|
||||||
|
Loading…
Reference in New Issue
Block a user