Skip to content

Commit

Permalink
spi/spi_s3c64xx: Make probe more robust against missing board config
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mark Brown authored and Grant Likely committed Sep 1, 2010
1 parent 2bfc96a commit cc0fc0b
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/spi/spi_s3c64xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,13 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
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 */

dmatx_res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
Expand Down Expand Up @@ -946,8 +953,6 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
return -ENOMEM;
}

sci = pdev->dev.platform_data;

platform_set_drvdata(pdev, master);

sdd = spi_master_get_devdata(master);
Expand Down

0 comments on commit cc0fc0b

Please sign in to comment.