brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 339cbaa Raw
73 lines · c
1// SPDX-License-Identifier: GPL-2.0+2/*3 * RZ/G2L Display Unit Encoder4 *5 * Copyright (C) 2023 Renesas Electronics Corporation6 *7 * Based on rcar_du_encoder.c8 */9 10#include <linux/export.h>11#include <linux/of.h>12 13#include <drm/drm_bridge.h>14#include <drm/drm_bridge_connector.h>15#include <drm/drm_panel.h>16 17#include "rzg2l_du_drv.h"18#include "rzg2l_du_encoder.h"19 20/* -----------------------------------------------------------------------------21 * Encoder22 */23 24static const struct drm_encoder_funcs rzg2l_du_encoder_funcs = {25};26 27int rzg2l_du_encoder_init(struct rzg2l_du_device  *rcdu,28			  enum rzg2l_du_output output,29			  struct device_node *enc_node)30{31	struct rzg2l_du_encoder *renc;32	struct drm_connector *connector;33	struct drm_bridge *bridge;34	int ret;35 36	/* Locate the DRM bridge from the DT node. */37	bridge = of_drm_find_bridge(enc_node);38	if (!bridge)39		return -EPROBE_DEFER;40 41	dev_dbg(rcdu->dev, "initializing encoder %pOF for output %s\n",42		enc_node, rzg2l_du_output_name(output));43 44	renc = drmm_encoder_alloc(&rcdu->ddev, struct rzg2l_du_encoder, base,45				  &rzg2l_du_encoder_funcs, DRM_MODE_ENCODER_NONE,46				  NULL);47	if (IS_ERR(renc))48		return PTR_ERR(renc);49 50	renc->output = output;51 52	/* Attach the bridge to the encoder. */53	ret = drm_bridge_attach(&renc->base, bridge, NULL,54				DRM_BRIDGE_ATTACH_NO_CONNECTOR);55	if (ret) {56		dev_err(rcdu->dev,57			"failed to attach bridge %pOF for output %s (%d)\n",58			bridge->of_node, rzg2l_du_output_name(output), ret);59		return ret;60	}61 62	/* Create the connector for the chain of bridges. */63	connector = drm_bridge_connector_init(&rcdu->ddev, &renc->base);64	if (IS_ERR(connector)) {65		dev_err(rcdu->dev,66			"failed to created connector for output %s (%ld)\n",67			rzg2l_du_output_name(output), PTR_ERR(connector));68		return PTR_ERR(connector);69	}70 71	return drm_connector_attach_encoder(connector, &renc->base);72}73