Commit e1f9c849 authored by Dave Airlie's avatar Dave Airlie

Merge tag 'mediatek-drm-next-6.6' of...

Merge tag 'mediatek-drm-next-6.6' of https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux into drm-next

Mediatek DRM Next for Linux 6.6

1. Small mtk-dpi cleanups
2. DisplayPort: support eDP and aux-bus
3. Fix uninitialized symbol
4. Do not check for 0 return after calling platform_get_irq()
5. Convert to platform remove callback returning void
6. Fix coverity issues
7. Fix potential memory leak if vmap() fail
8. Fix void-pointer-to-enum-cast warning
9. Rid W=1 warnings from GPU
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230813152726.14802-1-chunkuang.hu@kernel.org
parents 57bca71d fb7e600d
...@@ -26,6 +26,7 @@ config DRM_MEDIATEK_DP ...@@ -26,6 +26,7 @@ config DRM_MEDIATEK_DP
select PHY_MTK_DP select PHY_MTK_DP
select DRM_DISPLAY_HELPER select DRM_DISPLAY_HELPER
select DRM_DISPLAY_DP_HELPER select DRM_DISPLAY_DP_HELPER
select DRM_DP_AUX_BUS
help help
DRM/KMS Display Port driver for MediaTek SoCs. DRM/KMS Display Port driver for MediaTek SoCs.
......
...@@ -235,13 +235,12 @@ static int mtk_cec_probe(struct platform_device *pdev) ...@@ -235,13 +235,12 @@ static int mtk_cec_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int mtk_cec_remove(struct platform_device *pdev) static void mtk_cec_remove(struct platform_device *pdev)
{ {
struct mtk_cec *cec = platform_get_drvdata(pdev); struct mtk_cec *cec = platform_get_drvdata(pdev);
mtk_cec_htplg_irq_disable(cec); mtk_cec_htplg_irq_disable(cec);
clk_disable_unprepare(cec->clk); clk_disable_unprepare(cec->clk);
return 0;
} }
static const struct of_device_id mtk_cec_of_ids[] = { static const struct of_device_id mtk_cec_of_ids[] = {
...@@ -252,7 +251,7 @@ MODULE_DEVICE_TABLE(of, mtk_cec_of_ids); ...@@ -252,7 +251,7 @@ MODULE_DEVICE_TABLE(of, mtk_cec_of_ids);
struct platform_driver mtk_cec_driver = { struct platform_driver mtk_cec_driver = {
.probe = mtk_cec_probe, .probe = mtk_cec_probe,
.remove = mtk_cec_remove, .remove_new = mtk_cec_remove,
.driver = { .driver = {
.name = "mediatek-cec", .name = "mediatek-cec",
.of_match_table = mtk_cec_of_ids, .of_match_table = mtk_cec_of_ids,
......
...@@ -25,11 +25,6 @@ struct mtk_disp_aal_data { ...@@ -25,11 +25,6 @@ struct mtk_disp_aal_data {
bool has_gamma; bool has_gamma;
}; };
/**
* struct mtk_disp_aal - DISP_AAL driver structure
* @ddp_comp - structure containing type enum and hardware resources
* @crtc - associated crtc to report irq events to
*/
struct mtk_disp_aal { struct mtk_disp_aal {
struct clk *clk; struct clk *clk;
void __iomem *regs; void __iomem *regs;
...@@ -139,11 +134,9 @@ static int mtk_disp_aal_probe(struct platform_device *pdev) ...@@ -139,11 +134,9 @@ static int mtk_disp_aal_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_aal_remove(struct platform_device *pdev) static void mtk_disp_aal_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_aal_component_ops); component_del(&pdev->dev, &mtk_disp_aal_component_ops);
return 0;
} }
static const struct mtk_disp_aal_data mt8173_aal_driver_data = { static const struct mtk_disp_aal_data mt8173_aal_driver_data = {
...@@ -160,7 +153,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_aal_driver_dt_match); ...@@ -160,7 +153,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_aal_driver_dt_match);
struct platform_driver mtk_disp_aal_driver = { struct platform_driver mtk_disp_aal_driver = {
.probe = mtk_disp_aal_probe, .probe = mtk_disp_aal_probe,
.remove = mtk_disp_aal_remove, .remove_new = mtk_disp_aal_remove,
.driver = { .driver = {
.name = "mediatek-disp-aal", .name = "mediatek-disp-aal",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -33,11 +33,6 @@ struct mtk_disp_ccorr_data { ...@@ -33,11 +33,6 @@ struct mtk_disp_ccorr_data {
u32 matrix_bits; u32 matrix_bits;
}; };
/**
* struct mtk_disp_ccorr - DISP_CCORR driver structure
* @ddp_comp - structure containing type enum and hardware resources
* @crtc - associated crtc to report irq events to
*/
struct mtk_disp_ccorr { struct mtk_disp_ccorr {
struct clk *clk; struct clk *clk;
void __iomem *regs; void __iomem *regs;
...@@ -194,11 +189,9 @@ static int mtk_disp_ccorr_probe(struct platform_device *pdev) ...@@ -194,11 +189,9 @@ static int mtk_disp_ccorr_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_ccorr_remove(struct platform_device *pdev) static void mtk_disp_ccorr_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_ccorr_component_ops); component_del(&pdev->dev, &mtk_disp_ccorr_component_ops);
return 0;
} }
static const struct mtk_disp_ccorr_data mt8183_ccorr_driver_data = { static const struct mtk_disp_ccorr_data mt8183_ccorr_driver_data = {
...@@ -220,7 +213,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_ccorr_driver_dt_match); ...@@ -220,7 +213,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_ccorr_driver_dt_match);
struct platform_driver mtk_disp_ccorr_driver = { struct platform_driver mtk_disp_ccorr_driver = {
.probe = mtk_disp_ccorr_probe, .probe = mtk_disp_ccorr_probe,
.remove = mtk_disp_ccorr_remove, .remove_new = mtk_disp_ccorr_remove,
.driver = { .driver = {
.name = "mediatek-disp-ccorr", .name = "mediatek-disp-ccorr",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -131,11 +131,9 @@ static int mtk_disp_color_probe(struct platform_device *pdev) ...@@ -131,11 +131,9 @@ static int mtk_disp_color_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_color_remove(struct platform_device *pdev) static void mtk_disp_color_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_color_component_ops); component_del(&pdev->dev, &mtk_disp_color_component_ops);
return 0;
} }
static const struct mtk_disp_color_data mt2701_color_driver_data = { static const struct mtk_disp_color_data mt2701_color_driver_data = {
...@@ -163,7 +161,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_color_driver_dt_match); ...@@ -163,7 +161,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_color_driver_dt_match);
struct platform_driver mtk_disp_color_driver = { struct platform_driver mtk_disp_color_driver = {
.probe = mtk_disp_color_probe, .probe = mtk_disp_color_probe,
.remove = mtk_disp_color_remove, .remove_new = mtk_disp_color_remove,
.driver = { .driver = {
.name = "mediatek-disp-color", .name = "mediatek-disp-color",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -182,11 +182,9 @@ static int mtk_disp_gamma_probe(struct platform_device *pdev) ...@@ -182,11 +182,9 @@ static int mtk_disp_gamma_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_gamma_remove(struct platform_device *pdev) static void mtk_disp_gamma_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_gamma_component_ops); component_del(&pdev->dev, &mtk_disp_gamma_component_ops);
return 0;
} }
static const struct mtk_disp_gamma_data mt8173_gamma_driver_data = { static const struct mtk_disp_gamma_data mt8173_gamma_driver_data = {
...@@ -208,7 +206,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_gamma_driver_dt_match); ...@@ -208,7 +206,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_gamma_driver_dt_match);
struct platform_driver mtk_disp_gamma_driver = { struct platform_driver mtk_disp_gamma_driver = {
.probe = mtk_disp_gamma_probe, .probe = mtk_disp_gamma_probe,
.remove = mtk_disp_gamma_remove, .remove_new = mtk_disp_gamma_remove,
.driver = { .driver = {
.name = "mediatek-disp-gamma", .name = "mediatek-disp-gamma",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -294,11 +294,9 @@ static int mtk_disp_merge_probe(struct platform_device *pdev) ...@@ -294,11 +294,9 @@ static int mtk_disp_merge_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_merge_remove(struct platform_device *pdev) static void mtk_disp_merge_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_merge_component_ops); component_del(&pdev->dev, &mtk_disp_merge_component_ops);
return 0;
} }
static const struct of_device_id mtk_disp_merge_driver_dt_match[] = { static const struct of_device_id mtk_disp_merge_driver_dt_match[] = {
...@@ -310,7 +308,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_merge_driver_dt_match); ...@@ -310,7 +308,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_merge_driver_dt_match);
struct platform_driver mtk_disp_merge_driver = { struct platform_driver mtk_disp_merge_driver = {
.probe = mtk_disp_merge_probe, .probe = mtk_disp_merge_probe,
.remove = mtk_disp_merge_remove, .remove_new = mtk_disp_merge_remove,
.driver = { .driver = {
.name = "mediatek-disp-merge", .name = "mediatek-disp-merge",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -561,12 +561,10 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev) ...@@ -561,12 +561,10 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_ovl_remove(struct platform_device *pdev) static void mtk_disp_ovl_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_ovl_component_ops); component_del(&pdev->dev, &mtk_disp_ovl_component_ops);
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
return 0;
} }
static const struct mtk_disp_ovl_data mt2701_ovl_driver_data = { static const struct mtk_disp_ovl_data mt2701_ovl_driver_data = {
...@@ -658,7 +656,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_ovl_driver_dt_match); ...@@ -658,7 +656,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_ovl_driver_dt_match);
struct platform_driver mtk_disp_ovl_driver = { struct platform_driver mtk_disp_ovl_driver = {
.probe = mtk_disp_ovl_probe, .probe = mtk_disp_ovl_probe,
.remove = mtk_disp_ovl_remove, .remove_new = mtk_disp_ovl_remove,
.driver = { .driver = {
.name = "mediatek-disp-ovl", .name = "mediatek-disp-ovl",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
...@@ -427,7 +427,7 @@ static int ovl_adaptor_comp_init(struct device *dev, struct component_match **ma ...@@ -427,7 +427,7 @@ static int ovl_adaptor_comp_init(struct device *dev, struct component_match **ma
continue; continue;
} }
type = (enum mtk_ovl_adaptor_comp_type)of_id->data; type = (enum mtk_ovl_adaptor_comp_type)(uintptr_t)of_id->data;
id = ovl_adaptor_comp_get_id(dev, node, type); id = ovl_adaptor_comp_get_id(dev, node, type);
if (id < 0) { if (id < 0) {
dev_warn(dev, "Skipping unknown component %pOF\n", dev_warn(dev, "Skipping unknown component %pOF\n",
......
...@@ -379,13 +379,11 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev) ...@@ -379,13 +379,11 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_disp_rdma_remove(struct platform_device *pdev) static void mtk_disp_rdma_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_disp_rdma_component_ops); component_del(&pdev->dev, &mtk_disp_rdma_component_ops);
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
return 0;
} }
static const struct mtk_disp_rdma_data mt2701_rdma_driver_data = { static const struct mtk_disp_rdma_data mt2701_rdma_driver_data = {
...@@ -427,7 +425,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_rdma_driver_dt_match); ...@@ -427,7 +425,7 @@ MODULE_DEVICE_TABLE(of, mtk_disp_rdma_driver_dt_match);
struct platform_driver mtk_disp_rdma_driver = { struct platform_driver mtk_disp_rdma_driver = {
.probe = mtk_disp_rdma_probe, .probe = mtk_disp_rdma_probe,
.remove = mtk_disp_rdma_remove, .remove_new = mtk_disp_rdma_remove,
.driver = { .driver = {
.name = "mediatek-disp-rdma", .name = "mediatek-disp-rdma",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
This diff is collapsed.
...@@ -1006,7 +1006,6 @@ static int mtk_dpi_probe(struct platform_device *pdev) ...@@ -1006,7 +1006,6 @@ static int mtk_dpi_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct mtk_dpi *dpi; struct mtk_dpi *dpi;
struct resource *mem;
int ret; int ret;
dpi = devm_kzalloc(dev, sizeof(*dpi), GFP_KERNEL); dpi = devm_kzalloc(dev, sizeof(*dpi), GFP_KERNEL);
...@@ -1037,49 +1036,34 @@ static int mtk_dpi_probe(struct platform_device *pdev) ...@@ -1037,49 +1036,34 @@ static int mtk_dpi_probe(struct platform_device *pdev)
dev_dbg(&pdev->dev, "Cannot find pinctrl active!\n"); dev_dbg(&pdev->dev, "Cannot find pinctrl active!\n");
} }
} }
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); dpi->regs = devm_platform_ioremap_resource(pdev, 0);
dpi->regs = devm_ioremap_resource(dev, mem); if (IS_ERR(dpi->regs))
if (IS_ERR(dpi->regs)) { return dev_err_probe(dev, PTR_ERR(dpi->regs),
ret = PTR_ERR(dpi->regs); "Failed to ioremap mem resource\n");
dev_err(dev, "Failed to ioremap mem resource: %d\n", ret);
return ret;
}
dpi->engine_clk = devm_clk_get(dev, "engine"); dpi->engine_clk = devm_clk_get(dev, "engine");
if (IS_ERR(dpi->engine_clk)) { if (IS_ERR(dpi->engine_clk))
ret = PTR_ERR(dpi->engine_clk); return dev_err_probe(dev, PTR_ERR(dpi->engine_clk),
if (ret != -EPROBE_DEFER) "Failed to get engine clock\n");
dev_err(dev, "Failed to get engine clock: %d\n", ret);
return ret;
}
dpi->pixel_clk = devm_clk_get(dev, "pixel"); dpi->pixel_clk = devm_clk_get(dev, "pixel");
if (IS_ERR(dpi->pixel_clk)) { if (IS_ERR(dpi->pixel_clk))
ret = PTR_ERR(dpi->pixel_clk); return dev_err_probe(dev, PTR_ERR(dpi->pixel_clk),
if (ret != -EPROBE_DEFER) "Failed to get pixel clock\n");
dev_err(dev, "Failed to get pixel clock: %d\n", ret);
return ret;
}
dpi->tvd_clk = devm_clk_get(dev, "pll"); dpi->tvd_clk = devm_clk_get(dev, "pll");
if (IS_ERR(dpi->tvd_clk)) { if (IS_ERR(dpi->tvd_clk))
ret = PTR_ERR(dpi->tvd_clk); return dev_err_probe(dev, PTR_ERR(dpi->tvd_clk),
if (ret != -EPROBE_DEFER) "Failed to get tvdpll clock\n");
dev_err(dev, "Failed to get tvdpll clock: %d\n", ret);
return ret;
}
dpi->irq = platform_get_irq(pdev, 0); dpi->irq = platform_get_irq(pdev, 0);
if (dpi->irq <= 0) if (dpi->irq < 0)
return -EINVAL; return dpi->irq;
ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0, dpi->next_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
NULL, &dpi->next_bridge); if (IS_ERR(dpi->next_bridge))
if (ret) return dev_err_probe(dev, PTR_ERR(dpi->next_bridge),
return ret; "Failed to get bridge\n");
dev_info(dev, "Found bridge node: %pOF\n", dpi->next_bridge->of_node); dev_info(dev, "Found bridge node: %pOF\n", dpi->next_bridge->of_node);
...@@ -1089,57 +1073,37 @@ static int mtk_dpi_probe(struct platform_device *pdev) ...@@ -1089,57 +1073,37 @@ static int mtk_dpi_probe(struct platform_device *pdev)
dpi->bridge.of_node = dev->of_node; dpi->bridge.of_node = dev->of_node;
dpi->bridge.type = DRM_MODE_CONNECTOR_DPI; dpi->bridge.type = DRM_MODE_CONNECTOR_DPI;
drm_bridge_add(&dpi->bridge); ret = devm_drm_bridge_add(dev, &dpi->bridge);
if (ret)
return ret;
ret = component_add(dev, &mtk_dpi_component_ops); ret = component_add(dev, &mtk_dpi_component_ops);
if (ret) { if (ret)
drm_bridge_remove(&dpi->bridge); return dev_err_probe(dev, ret, "Failed to add component.\n");
dev_err(dev, "Failed to add component: %d\n", ret);
return ret;
}
return 0; return 0;
} }
static int mtk_dpi_remove(struct platform_device *pdev) static void mtk_dpi_remove(struct platform_device *pdev)
{ {
struct mtk_dpi *dpi = platform_get_drvdata(pdev);
component_del(&pdev->dev, &mtk_dpi_component_ops); component_del(&pdev->dev, &mtk_dpi_component_ops);
drm_bridge_remove(&dpi->bridge);
return 0;
} }
static const struct of_device_id mtk_dpi_of_ids[] = { static const struct of_device_id mtk_dpi_of_ids[] = {
{ .compatible = "mediatek,mt2701-dpi", { .compatible = "mediatek,mt2701-dpi", .data = &mt2701_conf },
.data = &mt2701_conf, { .compatible = "mediatek,mt8173-dpi", .data = &mt8173_conf },
}, { .compatible = "mediatek,mt8183-dpi", .data = &mt8183_conf },
{ .compatible = "mediatek,mt8173-dpi", { .compatible = "mediatek,mt8186-dpi", .data = &mt8186_conf },
.data = &mt8173_conf, { .compatible = "mediatek,mt8188-dp-intf", .data = &mt8188_dpintf_conf },
}, { .compatible = "mediatek,mt8192-dpi", .data = &mt8192_conf },
{ .compatible = "mediatek,mt8183-dpi", { .compatible = "mediatek,mt8195-dp-intf", .data = &mt8195_dpintf_conf },
.data = &mt8183_conf, { /* sentinel */ },
},
{ .compatible = "mediatek,mt8186-dpi",
.data = &mt8186_conf,
},
{ .compatible = "mediatek,mt8188-dp-intf",
.data = &mt8188_dpintf_conf,
},
{ .compatible = "mediatek,mt8192-dpi",
.data = &mt8192_conf,
},
{ .compatible = "mediatek,mt8195-dp-intf",
.data = &mt8195_dpintf_conf,
},
{ },
}; };
MODULE_DEVICE_TABLE(of, mtk_dpi_of_ids); MODULE_DEVICE_TABLE(of, mtk_dpi_of_ids);
struct platform_driver mtk_dpi_driver = { struct platform_driver mtk_dpi_driver = {
.probe = mtk_dpi_probe, .probe = mtk_dpi_probe,
.remove = mtk_dpi_remove, .remove_new = mtk_dpi_remove,
.driver = { .driver = {
.name = "mediatek-dpi", .name = "mediatek-dpi",
.of_match_table = mtk_dpi_of_ids, .of_match_table = mtk_dpi_of_ids,
......
...@@ -117,10 +117,9 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt * ...@@ -117,10 +117,9 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *
dma_addr_t dma_addr; dma_addr_t dma_addr;
pkt->va_base = kzalloc(size, GFP_KERNEL); pkt->va_base = kzalloc(size, GFP_KERNEL);
if (!pkt->va_base) { if (!pkt->va_base)
kfree(pkt);
return -ENOMEM; return -ENOMEM;
}
pkt->buf_size = size; pkt->buf_size = size;
pkt->cl = (void *)client; pkt->cl = (void *)client;
...@@ -130,7 +129,6 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt * ...@@ -130,7 +129,6 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *
if (dma_mapping_error(dev, dma_addr)) { if (dma_mapping_error(dev, dma_addr)) {
dev_err(dev, "dma map failed, size=%u\n", (u32)(u64)size); dev_err(dev, "dma map failed, size=%u\n", (u32)(u64)size);
kfree(pkt->va_base); kfree(pkt->va_base);
kfree(pkt);
return -ENOMEM; return -ENOMEM;
} }
...@@ -146,7 +144,6 @@ static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt) ...@@ -146,7 +144,6 @@ static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt)
dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size, dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size,
DMA_TO_DEVICE); DMA_TO_DEVICE);
kfree(pkt->va_base); kfree(pkt->va_base);
kfree(pkt);
} }
#endif #endif
......
...@@ -563,14 +563,15 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, ...@@ -563,14 +563,15 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
/* Not all drm components have a DTS device node, such as ovl_adaptor, /* Not all drm components have a DTS device node, such as ovl_adaptor,
* which is the drm bring up sub driver * which is the drm bring up sub driver
*/ */
if (node) { if (!node)
comp_pdev = of_find_device_by_node(node); return 0;
if (!comp_pdev) {
DRM_INFO("Waiting for device %s\n", node->full_name); comp_pdev = of_find_device_by_node(node);
return -EPROBE_DEFER; if (!comp_pdev) {
} DRM_INFO("Waiting for device %s\n", node->full_name);
comp->dev = &comp_pdev->dev; return -EPROBE_DEFER;
} }
comp->dev = &comp_pdev->dev;
if (type == MTK_DISP_AAL || if (type == MTK_DISP_AAL ||
type == MTK_DISP_BLS || type == MTK_DISP_BLS ||
...@@ -580,7 +581,6 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, ...@@ -580,7 +581,6 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
type == MTK_DISP_MERGE || type == MTK_DISP_MERGE ||
type == MTK_DISP_OVL || type == MTK_DISP_OVL ||
type == MTK_DISP_OVL_2L || type == MTK_DISP_OVL_2L ||
type == MTK_DISP_OVL_ADAPTOR ||
type == MTK_DISP_PWM || type == MTK_DISP_PWM ||
type == MTK_DISP_RDMA || type == MTK_DISP_RDMA ||
type == MTK_DPI || type == MTK_DPI ||
......
...@@ -355,7 +355,7 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev) ...@@ -355,7 +355,7 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
const struct of_device_id *of_id; const struct of_device_id *of_id;
struct device_node *node; struct device_node *node;
struct device *drm_dev; struct device *drm_dev;
int cnt = 0; unsigned int cnt = 0;
int i, j; int i, j;
for_each_child_of_node(phandle->parent, node) { for_each_child_of_node(phandle->parent, node) {
...@@ -376,6 +376,9 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev) ...@@ -376,6 +376,9 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
all_drm_priv[cnt] = dev_get_drvdata(drm_dev); all_drm_priv[cnt] = dev_get_drvdata(drm_dev);
if (all_drm_priv[cnt] && all_drm_priv[cnt]->mtk_drm_bound) if (all_drm_priv[cnt] && all_drm_priv[cnt]->mtk_drm_bound)
cnt++; cnt++;
if (cnt == MAX_CRTC)
break;
} }
if (drm_priv->data->mmsys_dev_num == cnt) { if (drm_priv->data->mmsys_dev_num == cnt) {
...@@ -827,7 +830,7 @@ static int mtk_drm_probe(struct platform_device *pdev) ...@@ -827,7 +830,7 @@ static int mtk_drm_probe(struct platform_device *pdev)
continue; continue;
} }
comp_type = (enum mtk_ddp_comp_type)of_id->data; comp_type = (enum mtk_ddp_comp_type)(uintptr_t)of_id->data;
if (comp_type == MTK_DISP_MUTEX) { if (comp_type == MTK_DISP_MUTEX) {
int id; int id;
...@@ -907,7 +910,7 @@ static int mtk_drm_probe(struct platform_device *pdev) ...@@ -907,7 +910,7 @@ static int mtk_drm_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_drm_remove(struct platform_device *pdev) static void mtk_drm_remove(struct platform_device *pdev)
{ {
struct mtk_drm_private *private = platform_get_drvdata(pdev); struct mtk_drm_private *private = platform_get_drvdata(pdev);
int i; int i;
...@@ -917,8 +920,6 @@ static int mtk_drm_remove(struct platform_device *pdev) ...@@ -917,8 +920,6 @@ static int mtk_drm_remove(struct platform_device *pdev)
of_node_put(private->mutex_node); of_node_put(private->mutex_node);
for (i = 0; i < DDP_COMPONENT_DRM_ID_MAX; i++) for (i = 0; i < DDP_COMPONENT_DRM_ID_MAX; i++)
of_node_put(private->comp_node[i]); of_node_put(private->comp_node[i]);
return 0;
} }
static int mtk_drm_sys_prepare(struct device *dev) static int mtk_drm_sys_prepare(struct device *dev)
...@@ -951,7 +952,7 @@ static const struct dev_pm_ops mtk_drm_pm_ops = { ...@@ -951,7 +952,7 @@ static const struct dev_pm_ops mtk_drm_pm_ops = {
static struct platform_driver mtk_drm_platform_driver = { static struct platform_driver mtk_drm_platform_driver = {
.probe = mtk_drm_probe, .probe = mtk_drm_probe,
.remove = mtk_drm_remove, .remove_new = mtk_drm_remove,
.driver = { .driver = {
.name = "mediatek-drm", .name = "mediatek-drm",
.pm = &mtk_drm_pm_ops, .pm = &mtk_drm_pm_ops,
......
...@@ -247,7 +247,11 @@ int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) ...@@ -247,7 +247,11 @@ int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map)
mtk_gem->kvaddr = vmap(mtk_gem->pages, npages, VM_MAP, mtk_gem->kvaddr = vmap(mtk_gem->pages, npages, VM_MAP,
pgprot_writecombine(PAGE_KERNEL)); pgprot_writecombine(PAGE_KERNEL));
if (!mtk_gem->kvaddr) {
kfree(sgt);
kfree(mtk_gem->pages);
return -ENOMEM;
}
out: out:
kfree(sgt); kfree(sgt);
iosys_map_set_vaddr(map, mtk_gem->kvaddr); iosys_map_set_vaddr(map, mtk_gem->kvaddr);
......
...@@ -122,11 +122,7 @@ static int mtk_plane_atomic_async_check(struct drm_plane *plane, ...@@ -122,11 +122,7 @@ static int mtk_plane_atomic_async_check(struct drm_plane *plane,
if (ret) if (ret)
return ret; return ret;
if (state) crtc_state = drm_atomic_get_existing_crtc_state(state, new_plane_state->crtc);
crtc_state = drm_atomic_get_existing_crtc_state(state,
new_plane_state->crtc);
else /* Special case for asynchronous cursor updates. */
crtc_state = new_plane_state->crtc->state;
return drm_atomic_helper_check_plane_state(plane->state, crtc_state, return drm_atomic_helper_check_plane_state(plane->state, crtc_state,
DRM_PLANE_NO_SCALING, DRM_PLANE_NO_SCALING,
......
...@@ -1178,14 +1178,12 @@ static int mtk_dsi_probe(struct platform_device *pdev) ...@@ -1178,14 +1178,12 @@ static int mtk_dsi_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_dsi_remove(struct platform_device *pdev) static void mtk_dsi_remove(struct platform_device *pdev)
{ {
struct mtk_dsi *dsi = platform_get_drvdata(pdev); struct mtk_dsi *dsi = platform_get_drvdata(pdev);
mtk_output_dsi_disable(dsi); mtk_output_dsi_disable(dsi);
mipi_dsi_host_unregister(&dsi->host); mipi_dsi_host_unregister(&dsi->host);
return 0;
} }
static const struct mtk_dsi_driver_data mt8173_dsi_driver_data = { static const struct mtk_dsi_driver_data mt8173_dsi_driver_data = {
...@@ -1223,7 +1221,7 @@ MODULE_DEVICE_TABLE(of, mtk_dsi_of_match); ...@@ -1223,7 +1221,7 @@ MODULE_DEVICE_TABLE(of, mtk_dsi_of_match);
struct platform_driver mtk_dsi_driver = { struct platform_driver mtk_dsi_driver = {
.probe = mtk_dsi_probe, .probe = mtk_dsi_probe,
.remove = mtk_dsi_remove, .remove_new = mtk_dsi_remove,
.driver = { .driver = {
.name = "mtk-dsi", .name = "mtk-dsi",
.of_match_table = mtk_dsi_of_match, .of_match_table = mtk_dsi_of_match,
......
...@@ -1746,13 +1746,12 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev) ...@@ -1746,13 +1746,12 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_drm_hdmi_remove(struct platform_device *pdev) static void mtk_drm_hdmi_remove(struct platform_device *pdev)
{ {
struct mtk_hdmi *hdmi = platform_get_drvdata(pdev); struct mtk_hdmi *hdmi = platform_get_drvdata(pdev);
drm_bridge_remove(&hdmi->bridge); drm_bridge_remove(&hdmi->bridge);
mtk_hdmi_clk_disable_audio(hdmi); mtk_hdmi_clk_disable_audio(hdmi);
return 0;
} }
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
...@@ -1806,7 +1805,7 @@ MODULE_DEVICE_TABLE(of, mtk_drm_hdmi_of_ids); ...@@ -1806,7 +1805,7 @@ MODULE_DEVICE_TABLE(of, mtk_drm_hdmi_of_ids);
static struct platform_driver mtk_hdmi_driver = { static struct platform_driver mtk_hdmi_driver = {
.probe = mtk_drm_hdmi_probe, .probe = mtk_drm_hdmi_probe,
.remove = mtk_drm_hdmi_remove, .remove_new = mtk_drm_hdmi_remove,
.driver = { .driver = {
.name = "mediatek-drm-hdmi", .name = "mediatek-drm-hdmi",
.of_match_table = mtk_drm_hdmi_of_ids, .of_match_table = mtk_drm_hdmi_of_ids,
......
...@@ -324,14 +324,12 @@ static int mtk_hdmi_ddc_probe(struct platform_device *pdev) ...@@ -324,14 +324,12 @@ static int mtk_hdmi_ddc_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_hdmi_ddc_remove(struct platform_device *pdev) static void mtk_hdmi_ddc_remove(struct platform_device *pdev)
{ {
struct mtk_hdmi_ddc *ddc = platform_get_drvdata(pdev); struct mtk_hdmi_ddc *ddc = platform_get_drvdata(pdev);
i2c_del_adapter(&ddc->adap); i2c_del_adapter(&ddc->adap);
clk_disable_unprepare(ddc->clk); clk_disable_unprepare(ddc->clk);
return 0;
} }
static const struct of_device_id mtk_hdmi_ddc_match[] = { static const struct of_device_id mtk_hdmi_ddc_match[] = {
...@@ -342,7 +340,7 @@ MODULE_DEVICE_TABLE(of, mtk_hdmi_ddc_match); ...@@ -342,7 +340,7 @@ MODULE_DEVICE_TABLE(of, mtk_hdmi_ddc_match);
struct platform_driver mtk_hdmi_ddc_driver = { struct platform_driver mtk_hdmi_ddc_driver = {
.probe = mtk_hdmi_ddc_probe, .probe = mtk_hdmi_ddc_probe,
.remove = mtk_hdmi_ddc_remove, .remove_new = mtk_hdmi_ddc_remove,
.driver = { .driver = {
.name = "mediatek-hdmi-ddc", .name = "mediatek-hdmi-ddc",
.of_match_table = mtk_hdmi_ddc_match, .of_match_table = mtk_hdmi_ddc_match,
......
...@@ -314,11 +314,10 @@ static int mtk_mdp_rdma_probe(struct platform_device *pdev) ...@@ -314,11 +314,10 @@ static int mtk_mdp_rdma_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int mtk_mdp_rdma_remove(struct platform_device *pdev) static void mtk_mdp_rdma_remove(struct platform_device *pdev)
{ {
component_del(&pdev->dev, &mtk_mdp_rdma_component_ops); component_del(&pdev->dev, &mtk_mdp_rdma_component_ops);
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
return 0;
} }
static const struct of_device_id mtk_mdp_rdma_driver_dt_match[] = { static const struct of_device_id mtk_mdp_rdma_driver_dt_match[] = {
...@@ -329,7 +328,7 @@ MODULE_DEVICE_TABLE(of, mtk_mdp_rdma_driver_dt_match); ...@@ -329,7 +328,7 @@ MODULE_DEVICE_TABLE(of, mtk_mdp_rdma_driver_dt_match);
struct platform_driver mtk_mdp_rdma_driver = { struct platform_driver mtk_mdp_rdma_driver = {
.probe = mtk_mdp_rdma_probe, .probe = mtk_mdp_rdma_probe,
.remove = mtk_mdp_rdma_remove, .remove_new = mtk_mdp_rdma_remove,
.driver = { .driver = {
.name = "mediatek-mdp-rdma", .name = "mediatek-mdp-rdma",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment