Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.11-rc5 55 lines 1.4 kB view raw
1/* 2 * ARC PGU DRM driver. 3 * 4 * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com) 5 * 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. 9 * 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. 14 * 15 */ 16 17#include <drm/drm_crtc.h> 18#include <drm/drm_encoder_slave.h> 19 20#include "arcpgu.h" 21 22static struct drm_encoder_funcs arcpgu_drm_encoder_funcs = { 23 .destroy = drm_encoder_cleanup, 24}; 25 26int arcpgu_drm_hdmi_init(struct drm_device *drm, struct device_node *np) 27{ 28 struct drm_encoder *encoder; 29 struct drm_bridge *bridge; 30 31 int ret = 0; 32 33 encoder = devm_kzalloc(drm->dev, sizeof(*encoder), GFP_KERNEL); 34 if (encoder == NULL) 35 return -ENOMEM; 36 37 /* Locate drm bridge from the hdmi encoder DT node */ 38 bridge = of_drm_find_bridge(np); 39 if (!bridge) 40 return -EPROBE_DEFER; 41 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); 46 if (ret) 47 return ret; 48 49 /* Link drm_bridge to encoder */ 50 ret = drm_bridge_attach(encoder, bridge, NULL); 51 if (ret) 52 drm_encoder_cleanup(encoder); 53 54 return ret; 55}