mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: arch/microblaze/include/asm/socket.h
This commit is contained in:
commit
aa11d958d1
1599 changed files with 38098 additions and 25849 deletions
|
|
@ -1119,12 +1119,13 @@ config FB_CARILLO_RANCH
|
|||
|
||||
config FB_INTEL
|
||||
tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL && FB && PCI && X86 && AGP_INTEL
|
||||
depends on EXPERIMENTAL && FB && PCI && X86 && AGP_INTEL && EMBEDDED
|
||||
select FB_MODE_HELPERS
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
select FB_BOOT_VESA_SUPPORT if FB_INTEL = y
|
||||
depends on !DRM_I915
|
||||
help
|
||||
This driver supports the on-board graphics built in to the Intel
|
||||
830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM chipsets.
|
||||
|
|
|
|||
|
|
@ -226,9 +226,10 @@ static int clcdfb_set_par(struct fb_info *info)
|
|||
clcdfb_enable(fb, regs.cntl);
|
||||
|
||||
#ifdef DEBUG
|
||||
printk(KERN_INFO "CLCD: Registers set to\n"
|
||||
KERN_INFO " %08x %08x %08x %08x\n"
|
||||
KERN_INFO " %08x %08x %08x %08x\n",
|
||||
printk(KERN_INFO
|
||||
"CLCD: Registers set to\n"
|
||||
" %08x %08x %08x %08x\n"
|
||||
" %08x %08x %08x %08x\n",
|
||||
readl(fb->regs + CLCD_TIM0), readl(fb->regs + CLCD_TIM1),
|
||||
readl(fb->regs + CLCD_TIM2), readl(fb->regs + CLCD_TIM3),
|
||||
readl(fb->regs + CLCD_UBAS), readl(fb->regs + CLCD_LBAS),
|
||||
|
|
|
|||
|
|
@ -2405,6 +2405,9 @@ static int do_fb_set_var(struct fb_var_screeninfo *var, int isactive)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* fbhw->encode_fix() must be called with fb_info->mm_lock held
|
||||
* if it is called after the register_framebuffer() - not a case here
|
||||
*/
|
||||
static int atafb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
|
||||
{
|
||||
struct atafb_par par;
|
||||
|
|
@ -2414,9 +2417,7 @@ static int atafb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
|
|||
if (err)
|
||||
return err;
|
||||
memset(fix, 0, sizeof(struct fb_fix_screeninfo));
|
||||
mutex_lock(&info->mm_lock);
|
||||
err = fbhw->encode_fix(fix, &par);
|
||||
mutex_unlock(&info->mm_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -261,6 +261,9 @@ static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo)
|
|||
/**
|
||||
* atmel_lcdfb_alloc_video_memory - Allocate framebuffer memory
|
||||
* @sinfo: the frame buffer to allocate memory for
|
||||
*
|
||||
* This function is called only from the atmel_lcdfb_probe()
|
||||
* so no locking by fb_info->mm_lock around smem_len setting is needed.
|
||||
*/
|
||||
static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
|
||||
{
|
||||
|
|
@ -270,9 +273,7 @@ static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
|
|||
|
||||
smem_len = (var->xres_virtual * var->yres_virtual
|
||||
* ((var->bits_per_pixel + 7) / 8));
|
||||
mutex_lock(&info->mm_lock);
|
||||
info->fix.smem_len = max(smem_len, sinfo->smem_len);
|
||||
mutex_unlock(&info->mm_lock);
|
||||
|
||||
info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len,
|
||||
(dma_addr_t *)&info->fix.smem_start, GFP_KERNEL);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static int jornada_bl_update_status(struct backlight_device *bd)
|
|||
if (jornada_ssp_byte(SETBRIGHTNESS) != TXDUMMY) {
|
||||
printk(KERN_INFO "bl : failed to set brightness\n");
|
||||
ret = -ETIMEDOUT;
|
||||
goto out
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* at this point we expect that the mcu has accepted
|
||||
|
|
|
|||
|
|
@ -145,6 +145,8 @@ static int pwm_backlight_suspend(struct platform_device *pdev,
|
|||
struct backlight_device *bl = platform_get_drvdata(pdev);
|
||||
struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev);
|
||||
|
||||
if (pb->notify)
|
||||
pb->notify(0);
|
||||
pwm_config(pb->pwm, 0, pb->period);
|
||||
pwm_disable(pb->pwm);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1082,7 +1082,6 @@ static void fbcon_init(struct vc_data *vc, int init)
|
|||
new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
|
||||
new_cols /= vc->vc_font.width;
|
||||
new_rows /= vc->vc_font.height;
|
||||
vc_resize(vc, new_cols, new_rows);
|
||||
|
||||
/*
|
||||
* We must always set the mode. The mode of the previous console
|
||||
|
|
@ -1111,10 +1110,11 @@ static void fbcon_init(struct vc_data *vc, int init)
|
|||
* vc_{cols,rows}, but we must not set those if we are only
|
||||
* resizing the console.
|
||||
*/
|
||||
if (!init) {
|
||||
if (init) {
|
||||
vc->vc_cols = new_cols;
|
||||
vc->vc_rows = new_rows;
|
||||
}
|
||||
} else
|
||||
vc_resize(vc, new_cols, new_rows);
|
||||
|
||||
if (logo)
|
||||
fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ static inline void rotate_ud(const char *in, char *out, u32 width, u32 height)
|
|||
width = (width + 7) & ~7;
|
||||
|
||||
for (i = 0; i < height; i++) {
|
||||
for (j = 0; j < width; j++) {
|
||||
for (j = 0; j < width - shift; j++) {
|
||||
if (pattern_test_bit(j, i, width, in))
|
||||
pattern_set_bit(width - (1 + j + shift),
|
||||
height - (1 + i),
|
||||
|
|
|
|||
|
|
@ -957,9 +957,14 @@ static int __devinit sticore_pci_init(struct pci_dev *pd,
|
|||
#ifdef CONFIG_PCI
|
||||
unsigned long fb_base, rom_base;
|
||||
unsigned int fb_len, rom_len;
|
||||
int err;
|
||||
struct sti_struct *sti;
|
||||
|
||||
pci_enable_device(pd);
|
||||
err = pci_enable_device(pd);
|
||||
if (err < 0) {
|
||||
dev_err(&pd->dev, "Cannot enable PCI device\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
fb_base = pci_resource_start(pd, 0);
|
||||
fb_len = pci_resource_len(pd, 0);
|
||||
|
|
@ -1048,7 +1053,7 @@ static void __devinit sti_init_roms(void)
|
|||
|
||||
/* Register drivers for native & PCI cards */
|
||||
register_parisc_driver(&pa_sti_driver);
|
||||
pci_register_driver(&pci_sti_driver);
|
||||
WARN_ON(pci_register_driver(&pci_sti_driver));
|
||||
|
||||
/* if we didn't find the given default sti, take the first one */
|
||||
if (!default_sti)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
#include <linux/compat.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
|
|||
|
|
@ -256,8 +256,8 @@ static void fix_edid(unsigned char *edid, int fix)
|
|||
|
||||
static int edid_checksum(unsigned char *edid)
|
||||
{
|
||||
unsigned char i, csum = 0, all_null = 0;
|
||||
int err = 0, fix = check_edid(edid);
|
||||
unsigned char csum = 0, all_null = 0;
|
||||
int i, err = 0, fix = check_edid(edid);
|
||||
|
||||
if (fix)
|
||||
fix_edid(edid, fix);
|
||||
|
|
|
|||
|
|
@ -1223,12 +1223,6 @@ static int __devinit install_fb(struct fb_info *info)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (fsl_diu_set_par(info)) {
|
||||
printk(KERN_ERR "fb_set_par failed");
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (register_framebuffer(info) < 0) {
|
||||
printk(KERN_ERR "register_framebuffer failed");
|
||||
unmap_video_memory(info);
|
||||
|
|
|
|||
|
|
@ -44,9 +44,6 @@ static struct fb_fix_screeninfo hitfb_fix __initdata = {
|
|||
.accel = FB_ACCEL_NONE,
|
||||
};
|
||||
|
||||
static u32 pseudo_palette[16];
|
||||
static struct fb_info fb_info;
|
||||
|
||||
static inline void hitfb_accel_wait(void)
|
||||
{
|
||||
while (fb_readw(HD64461_GRCFGR) & HD64461_GRCFGR_ACCSTATUS) ;
|
||||
|
|
@ -331,6 +328,8 @@ static struct fb_ops hitfb_ops = {
|
|||
static int __init hitfb_probe(struct platform_device *dev)
|
||||
{
|
||||
unsigned short lcdclor, ldr3, ldvndr;
|
||||
struct fb_info *info;
|
||||
int ret;
|
||||
|
||||
if (fb_get_options("hitfb", NULL))
|
||||
return -ENODEV;
|
||||
|
|
@ -384,32 +383,53 @@ static int __init hitfb_probe(struct platform_device *dev)
|
|||
break;
|
||||
}
|
||||
|
||||
fb_info.fbops = &hitfb_ops;
|
||||
fb_info.var = hitfb_var;
|
||||
fb_info.fix = hitfb_fix;
|
||||
fb_info.pseudo_palette = pseudo_palette;
|
||||
fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN |
|
||||
info = framebuffer_alloc(sizeof(u32) * 16, &dev->dev);
|
||||
if (unlikely(!info))
|
||||
return -ENOMEM;
|
||||
|
||||
info->fbops = &hitfb_ops;
|
||||
info->var = hitfb_var;
|
||||
info->fix = hitfb_fix;
|
||||
info->pseudo_palette = info->par;
|
||||
info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN |
|
||||
FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA;
|
||||
|
||||
fb_info.screen_base = (void *)hitfb_fix.smem_start;
|
||||
info->screen_base = (void *)hitfb_fix.smem_start;
|
||||
|
||||
fb_alloc_cmap(&fb_info.cmap, 256, 0);
|
||||
ret = fb_alloc_cmap(&info->cmap, 256, 0);
|
||||
if (unlikely(ret < 0))
|
||||
goto err_fb;
|
||||
|
||||
if (register_framebuffer(&fb_info) < 0)
|
||||
return -EINVAL;
|
||||
ret = register_framebuffer(info);
|
||||
if (unlikely(ret < 0))
|
||||
goto err;
|
||||
|
||||
platform_set_drvdata(dev, info);
|
||||
|
||||
printk(KERN_INFO "fb%d: %s frame buffer device\n",
|
||||
fb_info.node, fb_info.fix.id);
|
||||
info->node, info->fix.id);
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
err_fb:
|
||||
framebuffer_release(info);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __exit hitfb_remove(struct platform_device *dev)
|
||||
{
|
||||
return unregister_framebuffer(&fb_info);
|
||||
struct fb_info *info = platform_get_drvdata(dev);
|
||||
|
||||
unregister_framebuffer(info);
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
framebuffer_release(info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int hitfb_suspend(struct platform_device *dev, pm_message_t state)
|
||||
static int hitfb_suspend(struct device *dev)
|
||||
{
|
||||
u16 v;
|
||||
|
||||
|
|
@ -421,7 +441,7 @@ static int hitfb_suspend(struct platform_device *dev, pm_message_t state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hitfb_resume(struct platform_device *dev)
|
||||
static int hitfb_resume(struct device *dev)
|
||||
{
|
||||
u16 v;
|
||||
|
||||
|
|
@ -435,17 +455,19 @@ static int hitfb_resume(struct platform_device *dev)
|
|||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct dev_pm_ops hitfb_dev_pm_ops = {
|
||||
.suspend = hitfb_suspend,
|
||||
.resume = hitfb_resume,
|
||||
};
|
||||
|
||||
static struct platform_driver hitfb_driver = {
|
||||
.probe = hitfb_probe,
|
||||
.remove = __exit_p(hitfb_remove),
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = hitfb_suspend,
|
||||
.resume = hitfb_resume,
|
||||
#endif
|
||||
.driver = {
|
||||
.name = "hitfb",
|
||||
.owner = THIS_MODULE,
|
||||
.pm = &hitfb_dev_pm_ops,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2060,8 +2060,7 @@ static int __devinit i810fb_init_pci (struct pci_dev *dev,
|
|||
|
||||
fb_var_to_videomode(&mode, &info->var);
|
||||
fb_add_videomode(&mode, &info->modelist);
|
||||
encode_fix(&info->fix, info);
|
||||
|
||||
|
||||
i810fb_init_ringbuffer(info);
|
||||
err = register_framebuffer(info);
|
||||
|
||||
|
|
|
|||
|
|
@ -454,9 +454,9 @@ static void DAC1064_restore_2(WPMINFO2) {
|
|||
dprintk(KERN_DEBUG "DAC1064regs ");
|
||||
for (i = 0; i < sizeof(MGA1064_DAC_regs); i++) {
|
||||
dprintk("R%02X=%02X ", MGA1064_DAC_regs[i], ACCESS_FBINFO(hw).DACreg[i]);
|
||||
if ((i & 0x7) == 0x7) dprintk("\n" KERN_DEBUG "continuing... ");
|
||||
if ((i & 0x7) == 0x7) dprintk(KERN_DEBUG "continuing... ");
|
||||
}
|
||||
dprintk("\n" KERN_DEBUG "DAC1064clk ");
|
||||
dprintk(KERN_DEBUG "DAC1064clk ");
|
||||
for (i = 0; i < 6; i++)
|
||||
dprintk("C%02X=%02X ", i, ACCESS_FBINFO(hw).DACclk[i]);
|
||||
dprintk("\n");
|
||||
|
|
|
|||
|
|
@ -651,9 +651,9 @@ static void Ti3026_restore(WPMINFO2) {
|
|||
dprintk(KERN_DEBUG "3026DACregs ");
|
||||
for (i = 0; i < 21; i++) {
|
||||
dprintk("R%02X=%02X ", DACseq[i], hw->DACreg[i]);
|
||||
if ((i & 0x7) == 0x7) dprintk("\n" KERN_DEBUG "continuing... ");
|
||||
if ((i & 0x7) == 0x7) dprintk(KERN_DEBUG "continuing... ");
|
||||
}
|
||||
dprintk("\n" KERN_DEBUG "DACclk ");
|
||||
dprintk(KERN_DEBUG "DACclk ");
|
||||
for (i = 0; i < 6; i++)
|
||||
dprintk("C%02X=%02X ", i, hw->DACclk[i]);
|
||||
dprintk("\n");
|
||||
|
|
|
|||
|
|
@ -1876,7 +1876,6 @@ static int initMatrox2(WPMINFO struct board* b){
|
|||
}
|
||||
matroxfb_init_fix(PMINFO2);
|
||||
ACCESS_FBINFO(fbcon.screen_base) = vaddr_va(ACCESS_FBINFO(video.vbase));
|
||||
matroxfb_update_fix(PMINFO2);
|
||||
/* Normalize values (namely yres_virtual) */
|
||||
matroxfb_check_var(&vesafb_defined, &ACCESS_FBINFO(fbcon));
|
||||
/* And put it into "current" var. Do NOT program hardware yet, or we'll not take over
|
||||
|
|
|
|||
|
|
@ -289,16 +289,18 @@ static int matroxfb_dh_release(struct fb_info* info, int user) {
|
|||
#undef m2info
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is called before the register_framebuffer so
|
||||
* no locking is needed.
|
||||
*/
|
||||
static void matroxfb_dh_init_fix(struct matroxfb_dh_fb_info *m2info)
|
||||
{
|
||||
struct fb_fix_screeninfo *fix = &m2info->fbcon.fix;
|
||||
|
||||
strcpy(fix->id, "MATROX DH");
|
||||
|
||||
mutex_lock(&m2info->fbcon.mm_lock);
|
||||
fix->smem_start = m2info->video.base;
|
||||
fix->smem_len = m2info->video.len_usable;
|
||||
mutex_unlock(&m2info->fbcon.mm_lock);
|
||||
fix->ypanstep = 1;
|
||||
fix->ywrapstep = 0;
|
||||
fix->xpanstep = 8; /* TBD */
|
||||
|
|
|
|||
|
|
@ -669,7 +669,8 @@ static uint32_t bpp_to_pixfmt(int bpp)
|
|||
}
|
||||
|
||||
static int mx3fb_blank(int blank, struct fb_info *fbi);
|
||||
static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len);
|
||||
static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len,
|
||||
bool lock);
|
||||
static int mx3fb_unmap_video_memory(struct fb_info *fbi);
|
||||
|
||||
/**
|
||||
|
|
@ -711,12 +712,7 @@ static void mx3fb_dma_done(void *arg)
|
|||
complete(&mx3_fbi->flip_cmpl);
|
||||
}
|
||||
|
||||
/**
|
||||
* mx3fb_set_par() - set framebuffer parameters and change the operating mode.
|
||||
* @fbi: framebuffer information pointer.
|
||||
* @return: 0 on success or negative error code on failure.
|
||||
*/
|
||||
static int mx3fb_set_par(struct fb_info *fbi)
|
||||
static int __set_par(struct fb_info *fbi, bool lock)
|
||||
{
|
||||
u32 mem_len;
|
||||
struct ipu_di_signal_cfg sig_cfg;
|
||||
|
|
@ -727,10 +723,6 @@ static int mx3fb_set_par(struct fb_info *fbi)
|
|||
struct idmac_video_param *video = &ichan->params.video;
|
||||
struct scatterlist *sg = mx3_fbi->sg;
|
||||
|
||||
dev_dbg(mx3fb->dev, "%s [%c]\n", __func__, list_empty(&ichan->queue) ? '-' : '+');
|
||||
|
||||
mutex_lock(&mx3_fbi->mutex);
|
||||
|
||||
/* Total cleanup */
|
||||
if (mx3_fbi->txd)
|
||||
sdc_disable_channel(mx3_fbi);
|
||||
|
|
@ -742,10 +734,8 @@ static int mx3fb_set_par(struct fb_info *fbi)
|
|||
if (fbi->fix.smem_start)
|
||||
mx3fb_unmap_video_memory(fbi);
|
||||
|
||||
if (mx3fb_map_video_memory(fbi, mem_len) < 0) {
|
||||
mutex_unlock(&mx3_fbi->mutex);
|
||||
if (mx3fb_map_video_memory(fbi, mem_len, lock) < 0)
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
sg_init_table(&sg[0], 1);
|
||||
|
|
@ -791,7 +781,6 @@ static int mx3fb_set_par(struct fb_info *fbi)
|
|||
fbi->var.vsync_len,
|
||||
fbi->var.lower_margin +
|
||||
fbi->var.vsync_len, sig_cfg) != 0) {
|
||||
mutex_unlock(&mx3_fbi->mutex);
|
||||
dev_err(fbi->device,
|
||||
"mx3fb: Error initializing panel.\n");
|
||||
return -EINVAL;
|
||||
|
|
@ -810,9 +799,30 @@ static int mx3fb_set_par(struct fb_info *fbi)
|
|||
if (mx3_fbi->blank == FB_BLANK_UNBLANK)
|
||||
sdc_enable_channel(mx3_fbi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* mx3fb_set_par() - set framebuffer parameters and change the operating mode.
|
||||
* @fbi: framebuffer information pointer.
|
||||
* @return: 0 on success or negative error code on failure.
|
||||
*/
|
||||
static int mx3fb_set_par(struct fb_info *fbi)
|
||||
{
|
||||
struct mx3fb_info *mx3_fbi = fbi->par;
|
||||
struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
|
||||
struct idmac_channel *ichan = mx3_fbi->idmac_channel;
|
||||
int ret;
|
||||
|
||||
dev_dbg(mx3fb->dev, "%s [%c]\n", __func__, list_empty(&ichan->queue) ? '-' : '+');
|
||||
|
||||
mutex_lock(&mx3_fbi->mutex);
|
||||
|
||||
ret = __set_par(fbi, true);
|
||||
|
||||
mutex_unlock(&mx3_fbi->mutex);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -966,21 +976,11 @@ static int mx3fb_setcolreg(unsigned int regno, unsigned int red,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* mx3fb_blank() - blank the display.
|
||||
*/
|
||||
static int mx3fb_blank(int blank, struct fb_info *fbi)
|
||||
static void __blank(int blank, struct fb_info *fbi)
|
||||
{
|
||||
struct mx3fb_info *mx3_fbi = fbi->par;
|
||||
struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
|
||||
|
||||
dev_dbg(fbi->device, "%s, blank = %d, base %p, len %u\n", __func__,
|
||||
blank, fbi->screen_base, fbi->fix.smem_len);
|
||||
|
||||
if (mx3_fbi->blank == blank)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&mx3_fbi->mutex);
|
||||
mx3_fbi->blank = blank;
|
||||
|
||||
switch (blank) {
|
||||
|
|
@ -999,6 +999,23 @@ static int mx3fb_blank(int blank, struct fb_info *fbi)
|
|||
sdc_set_brightness(mx3fb, mx3fb->backlight_level);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mx3fb_blank() - blank the display.
|
||||
*/
|
||||
static int mx3fb_blank(int blank, struct fb_info *fbi)
|
||||
{
|
||||
struct mx3fb_info *mx3_fbi = fbi->par;
|
||||
|
||||
dev_dbg(fbi->device, "%s, blank = %d, base %p, len %u\n", __func__,
|
||||
blank, fbi->screen_base, fbi->fix.smem_len);
|
||||
|
||||
if (mx3_fbi->blank == blank)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&mx3_fbi->mutex);
|
||||
__blank(blank, fbi);
|
||||
mutex_unlock(&mx3_fbi->mutex);
|
||||
|
||||
return 0;
|
||||
|
|
@ -1198,6 +1215,7 @@ static int mx3fb_resume(struct platform_device *pdev)
|
|||
* mx3fb_map_video_memory() - allocates the DRAM memory for the frame buffer.
|
||||
* @fbi: framebuffer information pointer
|
||||
* @mem_len: length of mapped memory
|
||||
* @lock: do not lock during initialisation
|
||||
* @return: Error code indicating success or failure
|
||||
*
|
||||
* This buffer is remapped into a non-cached, non-buffered, memory region to
|
||||
|
|
@ -1205,7 +1223,8 @@ static int mx3fb_resume(struct platform_device *pdev)
|
|||
* area is remapped, all virtual memory access to the video memory should occur
|
||||
* at the new region.
|
||||
*/
|
||||
static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len)
|
||||
static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len,
|
||||
bool lock)
|
||||
{
|
||||
int retval = 0;
|
||||
dma_addr_t addr;
|
||||
|
|
@ -1221,10 +1240,12 @@ static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len)
|
|||
goto err0;
|
||||
}
|
||||
|
||||
mutex_lock(&fbi->mm_lock);
|
||||
if (lock)
|
||||
mutex_lock(&fbi->mm_lock);
|
||||
fbi->fix.smem_start = addr;
|
||||
fbi->fix.smem_len = mem_len;
|
||||
mutex_unlock(&fbi->mm_lock);
|
||||
if (lock)
|
||||
mutex_unlock(&fbi->mm_lock);
|
||||
|
||||
dev_dbg(fbi->device, "allocated fb @ p=0x%08x, v=0x%p, size=%d.\n",
|
||||
(uint32_t) fbi->fix.smem_start, fbi->screen_base, fbi->fix.smem_len);
|
||||
|
|
@ -1365,11 +1386,11 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
|
|||
init_completion(&mx3fbi->flip_cmpl);
|
||||
disable_irq(ichan->eof_irq);
|
||||
dev_dbg(mx3fb->dev, "disabling irq %d\n", ichan->eof_irq);
|
||||
ret = mx3fb_set_par(fbi);
|
||||
ret = __set_par(fbi, false);
|
||||
if (ret < 0)
|
||||
goto esetpar;
|
||||
|
||||
mx3fb_blank(FB_BLANK_UNBLANK, fbi);
|
||||
__blank(FB_BLANK_UNBLANK, fbi);
|
||||
|
||||
dev_info(dev, "registered, using mode %s\n", fb_mode);
|
||||
|
||||
|
|
|
|||
|
|
@ -1254,7 +1254,7 @@ static struct fb_ops omapfb_ops = {
|
|||
static ssize_t omapfb_show_caps_num(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
int plane;
|
||||
size_t size;
|
||||
struct omapfb_caps caps;
|
||||
|
|
@ -1274,7 +1274,7 @@ static ssize_t omapfb_show_caps_num(struct device *dev,
|
|||
static ssize_t omapfb_show_caps_text(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
int i;
|
||||
struct omapfb_caps caps;
|
||||
int plane;
|
||||
|
|
@ -1321,7 +1321,7 @@ static DEVICE_ATTR(caps_text, 0444, omapfb_show_caps_text, NULL);
|
|||
static ssize_t omapfb_show_panel_name(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s\n", fbdev->panel->name);
|
||||
}
|
||||
|
|
@ -1330,7 +1330,7 @@ static ssize_t omapfb_show_bklight_level(struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
int r;
|
||||
|
||||
if (fbdev->panel->get_bklight_level) {
|
||||
|
|
@ -1345,7 +1345,7 @@ static ssize_t omapfb_store_bklight_level(struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
const char *buf, size_t size)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
int r;
|
||||
|
||||
if (fbdev->panel->set_bklight_level) {
|
||||
|
|
@ -1364,7 +1364,7 @@ static ssize_t omapfb_store_bklight_level(struct device *dev,
|
|||
static ssize_t omapfb_show_bklight_max(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
int r;
|
||||
|
||||
if (fbdev->panel->get_bklight_level) {
|
||||
|
|
@ -1397,7 +1397,7 @@ static struct attribute_group panel_attr_grp = {
|
|||
static ssize_t omapfb_show_ctrl_name(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
|
||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s\n", fbdev->ctrl->name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,23 +211,21 @@ static int s3c_fb_check_var(struct fb_var_screeninfo *var,
|
|||
|
||||
/**
|
||||
* s3c_fb_calc_pixclk() - calculate the divider to create the pixel clock.
|
||||
* @id: window id.
|
||||
* @sfb: The hardware state.
|
||||
* @pixclock: The pixel clock wanted, in picoseconds.
|
||||
*
|
||||
* Given the specified pixel clock, work out the necessary divider to get
|
||||
* close to the output frequency.
|
||||
*/
|
||||
static int s3c_fb_calc_pixclk(struct s3c_fb *sfb, unsigned int pixclk)
|
||||
static int s3c_fb_calc_pixclk(unsigned char id, struct s3c_fb *sfb, unsigned int pixclk)
|
||||
{
|
||||
struct s3c_fb_pd_win *win = sfb->pdata->win[id];
|
||||
unsigned long clk = clk_get_rate(sfb->bus_clk);
|
||||
unsigned long long tmp;
|
||||
unsigned int result;
|
||||
|
||||
tmp = (unsigned long long)clk;
|
||||
tmp *= pixclk;
|
||||
|
||||
do_div(tmp, 1000000000UL);
|
||||
result = (unsigned int)tmp / 1000;
|
||||
pixclk *= win->win_mode.refresh;
|
||||
result = clk / pixclk;
|
||||
|
||||
dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n",
|
||||
pixclk, clk, result, clk / result);
|
||||
|
|
@ -267,6 +265,7 @@ static int s3c_fb_set_par(struct fb_info *info)
|
|||
struct s3c_fb *sfb = win->parent;
|
||||
void __iomem *regs = sfb->regs;
|
||||
int win_no = win->index;
|
||||
u32 osdc_data = 0;
|
||||
u32 data;
|
||||
u32 pagewidth;
|
||||
int clkdiv;
|
||||
|
|
@ -302,7 +301,7 @@ static int s3c_fb_set_par(struct fb_info *info)
|
|||
/* use window 0 as the basis for the lcd output timings */
|
||||
|
||||
if (win_no == 0) {
|
||||
clkdiv = s3c_fb_calc_pixclk(sfb, var->pixclock);
|
||||
clkdiv = s3c_fb_calc_pixclk(win_no, sfb, var->pixclock);
|
||||
|
||||
data = sfb->pdata->vidcon0;
|
||||
data &= ~(VIDCON0_CLKVAL_F_MASK | VIDCON0_CLKDIR);
|
||||
|
|
@ -359,8 +358,6 @@ static int s3c_fb_set_par(struct fb_info *info)
|
|||
|
||||
data = var->xres * var->yres;
|
||||
|
||||
u32 osdc_data = 0;
|
||||
|
||||
osdc_data = VIDISD14C_ALPHA1_R(0xf) |
|
||||
VIDISD14C_ALPHA1_G(0xf) |
|
||||
VIDISD14C_ALPHA1_B(0xf);
|
||||
|
|
@ -967,7 +964,7 @@ static int __devexit s3c_fb_remove(struct platform_device *pdev)
|
|||
struct s3c_fb *sfb = platform_get_drvdata(pdev);
|
||||
int win;
|
||||
|
||||
for (win = 0; win <= S3C_FB_MAX_WIN; win++)
|
||||
for (win = 0; win < S3C_FB_MAX_WIN; win++)
|
||||
if (sfb->windows[win])
|
||||
s3c_fb_release_win(sfb, sfb->windows[win]);
|
||||
|
||||
|
|
@ -991,7 +988,7 @@ static int s3c_fb_suspend(struct platform_device *pdev, pm_message_t state)
|
|||
struct s3c_fb_win *win;
|
||||
int win_no;
|
||||
|
||||
for (win_no = S3C_FB_MAX_WIN; win_no >= 0; win_no--) {
|
||||
for (win_no = S3C_FB_MAX_WIN - 1; win_no >= 0; win_no--) {
|
||||
win = sfb->windows[win_no];
|
||||
if (!win)
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ struct sh_mobile_lcdc_chan {
|
|||
unsigned long enabled; /* ME and SE in LDCNT2R */
|
||||
struct sh_mobile_lcdc_chan_cfg cfg;
|
||||
u32 pseudo_palette[PALETTE_NR];
|
||||
struct fb_info info;
|
||||
struct fb_info *info;
|
||||
dma_addr_t dma_handle;
|
||||
struct fb_deferred_io defio;
|
||||
struct scatterlist *sglist;
|
||||
|
|
@ -442,22 +442,22 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv)
|
|||
/* set bpp format in PKF[4:0] */
|
||||
tmp = lcdc_read_chan(ch, LDDFR);
|
||||
tmp &= ~(0x0001001f);
|
||||
tmp |= (priv->ch[k].info.var.bits_per_pixel == 16) ? 3 : 0;
|
||||
tmp |= (ch->info->var.bits_per_pixel == 16) ? 3 : 0;
|
||||
lcdc_write_chan(ch, LDDFR, tmp);
|
||||
|
||||
/* point out our frame buffer */
|
||||
lcdc_write_chan(ch, LDSA1R, ch->info.fix.smem_start);
|
||||
lcdc_write_chan(ch, LDSA1R, ch->info->fix.smem_start);
|
||||
|
||||
/* set line size */
|
||||
lcdc_write_chan(ch, LDMLSR, ch->info.fix.line_length);
|
||||
lcdc_write_chan(ch, LDMLSR, ch->info->fix.line_length);
|
||||
|
||||
/* setup deferred io if SYS bus */
|
||||
tmp = ch->cfg.sys_bus_cfg.deferred_io_msec;
|
||||
if (ch->ldmt1r_value & (1 << 12) && tmp) {
|
||||
ch->defio.deferred_io = sh_mobile_lcdc_deferred_io;
|
||||
ch->defio.delay = msecs_to_jiffies(tmp);
|
||||
ch->info.fbdefio = &ch->defio;
|
||||
fb_deferred_io_init(&ch->info);
|
||||
ch->info->fbdefio = &ch->defio;
|
||||
fb_deferred_io_init(ch->info);
|
||||
|
||||
/* one-shot mode */
|
||||
lcdc_write_chan(ch, LDSM1R, 1);
|
||||
|
|
@ -503,12 +503,12 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv)
|
|||
* flush frame, and wait for frame end interrupt
|
||||
* clean up deferred io and enable clock
|
||||
*/
|
||||
if (ch->info.fbdefio) {
|
||||
if (ch->info->fbdefio) {
|
||||
ch->frame_end = 0;
|
||||
schedule_delayed_work(&ch->info.deferred_work, 0);
|
||||
schedule_delayed_work(&ch->info->deferred_work, 0);
|
||||
wait_event(ch->frame_end_wait, ch->frame_end);
|
||||
fb_deferred_io_cleanup(&ch->info);
|
||||
ch->info.fbdefio = NULL;
|
||||
fb_deferred_io_cleanup(ch->info);
|
||||
ch->info->fbdefio = NULL;
|
||||
sh_mobile_lcdc_clk_on(priv);
|
||||
}
|
||||
|
||||
|
|
@ -817,9 +817,16 @@ static int __init sh_mobile_lcdc_probe(struct platform_device *pdev)
|
|||
priv->base = ioremap_nocache(res->start, (res->end - res->start) + 1);
|
||||
|
||||
for (i = 0; i < j; i++) {
|
||||
info = &priv->ch[i].info;
|
||||
cfg = &priv->ch[i].cfg;
|
||||
|
||||
priv->ch[i].info = framebuffer_alloc(0, &pdev->dev);
|
||||
if (!priv->ch[i].info) {
|
||||
dev_err(&pdev->dev, "unable to allocate fb_info\n");
|
||||
error = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
info = priv->ch[i].info;
|
||||
info->fbops = &sh_mobile_lcdc_ops;
|
||||
info->var.xres = info->var.xres_virtual = cfg->lcd_cfg.xres;
|
||||
info->var.yres = info->var.yres_virtual = cfg->lcd_cfg.yres;
|
||||
|
|
@ -872,7 +879,7 @@ static int __init sh_mobile_lcdc_probe(struct platform_device *pdev)
|
|||
for (i = 0; i < j; i++) {
|
||||
struct sh_mobile_lcdc_chan *ch = priv->ch + i;
|
||||
|
||||
info = &ch->info;
|
||||
info = ch->info;
|
||||
|
||||
if (info->fbdefio) {
|
||||
priv->ch->sglist = vmalloc(sizeof(struct scatterlist) *
|
||||
|
|
@ -915,15 +922,15 @@ static int sh_mobile_lcdc_remove(struct platform_device *pdev)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(priv->ch); i++)
|
||||
if (priv->ch[i].info.dev)
|
||||
unregister_framebuffer(&priv->ch[i].info);
|
||||
if (priv->ch[i].info->dev)
|
||||
unregister_framebuffer(priv->ch[i].info);
|
||||
|
||||
sh_mobile_lcdc_stop(priv);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(priv->ch); i++) {
|
||||
info = &priv->ch[i].info;
|
||||
info = priv->ch[i].info;
|
||||
|
||||
if (!info->device)
|
||||
if (!info || !info->device)
|
||||
continue;
|
||||
|
||||
if (priv->ch[i].sglist)
|
||||
|
|
@ -932,6 +939,7 @@ static int sh_mobile_lcdc_remove(struct platform_device *pdev)
|
|||
dma_free_coherent(&pdev->dev, info->fix.smem_len,
|
||||
info->screen_base, priv->ch[i].dma_handle);
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
framebuffer_release(info);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_CLK
|
||||
|
|
|
|||
|
|
@ -6367,7 +6367,6 @@ error_3: vfree(ivideo->bios_abase);
|
|||
sis_fb_info->fix = ivideo->sisfb_fix;
|
||||
sis_fb_info->screen_base = ivideo->video_vbase + ivideo->video_offset;
|
||||
sis_fb_info->fbops = &sisfb_ops;
|
||||
sisfb_get_fix(&sis_fb_info->fix, -1, sis_fb_info);
|
||||
sis_fb_info->pseudo_palette = ivideo->pseudo_palette;
|
||||
|
||||
fb_alloc_cmap(&sis_fb_info->cmap, 256 , 0);
|
||||
|
|
|
|||
|
|
@ -1540,9 +1540,6 @@ static int sm501fb_init_fb(struct fb_info *fb,
|
|||
if (ret)
|
||||
dev_err(info->dev, "check_var() failed on initial setup?\n");
|
||||
|
||||
/* ensure we've activated our new configuration */
|
||||
(fb->fbops->fb_set_par)(fb);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1115,10 +1115,9 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
if the device name contains the string "DX" and tell the
|
||||
user how to reconfigure the card. */
|
||||
if (strstr(sti->outptr.dev_name, "DX")) {
|
||||
printk(KERN_WARNING "WARNING: stifb framebuffer driver does not "
|
||||
"support '%s' in double-buffer mode.\n"
|
||||
KERN_WARNING "WARNING: Please disable the double-buffer mode "
|
||||
"in IPL menu (the PARISC-BIOS).\n",
|
||||
printk(KERN_WARNING
|
||||
"WARNING: stifb framebuffer driver does not support '%s' in double-buffer mode.\n"
|
||||
"WARNING: Please disable the double-buffer mode in IPL menu (the PARISC-BIOS).\n",
|
||||
sti->outptr.dev_name);
|
||||
goto out_err0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2407,14 +2407,14 @@ int viafb_setmode(int vmode_index, int hor_res, int ver_res, int video_bpp,
|
|||
viafb_dvi_set_mode(viafb_get_mode_index
|
||||
(viaparinfo->tmds_setting_info->h_active,
|
||||
viaparinfo->tmds_setting_info->
|
||||
v_active, 1),
|
||||
v_active),
|
||||
video_bpp1, viaparinfo->
|
||||
tmds_setting_info->iga_path);
|
||||
} else {
|
||||
viafb_dvi_set_mode(viafb_get_mode_index
|
||||
(viaparinfo->tmds_setting_info->h_active,
|
||||
viaparinfo->
|
||||
tmds_setting_info->v_active, 0),
|
||||
tmds_setting_info->v_active),
|
||||
video_bpp, viaparinfo->
|
||||
tmds_setting_info->iga_path);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -580,10 +580,7 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres,
|
|||
int reg_num = 0;
|
||||
struct io_reg *lcd_patch_reg = NULL;
|
||||
|
||||
if (viaparinfo->lvds_setting_info->iga_path == IGA2)
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 1);
|
||||
else
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 0);
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres);
|
||||
switch (panel_id) {
|
||||
/* LCD 800x600 */
|
||||
case LCD_PANEL_ID1_800X600:
|
||||
|
|
@ -761,10 +758,7 @@ static void load_lcd_p880_patch_tbl(int set_hres, int set_vres,
|
|||
int reg_num = 0;
|
||||
struct io_reg *lcd_patch_reg = NULL;
|
||||
|
||||
if (viaparinfo->lvds_setting_info->iga_path == IGA2)
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 1);
|
||||
else
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 0);
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres);
|
||||
|
||||
switch (panel_id) {
|
||||
case LCD_PANEL_ID5_1400X1050:
|
||||
|
|
@ -832,10 +826,7 @@ static void load_lcd_patch_regs(int set_hres, int set_vres,
|
|||
{
|
||||
int vmode_index;
|
||||
|
||||
if (viaparinfo->lvds_setting_info->iga_path == IGA2)
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 1);
|
||||
else
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres, 0);
|
||||
vmode_index = viafb_get_mode_index(set_hres, set_vres);
|
||||
|
||||
viafb_unlock_crt();
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ static u32 pseudo_pal[17];
|
|||
/* video mode */
|
||||
static char *viafb_mode = "640x480";
|
||||
static char *viafb_mode1 = "640x480";
|
||||
static int viafb_resMode = VIA_RES_640X480;
|
||||
|
||||
/* Added for specifying active devices.*/
|
||||
char *viafb_active_dev = "";
|
||||
|
|
@ -56,47 +55,47 @@ static void viafb_get_video_device(u32 *video_dev_info);
|
|||
|
||||
/* Mode information */
|
||||
static const struct viafb_modeinfo viafb_modentry[] = {
|
||||
{480, 640, VIA_RES_480X640, "480x640"},
|
||||
{640, 480, VIA_RES_640X480, "640x480"},
|
||||
{800, 480, VIA_RES_800X480, "800x480"},
|
||||
{800, 600, VIA_RES_800X600, "800x600"},
|
||||
{1024, 768, VIA_RES_1024X768, "1024x768"},
|
||||
{1152, 864, VIA_RES_1152X864, "1152x864"},
|
||||
{1280, 1024, VIA_RES_1280X1024, "1280x1024"},
|
||||
{1600, 1200, VIA_RES_1600X1200, "1600x1200"},
|
||||
{1440, 1050, VIA_RES_1440X1050, "1440x1050"},
|
||||
{1280, 768, VIA_RES_1280X768, "1280x768"},
|
||||
{1280, 800, VIA_RES_1280X800, "1280x800"},
|
||||
{1280, 960, VIA_RES_1280X960, "1280x960"},
|
||||
{1920, 1440, VIA_RES_1920X1440, "1920x1440"},
|
||||
{848, 480, VIA_RES_848X480, "848x480"},
|
||||
{1400, 1050, VIA_RES_1400X1050, "1400x1050"},
|
||||
{720, 480, VIA_RES_720X480, "720x480"},
|
||||
{720, 576, VIA_RES_720X576, "720x576"},
|
||||
{1024, 512, VIA_RES_1024X512, "1024x512"},
|
||||
{1024, 576, VIA_RES_1024X576, "1024x576"},
|
||||
{1024, 600, VIA_RES_1024X600, "1024x600"},
|
||||
{1280, 720, VIA_RES_1280X720, "1280x720"},
|
||||
{1920, 1080, VIA_RES_1920X1080, "1920x1080"},
|
||||
{1366, 768, VIA_RES_1368X768, "1368x768"},
|
||||
{1680, 1050, VIA_RES_1680X1050, "1680x1050"},
|
||||
{960, 600, VIA_RES_960X600, "960x600"},
|
||||
{1000, 600, VIA_RES_1000X600, "1000x600"},
|
||||
{1024, 576, VIA_RES_1024X576, "1024x576"},
|
||||
{1024, 600, VIA_RES_1024X600, "1024x600"},
|
||||
{1088, 612, VIA_RES_1088X612, "1088x612"},
|
||||
{1152, 720, VIA_RES_1152X720, "1152x720"},
|
||||
{1200, 720, VIA_RES_1200X720, "1200x720"},
|
||||
{1280, 600, VIA_RES_1280X600, "1280x600"},
|
||||
{1360, 768, VIA_RES_1360X768, "1360x768"},
|
||||
{1440, 900, VIA_RES_1440X900, "1440x900"},
|
||||
{1600, 900, VIA_RES_1600X900, "1600x900"},
|
||||
{1600, 1024, VIA_RES_1600X1024, "1600x1024"},
|
||||
{1792, 1344, VIA_RES_1792X1344, "1792x1344"},
|
||||
{1856, 1392, VIA_RES_1856X1392, "1856x1392"},
|
||||
{1920, 1200, VIA_RES_1920X1200, "1920x1200"},
|
||||
{2048, 1536, VIA_RES_2048X1536, "2048x1536"},
|
||||
{0, 0, VIA_RES_INVALID, "640x480"}
|
||||
{480, 640, VIA_RES_480X640},
|
||||
{640, 480, VIA_RES_640X480},
|
||||
{800, 480, VIA_RES_800X480},
|
||||
{800, 600, VIA_RES_800X600},
|
||||
{1024, 768, VIA_RES_1024X768},
|
||||
{1152, 864, VIA_RES_1152X864},
|
||||
{1280, 1024, VIA_RES_1280X1024},
|
||||
{1600, 1200, VIA_RES_1600X1200},
|
||||
{1440, 1050, VIA_RES_1440X1050},
|
||||
{1280, 768, VIA_RES_1280X768,},
|
||||
{1280, 800, VIA_RES_1280X800},
|
||||
{1280, 960, VIA_RES_1280X960},
|
||||
{1920, 1440, VIA_RES_1920X1440},
|
||||
{848, 480, VIA_RES_848X480},
|
||||
{1400, 1050, VIA_RES_1400X1050},
|
||||
{720, 480, VIA_RES_720X480},
|
||||
{720, 576, VIA_RES_720X576},
|
||||
{1024, 512, VIA_RES_1024X512},
|
||||
{1024, 576, VIA_RES_1024X576},
|
||||
{1024, 600, VIA_RES_1024X600},
|
||||
{1280, 720, VIA_RES_1280X720},
|
||||
{1920, 1080, VIA_RES_1920X1080},
|
||||
{1366, 768, VIA_RES_1368X768},
|
||||
{1680, 1050, VIA_RES_1680X1050},
|
||||
{960, 600, VIA_RES_960X600},
|
||||
{1000, 600, VIA_RES_1000X600},
|
||||
{1024, 576, VIA_RES_1024X576},
|
||||
{1024, 600, VIA_RES_1024X600},
|
||||
{1088, 612, VIA_RES_1088X612},
|
||||
{1152, 720, VIA_RES_1152X720},
|
||||
{1200, 720, VIA_RES_1200X720},
|
||||
{1280, 600, VIA_RES_1280X600},
|
||||
{1360, 768, VIA_RES_1360X768},
|
||||
{1440, 900, VIA_RES_1440X900},
|
||||
{1600, 900, VIA_RES_1600X900},
|
||||
{1600, 1024, VIA_RES_1600X1024},
|
||||
{1792, 1344, VIA_RES_1792X1344},
|
||||
{1856, 1392, VIA_RES_1856X1392},
|
||||
{1920, 1200, VIA_RES_1920X1200},
|
||||
{2048, 1536, VIA_RES_2048X1536},
|
||||
{0, 0, VIA_RES_INVALID}
|
||||
};
|
||||
|
||||
static struct fb_ops viafb_ops;
|
||||
|
|
@ -177,7 +176,7 @@ static int viafb_check_var(struct fb_var_screeninfo *var,
|
|||
if (var->vmode & FB_VMODE_INTERLACED || var->vmode & FB_VMODE_DOUBLE)
|
||||
return -EINVAL;
|
||||
|
||||
vmode_index = viafb_get_mode_index(var->xres, var->yres, 0);
|
||||
vmode_index = viafb_get_mode_index(var->xres, var->yres);
|
||||
if (vmode_index == VIA_RES_INVALID) {
|
||||
DEBUG_MSG(KERN_INFO
|
||||
"viafb: Mode %dx%dx%d not supported!!\n",
|
||||
|
|
@ -233,14 +232,14 @@ static int viafb_set_par(struct fb_info *info)
|
|||
viafb_update_device_setting(info->var.xres, info->var.yres,
|
||||
info->var.bits_per_pixel, viafb_refresh, 0);
|
||||
|
||||
vmode_index = viafb_get_mode_index(info->var.xres, info->var.yres, 0);
|
||||
vmode_index = viafb_get_mode_index(info->var.xres, info->var.yres);
|
||||
|
||||
if (viafb_SAMM_ON == 1) {
|
||||
DEBUG_MSG(KERN_INFO
|
||||
"viafb_second_xres = %d, viafb_second_yres = %d, bpp = %d\n",
|
||||
viafb_second_xres, viafb_second_yres, viafb_bpp1);
|
||||
vmode_index1 = viafb_get_mode_index(viafb_second_xres,
|
||||
viafb_second_yres, 1);
|
||||
viafb_second_yres);
|
||||
DEBUG_MSG(KERN_INFO "->viafb_SAMM_ON: index=%d\n",
|
||||
vmode_index1);
|
||||
|
||||
|
|
@ -1262,7 +1261,7 @@ static int viafb_sync(struct fb_info *info)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int viafb_get_mode_index(int hres, int vres, int flag)
|
||||
int viafb_get_mode_index(int hres, int vres)
|
||||
{
|
||||
u32 i;
|
||||
DEBUG_MSG(KERN_INFO "viafb_get_mode_index!\n");
|
||||
|
|
@ -1272,13 +1271,7 @@ int viafb_get_mode_index(int hres, int vres, int flag)
|
|||
viafb_modentry[i].yres == vres)
|
||||
break;
|
||||
|
||||
viafb_resMode = viafb_modentry[i].mode_index;
|
||||
if (flag)
|
||||
viafb_mode1 = viafb_modentry[i].mode_res;
|
||||
else
|
||||
viafb_mode = viafb_modentry[i].mode_res;
|
||||
|
||||
return viafb_resMode;
|
||||
return viafb_modentry[i].mode_index;
|
||||
}
|
||||
|
||||
static void check_available_device_to_enable(int device_id)
|
||||
|
|
@ -2199,7 +2192,7 @@ static int __devinit via_pci_probe(void)
|
|||
strict_strtoul(tmpc, 0, &default_xres);
|
||||
strict_strtoul(tmpm, 0, &default_yres);
|
||||
|
||||
vmode_index = viafb_get_mode_index(default_xres, default_yres, 0);
|
||||
vmode_index = viafb_get_mode_index(default_xres, default_yres);
|
||||
DEBUG_MSG(KERN_INFO "0->index=%d\n", vmode_index);
|
||||
|
||||
if (viafb_SAMM_ON == 1) {
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ struct viafb_modeinfo {
|
|||
u32 xres;
|
||||
u32 yres;
|
||||
int mode_index;
|
||||
char *mode_res;
|
||||
};
|
||||
extern unsigned int viafb_second_virtual_yres;
|
||||
extern unsigned int viafb_second_virtual_xres;
|
||||
|
|
@ -102,7 +101,7 @@ extern int strict_strtoul(const char *cp, unsigned int base,
|
|||
void viafb_memory_pitch_patch(struct fb_info *info);
|
||||
void viafb_fill_var_timing_info(struct fb_var_screeninfo *var, int refresh,
|
||||
int mode_index);
|
||||
int viafb_get_mode_index(int hres, int vres, int flag);
|
||||
int viafb_get_mode_index(int hres, int vres);
|
||||
u8 viafb_gpio_i2c_read_lvds(struct lvds_setting_information
|
||||
*plvds_setting_info, struct lvds_chip_information
|
||||
*plvds_chip_info, u8 index);
|
||||
|
|
|
|||
|
|
@ -748,8 +748,6 @@ int __init w100fb_probe(struct platform_device *pdev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
w100fb_set_par(info);
|
||||
|
||||
if (register_framebuffer(info) < 0) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Reference in a new issue