Skip to content

Commit 0d9eee9

Browse files
Nancy.LinChun-Kuang Hu
authored andcommitted
drm/mediatek: Add drm ovl_adaptor sub driver for MT8195
Add drm ovl_adaptor sub driver. Bring up ovl_adaptor sub driver if the component exists in the path. Signed-off-by: Nancy.Lin <[email protected]> Reviewed-by: AngeloGioacchino Del Regno <[email protected]> Tested-by: AngeloGioacchino Del Regno <[email protected]> Tested-by: Bo-Chen Chen <[email protected]> Tested-by: Nícolas F. R. A. Prado <[email protected]> Link: https://patchwork.kernel.org/project/linux-mediatek/patch/[email protected]/ Signed-off-by: Chun-Kuang Hu <[email protected]>
1 parent 1ef7ed4 commit 0d9eee9

File tree

6 files changed

+207
-114
lines changed

6 files changed

+207
-114
lines changed

drivers/gpu/drm/mediatek/mtk_drm_crtc.c

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,17 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc)
379379
}
380380

381381
for (i = 0; i < mtk_crtc->ddp_comp_nr - 1; i++) {
382-
mtk_mmsys_ddp_connect(mtk_crtc->mmsys_dev,
383-
mtk_crtc->ddp_comp[i]->id,
384-
mtk_crtc->ddp_comp[i + 1]->id);
385-
mtk_mutex_add_comp(mtk_crtc->mutex,
386-
mtk_crtc->ddp_comp[i]->id);
382+
if (!mtk_ddp_comp_connect(mtk_crtc->ddp_comp[i], mtk_crtc->mmsys_dev,
383+
mtk_crtc->ddp_comp[i + 1]->id))
384+
mtk_mmsys_ddp_connect(mtk_crtc->mmsys_dev,
385+
mtk_crtc->ddp_comp[i]->id,
386+
mtk_crtc->ddp_comp[i + 1]->id);
387+
if (!mtk_ddp_comp_add(mtk_crtc->ddp_comp[i], mtk_crtc->mutex))
388+
mtk_mutex_add_comp(mtk_crtc->mutex,
389+
mtk_crtc->ddp_comp[i]->id);
387390
}
388-
mtk_mutex_add_comp(mtk_crtc->mutex, mtk_crtc->ddp_comp[i]->id);
391+
if (!mtk_ddp_comp_add(mtk_crtc->ddp_comp[i], mtk_crtc->mutex))
392+
mtk_mutex_add_comp(mtk_crtc->mutex, mtk_crtc->ddp_comp[i]->id);
389393
mtk_mutex_enable(mtk_crtc->mutex);
390394

391395
for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
@@ -434,17 +438,22 @@ static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc)
434438
}
435439

436440
for (i = 0; i < mtk_crtc->ddp_comp_nr; i++)
437-
mtk_mutex_remove_comp(mtk_crtc->mutex,
438-
mtk_crtc->ddp_comp[i]->id);
441+
if (!mtk_ddp_comp_remove(mtk_crtc->ddp_comp[i], mtk_crtc->mutex))
442+
mtk_mutex_remove_comp(mtk_crtc->mutex,
443+
mtk_crtc->ddp_comp[i]->id);
439444
mtk_mutex_disable(mtk_crtc->mutex);
440445
for (i = 0; i < mtk_crtc->ddp_comp_nr - 1; i++) {
441-
mtk_mmsys_ddp_disconnect(mtk_crtc->mmsys_dev,
442-
mtk_crtc->ddp_comp[i]->id,
443-
mtk_crtc->ddp_comp[i + 1]->id);
444-
mtk_mutex_remove_comp(mtk_crtc->mutex,
445-
mtk_crtc->ddp_comp[i]->id);
446+
if (!mtk_ddp_comp_disconnect(mtk_crtc->ddp_comp[i], mtk_crtc->mmsys_dev,
447+
mtk_crtc->ddp_comp[i + 1]->id))
448+
mtk_mmsys_ddp_disconnect(mtk_crtc->mmsys_dev,
449+
mtk_crtc->ddp_comp[i]->id,
450+
mtk_crtc->ddp_comp[i + 1]->id);
451+
if (!mtk_ddp_comp_remove(mtk_crtc->ddp_comp[i], mtk_crtc->mutex))
452+
mtk_mutex_remove_comp(mtk_crtc->mutex,
453+
mtk_crtc->ddp_comp[i]->id);
446454
}
447-
mtk_mutex_remove_comp(mtk_crtc->mutex, mtk_crtc->ddp_comp[i]->id);
455+
if (!mtk_ddp_comp_remove(mtk_crtc->ddp_comp[i], mtk_crtc->mutex))
456+
mtk_mutex_remove_comp(mtk_crtc->mutex, mtk_crtc->ddp_comp[i]->id);
448457
mtk_crtc_ddp_clk_disable(mtk_crtc);
449458
mtk_mutex_unprepare(mtk_crtc->mutex);
450459

@@ -876,7 +885,7 @@ struct device *mtk_drm_crtc_dma_dev_get(struct drm_crtc *crtc)
876885
}
877886

878887
int mtk_drm_crtc_create(struct drm_device *drm_dev,
879-
const enum mtk_ddp_comp_id *path, unsigned int path_len,
888+
const unsigned int *path, unsigned int path_len,
880889
int priv_data_index)
881890
{
882891
struct mtk_drm_private *priv = drm_dev->dev_private;
@@ -906,10 +915,13 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev,
906915
node = priv->comp_node[comp_id];
907916
comp = &priv->ddp_comp[comp_id];
908917

909-
if (!node) {
918+
/* Not all drm components have a DTS device node, such as ovl_adaptor,
919+
* which is the drm bring up sub driver
920+
*/
921+
if (!node && comp_id != DDP_COMPONENT_DRM_OVL_ADAPTOR) {
910922
dev_info(dev,
911-
"Not creating crtc %d because component %d is disabled or missing\n",
912-
crtc_i, comp_id);
923+
"Not creating crtc %d because component %d is disabled or missing\n",
924+
crtc_i, comp_id);
913925
return 0;
914926
}
915927

@@ -939,7 +951,7 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev,
939951
}
940952

941953
for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
942-
enum mtk_ddp_comp_id comp_id = path[i];
954+
unsigned int comp_id = path[i];
943955
struct mtk_ddp_comp *comp;
944956

945957
comp = &priv->ddp_comp[comp_id];

drivers/gpu/drm/mediatek/mtk_drm_crtc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
void mtk_drm_crtc_commit(struct drm_crtc *crtc);
1818
int mtk_drm_crtc_create(struct drm_device *drm_dev,
19-
const enum mtk_ddp_comp_id *path,
19+
const unsigned int *path,
2020
unsigned int path_len,
2121
int priv_data_index);
2222
int mtk_drm_crtc_plane_check(struct drm_crtc *crtc, struct drm_plane *plane,

drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c

Lines changed: 78 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,25 @@ static const struct mtk_ddp_comp_funcs ddp_ufoe = {
393393
.start = mtk_ufoe_start,
394394
};
395395

396+
static const struct mtk_ddp_comp_funcs ddp_ovl_adaptor = {
397+
.clk_enable = mtk_ovl_adaptor_clk_enable,
398+
.clk_disable = mtk_ovl_adaptor_clk_disable,
399+
.config = mtk_ovl_adaptor_config,
400+
.start = mtk_ovl_adaptor_start,
401+
.stop = mtk_ovl_adaptor_stop,
402+
.layer_nr = mtk_ovl_adaptor_layer_nr,
403+
.layer_config = mtk_ovl_adaptor_layer_config,
404+
.register_vblank_cb = mtk_ovl_adaptor_register_vblank_cb,
405+
.unregister_vblank_cb = mtk_ovl_adaptor_unregister_vblank_cb,
406+
.enable_vblank = mtk_ovl_adaptor_enable_vblank,
407+
.disable_vblank = mtk_ovl_adaptor_disable_vblank,
408+
.dma_dev_get = mtk_ovl_adaptor_dma_dev_get,
409+
.connect = mtk_ovl_adaptor_connect,
410+
.disconnect = mtk_ovl_adaptor_disconnect,
411+
.add = mtk_ovl_adaptor_add_comp,
412+
.remove = mtk_ovl_adaptor_remove_comp,
413+
};
414+
396415
static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = {
397416
[MTK_DISP_AAL] = "aal",
398417
[MTK_DISP_BLS] = "bls",
@@ -406,6 +425,7 @@ static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = {
406425
[MTK_DISP_OD] = "od",
407426
[MTK_DISP_OVL] = "ovl",
408427
[MTK_DISP_OVL_2L] = "ovl-2l",
428+
[MTK_DISP_OVL_ADAPTOR] = "ovl_adaptor",
409429
[MTK_DISP_POSTMASK] = "postmask",
410430
[MTK_DISP_PWM] = "pwm",
411431
[MTK_DISP_RDMA] = "rdma",
@@ -422,53 +442,54 @@ struct mtk_ddp_comp_match {
422442
const struct mtk_ddp_comp_funcs *funcs;
423443
};
424444

425-
static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_ID_MAX] = {
426-
[DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal },
427-
[DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal },
428-
[DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL },
429-
[DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr },
430-
[DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color },
431-
[DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color },
432-
[DDP_COMPONENT_DITHER0] = { MTK_DISP_DITHER, 0, &ddp_dither },
433-
[DDP_COMPONENT_DP_INTF0] = { MTK_DP_INTF, 0, &ddp_dpi },
434-
[DDP_COMPONENT_DP_INTF1] = { MTK_DP_INTF, 1, &ddp_dpi },
435-
[DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi },
436-
[DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi },
437-
[DDP_COMPONENT_DSC0] = { MTK_DISP_DSC, 0, &ddp_dsc },
438-
[DDP_COMPONENT_DSC1] = { MTK_DISP_DSC, 1, &ddp_dsc },
439-
[DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi },
440-
[DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi },
441-
[DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi },
442-
[DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi },
443-
[DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma },
444-
[DDP_COMPONENT_MERGE0] = { MTK_DISP_MERGE, 0, &ddp_merge },
445-
[DDP_COMPONENT_MERGE1] = { MTK_DISP_MERGE, 1, &ddp_merge },
446-
[DDP_COMPONENT_MERGE2] = { MTK_DISP_MERGE, 2, &ddp_merge },
447-
[DDP_COMPONENT_MERGE3] = { MTK_DISP_MERGE, 3, &ddp_merge },
448-
[DDP_COMPONENT_MERGE4] = { MTK_DISP_MERGE, 4, &ddp_merge },
449-
[DDP_COMPONENT_MERGE5] = { MTK_DISP_MERGE, 5, &ddp_merge },
450-
[DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od },
451-
[DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od },
452-
[DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl },
453-
[DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl },
454-
[DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl },
455-
[DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl },
456-
[DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl },
457-
[DDP_COMPONENT_POSTMASK0] = { MTK_DISP_POSTMASK, 0, &ddp_postmask },
458-
[DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL },
459-
[DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL },
460-
[DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL },
461-
[DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma },
462-
[DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma },
463-
[DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma },
464-
[DDP_COMPONENT_RDMA4] = { MTK_DISP_RDMA, 4, &ddp_rdma },
465-
[DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe },
466-
[DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL },
467-
[DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL },
445+
static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_DRM_ID_MAX] = {
446+
[DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal },
447+
[DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal },
448+
[DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL },
449+
[DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr },
450+
[DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color },
451+
[DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color },
452+
[DDP_COMPONENT_DITHER0] = { MTK_DISP_DITHER, 0, &ddp_dither },
453+
[DDP_COMPONENT_DP_INTF0] = { MTK_DP_INTF, 0, &ddp_dpi },
454+
[DDP_COMPONENT_DP_INTF1] = { MTK_DP_INTF, 1, &ddp_dpi },
455+
[DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi },
456+
[DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi },
457+
[DDP_COMPONENT_DRM_OVL_ADAPTOR] = { MTK_DISP_OVL_ADAPTOR, 0, &ddp_ovl_adaptor },
458+
[DDP_COMPONENT_DSC0] = { MTK_DISP_DSC, 0, &ddp_dsc },
459+
[DDP_COMPONENT_DSC1] = { MTK_DISP_DSC, 1, &ddp_dsc },
460+
[DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi },
461+
[DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi },
462+
[DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi },
463+
[DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi },
464+
[DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma },
465+
[DDP_COMPONENT_MERGE0] = { MTK_DISP_MERGE, 0, &ddp_merge },
466+
[DDP_COMPONENT_MERGE1] = { MTK_DISP_MERGE, 1, &ddp_merge },
467+
[DDP_COMPONENT_MERGE2] = { MTK_DISP_MERGE, 2, &ddp_merge },
468+
[DDP_COMPONENT_MERGE3] = { MTK_DISP_MERGE, 3, &ddp_merge },
469+
[DDP_COMPONENT_MERGE4] = { MTK_DISP_MERGE, 4, &ddp_merge },
470+
[DDP_COMPONENT_MERGE5] = { MTK_DISP_MERGE, 5, &ddp_merge },
471+
[DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od },
472+
[DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od },
473+
[DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl },
474+
[DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl },
475+
[DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl },
476+
[DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl },
477+
[DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl },
478+
[DDP_COMPONENT_POSTMASK0] = { MTK_DISP_POSTMASK, 0, &ddp_postmask },
479+
[DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL },
480+
[DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL },
481+
[DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL },
482+
[DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma },
483+
[DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma },
484+
[DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma },
485+
[DDP_COMPONENT_RDMA4] = { MTK_DISP_RDMA, 4, &ddp_rdma },
486+
[DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe },
487+
[DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL },
488+
[DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL },
468489
};
469490

470491
static bool mtk_drm_find_comp_in_ddp(struct device *dev,
471-
const enum mtk_ddp_comp_id *path,
492+
const unsigned int *path,
472493
unsigned int path_len,
473494
struct mtk_ddp_comp *ddp_comp)
474495
{
@@ -521,7 +542,7 @@ unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,
521542
}
522543

523544
int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
524-
enum mtk_ddp_comp_id comp_id)
545+
unsigned int comp_id)
525546
{
526547
struct platform_device *comp_pdev;
527548
enum mtk_ddp_comp_type type;
@@ -530,19 +551,24 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
530551
int ret;
531552
#endif
532553

533-
if (comp_id < 0 || comp_id >= DDP_COMPONENT_ID_MAX)
554+
if (comp_id < 0 || comp_id >= DDP_COMPONENT_DRM_ID_MAX)
534555
return -EINVAL;
535556

536557
type = mtk_ddp_matches[comp_id].type;
537558

538559
comp->id = comp_id;
539560
comp->funcs = mtk_ddp_matches[comp_id].funcs;
540-
comp_pdev = of_find_device_by_node(node);
541-
if (!comp_pdev) {
542-
DRM_INFO("Waiting for device %s\n", node->full_name);
543-
return -EPROBE_DEFER;
561+
/* Not all drm components have a DTS device node, such as ovl_adaptor,
562+
* which is the drm bring up sub driver
563+
*/
564+
if (node) {
565+
comp_pdev = of_find_device_by_node(node);
566+
if (!comp_pdev) {
567+
DRM_INFO("Waiting for device %s\n", node->full_name);
568+
return -EPROBE_DEFER;
569+
}
570+
comp->dev = &comp_pdev->dev;
544571
}
545-
comp->dev = &comp_pdev->dev;
546572

547573
if (type == MTK_DISP_AAL ||
548574
type == MTK_DISP_BLS ||
@@ -552,6 +578,7 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
552578
type == MTK_DISP_MERGE ||
553579
type == MTK_DISP_OVL ||
554580
type == MTK_DISP_OVL_2L ||
581+
type == MTK_DISP_OVL_ADAPTOR ||
555582
type == MTK_DISP_PWM ||
556583
type == MTK_DISP_RDMA ||
557584
type == MTK_DPI ||

drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <linux/io.h>
1010
#include <linux/soc/mediatek/mtk-cmdq.h>
1111
#include <linux/soc/mediatek/mtk-mmsys.h>
12+
#include <linux/soc/mediatek/mtk-mutex.h>
1213

1314
struct device;
1415
struct device_node;
@@ -30,6 +31,7 @@ enum mtk_ddp_comp_type {
3031
MTK_DISP_OD,
3132
MTK_DISP_OVL,
3233
MTK_DISP_OVL_2L,
34+
MTK_DISP_OVL_ADAPTOR,
3335
MTK_DISP_POSTMASK,
3436
MTK_DISP_PWM,
3537
MTK_DISP_RDMA,
@@ -74,12 +76,16 @@ struct mtk_ddp_comp_funcs {
7476
struct device * (*dma_dev_get)(struct device *dev);
7577
const u32 *(*get_formats)(struct device *dev);
7678
size_t (*get_num_formats)(struct device *dev);
79+
void (*connect)(struct device *dev, struct device *mmsys_dev, unsigned int next);
80+
void (*disconnect)(struct device *dev, struct device *mmsys_dev, unsigned int next);
81+
void (*add)(struct device *dev, struct mtk_mutex *mutex);
82+
void (*remove)(struct device *dev, struct mtk_mutex *mutex);
7783
};
7884

7985
struct mtk_ddp_comp {
8086
struct device *dev;
8187
int irq;
82-
enum mtk_ddp_comp_id id;
88+
unsigned int id;
8389
const struct mtk_ddp_comp_funcs *funcs;
8490
};
8591

@@ -231,13 +237,51 @@ size_t mtk_ddp_comp_get_num_formats(struct mtk_ddp_comp *comp)
231237
return 0;
232238
}
233239

240+
static inline bool mtk_ddp_comp_add(struct mtk_ddp_comp *comp, struct mtk_mutex *mutex)
241+
{
242+
if (comp->funcs && comp->funcs->add) {
243+
comp->funcs->add(comp->dev, mutex);
244+
return true;
245+
}
246+
return false;
247+
}
248+
249+
static inline bool mtk_ddp_comp_remove(struct mtk_ddp_comp *comp, struct mtk_mutex *mutex)
250+
{
251+
if (comp->funcs && comp->funcs->remove) {
252+
comp->funcs->remove(comp->dev, mutex);
253+
return true;
254+
}
255+
return false;
256+
}
257+
258+
static inline bool mtk_ddp_comp_connect(struct mtk_ddp_comp *comp, struct device *mmsys_dev,
259+
unsigned int next)
260+
{
261+
if (comp->funcs && comp->funcs->connect) {
262+
comp->funcs->connect(comp->dev, mmsys_dev, next);
263+
return true;
264+
}
265+
return false;
266+
}
267+
268+
static inline bool mtk_ddp_comp_disconnect(struct mtk_ddp_comp *comp, struct device *mmsys_dev,
269+
unsigned int next)
270+
{
271+
if (comp->funcs && comp->funcs->disconnect) {
272+
comp->funcs->disconnect(comp->dev, mmsys_dev, next);
273+
return true;
274+
}
275+
return false;
276+
}
277+
234278
int mtk_ddp_comp_get_id(struct device_node *node,
235279
enum mtk_ddp_comp_type comp_type);
236280
unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,
237281
struct device *dev);
238282
int mtk_ddp_comp_init(struct device_node *comp_node, struct mtk_ddp_comp *comp,
239-
enum mtk_ddp_comp_id comp_id);
240-
enum mtk_ddp_comp_type mtk_ddp_comp_get_type(enum mtk_ddp_comp_id comp_id);
283+
unsigned int comp_id);
284+
enum mtk_ddp_comp_type mtk_ddp_comp_get_type(unsigned int comp_id);
241285
void mtk_ddp_write(struct cmdq_pkt *cmdq_pkt, unsigned int value,
242286
struct cmdq_client_reg *cmdq_reg, void __iomem *regs,
243287
unsigned int offset);

0 commit comments

Comments
 (0)