86 lines · c
1/*2 * Copyright (C) 2008 Maarten Maathuis.3 * All Rights Reserved.4 *5 * Permission is hereby granted, free of charge, to any person obtaining6 * a copy of this software and associated documentation files (the7 * "Software"), to deal in the Software without restriction, including8 * without limitation the rights to use, copy, modify, merge, publish,9 * distribute, sublicense, and/or sell copies of the Software, and to10 * permit persons to whom the Software is furnished to do so, subject to11 * the following conditions:12 *13 * The above copyright notice and this permission notice (including the14 * next paragraph) shall be included in all copies or substantial15 * portions of the Software.16 *17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.20 * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE21 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION22 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION23 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.24 *25 */26 27#ifndef __NOUVEAU_CRTC_H__28#define __NOUVEAU_CRTC_H__29#include <drm/drm_crtc.h>30 31#include <nvif/head.h>32#include <nvif/event.h>33 34struct nouveau_crtc {35 struct drm_crtc base;36 37 struct nvif_head head;38 int index;39 struct nvif_event vblank;40 41 uint32_t dpms_saved_fp_control;42 uint32_t fp_users;43 int saturation;44 int sharpness;45 int last_dpms;46 47 int cursor_saved_x, cursor_saved_y;48 49 struct {50 int cpp;51 bool blanked;52 uint32_t offset;53 uint32_t handle;54 } fb;55 56 struct {57 struct nouveau_bo *nvbo;58 uint32_t offset;59 void (*set_offset)(struct nouveau_crtc *, uint32_t offset);60 void (*set_pos)(struct nouveau_crtc *, int x, int y);61 void (*hide)(struct nouveau_crtc *, bool update);62 void (*show)(struct nouveau_crtc *, bool update);63 } cursor;64 65 struct {66 int depth;67 } lut;68 69 void (*save)(struct drm_crtc *crtc);70 void (*restore)(struct drm_crtc *crtc);71};72 73static inline struct nouveau_crtc *nouveau_crtc(struct drm_crtc *crtc)74{75 return crtc ? container_of(crtc, struct nouveau_crtc, base) : NULL;76}77 78static inline struct drm_crtc *to_drm_crtc(struct nouveau_crtc *crtc)79{80 return &crtc->base;81}82 83int nv04_cursor_init(struct nouveau_crtc *);84 85#endif /* __NOUVEAU_CRTC_H__ */86