Linux 6.9-rc1
[linux-2.6-microblaze.git] / drivers / siox / siox-bus-gpio.c
index aeefeb7..9e01642 100644 (file)
@@ -91,63 +91,42 @@ static int siox_gpio_probe(struct platform_device *pdev)
        int ret;
        struct siox_master *smaster;
 
-       smaster = siox_master_alloc(&pdev->dev, sizeof(*ddata));
-       if (!smaster) {
-               dev_err(dev, "failed to allocate siox master\n");
-               return -ENOMEM;
-       }
+       smaster = devm_siox_master_alloc(dev, sizeof(*ddata));
+       if (!smaster)
+               return dev_err_probe(dev, -ENOMEM,
+                                    "failed to allocate siox master\n");
 
        platform_set_drvdata(pdev, smaster);
        ddata = siox_master_get_devdata(smaster);
 
        ddata->din = devm_gpiod_get(dev, "din", GPIOD_IN);
-       if (IS_ERR(ddata->din)) {
-               ret = dev_err_probe(dev, PTR_ERR(ddata->din),
-                                   "Failed to get din GPIO\n");
-               goto err;
-       }
+       if (IS_ERR(ddata->din))
+               return dev_err_probe(dev, PTR_ERR(ddata->din),
+                                    "Failed to get din GPIO\n");
 
        ddata->dout = devm_gpiod_get(dev, "dout", GPIOD_OUT_LOW);
-       if (IS_ERR(ddata->dout)) {
-               ret = dev_err_probe(dev, PTR_ERR(ddata->dout),
-                                   "Failed to get dout GPIO\n");
-               goto err;
-       }
+       if (IS_ERR(ddata->dout))
+               return dev_err_probe(dev, PTR_ERR(ddata->dout),
+                                    "Failed to get dout GPIO\n");
 
        ddata->dclk = devm_gpiod_get(dev, "dclk", GPIOD_OUT_LOW);
-       if (IS_ERR(ddata->dclk)) {
-               ret = dev_err_probe(dev, PTR_ERR(ddata->dclk),
-                                   "Failed to get dclk GPIO\n");
-               goto err;
-       }
+       if (IS_ERR(ddata->dclk))
+               return dev_err_probe(dev, PTR_ERR(ddata->dclk),
+                                    "Failed to get dclk GPIO\n");
 
        ddata->dld = devm_gpiod_get(dev, "dld", GPIOD_OUT_LOW);
-       if (IS_ERR(ddata->dld)) {
-               ret = dev_err_probe(dev, PTR_ERR(ddata->dld),
-                                   "Failed to get dld GPIO\n");
-               goto err;
-       }
+       if (IS_ERR(ddata->dld))
+               return dev_err_probe(dev, PTR_ERR(ddata->dld),
+                                    "Failed to get dld GPIO\n");
 
        smaster->pushpull = siox_gpio_pushpull;
        /* XXX: determine automatically like spi does */
        smaster->busno = 0;
 
-       ret = siox_master_register(smaster);
-       if (ret) {
-               dev_err_probe(dev, ret,
-                             "Failed to register siox master\n");
-err:
-               siox_master_put(smaster);
-       }
-
-       return ret;
-}
-
-static int siox_gpio_remove(struct platform_device *pdev)
-{
-       struct siox_master *master = platform_get_drvdata(pdev);
-
-       siox_master_unregister(master);
+       ret = devm_siox_master_register(dev, smaster);
+       if (ret)
+               return dev_err_probe(dev, ret,
+                                    "Failed to register siox master\n");
 
        return 0;
 }
@@ -160,7 +139,6 @@ MODULE_DEVICE_TABLE(of, siox_gpio_dt_ids);
 
 static struct platform_driver siox_gpio_driver = {
        .probe = siox_gpio_probe,
-       .remove = siox_gpio_remove,
 
        .driver = {
                .name = DRIVER_NAME,