else if (pcidev_id)
                type = (enum pxa_ssp_type)pcidev_id->driver_data;
        else
-               return NULL;
+               return ERR_PTR(-EINVAL);
 
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
-               return NULL;
+               return ERR_PTR(-ENOMEM);
 
        ssp = &pdata->ssp;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        ssp->mmio_base = devm_ioremap_resource(&pdev->dev, res);
        if (IS_ERR(ssp->mmio_base))
-               return NULL;
+               return ERR_CAST(ssp->mmio_base);
 
        ssp->phys_base = res->start;
 
 
        ssp->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(ssp->clk))
-               return NULL;
+               return ERR_CAST(ssp->clk);
 
        ssp->irq = platform_get_irq(pdev, 0);
        if (ssp->irq < 0)
-               return NULL;
+               return ERR_PTR(ssp->irq);
 
        ssp->type = type;
        ssp->dev = &pdev->dev;
        platform_info = dev_get_platdata(dev);
        if (!platform_info) {
                platform_info = pxa2xx_spi_init_pdata(pdev);
-               if (!platform_info) {
+               if (IS_ERR(platform_info)) {
                        dev_err(&pdev->dev, "missing platform data\n");
-                       return -ENODEV;
+                       return PTR_ERR(platform_info);
                }
        }