Lines Matching refs:rcdu

342 	struct rcar_du_device *rcdu = to_rcar_du_device(dev);  in rcar_du_gem_prime_import_sg_table()  local
347 if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) in rcar_du_gem_prime_import_sg_table()
377 struct rcar_du_device *rcdu = to_rcar_du_device(dev); in rcar_du_dumb_create() local
385 if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B)) in rcar_du_dumb_create()
399 struct rcar_du_device *rcdu = to_rcar_du_device(dev); in rcar_du_fb_create() local
413 if (rcdu->info->gen < 3) { in rcar_du_fb_create()
423 if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B)) in rcar_du_fb_create()
471 struct rcar_du_device *rcdu = to_rcar_du_device(dev); in rcar_du_atomic_check() local
478 if (rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) in rcar_du_atomic_check()
487 struct rcar_du_device *rcdu = to_rcar_du_device(dev); in rcar_du_atomic_commit_tail() local
496 rcdu->dpad1_source = -1; in rcar_du_atomic_commit_tail()
504 rcdu->dpad0_source = rcrtc->index; in rcar_du_atomic_commit_tail()
507 rcdu->dpad1_source = rcrtc->index; in rcar_du_atomic_commit_tail()
536 static int rcar_du_encoders_init_one(struct rcar_du_device *rcdu, in rcar_du_encoders_init_one() argument
546 dev_dbg(rcdu->dev, "unconnected endpoint %pOF, skipping\n", in rcar_du_encoders_init_one()
552 dev_dbg(rcdu->dev, in rcar_du_encoders_init_one()
559 ret = rcar_du_encoder_init(rcdu, output, entity); in rcar_du_encoders_init_one()
561 dev_warn(rcdu->dev, in rcar_du_encoders_init_one()
570 static int rcar_du_encoders_init(struct rcar_du_device *rcdu) in rcar_du_encoders_init() argument
572 struct device_node *np = rcdu->dev->of_node; in rcar_du_encoders_init()
594 if (rcdu->info->routes[i].possible_crtcs && in rcar_du_encoders_init()
595 rcdu->info->routes[i].port == ep.port) { in rcar_du_encoders_init()
602 dev_warn(rcdu->dev, in rcar_du_encoders_init()
609 ret = rcar_du_encoders_init_one(rcdu, output, &ep); in rcar_du_encoders_init()
625 static int rcar_du_properties_init(struct rcar_du_device *rcdu) in rcar_du_properties_init() argument
632 rcdu->props.colorkey = in rcar_du_properties_init()
633 drm_property_create_range(&rcdu->ddev, 0, "colorkey", in rcar_du_properties_init()
635 if (rcdu->props.colorkey == NULL) in rcar_du_properties_init()
641 static int rcar_du_vsps_init(struct rcar_du_device *rcdu) in rcar_du_vsps_init() argument
643 const struct device_node *np = rcdu->dev->of_node; in rcar_du_vsps_init()
666 cells = ret / rcdu->num_crtcs - 1; in rcar_du_vsps_init()
670 for (i = 0; i < rcdu->num_crtcs; ++i) { in rcar_du_vsps_init()
699 rcdu->crtcs[i].vsp = &rcdu->vsps[j]; in rcar_du_vsps_init()
700 rcdu->crtcs[i].vsp_pipe = cells >= 1 ? args.args[0] : 0; in rcar_du_vsps_init()
708 struct rcar_du_vsp *vsp = &rcdu->vsps[i]; in rcar_du_vsps_init()
711 vsp->dev = rcdu; in rcar_du_vsps_init()
727 static int rcar_du_cmm_init(struct rcar_du_device *rcdu) in rcar_du_cmm_init() argument
729 const struct device_node *np = rcdu->dev->of_node; in rcar_du_cmm_init()
737 if (cells > rcdu->num_crtcs) { in rcar_du_cmm_init()
738 dev_err(rcdu->dev, in rcar_du_cmm_init()
751 dev_err(rcdu->dev, in rcar_du_cmm_init()
764 dev_err(rcdu->dev, "No device found for CMM%u\n", i); in rcar_du_cmm_init()
781 rcdu->cmms[i] = pdev; in rcar_du_cmm_init()
787 link = device_link_add(rcdu->dev, &pdev->dev, DL_FLAG_STATELESS); in rcar_du_cmm_init()
789 dev_err(rcdu->dev, in rcar_du_cmm_init()
800 struct rcar_du_device *rcdu = to_rcar_du_device(dev); in rcar_du_modeset_cleanup() local
803 for (i = 0; i < ARRAY_SIZE(rcdu->cmms); ++i) in rcar_du_modeset_cleanup()
804 platform_device_put(rcdu->cmms[i]); in rcar_du_modeset_cleanup()
807 int rcar_du_modeset_init(struct rcar_du_device *rcdu) in rcar_du_modeset_init() argument
813 struct drm_device *dev = &rcdu->ddev; in rcar_du_modeset_init()
827 ret = drmm_add_action(&rcdu->ddev, rcar_du_modeset_cleanup, NULL); in rcar_du_modeset_init()
837 if (rcdu->info->gen < 3) { in rcar_du_modeset_init()
849 rcdu->num_crtcs = hweight8(rcdu->info->channels_mask); in rcar_du_modeset_init()
851 ret = rcar_du_properties_init(rcdu); in rcar_du_modeset_init()
859 ret = drm_vblank_init(dev, rcdu->num_crtcs); in rcar_du_modeset_init()
864 num_groups = DIV_ROUND_UP(rcdu->num_crtcs, 2); in rcar_du_modeset_init()
867 struct rcar_du_group *rgrp = &rcdu->groups[i]; in rcar_du_modeset_init()
871 rgrp->dev = rcdu; in rcar_du_modeset_init()
875 rgrp->channels_mask = (rcdu->info->channels_mask >> (2 * i)) in rcar_du_modeset_init()
886 ? (rcdu->info->gen >= 3 ? 0x04 : 0xf0) in rcar_du_modeset_init()
889 if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) { in rcar_du_modeset_init()
897 if (rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) { in rcar_du_modeset_init()
898 ret = rcar_du_vsps_init(rcdu); in rcar_du_modeset_init()
904 ret = rcar_du_cmm_init(rcdu); in rcar_du_modeset_init()
909 for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) { in rcar_du_modeset_init()
913 if (!(rcdu->info->channels_mask & BIT(hwindex))) in rcar_du_modeset_init()
916 rgrp = &rcdu->groups[hwindex / 2]; in rcar_du_modeset_init()
924 ret = rcar_du_encoders_init(rcdu); in rcar_du_modeset_init()
929 dev_err(rcdu->dev, "error: no encoder could be initialized\n"); in rcar_du_modeset_init()
943 &rcdu->info->routes[renc->output]; in rcar_du_modeset_init()
950 if (rcdu->info->gen >= 3) { in rcar_du_modeset_init()
951 for (i = 0; i < rcdu->num_crtcs; ++i) { in rcar_du_modeset_init()
952 struct rcar_du_crtc *rcrtc = &rcdu->crtcs[i]; in rcar_du_modeset_init()
954 ret = rcar_du_writeback_init(rcdu, rcrtc); in rcar_du_modeset_init()
968 dpad0_sources = rcdu->info->routes[RCAR_DU_OUTPUT_DPAD0].possible_crtcs; in rcar_du_modeset_init()
969 rcdu->dpad0_source = ffs(dpad0_sources) - 1; in rcar_du_modeset_init()