summaryrefslogtreecommitdiff
path: root/linux-core/drm_crtc.h
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core/drm_crtc.h')
-rw-r--r--linux-core/drm_crtc.h30
1 files changed, 24 insertions, 6 deletions
diff --git a/linux-core/drm_crtc.h b/linux-core/drm_crtc.h
index a15ce0cf..fa143e6e 100644
--- a/linux-core/drm_crtc.h
+++ b/linux-core/drm_crtc.h
@@ -87,6 +87,7 @@ struct drm_display_mode {
struct list_head head;
char name[DRM_DISPLAY_MODE_LEN];
int mode_id;
+ int output_count;
enum drm_mode_status status;
int type;
@@ -293,8 +294,8 @@ struct drm_crtc_funcs {
void (*mode_set)(struct drm_crtc *crtc, struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode, int x, int y);
/* Set gamma on the CRTC */
- void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
- int size);
+ void (*gamma_set)(struct drm_crtc *crtc, u16 r, u16 g, u16 b,
+ int regno);
/* Driver cleanup routine */
void (*cleanup)(struct drm_crtc *crtc);
};
@@ -319,7 +320,7 @@ struct drm_crtc {
int id; /* idr assigned */
- /* framebuffer the CRTC is currently bound to */
+ /* framebuffer the output is currently bound to */
struct drm_framebuffer *fb;
bool enabled;
@@ -382,6 +383,7 @@ struct drm_output_funcs {
void (*cleanup)(struct drm_output *output);
};
+#define DRM_OUTPUT_MAX_UMODES 16
#define DRM_OUTPUT_LEN 32
/**
* drm_output - central DRM output control structure
@@ -417,6 +419,7 @@ struct drm_output {
bool doublescan_allowed;
spinlock_t modes_lock; /* protects modes and probed_modes lists */
struct list_head modes; /* list of modes on this output */
+
/*
OptionInfoPtr options;
XF86ConfMonitorPtr conf_monitor;
@@ -434,7 +437,9 @@ struct drm_output {
char name[DRM_OUTPUT_LEN];
const struct drm_output_funcs *funcs;
void *driver_private;
- /* RROutputPtr randr_output? */
+
+ u32 user_mode_ids[DRM_OUTPUT_MAX_UMODES];
+
};
/**
@@ -467,6 +472,7 @@ struct drm_mode_config {
int num_crtc;
struct list_head crtc_list;
+ struct list_head usermode_list;
int min_width, min_height;
int max_width, max_height;
/* DamagePtr rotationDamage? */
@@ -480,6 +486,7 @@ struct drm_output *drm_output_create(struct drm_device *dev,
const char *name);
extern void drm_output_destroy(struct drm_output *output);
extern bool drm_output_rename(struct drm_output *output, const char *name);
+extern void drm_fb_release(struct file *filp);
extern int drm_add_edid_modes(struct drm_output *output,
struct i2c_adapter *adapter);
@@ -492,6 +499,7 @@ extern void drm_mode_debug_printmodeline(struct drm_device *dev,
extern void drm_mode_config_init(struct drm_device *dev);
extern void drm_mode_config_cleanup(struct drm_device *dev);
extern void drm_mode_set_name(struct drm_display_mode *mode);
+extern bool drm_mode_equal(struct drm_display_mode *mode1, struct drm_display_mode *mode2);
extern void drm_disable_unused_functions(struct drm_device *dev);
extern struct drm_display_mode *drm_mode_create(struct drm_device *dev);
@@ -507,12 +515,13 @@ extern void drm_mode_sort(struct list_head *mode_list);
extern int drm_mode_vrefresh(struct drm_display_mode *mode);
extern void drm_mode_set_crtcinfo(struct drm_display_mode *p,
int adjust_flags);
+extern void drm_mode_output_list_update(struct drm_output *output);
+
extern struct drm_display_mode *drm_crtc_mode_create(struct drm_device *dev);
extern bool drm_initial_config(struct drm_device *dev, bool cangrow);
extern void drm_framebuffer_set_object(struct drm_device *dev,
unsigned long handle);
-extern bool drm_set_desired_modes(struct drm_device *dev);
-extern int drmfb_probe(struct drm_device *dev, struct drm_framebuffer *fb);
+extern int drmfb_probe(struct drm_device *dev, struct drm_crtc *crtc);
extern int drmfb_remove(struct drm_device *dev, struct drm_framebuffer *fb);
/* IOCTLs */
@@ -531,5 +540,14 @@ extern int drm_mode_rmfb(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
extern int drm_mode_getfb(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
+extern int drm_mode_addmode(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg);
+extern int drm_mode_rmmode(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg);
+extern int drm_mode_attachmode(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg);
+extern int drm_mode_detachmode(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg);
+
#endif /* __DRM_CRTC_H__ */