Lines Matching defs:rcdu

374 	struct rcar_du_device *rcdu = to_rcar_du_device(dev);
379 if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
409 struct rcar_du_device *rcdu = to_rcar_du_device(dev);
417 if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B))
431 struct rcar_du_device *rcdu = to_rcar_du_device(dev);
445 if (rcdu->info->gen < 3) {
455 if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B))
503 struct rcar_du_device *rcdu = to_rcar_du_device(dev);
510 if (rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
519 struct rcar_du_device *rcdu = to_rcar_du_device(dev);
528 rcdu->dpad1_source = -1;
536 rcdu->dpad0_source = rcrtc->index;
539 rcdu->dpad1_source = rcrtc->index;
568 static int rcar_du_encoders_init_one(struct rcar_du_device *rcdu,
578 dev_dbg(rcdu->dev, "unconnected endpoint %pOF, skipping\n",
584 dev_dbg(rcdu->dev,
591 ret = rcar_du_encoder_init(rcdu, output, entity);
593 dev_warn(rcdu->dev,
602 static int rcar_du_encoders_init(struct rcar_du_device *rcdu)
604 struct device_node *np = rcdu->dev->of_node;
626 if (rcdu->info->routes[i].possible_crtcs &&
627 rcdu->info->routes[i].port == ep.port) {
634 dev_warn(rcdu->dev,
641 ret = rcar_du_encoders_init_one(rcdu, output, &ep);
657 static int rcar_du_properties_init(struct rcar_du_device *rcdu)
664 rcdu->props.colorkey =
665 drm_property_create_range(&rcdu->ddev, 0, "colorkey",
667 if (rcdu->props.colorkey == NULL)
673 static int rcar_du_vsps_init(struct rcar_du_device *rcdu)
675 const struct device_node *np = rcdu->dev->of_node;
698 cells = ret / rcdu->num_crtcs - 1;
702 for (i = 0; i < rcdu->num_crtcs; ++i) {
731 rcdu->crtcs[i].vsp = &rcdu->vsps[j];
732 rcdu->crtcs[i].vsp_pipe = cells >= 1 ? args.args[0] : 0;
740 struct rcar_du_vsp *vsp = &rcdu->vsps[i];
743 vsp->dev = rcdu;
759 static int rcar_du_cmm_init(struct rcar_du_device *rcdu)
761 const struct device_node *np = rcdu->dev->of_node;
769 if (cells > rcdu->num_crtcs) {
770 dev_err(rcdu->dev,
783 dev_err(rcdu->dev,
796 dev_err(rcdu->dev, "No device found for CMM%u\n", i);
813 rcdu->cmms[i] = pdev;
819 link = device_link_add(rcdu->dev, &pdev->dev, DL_FLAG_STATELESS);
821 dev_err(rcdu->dev,
832 struct rcar_du_device *rcdu = to_rcar_du_device(dev);
835 for (i = 0; i < ARRAY_SIZE(rcdu->cmms); ++i)
836 platform_device_put(rcdu->cmms[i]);
839 int rcar_du_modeset_init(struct rcar_du_device *rcdu)
845 struct drm_device *dev = &rcdu->ddev;
859 ret = drmm_add_action(&rcdu->ddev, rcar_du_modeset_cleanup, NULL);
869 if (rcdu->info->gen < 3) {
881 rcdu->num_crtcs = hweight8(rcdu->info->channels_mask);
883 ret = rcar_du_properties_init(rcdu);
891 ret = drm_vblank_init(dev, rcdu->num_crtcs);
896 num_groups = DIV_ROUND_UP(rcdu->num_crtcs, 2);
899 struct rcar_du_group *rgrp = &rcdu->groups[i];
903 rgrp->dev = rcdu;
907 rgrp->channels_mask = (rcdu->info->channels_mask >> (2 * i))
918 ? (rcdu->info->gen >= 3 ? 0x04 : 0xf0)
921 if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) {
929 if (rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE)) {
930 ret = rcar_du_vsps_init(rcdu);
936 ret = rcar_du_cmm_init(rcdu);
938 return dev_err_probe(rcdu->dev, ret,
942 for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) {
946 if (!(rcdu->info->channels_mask & BIT(hwindex)))
949 rgrp = &rcdu->groups[hwindex / 2];
957 ret = rcar_du_encoders_init(rcdu);
959 return dev_err_probe(rcdu->dev, ret,
963 dev_err(rcdu->dev, "error: no encoder could be initialized\n");
977 &rcdu->info->routes[renc->output];
984 if (rcdu->info->gen >= 3) {
985 for (i = 0; i < rcdu->num_crtcs; ++i) {
986 struct rcar_du_crtc *rcrtc = &rcdu->crtcs[i];
988 ret = rcar_du_writeback_init(rcdu, rcrtc);
1002 dpad0_sources = rcdu->info->routes[RCAR_DU_OUTPUT_DPAD0].possible_crtcs;
1003 rcdu->dpad0_source = ffs(dpad0_sources) - 1;