struct device *dev = &pdev->dev;
        struct device *parent = dev->parent;
        enum pxa_ssp_type type = SSP_UNDEFINED;
+       struct ssp_device *ssp = NULL;
        const void *match;
        bool is_lpss_priv;
        int status;
                        return ERR_PTR(status);
 
                type = (enum pxa_ssp_type)value;
+       } else {
+               ssp = pxa_ssp_request(pdev->id, pdev->name);
+               if (ssp)
+                       type = ssp->type;
        }
 
        /* Validate the SSP type correctness */
        pdata->enable_dma = true;
        pdata->dma_burst_size = 1;
 
+       /* If SSP has been already enumerated, use it */
+       if (ssp)
+               return pdata;
+
        status = pxa2xx_spi_init_ssp(pdev, &pdata->ssp, type);
        if (status)
                return ERR_PTR(status);