Lines Matching defs:sna_output
166 struct sna_output {
233 static inline struct sna_output *to_sna_output(xf86OutputPtr output)
494 struct sna_output *sna_output = to_sna_output(output);
497 if (sna_output->dpms_mode != DPMSModeOn)
502 val = backlight_get(&sna_output->backlight);
506 __FUNCTION__, output->name, sna_output->backlight.iface,
507 sna_output->backlight_active_level, val));
509 if (val == sna_output->backlight_active_level)
512 sna_output->backlight_active_level = val;
600 sna_output_backlight_disable(struct sna_output *sna_output)
602 xf86OutputPtr output = sna_output->base;
606 sna_output->backlight.iface, output->name);
607 backlight_disable(&sna_output->backlight);
615 sna_output_backlight_set(struct sna_output *sna_output, int level)
620 sna_output->base->name, level, sna_output->backlight.max));
622 if (backlight_set(&sna_output->backlight, level)) {
623 sna_output_backlight_disable(sna_output);
631 sna_backlight_drain_uevents(to_sna(sna_output->base->scrn));
636 sna_output_backlight_off(struct sna_output *sna_output)
638 DBG(("%s(%s)\n", __FUNCTION__, sna_output->base->name));
639 backlight_off(&sna_output->backlight);
640 sna_output_backlight_set(sna_output, 0);
644 sna_output_backlight_on(struct sna_output *sna_output)
646 DBG(("%s(%s)\n", __FUNCTION__, sna_output->base->name));
647 sna_output_backlight_set(sna_output,
648 sna_output->backlight_active_level);
649 if (backlight_on(&sna_output->backlight) < 0)
650 sna_output_backlight_disable(sna_output);
656 struct sna_output *sna_output = output->driver_private;
657 int level = backlight_get(&sna_output->backlight);
659 output->name, level, sna_output->backlight.max));
690 struct sna_output *sna_output = output->driver_private;
713 sna_output->backlight_active_level =
714 backlight_open(&sna_output->backlight, best_iface);
716 __FUNCTION__, output->name, sna_output->backlight_active_level));
717 if (sna_output->backlight_active_level < 0)
720 switch (sna_output->backlight.type) {
728 sna_output->backlight.iface, best_iface, output->name);
2781 find_property(struct sna *sna, struct sna_output *output, const char *name)
2805 struct sna_output *sna_output = output->driver_private;
2808 DBG(("%s(%s:%d)\n", __FUNCTION__, output->name, sna_output->id));
2810 if (!sna_output->id) {
2816 compat_conn.conn.connector_id = sna_output->id;
2817 sna_output->num_modes = compat_conn.conn.count_modes = 0; /* reprobe */
2819 compat_conn.conn.count_props = sna_output->num_props;
2820 compat_conn.conn.props_ptr = (uintptr_t)sna_output->prop_ids;
2821 compat_conn.conn.prop_values_ptr = (uintptr_t)sna_output->prop_values;
2827 sna_output->num_modes, compat_conn.conn.count_modes,
2828 sna_output->num_props, compat_conn.conn.count_props));
2830 assert(compat_conn.conn.count_props == sna_output->num_props);
2832 while (compat_conn.conn.count_modes && compat_conn.conn.count_modes != sna_output->num_modes) {
2836 old_count = sna_output->num_modes;
2837 new_modes = realloc(sna_output->modes,
2838 sizeof(*sna_output->modes)*compat_conn.conn.count_modes);
2842 sna_output->modes = new_modes;
2843 sna_output->num_modes = compat_conn.conn.count_modes;
2844 compat_conn.conn.modes_ptr = (uintptr_t)sna_output->modes;
2848 sna_output->num_modes = min(old_count, sna_output->num_modes);
2851 VG(VALGRIND_MAKE_MEM_DEFINED(sna_output->modes, sizeof(*sna_output->modes)*sna_output->num_modes));
2855 __FUNCTION__, output->name, sna_output->num_modes, compat_conn.conn.connection));
2871 struct sna_output *sna_output = output->driver_private;
2889 if (sna_output->has_panel_limits) {
2890 if (mode->HDisplay > sna_output->panel_hdisplay ||
2891 mode->VDisplay > sna_output->panel_vdisplay)
2902 struct sna_output *sna_output = output->driver_private;
2907 if (sna_output->edid_idx == -1)
2910 raw = sna_output->edid_raw;
2911 blob.length = sna_output->edid_len;
2919 blob.blob_id = sna_output->prop_values[sna_output->edid_idx];
2921 __FUNCTION__, blob.blob_id, sna_output->edid_blob_id));
2922 if (blob.blob_id == sna_output->edid_blob_id && 0) { /* sigh */
2928 sna_output->edid_len,
2929 sna_output->edid_raw,
2945 if (blob.length > sna_output->edid_len) {
2957 blob.length == sna_output->edid_len &&
2959 assert(sna_output->edid_raw == raw);
2960 sna_output->edid_blob_id = blob.blob_id;
2964 sna_output->edid_len,
2965 sna_output->edid_raw,
2980 sna_output->edid_raw = raw;
2981 sna_output->edid_len = blob.length;
2982 sna_output->edid_blob_id = blob.blob_id;
3039 struct sna_output *sna_output = output->driver_private;
3043 DBG(("%s(%s:%d)\n", __FUNCTION__, output->name, sna_output->id));
3044 assert(sna_output->id);
3071 DBG(("%s: adding %d probed modes\n", __FUNCTION__, sna_output->num_modes));
3073 for (i = 0; i < sna_output->num_modes; i++) {
3081 &sna_output->modes[i],
3102 sna_output->has_panel_limits = false;
3103 if (sna_output->is_panel) {
3104 sna_output->panel_hdisplay = sna_output->panel_vdisplay = 0;
3105 for (i = 0; i < sna_output->num_modes; i++) {
3108 m = &sna_output->modes[i];
3109 if (m->hdisplay > sna_output->panel_hdisplay)
3110 sna_output->panel_hdisplay = m->hdisplay;
3111 if (m->vdisplay > sna_output->panel_vdisplay)
3112 sna_output->panel_vdisplay = m->vdisplay;
3114 sna_output->has_panel_limits =
3115 sna_output->panel_hdisplay &&
3116 sna_output->panel_vdisplay;
3119 if (sna_output->add_default_modes)
3128 struct sna_output *sna_output = output->driver_private;
3131 if (sna_output == NULL)
3134 free(sna_output->edid_raw);
3135 for (i = 0; i < sna_output->num_props; i++) {
3136 if (sna_output->props[i].kprop == NULL)
3139 if (sna_output->props[i].atoms) {
3141 RRDeleteOutputProperty(output->randr_output, sna_output->props[i].atoms[0]);
3142 free(sna_output->props[i].atoms);
3145 drmModeFreeProperty(sna_output->props[i].kprop);
3147 free(sna_output->props);
3148 free(sna_output->prop_ids);
3149 free(sna_output->prop_values);
3151 backlight_close(&sna_output->backlight);
3153 free(sna_output);
3161 struct sna_output *sna_output = output->driver_private;
3162 int old_dpms = sna_output->dpms_mode;
3165 __FUNCTION__, output->name, sna_output->id,
3166 dpms, sna_output->dpms_mode,
3169 if (!sna_output->id)
3182 if (sna_output->backlight.iface && dpms != DPMSModeOn) {
3184 sna_output->backlight_active_level = sna_output_backlight_get(output);
3186 __FUNCTION__, sna_output->backlight_active_level));
3188 sna_output->dpms_mode = dpms;
3189 sna_output_backlight_off(sna_output);
3194 sna_output->id,
3195 sna_output->dpms_id,
3199 if (sna_output->backlight.iface && dpms == DPMSModeOn) {
3201 __FUNCTION__, sna_output->backlight_active_level));
3202 sna_output_backlight_on(sna_output);
3205 sna_output->dpms_mode = dpms;
3257 struct sna_output *sna_output = output->driver_private;
3260 sna_output->props = calloc(sna_output->num_props,
3262 if (!sna_output->props)
3265 for (i = 0; i < sna_output->num_props; i++) {
3266 struct sna_property *p = &sna_output->props[i];
3269 sna_output->prop_ids[i]);
3286 sna_output->prop_values[i],
3311 if (p->kprop->enums[j].value == sna_output->prop_values[i])
3324 if (sna_output->backlight.iface) {
3331 sna_output->backlight.max,
3332 sna_output->backlight_active_level,
3337 sna_output->backlight.max,
3338 sna_output->backlight_active_level,
3348 struct sna_output *sna_output = output->driver_private;
3363 __FUNCTION__, (int)val, sna_output->backlight.max));
3364 if (val < 0 || val > sna_output->backlight.max)
3367 sna_output->backlight_active_level = val;
3368 if (sna_output->dpms_mode == DPMSModeOn)
3369 ret = sna_output_backlight_set(sna_output, val);
3373 if (!sna_output->id)
3376 for (i = 0; i < sna_output->num_props; i++) {
3377 struct sna_property *p = &sna_output->props[i];
3390 drmModeConnectorSetProperty(sna->kgem.fd, sna_output->id,
3408 drmModeConnectorSetProperty(sna->kgem.fd, sna_output->id,
3427 struct sna_output *sna_output = output->driver_private;
3433 if (!sna_output->backlight.iface)
3436 if (sna_output->dpms_mode == DPMSModeOn) {
3443 val = sna_output->backlight_active_level;
3640 struct sna_output *sna_output = to_sna_output(output);
3642 assert(sna_output);
3644 if (sna_output->id) {
3645 output->possible_clones = sna_output->possible_encoders;
3646 encoder_mask[i] = sna_output->attached_encoders;
3675 struct sna_output *sna_output,
3682 id = find_property(sna, sna_output, "PATH");
3688 blob.blob_id = sna_output->prop_values[id];
3742 struct sna_output *sna_output;
3837 sna_output = calloc(sizeof(struct sna_output), 1);
3838 if (!sna_output)
3841 sna_output->num_props = compat_conn.conn.count_props;
3842 sna_output->prop_ids = malloc(sizeof(uint32_t)*compat_conn.conn.count_props);
3843 sna_output->prop_values = malloc(sizeof(uint64_t)*compat_conn.conn.count_props);
3850 compat_conn.conn.count_props = sna_output->num_props;
3851 compat_conn.conn.props_ptr = (uintptr_t)sna_output->prop_ids;
3852 compat_conn.conn.prop_values_ptr = (uintptr_t)sna_output->prop_values;
3861 assert(sna_output->num_props == compat_conn.conn.count_props);
3862 VG(VALGRIND_MAKE_MEM_DEFINED(sna_output->prop_ids, sizeof(uint32_t)*sna_output->num_props));
3863 VG(VALGRIND_MAKE_MEM_DEFINED(sna_output->prop_values, sizeof(uint64_t)*sna_output->num_props));
3866 path = name_from_path(sna, sna_output, name);
3935 sna_output->id = compat_conn.conn.connector_id;
3936 sna_output->is_panel = is_panel(compat_conn.conn.connector_type);
3937 sna_output->edid_idx = find_property(sna, sna_output, "EDID");
3938 if (find_property(sna, sna_output, "scaling mode") != -1)
3939 sna_output->add_default_modes =
3942 i = find_property(sna, sna_output, "DPMS");
3944 sna_output->dpms_id = sna_output->prop_ids[i];
3945 sna_output->dpms_mode = sna_output->prop_values[i];
3947 __FUNCTION__, i, sna_output->dpms_id, sna_output->dpms_mode));
3949 sna_output->dpms_id = -1;
3950 sna_output->dpms_mode = DPMSModeOff;
3953 sna_output->possible_encoders = possible_encoders;
3954 sna_output->attached_encoders = attached_encoders;
3962 output->driver_private = sna_output;
3963 sna_output->base = output;
3965 backlight_init(&sna_output->backlight);
3966 if (sna_output->is_panel)
3982 sna_output->serial = serial;
3992 sna_output->attached_encoders,
3993 sna_output->possible_encoders,
3994 serial, sna_output->edid_idx, sna_output->dpms_id,
3996 assert(sna_output->id == id);
4006 free(sna_output->prop_ids);
4007 free(sna_output->prop_values);
4008 free(sna_output);
4048 struct sna_output *sa = to_sna_output(*a);
4049 struct sna_output *sb = to_sna_output(*b);
5697 struct sna_output *sna_output = to_sna_output(output);
5699 if (!sna_output->is_panel)
5708 if (sna_output->num_modes == 0)
5711 width = sna_output->modes[0].hdisplay;
5712 height= sna_output->modes[0].vdisplay;
5928 struct sna_output *output = to_sna_output(config->output[i]);
6506 struct sna_output *sna_output;
6511 sna_output = to_sna_output(output);
6512 if (sna_output == NULL)
6515 sna_output->dpms_mode = DPMSModeOff;
6584 struct sna_output *sna_output = to_sna_output(config->output[i]);
6586 assert(sna_output != NULL);
6587 if (sna_output->dpms_mode != DPMSModeOff)
6590 if (!sna_output->backlight.iface)
6593 sna_output_backlight_set(sna_output,
6594 sna_output->backlight_active_level);