diff --git a/drivers/gpu/drm/panel/panel-lvds.c b/drivers/gpu/drm/panel/panel-lvds.c index 59a8d99e777d366e075fd133a79aaef34ab47f68..5b626e5bd88cd3781a11bc83712ca10bd802cfbb 100644 --- a/drivers/gpu/drm/panel/panel-lvds.c +++ b/drivers/gpu/drm/panel/panel-lvds.c @@ -175,9 +175,13 @@ static int panel_lvds_parse_dt(struct panel_lvds *lvds) static int panel_lvds_probe(struct platform_device *pdev) { + const int *connector; struct panel_lvds *lvds; int ret; + connector = of_device_get_match_data(&pdev->dev); + if(!connector) + return -ENODEV; lvds = devm_kzalloc(&pdev->dev, sizeof(*lvds), GFP_KERNEL); if (!lvds) return -ENOMEM; @@ -230,7 +234,7 @@ static int panel_lvds_probe(struct platform_device *pdev) /* Register the panel. */ drm_panel_init(&lvds->panel, lvds->dev, &panel_lvds_funcs, - DRM_MODE_CONNECTOR_LVDS); + *connector); ret = drm_panel_of_backlight(&lvds->panel); if (ret) @@ -253,8 +257,12 @@ static int panel_lvds_remove(struct platform_device *pdev) return 0; } +int connector_lvds = DRM_MODE_CONNECTOR_LVDS; +int connector_edp = DRM_MODE_CONNECTOR_eDP; + static const struct of_device_id panel_lvds_of_table[] = { - { .compatible = "panel-lvds", }, + { .compatible = "panel-lvds", .data = &connector_lvds}, + { .compatible = "panel-edp", .data = &connector_edp}, { /* Sentinel */ }, };