]> Pileus Git - ~andy/linux/blobdiff - drivers/mfd/mc13xxx-spi.c
Merge tag 'boards2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[~andy/linux] / drivers / mfd / mc13xxx-spi.c
index 03df422feb763ab075ac5fa741ef09b71c066d1d..cb32f69d80ba46cb6decc7b72ed506d1f8eba224 100644 (file)
@@ -119,17 +119,11 @@ static struct regmap_bus regmap_mc13xxx_bus = {
 
 static int mc13xxx_spi_probe(struct spi_device *spi)
 {
-       const struct of_device_id *of_id;
-       struct spi_driver *sdrv = to_spi_driver(spi->dev.driver);
        struct mc13xxx *mc13xxx;
        struct mc13xxx_platform_data *pdata = dev_get_platdata(&spi->dev);
        int ret;
 
-       of_id = of_match_device(mc13xxx_dt_ids, &spi->dev);
-       if (of_id)
-               sdrv->id_table = &mc13xxx_device_id[(enum mc13xxx_id) of_id->data];
-
-       mc13xxx = kzalloc(sizeof(*mc13xxx), GFP_KERNEL);
+       mc13xxx = devm_kzalloc(&spi->dev, sizeof(*mc13xxx), GFP_KERNEL);
        if (!mc13xxx)
                return -ENOMEM;
 
@@ -139,15 +133,14 @@ static int mc13xxx_spi_probe(struct spi_device *spi)
        mc13xxx->dev = &spi->dev;
        mutex_init(&mc13xxx->lock);
 
-       mc13xxx->regmap = regmap_init(&spi->dev, &regmap_mc13xxx_bus, &spi->dev,
-                                       &mc13xxx_regmap_spi_config);
-
+       mc13xxx->regmap = devm_regmap_init(&spi->dev, &regmap_mc13xxx_bus,
+                                          &spi->dev,
+                                          &mc13xxx_regmap_spi_config);
        if (IS_ERR(mc13xxx->regmap)) {
                ret = PTR_ERR(mc13xxx->regmap);
                dev_err(mc13xxx->dev, "Failed to initialize register map: %d\n",
                                ret);
                dev_set_drvdata(&spi->dev, NULL);
-               kfree(mc13xxx);
                return ret;
        }
 
@@ -166,7 +159,7 @@ static int mc13xxx_spi_probe(struct spi_device *spi)
        return ret;
 }
 
-static int __devexit mc13xxx_spi_remove(struct spi_device *spi)
+static int mc13xxx_spi_remove(struct spi_device *spi)
 {
        struct mc13xxx *mc13xxx = dev_get_drvdata(&spi->dev);
 
@@ -183,7 +176,7 @@ static struct spi_driver mc13xxx_spi_driver = {
                .of_match_table = mc13xxx_dt_ids,
        },
        .probe = mc13xxx_spi_probe,
-       .remove = __devexit_p(mc13xxx_spi_remove),
+       .remove = mc13xxx_spi_remove,
 };
 
 static int __init mc13xxx_init(void)