Merge tag 'fbdev-updates-for-3.7' of git://github.com/schandinat/linux-2.6
Pull fbdev updates from Florian Tobias Schandinat: "This includes: - large updates for OMAP - basic OMAP5 DSS support for DPI and DSI outputs - large cleanups and restructuring - some update to Exynos and da8xx-fb - removal of the pnx4008 driver (arch removed) - various other small patches" Fix up some trivial conflicts (mostly just include line changes, but also some due to the renaming of the deferred work functions by Tejun). * tag 'fbdev-updates-for-3.7' of git://github.com/schandinat/linux-2.6: (193 commits) gbefb: fix compile error video: mark nuc900fb_map_video_memory as __devinit video/mx3fb: set .owner to prevent module unloading while being used video: exynos_dp: use clk_prepare_enable and clk_disable_unprepare drivers/video/exynos/exynos_mipi_dsi.c: fix error return code drivers/video/savage/savagefb_driver.c: fix error return code video: s3c-fb: use clk_prepare_enable and clk_disable_unprepare da8xx-fb: save and restore LCDC context across suspend/resume cycle da8xx-fb: add pm_runtime support video/udlfb: fix line counting in fb_write OMAPDSS: add missing include for string.h OMAPDSS: DISPC: Configure color conversion coefficients for writeback OMAPDSS: DISPC: Add manager like functions for writeback OMAPDSS: DISPC: Configure writeback FIFOs OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup() OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup OMAPDSS: DISPC: Add function to set channel in for writeback OMAPDSS: DISPC: Don't set chroma resampling bit for writeback OMAPDSS: DISPC: Downscale chroma if plane is writeback OMAPDSS: DISPC: Configure input and output sizes for writeback ...
This commit is contained in:
@@ -599,6 +599,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
|
||||
struct omapfb_info *ofbi = FB2OFB(fbi);
|
||||
struct omapfb2_device *fbdev = ofbi->fbdev;
|
||||
struct omap_dss_device *display = fb2display(fbi);
|
||||
struct omap_overlay_manager *mgr;
|
||||
|
||||
union {
|
||||
struct omapfb_update_window_old uwnd_o;
|
||||
@@ -786,12 +787,14 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
|
||||
|
||||
case OMAPFB_WAITFORVSYNC:
|
||||
DBG("ioctl WAITFORVSYNC\n");
|
||||
if (!display) {
|
||||
if (!display && !display->output && !display->output->manager) {
|
||||
r = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
r = display->manager->wait_for_vsync(display->manager);
|
||||
mgr = display->output->manager;
|
||||
|
||||
r = mgr->wait_for_vsync(mgr);
|
||||
break;
|
||||
|
||||
case OMAPFB_WAITFORGO:
|
||||
|
@@ -1593,6 +1593,20 @@ static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void omapfb_clear_fb(struct fb_info *fbi)
|
||||
{
|
||||
const struct fb_fillrect rect = {
|
||||
.dx = 0,
|
||||
.dy = 0,
|
||||
.width = fbi->var.xres_virtual,
|
||||
.height = fbi->var.yres_virtual,
|
||||
.color = 0,
|
||||
.rop = ROP_COPY,
|
||||
};
|
||||
|
||||
cfb_fillrect(fbi, &rect);
|
||||
}
|
||||
|
||||
int omapfb_realloc_fbmem(struct fb_info *fbi, unsigned long size, int type)
|
||||
{
|
||||
struct omapfb_info *ofbi = FB2OFB(fbi);
|
||||
@@ -1662,6 +1676,8 @@ int omapfb_realloc_fbmem(struct fb_info *fbi, unsigned long size, int type)
|
||||
goto err;
|
||||
}
|
||||
|
||||
omapfb_clear_fb(fbi);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
omapfb_free_fbmem(fbi);
|
||||
@@ -1946,6 +1962,16 @@ static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < fbdev->num_fbs; i++) {
|
||||
struct fb_info *fbi = fbdev->fbs[i];
|
||||
struct omapfb_info *ofbi = FB2OFB(fbi);
|
||||
|
||||
if (ofbi->region->size == 0)
|
||||
continue;
|
||||
|
||||
omapfb_clear_fb(fbi);
|
||||
}
|
||||
|
||||
DBG("fb_infos initialized\n");
|
||||
|
||||
for (i = 0; i < fbdev->num_fbs; i++) {
|
||||
@@ -2354,6 +2380,7 @@ static int __init omapfb_probe(struct platform_device *pdev)
|
||||
struct omap_overlay *ovl;
|
||||
struct omap_dss_device *def_display;
|
||||
struct omap_dss_device *dssdev;
|
||||
struct omap_dss_device *ovl_device;
|
||||
|
||||
DBG("omapfb_probe\n");
|
||||
|
||||
@@ -2427,8 +2454,9 @@ static int __init omapfb_probe(struct platform_device *pdev)
|
||||
/* gfx overlay should be the default one. find a display
|
||||
* connected to that, and use it as default display */
|
||||
ovl = omap_dss_get_overlay(0);
|
||||
if (ovl->manager && ovl->manager->device) {
|
||||
def_display = ovl->manager->device;
|
||||
ovl_device = ovl->get_device(ovl);
|
||||
if (ovl_device) {
|
||||
def_display = ovl_device;
|
||||
} else {
|
||||
dev_warn(&pdev->dev, "cannot find default display\n");
|
||||
def_display = NULL;
|
||||
|
@@ -148,8 +148,9 @@ static inline struct omap_dss_device *fb2display(struct fb_info *fbi)
|
||||
|
||||
/* XXX: returns the display connected to first attached overlay */
|
||||
for (i = 0; i < ofbi->num_overlays; i++) {
|
||||
if (ofbi->overlays[i]->manager)
|
||||
return ofbi->overlays[i]->manager->device;
|
||||
struct omap_overlay *ovl = ofbi->overlays[i];
|
||||
|
||||
return ovl->get_device(ovl);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
مرجع در شماره جدید
Block a user