4 * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
17 #include <drm/drm_crtc.h>
18 #include <drm/drm_encoder_slave.h>
22 static struct drm_encoder_funcs arcpgu_drm_encoder_funcs
= {
23 .destroy
= drm_encoder_cleanup
,
26 int arcpgu_drm_hdmi_init(struct drm_device
*drm
, struct device_node
*np
)
28 struct drm_encoder
*encoder
;
29 struct drm_bridge
*bridge
;
33 encoder
= devm_kzalloc(drm
->dev
, sizeof(*encoder
), GFP_KERNEL
);
37 /* Locate drm bridge from the hdmi encoder DT node */
38 bridge
= of_drm_find_bridge(np
);
42 encoder
->possible_crtcs
= 1;
43 encoder
->possible_clones
= 0;
44 ret
= drm_encoder_init(drm
, encoder
, &arcpgu_drm_encoder_funcs
,
45 DRM_MODE_ENCODER_TMDS
, NULL
);
49 /* Link drm_bridge to encoder */
50 ret
= drm_bridge_attach(encoder
, bridge
, NULL
);
52 drm_encoder_cleanup(encoder
);