static int sh_mobile_sdhi_probe(struct platform_device *pdev)
 {
-       const struct of_device_id *of_id =
-               of_match_device(sh_mobile_sdhi_of_match, &pdev->dev);
+       const struct sh_mobile_sdhi_of_data *of_data = of_device_get_match_data(&pdev->dev);
        struct sh_mobile_sdhi *priv;
        struct tmio_mmc_data *mmc_data;
        struct tmio_mmc_data *mmd = pdev->dev.platform_data;
                goto eprobe;
        }
 
-       if (of_id && of_id->data) {
-               const struct sh_mobile_sdhi_of_data *of_data = of_id->data;
 
+       if (of_data) {
                mmc_data->flags |= of_data->tmio_flags;
                mmc_data->ocr_mask = of_data->tmio_ocr_mask;
                mmc_data->capabilities |= of_data->capabilities;
        if (host->mmc->caps & MMC_CAP_UHS_SDR104) {
                host->mmc->caps |= MMC_CAP_HW_RESET;
 
-               if (of_id && of_id->data) {
-                       const struct sh_mobile_sdhi_of_data *of_data;
-                       const struct sh_mobile_sdhi_scc *taps;
+               if (of_data) {
+                       const struct sh_mobile_sdhi_scc *taps = of_data->taps;
                        bool hit = false;
 
-                       of_data = of_id->data;
-                       taps = of_data->taps;
-
                        for (i = 0; i < of_data->taps_num; i++) {
                                if (taps[i].clk_rate == 0 ||
                                    taps[i].clk_rate == host->mmc->f_max) {