aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drm_fb_helper.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2009-09-23 00:44:08 -0400
committerDave Airlie <airlied@linux.ie>2009-09-24 23:08:20 -0400
commitd50ba256b5f1478e15accfcfda9b72fd7a661364 (patch)
tree7148b1294057a734ecdbc62b7df7ed0397adfeb4 /include/drm/drm_fb_helper.h
parentf80330357284c908e1f67cc8b4d8e56a3e2f6fc6 (diff)
drm/kms: start adding command line interface using fb.
[note this requires an fb patch posted to linux-fbdev-devel already] This uses the normal video= command line option to control the kms output setup at boot time. It is used to override the autodetection done by kms. video= normally takes a framebuffer as the first parameter, in kms it will take a connector name, DVI-I-1, or LVDS-1 etc. If no output connector is specified the mode string will apply to all connectors. The mode specification used will match down the probed modes, and if no mode is found it will add a CVT mode that matches. video=1024x768 - all connectors match a 1024x768 mode or add a CVT on video=VGA-1:1024x768, VGA-1 connector gets mode only. The same strings as used in current fb modedb.c are used, except I've added three more letters, e, D, d, e = enable, D = enable Digital, d = disable, which allow a connector to be forced into a certain state. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm/drm_fb_helper.h')
-rw-r--r--include/drm/drm_fb_helper.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
index 88fffbdfa26f..4aa5740ce59f 100644
--- a/include/drm/drm_fb_helper.h
+++ b/include/drm/drm_fb_helper.h
@@ -35,11 +35,30 @@ struct drm_fb_helper_crtc {
35 struct drm_mode_set mode_set; 35 struct drm_mode_set mode_set;
36}; 36};
37 37
38
38struct drm_fb_helper_funcs { 39struct drm_fb_helper_funcs {
39 void (*gamma_set)(struct drm_crtc *crtc, u16 red, u16 green, 40 void (*gamma_set)(struct drm_crtc *crtc, u16 red, u16 green,
40 u16 blue, int regno); 41 u16 blue, int regno);
41}; 42};
42 43
44/* mode specified on the command line */
45struct drm_fb_helper_cmdline_mode {
46 bool specified;
47 bool refresh_specified;
48 bool bpp_specified;
49 int xres, yres;
50 int bpp;
51 int refresh;
52 bool rb;
53 bool interlace;
54 bool cvt;
55 bool margins;
56};
57
58struct drm_fb_helper_connector {
59 struct drm_fb_helper_cmdline_mode cmdline_mode;
60};
61
43struct drm_fb_helper { 62struct drm_fb_helper {
44 struct drm_framebuffer *fb; 63 struct drm_framebuffer *fb;
45 struct drm_device *dev; 64 struct drm_device *dev;
@@ -57,6 +76,8 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev,
57 uint32_t fb_height, 76 uint32_t fb_height,
58 uint32_t surface_width, 77 uint32_t surface_width,
59 uint32_t surface_height, 78 uint32_t surface_height,
79 uint32_t surface_depth,
80 uint32_t surface_bpp,
60 struct drm_framebuffer **fb_ptr)); 81 struct drm_framebuffer **fb_ptr));
61int drm_fb_helper_init_crtc_count(struct drm_fb_helper *helper, int crtc_count, 82int drm_fb_helper_init_crtc_count(struct drm_fb_helper *helper, int crtc_count,
62 int max_conn); 83 int max_conn);
@@ -79,4 +100,7 @@ void drm_fb_helper_fill_var(struct fb_info *info, struct drm_framebuffer *fb,
79 uint32_t fb_width, uint32_t fb_height); 100 uint32_t fb_width, uint32_t fb_height);
80void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch); 101void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch);
81 102
103int drm_fb_helper_add_connector(struct drm_connector *connector);
104int drm_fb_helper_parse_command_line(struct drm_device *dev);
105
82#endif 106#endif