diff options
Diffstat (limited to 'drivers/mfd/glamo/glamo-drm-private.h')
-rw-r--r-- | drivers/mfd/glamo/glamo-drm-private.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/drivers/mfd/glamo/glamo-drm-private.h b/drivers/mfd/glamo/glamo-drm-private.h index 4cc5877e118..3f01f1fd6a1 100644 --- a/drivers/mfd/glamo/glamo-drm-private.h +++ b/drivers/mfd/glamo/glamo-drm-private.h @@ -35,13 +35,22 @@ #include "glamo-core.h" +/* Memory to allocate for the framebuffer. + * The rest is reserved for the DRM memory manager */ +#define GLAMO_FRAMEBUFFER_ALLOCATION (4*1024*1024) + + struct glamodrm_handle { /* This device */ struct device *dev; + /* The parent device handle */ struct glamo_core *glamo_core; + /* Framebuffer handle for the console (i.e. /dev/fb0) */ + struct fb_info *fb; + /* Command queue registers */ struct resource *reg; char __iomem *reg_base; @@ -54,6 +63,10 @@ struct glamodrm_handle { struct resource *cmdq; char __iomem *cmdq_base; + /* LCD controller registers */ + struct resource *lcd_regs; + char __iomem *lcd_base; + ssize_t vram_size; /* Memory management */ @@ -61,8 +74,25 @@ struct glamodrm_handle { /* semaphore against concurrent ioctl */ struct semaphore add_to_ring; + + /* Saved state */ + u_int16_t saved_clock; + u_int16_t saved_width; + u_int16_t saved_height; + u_int16_t saved_pitch; + u_int16_t saved_htotal; + u_int16_t saved_hrtrst; + u_int16_t saved_hrtren; + u_int16_t saved_hdspst; + u_int16_t saved_hdspen; + u_int16_t saved_vtotal; + u_int16_t saved_vrtrst; + u_int16_t saved_vrtren; + u_int16_t saved_vdspst; + u_int16_t saved_vdspen; }; + /* Private data. This is where we keep our memory management bits */ struct drm_glamo_gem_object { struct drm_gem_object *obj; /* The GEM object this refers to */ @@ -70,5 +100,32 @@ struct drm_glamo_gem_object { }; +struct glamo_crtc { + struct drm_crtc base; + struct glamodrm_handle *gdrm; + /* a mode_set for fbdev users on this crtc */ + struct drm_mode_set mode_set; + int blank_mode; +}; + + +struct glamo_framebuffer { + struct drm_framebuffer base; + struct drm_gem_object *obj; +}; + + +struct glamo_output { + struct drm_connector base; + struct drm_encoder enc; + struct glamodrm_handle *gdrm; +}; + + +#define to_glamo_crtc(x) container_of(x, struct glamo_crtc, base) +#define to_glamo_output(x) container_of(x, struct glamo_output, base) +#define enc_to_glamo_output(x) container_of(x, struct glamo_output, enc) +#define to_glamo_framebuffer(x) container_of(x, struct glamo_framebuffer, base) + #endif /* __GLAMO_DRMPRIV_H */ |