{
        struct device *dev = ssi->dev;
        struct device_node *np = dev->of_node;
-       const struct of_device_id *of_id;
        const char *p, *sprop;
        const __be32 *iprop;
        u32 dmas[4];
        int ret;
 
-       of_id = of_match_device(fsl_ssi_ids, dev);
-       if (!of_id || !of_id->data)
-               return -EINVAL;
-
-       ssi->soc = of_id->data;
-
        ret = of_property_match_string(np, "clock-names", "ipg");
        /* Get error code if not found */
        ssi->has_ipg_clk_name = ret >= 0;
                return -ENOMEM;
 
        ssi->dev = dev;
+       ssi->soc = of_device_get_match_data(&pdev->dev);
 
        /* Probe from DT */
        ret = fsl_ssi_probe_from_dt(ssi);