diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 7abb42e486c0..011b0b937700 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -538,8 +538,8 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, { struct platform_device *pdev = to_platform_device(dev); struct device_node *np = dev_of_node(dev); + const struct dw_hdmi_plat_data *drv_data; struct dw_hdmi_plat_data *plat_data; - const struct of_device_id *match; struct drm_device *drm = data; struct drm_encoder *encoder; struct rockchip_hdmi *hdmi; @@ -548,13 +548,16 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, if (!np) return -ENODEV; + drv_data = of_device_get_match_data(dev); + if (!drv_data) + return -ENODEV; + hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); if (!hdmi) return -ENOMEM; - match = of_match_node(dw_hdmi_rockchip_dt_ids, np); - plat_data = devm_kmemdup(&pdev->dev, match->data, - sizeof(*plat_data), GFP_KERNEL); + plat_data = devm_kmemdup(&pdev->dev, drv_data, + sizeof(*drv_data), GFP_KERNEL); if (!plat_data) return -ENOMEM;