Lines Matching full:config

13 	struct vkms_config *config;  in vkms_config_create()  local
15 config = kzalloc(sizeof(*config), GFP_KERNEL); in vkms_config_create()
16 if (!config) in vkms_config_create()
19 config->dev_name = kstrdup_const(dev_name, GFP_KERNEL); in vkms_config_create()
20 if (!config->dev_name) { in vkms_config_create()
21 kfree(config); in vkms_config_create()
25 INIT_LIST_HEAD(&config->planes); in vkms_config_create()
26 INIT_LIST_HEAD(&config->crtcs); in vkms_config_create()
27 INIT_LIST_HEAD(&config->encoders); in vkms_config_create()
28 INIT_LIST_HEAD(&config->connectors); in vkms_config_create()
30 return config; in vkms_config_create()
39 struct vkms_config *config; in vkms_config_default_create() local
46 config = vkms_config_create(DEFAULT_DEVICE_NAME); in vkms_config_default_create()
47 if (IS_ERR(config)) in vkms_config_default_create()
48 return config; in vkms_config_default_create()
50 plane_cfg = vkms_config_create_plane(config); in vkms_config_default_create()
55 crtc_cfg = vkms_config_create_crtc(config); in vkms_config_default_create()
66 plane_cfg = vkms_config_create_plane(config); in vkms_config_default_create()
80 plane_cfg = vkms_config_create_plane(config); in vkms_config_default_create()
91 encoder_cfg = vkms_config_create_encoder(config); in vkms_config_default_create()
98 connector_cfg = vkms_config_create_connector(config); in vkms_config_default_create()
105 return config; in vkms_config_default_create()
108 vkms_config_destroy(config); in vkms_config_default_create()
113 void vkms_config_destroy(struct vkms_config *config) in vkms_config_destroy() argument
120 list_for_each_entry_safe(plane_cfg, plane_tmp, &config->planes, link) in vkms_config_destroy()
123 list_for_each_entry_safe(crtc_cfg, crtc_tmp, &config->crtcs, link) in vkms_config_destroy()
124 vkms_config_destroy_crtc(config, crtc_cfg); in vkms_config_destroy()
126 list_for_each_entry_safe(encoder_cfg, encoder_tmp, &config->encoders, link) in vkms_config_destroy()
127 vkms_config_destroy_encoder(config, encoder_cfg); in vkms_config_destroy()
129 list_for_each_entry_safe(connector_cfg, connector_tmp, &config->connectors, link) in vkms_config_destroy()
132 kfree_const(config->dev_name); in vkms_config_destroy()
133 kfree(config); in vkms_config_destroy()
137 static bool valid_plane_number(const struct vkms_config *config) in valid_plane_number() argument
139 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_plane_number()
142 n_planes = list_count_nodes((struct list_head *)&config->planes); in valid_plane_number()
151 static bool valid_planes_for_crtc(const struct vkms_config *config, in valid_planes_for_crtc() argument
154 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_planes_for_crtc()
159 vkms_config_for_each_plane(config, plane_cfg) { in valid_planes_for_crtc()
196 static bool valid_plane_possible_crtcs(const struct vkms_config *config) in valid_plane_possible_crtcs() argument
198 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_plane_possible_crtcs()
201 vkms_config_for_each_plane(config, plane_cfg) { in valid_plane_possible_crtcs()
211 static bool valid_crtc_number(const struct vkms_config *config) in valid_crtc_number() argument
213 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_crtc_number()
216 n_crtcs = list_count_nodes((struct list_head *)&config->crtcs); in valid_crtc_number()
225 static bool valid_encoder_number(const struct vkms_config *config) in valid_encoder_number() argument
227 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_encoder_number()
230 n_encoders = list_count_nodes((struct list_head *)&config->encoders); in valid_encoder_number()
239 static bool valid_encoder_possible_crtcs(const struct vkms_config *config) in valid_encoder_possible_crtcs() argument
241 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_encoder_possible_crtcs()
245 vkms_config_for_each_encoder(config, encoder_cfg) { in valid_encoder_possible_crtcs()
252 vkms_config_for_each_crtc(config, crtc_cfg) { in valid_encoder_possible_crtcs()
255 vkms_config_for_each_encoder(config, encoder_cfg) { in valid_encoder_possible_crtcs()
275 static bool valid_connector_number(const struct vkms_config *config) in valid_connector_number() argument
277 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_connector_number()
280 n_connectors = list_count_nodes((struct list_head *)&config->connectors); in valid_connector_number()
289 static bool valid_connector_possible_encoders(const struct vkms_config *config) in valid_connector_possible_encoders() argument
291 struct drm_device *dev = config->dev ? &config->dev->drm : NULL; in valid_connector_possible_encoders()
294 vkms_config_for_each_connector(config, connector_cfg) { in valid_connector_possible_encoders()
305 bool vkms_config_is_valid(const struct vkms_config *config) in vkms_config_is_valid() argument
309 if (!valid_plane_number(config)) in vkms_config_is_valid()
312 if (!valid_crtc_number(config)) in vkms_config_is_valid()
315 if (!valid_encoder_number(config)) in vkms_config_is_valid()
318 if (!valid_connector_number(config)) in vkms_config_is_valid()
321 if (!valid_plane_possible_crtcs(config)) in vkms_config_is_valid()
324 vkms_config_for_each_crtc(config, crtc_cfg) { in vkms_config_is_valid()
325 if (!valid_planes_for_crtc(config, crtc_cfg)) in vkms_config_is_valid()
329 if (!valid_encoder_possible_crtcs(config)) in vkms_config_is_valid()
332 if (!valid_connector_possible_encoders(config)) in vkms_config_is_valid()
350 dev_name = vkms_config_get_device_name((struct vkms_config *)vkmsdev->config); in vkms_config_show()
353 vkms_config_for_each_plane(vkmsdev->config, plane_cfg) { in vkms_config_show()
359 vkms_config_for_each_crtc(vkmsdev->config, crtc_cfg) { in vkms_config_show()
365 vkms_config_for_each_encoder(vkmsdev->config, encoder_cfg) in vkms_config_show()
368 vkms_config_for_each_connector(vkmsdev->config, connector_cfg) { in vkms_config_show()
387 struct vkms_config_plane *vkms_config_create_plane(struct vkms_config *config) in vkms_config_create_plane() argument
395 plane_cfg->config = config; in vkms_config_create_plane()
400 list_add_tail(&plane_cfg->link, &config->planes); in vkms_config_create_plane()
421 if (plane_cfg->config != crtc_cfg->config) in vkms_config_plane_attach_crtc()
447 struct vkms_config_crtc *vkms_config_create_crtc(struct vkms_config *config) in vkms_config_create_crtc() argument
455 crtc_cfg->config = config; in vkms_config_create_crtc()
458 list_add_tail(&crtc_cfg->link, &config->crtcs); in vkms_config_create_crtc()
464 void vkms_config_destroy_crtc(struct vkms_config *config, in vkms_config_destroy_crtc() argument
470 vkms_config_for_each_plane(config, plane_cfg) in vkms_config_destroy_crtc()
473 vkms_config_for_each_encoder(config, encoder_cfg) in vkms_config_destroy_crtc()
484 * @config: Configuration containing the CRTC and the plane
491 static struct vkms_config_plane *vkms_config_crtc_get_plane(const struct vkms_config *config, in vkms_config_crtc_get_plane() argument
500 vkms_config_for_each_plane(config, plane_cfg) { in vkms_config_crtc_get_plane()
512 struct vkms_config_plane *vkms_config_crtc_primary_plane(const struct vkms_config *config, in vkms_config_crtc_primary_plane() argument
515 return vkms_config_crtc_get_plane(config, crtc_cfg, DRM_PLANE_TYPE_PRIMARY); in vkms_config_crtc_primary_plane()
519 struct vkms_config_plane *vkms_config_crtc_cursor_plane(const struct vkms_config *config, in vkms_config_crtc_cursor_plane() argument
522 return vkms_config_crtc_get_plane(config, crtc_cfg, DRM_PLANE_TYPE_CURSOR); in vkms_config_crtc_cursor_plane()
526 struct vkms_config_encoder *vkms_config_create_encoder(struct vkms_config *config) in vkms_config_create_encoder() argument
534 encoder_cfg->config = config; in vkms_config_create_encoder()
537 list_add_tail(&encoder_cfg->link, &config->encoders); in vkms_config_create_encoder()
543 void vkms_config_destroy_encoder(struct vkms_config *config, in vkms_config_destroy_encoder() argument
548 vkms_config_for_each_connector(config, connector_cfg) in vkms_config_destroy_encoder()
564 if (encoder_cfg->config != crtc_cfg->config) in vkms_config_encoder_attach_crtc()
590 struct vkms_config_connector *vkms_config_create_connector(struct vkms_config *config) in vkms_config_create_connector() argument
598 connector_cfg->config = config; in vkms_config_create_connector()
602 list_add_tail(&connector_cfg->link, &config->connectors); in vkms_config_create_connector()
623 if (connector_cfg->config != encoder_cfg->config) in vkms_config_connector_attach_encoder()