if (ret)
                return ret;
 
-       ret = sdrv->probe(spi);
-       if (ret)
-               dev_pm_domain_detach(dev, true);
+       if (sdrv->probe) {
+               ret = sdrv->probe(spi);
+               if (ret)
+                       dev_pm_domain_detach(dev, true);
+       }
 
        return ret;
 }
 static int spi_drv_remove(struct device *dev)
 {
        const struct spi_driver         *sdrv = to_spi_driver(dev->driver);
-       int ret;
+       int ret = 0;
 
-       ret = sdrv->remove(to_spi_device(dev));
+       if (sdrv->remove)
+               ret = sdrv->remove(to_spi_device(dev));
        dev_pm_domain_detach(dev, true);
 
        return ret;
 {
        sdrv->driver.owner = owner;
        sdrv->driver.bus = &spi_bus_type;
-       if (sdrv->probe)
-               sdrv->driver.probe = spi_drv_probe;
-       if (sdrv->remove)
-               sdrv->driver.remove = spi_drv_remove;
+       sdrv->driver.probe = spi_drv_probe;
+       sdrv->driver.remove = spi_drv_remove;
        if (sdrv->shutdown)
                sdrv->driver.shutdown = spi_drv_shutdown;
        return driver_register(&sdrv->driver);