You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
(1) |
Apr
(104) |
May
(81) |
Jun
(248) |
Jul
(133) |
Aug
(33) |
Sep
(53) |
Oct
(82) |
Nov
(166) |
Dec
(71) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(121) |
Feb
(42) |
Mar
(39) |
Apr
(84) |
May
(87) |
Jun
(58) |
Jul
(97) |
Aug
(130) |
Sep
(32) |
Oct
(139) |
Nov
(108) |
Dec
(216) |
2003 |
Jan
(299) |
Feb
(136) |
Mar
(392) |
Apr
(141) |
May
(137) |
Jun
(107) |
Jul
(94) |
Aug
(262) |
Sep
(300) |
Oct
(216) |
Nov
(72) |
Dec
(94) |
2004 |
Jan
(174) |
Feb
(192) |
Mar
(215) |
Apr
(314) |
May
(319) |
Jun
(293) |
Jul
(205) |
Aug
(161) |
Sep
(192) |
Oct
(226) |
Nov
(308) |
Dec
(89) |
2005 |
Jan
(127) |
Feb
(269) |
Mar
(588) |
Apr
(106) |
May
(77) |
Jun
(77) |
Jul
(161) |
Aug
(239) |
Sep
(86) |
Oct
(112) |
Nov
(153) |
Dec
(145) |
2006 |
Jan
(87) |
Feb
(57) |
Mar
(129) |
Apr
(109) |
May
(102) |
Jun
(232) |
Jul
(97) |
Aug
(69) |
Sep
(67) |
Oct
(69) |
Nov
(214) |
Dec
(82) |
2007 |
Jan
(133) |
Feb
(307) |
Mar
(121) |
Apr
(171) |
May
(229) |
Jun
(156) |
Jul
(185) |
Aug
(160) |
Sep
(122) |
Oct
(130) |
Nov
(78) |
Dec
(27) |
2008 |
Jan
(105) |
Feb
(137) |
Mar
(146) |
Apr
(148) |
May
(239) |
Jun
(208) |
Jul
(157) |
Aug
(244) |
Sep
(119) |
Oct
(125) |
Nov
(189) |
Dec
(225) |
2009 |
Jan
(157) |
Feb
(139) |
Mar
(106) |
Apr
(130) |
May
(246) |
Jun
(189) |
Jul
(128) |
Aug
(127) |
Sep
(88) |
Oct
(86) |
Nov
(216) |
Dec
(9) |
2010 |
Jan
(5) |
Feb
|
Mar
(11) |
Apr
(31) |
May
(3) |
Jun
|
Jul
(7) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Chaithrika U S <cha...@ti...> - 2009-11-27 06:59:53
|
Suspend/resume support DA8xx/OMAP-L1xx frame buffer driver. This feature has been tested on DA850/OMAP-L138 EVM. For the purpose of testing, the patch series[1] which adds suspend support for DA850/OMAP-L138 SoC was applied. [1] http://patchwork.kernel.org/patch/60260/ Signed-off-by: Chaithrika U S <cha...@ti...> --- drivers/video/da8xx-fb.c | 29 +++++++++++++++++++++++++++-- 1 files changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c index b3c22e1..fcaa344 100644 --- a/drivers/video/da8xx-fb.c +++ b/drivers/video/da8xx-fb.c @@ -29,6 +29,7 @@ #include <linux/interrupt.h> #include <linux/clk.h> #include <linux/cpufreq.h> +#include <linux/console.h> #include <video/da8xx-fb.h> #define DRIVER_NAME "da8xx_lcdc" @@ -930,11 +931,35 @@ err_request_mem: #ifdef CONFIG_PM static int fb_suspend(struct platform_device *dev, pm_message_t state) { - return -EBUSY; + struct fb_info *info = platform_get_drvdata(dev); + struct da8xx_fb_par *par = info->par; + + acquire_console_sem(); + if (par->panel_power_ctrl) + par->panel_power_ctrl(0); + + fb_set_suspend(info, 1); + lcd_disable_raster(); + clk_disable(par->lcdc_clk); + release_console_sem(); + + return 0; } static int fb_resume(struct platform_device *dev) { - return -EBUSY; + struct fb_info *info = platform_get_drvdata(dev); + struct da8xx_fb_par *par = info->par; + + acquire_console_sem(); + if (par->panel_power_ctrl) + par->panel_power_ctrl(1); + + clk_enable(par->lcdc_clk); + lcd_enable_raster(); + fb_set_suspend(info, 0); + release_console_sem(); + + return 0; } #else #define fb_suspend NULL -- 1.5.6 |
From: Florian T. S. <Flo...@gm...> - 2009-11-25 17:46:56
|
Hi, nice catch. Your patch is obviously correct. Please send it to Andrew Morton <ak...@li...> to get it into mainline. Dan Carpenter schrieb: > Fixed a typo: missing *. This would lead to a kernel oops if the kernel > was compiled without support for the /proc file system. > > Found with a static checker. Compile tested. > > regards, > dan carpenter > > Signed-off-by: Dan Carpenter <er...@gm...> Acked-by: Florian Tobias Schandinat <Flo...@gm...> > > --- orig/drivers/video/via/viafbdev.c 2009-11-21 14:44:33.000000000 +0200 > +++ devel/drivers/video/via/viafbdev.c 2009-11-21 14:44:43.000000000 +0200 > @@ -1797,7 +1797,7 @@ static const struct file_operations viaf > static void viafb_init_proc(struct proc_dir_entry **viafb_entry) > { > *viafb_entry = proc_mkdir("viafb", NULL); > - if (viafb_entry) { > + if (*viafb_entry) { Thanks, Florian Tobias Schandinat |
From: Uwe Kleine-K. <u.k...@pe...> - 2009-11-24 21:08:49
|
The function mipid_spi_remove is used only wrapped by __devexit_p so define it using __devexit. Signed-off-by: Uwe Kleine-König <u.k...@pe...> Cc: Arnaud Patard <arn...@rt...> Cc: Andrew Morton <ak...@li...> Cc: Mike Wege <ext...@no...> Cc: Imre Deak <imr...@so...> Cc: Hiroshi DOYU <Hir...@no...> Cc: lin...@vg... Cc: Imre Deak <imr...@no...> Cc: lin...@li... Cc: lin...@vg... --- drivers/video/omap/lcd_mipid.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/video/omap/lcd_mipid.c b/drivers/video/omap/lcd_mipid.c index 918ee89..24889ca 100644 --- a/drivers/video/omap/lcd_mipid.c +++ b/drivers/video/omap/lcd_mipid.c @@ -587,7 +587,7 @@ static int mipid_spi_probe(struct spi_device *spi) return 0; } -static int mipid_spi_remove(struct spi_device *spi) +static int __devexit mipid_spi_remove(struct spi_device *spi) { struct mipid_device *md = dev_get_drvdata(&spi->dev); -- 1.6.5.2 |
From: Andrew M. <ak...@li...> - 2009-11-23 20:41:24
|
On Mon, 23 Nov 2009 16:01:28 +0000 Ben Dooks <be...@si...> wrote: > From: Vincent Sanders <vi...@si...> > > This patch provides the acceleration entry points for the SM501 > framebuffer driver. > > This patch provides the sync, copyarea and fillrect entry points, > using the SM501's 2D acceleration engine to perform the operations > in-chip rather than across the bus. > > Signed-off-by: Simtec Linux Team <li...@si...> > Signed-off-by: Vincent Sanders <vi...@si...> I merged patches 2, 3 and 4, thanks. This patch was missing your Signed-off-by:. I added it. |
From: Geert U. <ge...@li...> - 2009-11-23 18:39:00
|
On Mon, Nov 23, 2009 at 17:01, Ben Dooks <be...@si...> wrote: > From: Vincent Sanders <vi...@si...> > > The cfbfillrect routine was incorrectly using the palette to lookup true and > direct colours, but using indexed colours directly. This was simply the > inversion of the sense of an 'if' statement. This patch fixes that so that > colours other than black work properly for cfbfillrect. > > Signed-off-by: Vincent Sanders <vi...@si...> > Signed-off-by: Simtec Linux Team <li...@si...> > > --- > drivers/video/cfbfillrect.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > Index: b/drivers/video/cfbfillrect.c > =================================================================== > --- a/drivers/video/cfbfillrect.c 2009-05-10 14:11:19.000000000 +0100 > +++ b/drivers/video/cfbfillrect.c 2009-05-10 14:16:33.000000000 +0100 > @@ -289,9 +289,9 @@ void cfb_fillrect(struct fb_info *p, con > > if (p->fix.visual == FB_VISUAL_TRUECOLOR || > p->fix.visual == FB_VISUAL_DIRECTCOLOR ) > - fg = ((u32 *) (p->pseudo_palette))[rect->color]; > - else > fg = rect->color; > + else > + fg = ((u32 *) (p->pseudo_palette))[rect->color]; This is not correct. The pseudo palette must be used in truecolor and directcolor mode, as rect->color is a console palette index, not a pixel value. Perhaps you forgot to initialize pseudo_palette in your fbdev driver? P.S. Please send patches inline, so it's easier for us to comment on them. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |
From: Ben D. <be...@si...> - 2009-11-23 16:02:21
|
From: Vincent Sanders <vi...@si...> This patch provides the acceleration entry points for the SM501 framebuffer driver. This patch provides the sync, copyarea and fillrect entry points, using the SM501's 2D acceleration engine to perform the operations in-chip rather than across the bus. Signed-off-by: Simtec Linux Team <li...@si...> Signed-off-by: Vincent Sanders <vi...@si...> --- drivers/video/sm501fb.c | 237 ++++++++++++++++++++++++++++++++++++++++++--- include/linux/sm501-regs.h | 2 2 files changed, 226 insertions(+), 13 deletions(-) Index: b/drivers/video/sm501fb.c =================================================================== --- a/drivers/video/sm501fb.c 2009-11-23 10:30:13.000000000 +0000 +++ b/drivers/video/sm501fb.c 2009-11-23 10:30:16.000000000 +0000 @@ -66,6 +66,7 @@ struct sm501fb_info { struct fb_info *fb[2]; /* fb info for both heads */ struct resource *fbmem_res; /* framebuffer resource */ struct resource *regs_res; /* registers resource */ + struct resource *regs2d_res; /* 2d registers resource */ struct sm501_platdata_fb *pdata; /* our platform data */ unsigned long pm_crt_ctrl; /* pm: crt ctrl save */ @@ -73,6 +74,7 @@ struct sm501fb_info { int irq; int swap_endian; /* set to swap rgb=>bgr */ void __iomem *regs; /* remapped registers */ + void __iomem *regs2d; /* 2d remapped registers */ void __iomem *fbmem; /* remapped framebuffer */ size_t fbmem_len; /* length of remapped region */ }; @@ -123,9 +125,9 @@ static inline void sm501fb_sync_regs(str * This is an attempt to lay out memory for the two framebuffers and * everything else * - * |fbmem_res->start fbmem_res->end| - * | | - * |fb[0].fix.smem_start | |fb[1].fix.smem_start | 2K | + * |fbmem_res->start fbmem_res->end| + * | | + * |fb[0].fix.smem_start | |fb[1].fix.smem_start | 2K | * |-> fb[0].fix.smem_len <-| spare |-> fb[1].fix.smem_len <-|-> cursors <-| * * The "spare" space is for the 2d engine data @@ -1246,7 +1248,173 @@ static ssize_t sm501fb_debug_show_pnl(st static DEVICE_ATTR(fbregs_pnl, 0444, sm501fb_debug_show_pnl, NULL); -/* framebuffer ops */ +/* acceleration operations */ +static int sm501fb_sync(struct fb_info *info) +{ + int count = 1000000; + struct sm501fb_par *par = info->par; + struct sm501fb_info *fbi = par->info; + + /* wait for the 2d engine to be ready */ + while ((count > 0) && + (readl(fbi->regs + SM501_SYSTEM_CONTROL) & + SM501_SYSCTRL_2D_ENGINE_STATUS) != 0) + count--; + + if (count <= 0) { + dev_err(info->dev, "Timeout waiting for 2d engine sync\n"); + return 1; + } + return 0; +} + +static void sm501fb_copyarea(struct fb_info *info, const struct fb_copyarea *area) +{ + struct sm501fb_par *par = info->par; + struct sm501fb_info *fbi = par->info; + int width = area->width; + int height = area->height; + int sx = area->sx; + int sy = area->sy; + int dx = area->dx; + int dy = area->dy; + unsigned long rtl = 0; + + /* source clip */ + if ((sx >= info->var.xres_virtual) || + (sy >= info->var.yres_virtual)) + /* source Area not within virtual screen, skipping */ + return; + if ((sx + width) >= info->var.xres_virtual) + width = info->var.xres_virtual - sx - 1; + if ((sy + height) >= info->var.yres_virtual) + height = info->var.yres_virtual - sy - 1; + + /* dest clip */ + if ((dx >= info->var.xres_virtual) || + (dy >= info->var.yres_virtual)) + /* Destination Area not within virtual screen, skipping */ + return; + if ((dx + width) >= info->var.xres_virtual) + width = info->var.xres_virtual - dx - 1; + if ((dy + height) >= info->var.yres_virtual) + height = info->var.yres_virtual - dy - 1; + + if ((sx < dx) || (sy < dy)) { + rtl = 1 << 27; + sx += width - 1; + dx += width - 1; + sy += height - 1; + dy += height - 1; + } + + if (sm501fb_sync(info)) + return; + + /* set the base addresses */ + writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_SOURCE_BASE); + writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_DESTINATION_BASE); + + /* set the window width */ + writel((info->var.xres << 16) | info->var.xres, + fbi->regs2d + SM501_2D_WINDOW_WIDTH); + + /* set window stride */ + writel((info->var.xres_virtual << 16) | info->var.xres_virtual, + fbi->regs2d + SM501_2D_PITCH); + + /* set data format */ + switch (info->var.bits_per_pixel) { + case 8: + writel(0, fbi->regs2d + SM501_2D_STRETCH); + break; + case 16: + writel(0x00100000, fbi->regs2d + SM501_2D_STRETCH); + break; + case 32: + writel(0x00200000, fbi->regs2d + SM501_2D_STRETCH); + break; + } + + /* 2d compare mask */ + writel(0xffffffff, fbi->regs2d + SM501_2D_COLOR_COMPARE_MASK); + + /* 2d mask */ + writel(0xffffffff, fbi->regs2d + SM501_2D_MASK); + + /* source and destination x y */ + writel((sx << 16) | sy, fbi->regs2d + SM501_2D_SOURCE); + writel((dx << 16) | dy, fbi->regs2d + SM501_2D_DESTINATION); + + /* w/h */ + writel((width << 16) | height, fbi->regs2d + SM501_2D_DIMENSION); + + /* do area move */ + writel(0x800000cc | rtl, fbi->regs2d + SM501_2D_CONTROL); +} + +static void sm501fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) +{ + struct sm501fb_par *par = info->par; + struct sm501fb_info *fbi = par->info; + int width = rect->width, height = rect->height; + + if ((rect->dx >= info->var.xres_virtual) || + (rect->dy >= info->var.yres_virtual)) + /* Rectangle not within virtual screen, skipping */ + return; + if ((rect->dx + width) >= info->var.xres_virtual) + width = info->var.xres_virtual - rect->dx - 1; + if ((rect->dy + height) >= info->var.yres_virtual) + height = info->var.yres_virtual - rect->dy - 1; + + if (sm501fb_sync(info)) + return; + + /* set the base addresses */ + writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_SOURCE_BASE); + writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_DESTINATION_BASE); + + /* set the window width */ + writel((info->var.xres << 16) | info->var.xres, + fbi->regs2d + SM501_2D_WINDOW_WIDTH); + + /* set window stride */ + writel((info->var.xres_virtual << 16) | info->var.xres_virtual, + fbi->regs2d + SM501_2D_PITCH); + + /* set data format */ + switch (info->var.bits_per_pixel) { + case 8: + writel(0, fbi->regs2d + SM501_2D_STRETCH); + break; + case 16: + writel(0x00100000, fbi->regs2d + SM501_2D_STRETCH); + break; + case 32: + writel(0x00200000, fbi->regs2d + SM501_2D_STRETCH); + break; + } + + /* 2d compare mask */ + writel(0xffffffff, fbi->regs2d + SM501_2D_COLOR_COMPARE_MASK); + + /* 2d mask */ + writel(0xffffffff, fbi->regs2d + SM501_2D_MASK); + + /* colour */ + writel(rect->color, fbi->regs2d + SM501_2D_FOREGROUND); + + /* x y */ + writel((rect->dx << 16) | rect->dy, fbi->regs2d + SM501_2D_DESTINATION); + + /* w/h */ + writel((width << 16) | height, fbi->regs2d + SM501_2D_DIMENSION); + + /* do rectangle fill */ + writel(0x800100cc, fbi->regs2d + SM501_2D_CONTROL); +} + static struct fb_ops sm501fb_ops_crt = { .owner = THIS_MODULE, @@ -1256,9 +1424,10 @@ static struct fb_ops sm501fb_ops_crt = { .fb_setcolreg = sm501fb_setcolreg, .fb_pan_display = sm501fb_pan_crt, .fb_cursor = sm501fb_cursor, - .fb_fillrect = cfb_fillrect, - .fb_copyarea = cfb_copyarea, + .fb_fillrect = sm501fb_fillrect, + .fb_copyarea = sm501fb_copyarea, .fb_imageblit = cfb_imageblit, + .fb_sync = sm501fb_sync, }; static struct fb_ops sm501fb_ops_pnl = { @@ -1269,9 +1438,10 @@ static struct fb_ops sm501fb_ops_pnl = { .fb_blank = sm501fb_blank_pnl, .fb_setcolreg = sm501fb_setcolreg, .fb_cursor = sm501fb_cursor, - .fb_fillrect = cfb_fillrect, - .fb_copyarea = cfb_copyarea, + .fb_fillrect = sm501fb_fillrect, + .fb_copyarea = sm501fb_copyarea, .fb_imageblit = cfb_imageblit, + .fb_sync = sm501fb_sync, }; /* sm501_init_cursor @@ -1329,7 +1499,8 @@ static int sm501fb_start(struct sm501fb_ dev_warn(dev, "no irq for device\n"); } - /* allocate, reserve and remap resources for registers */ + /* allocate, reserve and remap resources for display + * controller registers */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (res == NULL) { dev_err(dev, "no resource definition for registers\n"); @@ -1354,12 +1525,38 @@ static int sm501fb_start(struct sm501fb_ goto err_regs_res; } + /* allocate, reserve and remap resources for 2d + * controller registers */ + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); + if (res == NULL) { + dev_err(dev, "no resource definition for 2d registers\n"); + ret = -ENOENT; + goto err_regs_map; + } + + info->regs2d_res = request_mem_region(res->start, + resource_size(res), + pdev->name); + + if (info->regs2d_res == NULL) { + dev_err(dev, "cannot claim registers\n"); + ret = -ENXIO; + goto err_regs_map; + } + + info->regs2d = ioremap(res->start, resource_size(res)); + if (info->regs2d == NULL) { + dev_err(dev, "cannot remap registers\n"); + ret = -ENXIO; + goto err_regs2d_res; + } + /* allocate, reserve resources for framebuffer */ res = platform_get_resource(pdev, IORESOURCE_MEM, 2); if (res == NULL) { dev_err(dev, "no memory resource defined\n"); ret = -ENXIO; - goto err_regs_map; + goto err_regs2d_map; } info->fbmem_res = request_mem_region(res->start, @@ -1368,7 +1565,7 @@ static int sm501fb_start(struct sm501fb_ if (info->fbmem_res == NULL) { dev_err(dev, "cannot claim framebuffer\n"); ret = -ENXIO; - goto err_regs_map; + goto err_regs2d_map; } info->fbmem = ioremap(res->start, resource_size(res)); @@ -1389,8 +1586,10 @@ static int sm501fb_start(struct sm501fb_ /* enable display controller */ sm501_unit_power(dev->parent, SM501_GATE_DISPLAY, 1); - /* setup cursors */ + /* enable 2d controller */ + sm501_unit_power(dev->parent, SM501_GATE_2D_ENGINE, 1); + /* setup cursors */ sm501_init_cursor(info->fb[HEAD_CRT], SM501_DC_CRT_HWC_ADDR); sm501_init_cursor(info->fb[HEAD_PANEL], SM501_DC_PANEL_HWC_ADDR); @@ -1400,6 +1599,13 @@ static int sm501fb_start(struct sm501fb_ release_resource(info->fbmem_res); kfree(info->fbmem_res); + err_regs2d_map: + iounmap(info->regs2d); + + err_regs2d_res: + release_resource(info->regs2d_res); + kfree(info->regs2d_res); + err_regs_map: iounmap(info->regs); @@ -1420,6 +1626,10 @@ static void sm501fb_stop(struct sm501fb_ release_resource(info->fbmem_res); kfree(info->fbmem_res); + iounmap(info->regs2d); + release_resource(info->regs2d_res); + kfree(info->regs2d_res); + iounmap(info->regs); release_resource(info->regs_res); kfree(info->regs_res); @@ -1486,7 +1696,8 @@ static int sm501fb_init_fb(struct fb_inf par->ops.fb_cursor = NULL; fb->fbops = &par->ops; - fb->flags = FBINFO_FLAG_DEFAULT | + fb->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST | + FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_XPAN | FBINFO_HWACCEL_YPAN; /* fixed data */ Index: b/include/linux/sm501-regs.h =================================================================== --- a/include/linux/sm501-regs.h 2009-11-23 09:59:24.000000000 +0000 +++ b/include/linux/sm501-regs.h 2009-11-23 10:30:16.000000000 +0000 @@ -31,6 +31,8 @@ #define SM501_SYSCTRL_PCI_SUBSYS_LOCK (1<<11) #define SM501_SYSCTRL_PCI_BURST_READ_EN (1<<15) +#define SM501_SYSCTRL_2D_ENGINE_STATUS (1<<19) + /* miscellaneous control */ #define SM501_MISC_CONTROL (0x000004) |
From: Ben D. <be...@si...> - 2009-11-23 16:02:19
|
There are several places in the SM501 fb driver that could do with using resource_size() to calculate the size of a resource. Also fix a bug where request_mem_region() is being passed one too few bytes when requesting the register memory region, which was causing the following in /proc/iomem: 13e80000-13e8ffff : sm501-fb.0 13e80000-13e8fffe : sm501-fb fixed, this reads: 13e80000-13e8ffff : sm501-fb.0 13e80000-13e8ffff : sm501-fb Signed-off-by: Ben Dooks <be...@si...> Signed-off-by: Simtec Linux Team <li...@si...> --- drivers/video/sm501fb.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) Index: b/drivers/video/sm501fb.c =================================================================== --- a/drivers/video/sm501fb.c 2009-09-09 23:13:59.000000000 +0100 +++ b/drivers/video/sm501fb.c 2009-11-10 19:31:25.000000000 +0000 @@ -1338,7 +1338,7 @@ static int sm501fb_start(struct sm501fb_ } info->regs_res = request_mem_region(res->start, - res->end - res->start, + resource_size(res), pdev->name); if (info->regs_res == NULL) { @@ -1347,7 +1347,7 @@ static int sm501fb_start(struct sm501fb_ goto err_release; } - info->regs = ioremap(res->start, (res->end - res->start)+1); + info->regs = ioremap(res->start, resource_size(res)); if (info->regs == NULL) { dev_err(dev, "cannot remap registers\n"); ret = -ENXIO; @@ -1363,7 +1363,7 @@ static int sm501fb_start(struct sm501fb_ } info->fbmem_res = request_mem_region(res->start, - (res->end - res->start)+1, + resource_size(res), pdev->name); if (info->fbmem_res == NULL) { dev_err(dev, "cannot claim framebuffer\n"); @@ -1371,13 +1371,13 @@ static int sm501fb_start(struct sm501fb_ goto err_regs_map; } - info->fbmem = ioremap(res->start, (res->end - res->start)+1); + info->fbmem = ioremap(res->start, resource_size(res)); if (info->fbmem == NULL) { dev_err(dev, "cannot remap framebuffer\n"); goto err_mem_res; } - info->fbmem_len = (res->end - res->start)+1; + info->fbmem_len = resource_size(res); /* clear framebuffer memory - avoids garbage data on unused fb */ memset(info->fbmem, 0, info->fbmem_len); |
From: Ben D. <be...@si...> - 2009-11-23 16:02:17
|
From: Vincent Sanders <vi...@si...> The cfbfillrect routine was incorrectly using the palette to lookup true and direct colours, but using indexed colours directly. This was simply the inversion of the sense of an 'if' statement. This patch fixes that so that colours other than black work properly for cfbfillrect. Signed-off-by: Vincent Sanders <vi...@si...> Signed-off-by: Simtec Linux Team <li...@si...> --- drivers/video/cfbfillrect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: b/drivers/video/cfbfillrect.c =================================================================== --- a/drivers/video/cfbfillrect.c 2009-05-10 14:11:19.000000000 +0100 +++ b/drivers/video/cfbfillrect.c 2009-05-10 14:16:33.000000000 +0100 @@ -289,9 +289,9 @@ void cfb_fillrect(struct fb_info *p, con if (p->fix.visual == FB_VISUAL_TRUECOLOR || p->fix.visual == FB_VISUAL_DIRECTCOLOR ) - fg = ((u32 *) (p->pseudo_palette))[rect->color]; - else fg = rect->color; + else + fg = ((u32 *) (p->pseudo_palette))[rect->color]; pat = pixel_to_pat(bpp, fg); |
From: Ben D. <be...@si...> - 2009-11-23 16:02:17
|
Fix the old style use of <asm/io.h> by replacing it with <linux/io.h>. Signed-off-by: Ben Dooks <be...@si...> Signed-off-by: Simtec Linux Team <li...@si...> --- drivers/video/sm501fb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: b/drivers/video/sm501fb.c =================================================================== --- a/drivers/video/sm501fb.c 2009-11-10 19:33:55.000000000 +0000 +++ b/drivers/video/sm501fb.c 2009-11-10 19:34:04.000000000 +0000 @@ -29,8 +29,8 @@ #include <linux/platform_device.h> #include <linux/clk.h> #include <linux/console.h> +#include <linux/io.h> -#include <asm/io.h> #include <asm/uaccess.h> #include <asm/div64.h> |
From: Jun N. <nie...@gm...> - 2009-11-23 05:55:37
|
2009/11/19 Russell King - ARM Linux <li...@ar...>: > On Thu, Nov 19, 2009 at 05:04:14PM +0800, Jun Nie wrote: >> > diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c >> > index dbd8cfd..15e64b4 100644 >> > --- a/arch/arm/mach-mmp/ttc_dkb.c >> > +++ b/arch/arm/mach-mmp/ttc_dkb.c >> > @@ -14,6 +14,8 @@ >> > #include <linux/mtd/mtd.h> >> > #include <linux/mtd/partitions.h> >> > #include <linux/mtd/onenand.h> >> > +#include <linux/delay.h> >> > +#include <video/pxa168fb.h> >> > >> > #include <asm/mach-types.h> >> > #include <asm/mach/arch.h> >> > @@ -21,6 +23,7 @@ >> > #include <mach/addr-map.h> >> > #include <mach/mfp-pxa910.h> >> > #include <mach/pxa910.h> >> > +#include <mach/gpio.h> > > linux/gpio.h please. > Rebased to topic/pxa168fb branch of pxa git repository. Change is minimize LCD reset time of gpio operation. >From 91479fe76e31686747b016d6667a14d3aec3b074 Mon Sep 17 00:00:00 2001 From: Jun Nie <nj...@ma...> Date: Mon, 23 Nov 2009 10:32:51 +0800 Subject: [PATCH] pxa: add frame buffer on pxa910 ttc_dkb platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa910_defconfig | 39 ++++++++- arch/arm/mach-mmp/include/mach/pxa910.h | 7 ++ arch/arm/mach-mmp/pxa910.c | 3 + arch/arm/mach-mmp/ttc_dkb.c | 144 +++++++++++++++++++++++++++++++ 4 files changed, 192 insertions(+), 1 deletions(-) diff --git a/arch/arm/configs/pxa910_defconfig b/arch/arm/configs/pxa910_defconfig index 8c7e299..b9b1a85 100644 --- a/arch/arm/configs/pxa910_defconfig +++ b/arch/arm/configs/pxa910_defconfig @@ -578,7 +578,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +618,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h index 4f0b4ec..0236182 100644 --- a/arch/arm/mach-mmp/include/mach/pxa910.h +++ b/arch/arm/mach-mmp/include/mach/pxa910.h @@ -5,6 +5,7 @@ #include <mach/devices.h> #include <plat/i2c.h> #include <plat/pxa3xx_nand.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa910_device_uart1; extern struct pxa_device_desc pxa910_device_uart2; @@ -15,6 +16,7 @@ extern struct pxa_device_desc pxa910_device_pwm2; extern struct pxa_device_desc pxa910_device_pwm3; extern struct pxa_device_desc pxa910_device_pwm4; extern struct pxa_device_desc pxa910_device_nand; +extern struct pxa_device_desc pxa910_device_fb; static inline int pxa910_add_uart(int id) { @@ -71,4 +73,9 @@ static inline int pxa910_add_nand(struct pxa3xx_nand_platform_data *info) { return pxa_register_device(&pxa910_device_nand, info, sizeof(*info)); } + +static inline int pxa910_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa910_device_fb, mi, sizeof(*mi)); +} #endif /* __ASM_MACH_PXA910_H */ diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index d404950..7b91ea6 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c @@ -111,6 +111,7 @@ static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); static APMU_CLK(nand, NAND, 0x01db, 208000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); /* device and clock bindings */ static struct clk_lookup pxa910_clkregs[] = { @@ -123,6 +124,7 @@ static struct clk_lookup pxa910_clkregs[] = { INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), + INIT_CLKREG(&clk_lcd, "pxa910-fb", "LCDCLK"), }; static int __init pxa910_init(void) @@ -178,3 +180,4 @@ PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE, 0xd401a400, 0x10); PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); PXA910_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); +PXA910_DEVICE(fb, "pxa910-fb", -1, LCD, 0xd420b000, 0x1c8); diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index bb26cb5..d3e7e1f 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c @@ -14,7 +14,10 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/mtd/onenand.h> +#include <linux/delay.h> +#include <linux/gpio.h> +#include <video/pxa168fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/flash.h> @@ -31,6 +34,37 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { GPIO47_UART2_RXD, GPIO48_UART2_TXD, +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO81_LCD_FCLK, + GPIO82_LCD_LCLK, + GPIO83_LCD_PCLK, + GPIO84_LCD_DENA, + GPIO85_LCD_DD0, + GPIO86_LCD_DD1, + GPIO87_LCD_DD2, + GPIO88_LCD_DD3, + GPIO89_LCD_DD4, + GPIO90_LCD_DD5, + GPIO91_LCD_DD6, + GPIO92_LCD_DD7, + GPIO93_LCD_DD8, + GPIO94_LCD_DD9, + GPIO95_LCD_DD10, + GPIO96_LCD_DD11, + GPIO97_LCD_DD12, + GPIO98_LCD_DD13, + GPIO100_LCD_DD14, + GPIO101_LCD_DD15, + GPIO102_LCD_DD16, + GPIO103_LCD_DD17, + GPIO104_LCD_SPIDOUT, + GPIO105_LCD_SPIDIN, + GPIO107_LCD_CS1, + GPIO108_LCD_DCLK, + GPIO106_LCD_RESET, +#endif + /* DFI */ DF_IO0_ND_IO0, DF_IO1_ND_IO1, @@ -56,6 +90,113 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { DF_RDY0_DF_RDY0, }; +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x0801, + 0x0800, + 0x0200, + 0x0304, + 0x040e, + 0x0903, + 0x0b18, + 0x0c53, + 0x0d01, + 0x0ee0, + 0x0f01, + 0x1058, + 0x201e, + 0x210a, + 0x220a, + 0x231e, + 0x2400, + 0x2532, + 0x2600, + 0x27ac, + 0x2904, + 0x2aa2, + 0x2b45, + 0x2c45, + 0x2d15, + 0x2e5a, + 0x2fff, + 0x306b, + 0x310d, + 0x3248, + 0x3382, + 0x34bd, + 0x35e7, + 0x3618, + 0x3794, + 0x3801, + 0x395d, + 0x3aae, + 0x3bff, + 0x07c9, /* auto power on */ +}; + +static u16 tpo_spi_cmdoff[] = { + 0x07d9, /* auto power off */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + + if (on) { + if (spi_gpio_reset != -1) { + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); + if (err) { + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); + return -EIO; + } + gpio_direction_output(spi_gpio_reset, 0); + msleep(1); + gpio_set_value(spi_gpio_reset, 1); + msleep(11); + gpio_free(spi_gpio_reset); + } + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 40); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 0); +} + +static struct fb_videomode video_modes[] = { + /* lpj032l001b HVGA mode info */ + [0] = { + .pixclock = 100000, + .refresh = 60, + .xres = 320, + .yres = 480, + .hsync_len = 10, + .left_margin = 15, + .right_margin = 10, + .vsync_len = 2, + .upper_margin = 4, + .lower_margin = 2, + .sync = 0, + }, +}; + +static struct pxa168fb_mach_info ttc_dkb_lcd_info __initdata = { + .id = "Base", + .modes = video_modes, + .num_modes = ARRAY_SIZE(video_modes), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_18_SPI, + .dumb_mode = DUMB_MODE_RGB666, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(16) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = -1, + .spi_gpio_reset = mfp_to_gpio(MFP_PIN_GPIO106), + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, +}; +#endif + static struct mtd_partition ttc_dkb_onenand_partitions[] = { { .name = "bootloader", @@ -118,6 +259,9 @@ static void __init ttc_dkb_init(void) /* on-chip devices */ pxa910_add_uart(1); +#ifdef CONFIG_FB_PXA168 + pxa910_add_fb(&ttc_dkb_lcd_info); +#endif /* off-chip devices */ platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices)); -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-23 05:52:54
|
2009/11/20 Eric Miao <eri...@gm...>: > On Thu, Nov 19, 2009 at 8:38 PM, Jun Nie <nie...@gm...> wrote: >> 2009/11/20 Eric Miao <eri...@gm...>: >>>> + int err = 0; >>>> + if (on) { >>>> + if (spi_gpio_reset != -1) { >>>> + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); >>>> + if (err) { >>>> + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); >>>> + return err; >>>> + } >>>> + gpio_direction_output(spi_gpio_reset, 0); >>>> + msleep(100); >>> >>> This is really a loooong delay, there any specific reason for such a long >>> delay, I'm seeing this to slow down the boot up significantly? >>> >>> Otherwise looks OK to me, and I prefer the defconfig file change to >>> be a separate patch please. >>> >> >> Actually, This is just an example for other real products. There is no >> such spi_reset pin on Aspenite , so machine info set it spi_gpio_reset >> == -1. Or do you think we should delete these lines? >> > > I see no reason for it to stay there then, please remove. > rebased to topic/pxa168fb branch of pxa git repository. changes include: 1. Delete redundant gpio operation in aspenite.c 2. change to include <linux/gpio.h> >From 6915f1d1abe0e0fe42c162f1392a00d722c5eccd Mon Sep 17 00:00:00 2001 From: Jun Nie <nj...@ma...> Date: Mon, 23 Nov 2009 09:56:07 +0800 Subject: [PATCH] pxa: add frame buffer on pxa168 aspenite platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa168_defconfig | 86 +++++++++++++++++++++- arch/arm/mach-mmp/aspenite.c | 125 +++++++++++++++++++++++++++++++ arch/arm/mach-mmp/include/mach/pxa168.h | 7 ++ arch/arm/mach-mmp/pxa168.c | 3 + 4 files changed, 219 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/pxa168_defconfig b/arch/arm/configs/pxa168_defconfig index db5faea..b736517 100644 --- a/arch/arm/configs/pxa168_defconfig +++ b/arch/arm/configs/pxa168_defconfig @@ -509,7 +509,49 @@ CONFIG_UNIX98_PTYS=y # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set -# CONFIG_I2C is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE is not set +CONFIG_I2C_GPIO=y +# CONFIG_I2C_OCORES is not set +CONFIG_I2C_PXA=y +# CONFIG_I2C_PXA_SLAVE is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set # CONFIG_SPI is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y @@ -523,6 +565,9 @@ CONFIG_GPIOLIB=y # # I2C GPIO expanders: # +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +# CONFIG_GPIO_PCF857X is not set # # PCI GPIO expanders: @@ -578,7 +623,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +663,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index c7990b2..e101042 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -17,6 +17,8 @@ #include <linux/mtd/partitions.h> #include <linux/mtd/nand.h> #include <linux/i2c/pca953x.h> +#include <linux/delay.h> +#include <linux/gpio.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -66,6 +68,39 @@ static unsigned long common_pin_config[] __initdata = { /* UART1 */ GPIO107_UART1_RXD, GPIO108_UART1_TXD, + +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO56_LCD_FCLK_RD, + GPIO57_LCD_LCLK_A0, + GPIO58_LCD_PCLK_WR, + GPIO59_LCD_DENA_BIAS, + GPIO60_LCD_DD0, + GPIO61_LCD_DD1, + GPIO62_LCD_DD2, + GPIO63_LCD_DD3, + GPIO64_LCD_DD4, + GPIO65_LCD_DD5, + GPIO66_LCD_DD6, + GPIO67_LCD_DD7, + GPIO68_LCD_DD8, + GPIO69_LCD_DD9, + GPIO70_LCD_DD10, + GPIO71_LCD_DD11, + GPIO72_LCD_DD12, + GPIO73_LCD_DD13, + GPIO74_LCD_DD14, + GPIO75_LCD_DD15, + + GPIO76_LCD_DD16, + GPIO77_LCD_DD17, + GPIO78_LCD_DD18, + GPIO79_LCD_DD19, + GPIO80_LCD_DD20, + GPIO81_LCD_DD21, + GPIO82_LCD_DD22, + GPIO83_LCD_DD23, +#endif }; static struct smc91x_platdata smc91x_info = { @@ -95,6 +130,93 @@ static struct platform_device smc91x_device = { .resource = smc91x_resources, }; +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x080F, + 0x0C5F, + 0x1017, + 0x1420, + 0x1808, + 0x1c20, + 0x2020, + 0x2420, + 0x2820, + 0x2c20, + 0x3020, + 0x3420, + 0x3810, + 0x3c10, + 0x4010, + 0x4415, + 0x48aa, + 0x4cff, + 0x5086, + 0x548d, + 0x58d4, + 0x5cfb, + 0x602e, + 0x645a, + 0x6889, + 0x6cfe, + 0x705a, + 0x749b, + 0x78c5, + 0x7cff, + 0x80f0, + 0x84f0, + 0x8808, +}; + +static u16 tpo_spi_cmdoff[] = { + 0x0c5e, /* standby */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + if (on) { + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 1); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 1); +} + +static struct fb_videomode video_modes_aspen[] = { + [0] = { + .pixclock = 30120, + .refresh = 60, + .xres = 800, + .yres = 480, + .hsync_len = 1, + .left_margin = 215, + .right_margin = 40, + .vsync_len = 1, + .upper_margin = 34, + .lower_margin = 10, + .sync = 0, + }, +}; + +struct pxa168fb_mach_info aspenite_lcd_info __initdata = { + .id = "Base-aspen", + .modes = video_modes_aspen, + .num_modes = ARRAY_SIZE(video_modes_aspen), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_24, + .dumb_mode = DUMB_MODE_RGB888, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(2) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = GPIO_EXT1(14), + .spi_gpio_reset = -1, + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, +}; + +#endif + #if defined(CONFIG_MTD_NAND) || defined(CONFIG_MTD_NAND_MODULE) static struct mtd_partition aspenite_nand_partitions[] = { { @@ -179,6 +301,9 @@ static void __init common_init(void) pxa168_add_nand(&aspenite_nand_info); pxa168_add_twsi(0, &pwri2c_info, ARRAY_AND_SIZE(aspenite_i2c_board_info)); +#ifdef CONFIG_FB_PXA168 + pxa168_add_fb(&aspenite_lcd_info); +#endif /* off-chip devices */ platform_device_register(&smc91x_device); diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index 3ad612c..6c10c9e 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h @@ -5,6 +5,7 @@ #include <mach/devices.h> #include <plat/i2c.h> #include <plat/pxa3xx_nand.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart2; @@ -15,6 +16,7 @@ extern struct pxa_device_desc pxa168_device_pwm2; extern struct pxa_device_desc pxa168_device_pwm3; extern struct pxa_device_desc pxa168_device_pwm4; extern struct pxa_device_desc pxa168_device_nand; +extern struct pxa_device_desc pxa168_device_fb; static inline int pxa168_add_uart(int id) { @@ -71,4 +73,9 @@ static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info) { return pxa_register_device(&pxa168_device_nand, info, sizeof(*info)); } + +static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi)); +} #endif /* __ASM_MACH_PXA168_H */ diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 37dbdde..a5f9c7d 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c @@ -74,6 +74,7 @@ static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000); static APMU_CLK(nand, NAND, 0x01db, 208000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); /* device and clock bindings */ static struct clk_lookup pxa168_clkregs[] = { @@ -86,6 +87,7 @@ static struct clk_lookup pxa168_clkregs[] = { INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), + INIT_CLKREG(&clk_lcd, "pxa168-fb", "LCDCLK"), }; static int __init pxa168_init(void) @@ -132,3 +134,4 @@ PXA168_DEVICE(pwm2, "pxa168-pwm", 1, NONE, 0xd401a400, 0x10); PXA168_DEVICE(pwm3, "pxa168-pwm", 2, NONE, 0xd401a800, 0x10); PXA168_DEVICE(pwm4, "pxa168-pwm", 3, NONE, 0xd401ac00, 0x10); PXA168_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); +PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8); -- 1.5.4.3 |
From: Finn T. <ft...@te...> - 2009-11-23 04:37:21
|
Some corrections to the comments which escaped my previous macfb patch. Signed-off-by: Finn Thain <ft...@te...> --- drivers/video/macfb.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) Index: linux-2.6.31/drivers/video/macfb.c =================================================================== --- linux-2.6.31.orig/drivers/video/macfb.c 2009-11-21 19:42:44.000000000 +1100 +++ linux-2.6.31/drivers/video/macfb.c 2009-11-23 15:28:39.000000000 +1100 @@ -228,6 +228,7 @@ static int v8_brazil_setpalette(unsigned return 0; } +/* RAM-Based Video */ static int rbv_setpalette(unsigned int regno, unsigned int red, unsigned int green, unsigned int blue, struct fb_info *info) @@ -345,8 +346,6 @@ static int jet_setpalette(unsigned int r * input and viewing the screen at the same time! The 840AV * Can add another 1MB RAM to give the two framebuffers * 1MB RAM apiece. - * - * FIXME: this doesn't seem to work anymore. */ static int civic_setpalette(unsigned int regno, unsigned int red, unsigned int green, unsigned int blue, |
From: Chaithrika U S <cha...@ti...> - 2009-11-23 03:36:52
|
Andrew, Can you please push this patch to mmotm tree. The patch 'davinci: fb: add cpufreq support'(which is already present in mmotm tree) is dependent on this patch. Regards, Chaithrika On Fri, Oct 23, 2009 at 10:41:08, Chaithrika U S wrote: > All, > > Any comments/suggestions on this patch? > > Regards, > Chaithrika > > On Tue, Oct 20, 2009 at 15:48:07, Chaithrika U S wrote: > > The clock divider value can be calculated from the pixel clock value > > for the panel. This gives more flexiblity to the driver to change the > > divider value on the fly as in the case of cpufreq > > feature- support for which will be added shortly. > > > > Signed-off-by: Chaithrika U S <cha...@ti...> > > --- > > This patch applies on Linus' kernel tree. > > Resending this patch as missed out marking fbdev list previously. > > > > drivers/video/da8xx-fb.c | 28 ++++++++++++++++++++-------- > > 1 files changed, 20 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c index > > d065894..d9ab839 100644 > > --- a/drivers/video/da8xx-fb.c > > +++ b/drivers/video/da8xx-fb.c > > @@ -113,6 +113,7 @@ struct da8xx_fb_par { > > unsigned short pseudo_palette[16]; > > unsigned int databuf_sz; > > unsigned int palette_sz; > > + unsigned int pxl_clk; > > }; > > > > /* Variable Screen Information */ > > @@ -155,7 +156,7 @@ struct da8xx_panel { > > int vfp; /* Vertical front porch */ > > int vbp; /* Vertical back porch */ > > int vsw; /* Vertical Sync Pulse Width */ > > - int pxl_clk; /* Pixel clock */ > > + unsigned int pxl_clk; /* Pixel clock */ > > unsigned char invert_pxl_clk; /* Invert Pixel clock */ > > }; > > > > @@ -171,7 +172,7 @@ static struct da8xx_panel known_lcd_panels[] = { > > .vfp = 2, > > .vbp = 2, > > .vsw = 0, > > - .pxl_clk = 0x10, > > + .pxl_clk = 4608000, > > .invert_pxl_clk = 1, > > }, > > /* Sharp LK043T1DG01 */ > > @@ -185,7 +186,7 @@ static struct da8xx_panel known_lcd_panels[] = { > > .vfp = 2, > > .vbp = 2, > > .vsw = 10, > > - .pxl_clk = 0x12, > > + .pxl_clk = 7833600, > > .invert_pxl_clk = 0, > > }, > > }; > > @@ -451,6 +452,18 @@ static void lcd_reset(struct da8xx_fb_par *par) > > lcdc_write(0, LCD_RASTER_CTRL_REG); > > } > > > > +static void lcd_calc_clk_divider(struct da8xx_fb_par *par) { > > + unsigned int lcd_clk, div; > > + > > + lcd_clk = clk_get_rate(par->lcdc_clk); > > + div = lcd_clk / par->pxl_clk; > > + > > + /* Configure the LCD clock divisor. */ > > + lcdc_write(LCD_CLK_DIVISOR(div) | > > + (LCD_RASTER_MODE & 0x1), LCD_CTRL_REG); } > > + > > static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg, > > struct da8xx_panel *panel) > > { > > @@ -459,9 +472,8 @@ static int lcd_init(struct da8xx_fb_par *par, > > const struct lcd_ctrl_config *cfg, > > > > lcd_reset(par); > > > > - /* Configure the LCD clock divisor. */ > > - lcdc_write(LCD_CLK_DIVISOR(panel->pxl_clk) | > > - (LCD_RASTER_MODE & 0x1), LCD_CTRL_REG); > > + /* Calculate the divider */ > > + lcd_calc_clk_divider(par); > > > > if (panel->invert_pxl_clk) > > lcdc_write((lcdc_read(LCD_RASTER_TIMING_2_REG) | @@ -721,6 +733,8 > > @@ static int __init fb_probe(struct platform_device *device) > > } > > > > par = da8xx_fb_info->par; > > + par->lcdc_clk = fb_clk; > > + par->pxl_clk = lcdc_info->pxl_clk; > > > > if (lcd_init(par, lcd_cfg, lcdc_info) < 0) { > > dev_err(&device->dev, "lcd_init failed\n"); @@ -753,8 +767,6 @@ > > static int __init fb_probe(struct platform_device *device) > > da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz; > > da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8; > > > > - par->lcdc_clk = fb_clk; > > - > > par->irq = platform_get_irq(device, 0); > > if (par->irq < 0) { > > ret = -ENOENT; > > -- > > 1.5.6 > > > |
From: Dan C. <er...@gm...> - 2009-11-22 14:21:37
|
Fixed a typo: missing *. This would lead to a kernel oops if the kernel was compiled without support for the /proc file system. Found with a static checker. Compile tested. regards, dan carpenter Signed-off-by: Dan Carpenter <er...@gm...> --- orig/drivers/video/via/viafbdev.c 2009-11-21 14:44:33.000000000 +0200 +++ devel/drivers/video/via/viafbdev.c 2009-11-21 14:44:43.000000000 +0200 @@ -1797,7 +1797,7 @@ static const struct file_operations viaf static void viafb_init_proc(struct proc_dir_entry **viafb_entry) { *viafb_entry = proc_mkdir("viafb", NULL); - if (viafb_entry) { + if (*viafb_entry) { proc_create("dvp0", 0, *viafb_entry, &viafb_dvp0_proc_fops); proc_create("dvp1", 0, *viafb_entry, &viafb_dvp1_proc_fops); proc_create("dfph", 0, *viafb_entry, &viafb_dfph_proc_fops); |
From: Florian T. S. <Flo...@gm...> - 2009-11-21 23:59:25
|
Hi, Roel Kluin schrieb: > diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c > index 56ec696..7b181e7 100644 > --- a/drivers/video/via/viafbdev.c > +++ b/drivers/video/via/viafbdev.c > @@ -680,7 +680,7 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg) > if (!viafb_gamma_table) > return -ENOMEM; > if (copy_from_user(viafb_gamma_table, argp, > - sizeof(viafb_gamma_table))) { > + sizeof(*viafb_gamma_table))) { > kfree(viafb_gamma_table); > return -EFAULT; > } > @@ -694,7 +694,7 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg) > return -ENOMEM; > viafb_get_gamma_table(viafb_gamma_table); > if (copy_to_user(argp, viafb_gamma_table, > - sizeof(viafb_gamma_table))) { > + sizeof(*viafb_gamma_table))) { > kfree(viafb_gamma_table); > return -EFAULT; > } I'm sorry but I fear your fix isn't correct. The reason is a few lines above: u32 *viafb_gamma_table; ... viafb_gamma_table = kmalloc(256 * sizeof(u32), GFP_KERNEL); so probably the right solution would look like this: copy_from_user(viafb_gamma_table, argp, 256 * sizeof(u32)) copy_to_user(argp, viafb_gamma_table, 256 * sizeof(u32)) However viafb has way too many private ioctls. I would be curious whether there exists any program that uses any of them so that they could be tested. As this ioctl didn't work very well I vote to remove it at least temporarily. Thanks for highlighting this problem, Florian Tobias Schandinat |
From: Thiago F. <tfr...@gm...> - 2009-11-21 18:53:36
|
On Sat, Nov 21, 2009 at 5:02 PM, Roel Kluin <roe...@gm...> wrote: > The returned error should be negative > Hum? This belong to this patch? |
From: Roel K. <roe...@gm...> - 2009-11-21 18:50:10
|
The returned error should be negative Signed-off-by: Roel Kluin <roe...@gm...> --- drivers/video/via/viafbdev.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) > Unless I am mistaken? There was another in the same file: diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index 56ec696..7b181e7 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c @@ -680,7 +680,7 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg) if (!viafb_gamma_table) return -ENOMEM; if (copy_from_user(viafb_gamma_table, argp, - sizeof(viafb_gamma_table))) { + sizeof(*viafb_gamma_table))) { kfree(viafb_gamma_table); return -EFAULT; } @@ -694,7 +694,7 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg) return -ENOMEM; viafb_get_gamma_table(viafb_gamma_table); if (copy_to_user(argp, viafb_gamma_table, - sizeof(viafb_gamma_table))) { + sizeof(*viafb_gamma_table))) { kfree(viafb_gamma_table); return -EFAULT; } |
From: Roel K. <roe...@gm...> - 2009-11-21 18:48:32
|
The sizeof the struct should be used rather than of the pointer Signed-off-by: Roel Kluin <roe...@gm...> --- drivers/video/via/viafbdev.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Unless I am mistaken? diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index 56ec696..6cf4cb8 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c @@ -680,7 +680,7 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg) if (!viafb_gamma_table) return -ENOMEM; if (copy_from_user(viafb_gamma_table, argp, - sizeof(viafb_gamma_table))) { + sizeof(*viafb_gamma_table))) { kfree(viafb_gamma_table); return -EFAULT; } |
From: Paul M. <pau...@us...> - 2009-11-21 18:25:59
|
Am Freitag, den 20.11.2009, 20:48 +0100 schrieb Geert Uytterhoeven: > 8. Mailing list > --------------- > > -There are several frame buffer device related mailing lists at SourceForge: > - - lin...@li..., for announcements, > - - lin...@li..., for generic user support, > - - lin...@li..., for project developers. > +There is a frame buffer device related mailing list at kernel.org: > +li...@vg.... > > Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for > subscription information and archive browsing. Should not this sentence be also adapted, i. e., a URL for the new archive be added? Bests, Paul |
From: Jean D. <kh...@li...> - 2009-11-21 12:53:21
|
Hi Geert, On Fri, 20 Nov 2009 20:48:31 +0100 (CET), Geert Uytterhoeven wrote: > The fbdev mailing lists at SourceForge have been migrated to a single > mailing list at kernel.org: lin...@vg.... > > Signed-off-by: Geert Uytterhoeven <ge...@li...> This is good news. Acked-by: Jean Delvare <kh...@li...> > --- > Documentation/fb/framebuffer.txt | 6 ++---- > MAINTAINERS | 28 ++++++++++++++-------------- > 2 files changed, 16 insertions(+), 18 deletions(-) > > diff --git a/Documentation/fb/framebuffer.txt b/Documentation/fb/framebuffer.txt > index b3e3a03..fe79e3c 100644 > --- a/Documentation/fb/framebuffer.txt > +++ b/Documentation/fb/framebuffer.txt > @@ -312,10 +312,8 @@ and to the following documentation: > 8. Mailing list > --------------- > > -There are several frame buffer device related mailing lists at SourceForge: > - - lin...@li..., for announcements, > - - lin...@li..., for generic user support, > - - lin...@li..., for project developers. > +There is a frame buffer device related mailing list at kernel.org: > +li...@vg.... > > Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for > subscription information and archive browsing. > diff --git a/MAINTAINERS b/MAINTAINERS > index c824b4d..5726ffc 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1027,7 +1027,7 @@ F: drivers/serial/atmel_serial.c > > ATMEL LCDFB DRIVER > M: Nicolas Ferre <nic...@at...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/atmel_lcdfb.c > F: include/video/atmel_lcdc.h > @@ -2113,7 +2113,7 @@ F: drivers/net/wan/dlci.c > F: drivers/net/wan/sdla.c > > FRAMEBUFFER LAYER > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > W: http://linux-fbdev.sourceforge.net/ > S: Orphan > F: Documentation/fb/ > @@ -2136,7 +2136,7 @@ F: drivers/i2c/busses/i2c-cpm.c > > FREESCALE IMX / MXC FRAMEBUFFER DRIVER > M: Sascha Hauer <ke...@pe...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > L: lin...@li... (moderated for non-subscribers) > S: Maintained > F: arch/arm/plat-mxc/include/mach/imxfb.h > @@ -2635,7 +2635,7 @@ S: Supported > F: security/integrity/ima/ > > IMS TWINTURBO FRAMEBUFFER DRIVER > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Orphan > F: drivers/video/imsttfb.c > > @@ -2670,14 +2670,14 @@ F: drivers/input/ > > INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) > M: Sylvain Meyer <syl...@wo...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: Documentation/fb/intelfb.txt > F: drivers/video/intelfb/ > > INTEL 810/815 FRAMEBUFFER DRIVER > M: Antonino Daplas <ad...@gm...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/i810/ > > @@ -3391,7 +3391,7 @@ S: Supported > > MATROX FRAMEBUFFER DRIVER > M: Petr Vandrovec <van...@vc...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/matrox/matroxfb_* > F: include/linux/matroxfb.h > @@ -3778,7 +3778,7 @@ F: fs/ntfs/ > > NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER > M: Antonino Daplas <ad...@gm...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/riva/ > F: drivers/video/nvidia/ > @@ -3813,7 +3813,7 @@ F: sound/soc/omap/ > > OMAP FRAMEBUFFER SUPPORT > M: Imre Deak <imr...@no...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > L: lin...@vg... > S: Maintained > F: drivers/video/omap/ > @@ -4319,14 +4319,14 @@ F: include/linux/qnxtypes.h > > RADEON FRAMEBUFFER DISPLAY DRIVER > M: Benjamin Herrenschmidt <be...@ke...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/aty/radeon* > F: include/linux/radeonfb.h > > RAGE128 FRAMEBUFFER DISPLAY DRIVER > M: Paul Mackerras <pa...@sa...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/aty/aty128fb.c > > @@ -4465,7 +4465,7 @@ F: drivers/net/wireless/rtl818x/rtl8187* > > S3 SAVAGE FRAMEBUFFER DRIVER > M: Antonino Daplas <ad...@gm...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/savage/ > > @@ -5628,7 +5628,7 @@ S: Maintained > > UVESAFB DRIVER > M: Michal Januszewski <sp...@ge...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > W: http://dev.gentoo.org/~spock/projects/uvesafb/ > S: Maintained > F: Documentation/fb/uvesafb.txt > @@ -5661,7 +5661,7 @@ F: drivers/mmc/host/via-sdmmc.c > VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER > M: Joseph Chan <Jos...@vi...> > M: Scott Fang <Sco...@vi...> > -L: lin...@li... (moderated for non-subscribers) > +L: lin...@vg... > S: Maintained > F: drivers/video/via/ > -- Jean Delvare |
From: Dave A. <ai...@gm...> - 2009-11-21 04:27:27
|
On Fri, Nov 20, 2009 at 11:16 PM, Paulius Zaleckas <pau...@gm...> wrote: > Hi, > > On drivers using drm_fb_helper's in fb_ops it is not possible to change > video mode, because of different var->pixclock evaluation: > > int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > struct fb_info *info) > { > [...] > if (var->pixclock == -1 || !var->pixclock) > return -EINVAL; > [...] > > int drm_fb_helper_set_par(struct fb_info *info) > { > [...] > if (var->pixclock != -1) { > DRM_ERROR("PIXEL CLCOK SET\n"); > return -EINVAL; > } > [...] > > One of these evaluations will fail regardless of pixclock value. > At the moment the problem with fbset is what to do with it in the dual head case. Currently we create an fb console that is lowest common size of the two heads and set native modes on both, Now if a user runs fbset, I'm not sure what the right answer is, a) pick a head in advance via sysfs maybe and set it on that. b) try and set the mode on both heads cloned (what to do if there is no common mode is another issue). Dave. |
From: Dave A. <ai...@gm...> - 2009-11-21 04:25:36
|
On Sat, Nov 21, 2009 at 6:48 AM, James Simmons <jsi...@in...> wrote: > > > On Fri, 20 Nov 2009, Paulius Zaleckas wrote: > >> On 11/20/2009 10:01 PM, James Simmons wrote: >> > >> > > > > > Paulius Zaleckas wrote: >> > > > > > > On drivers using drm_fb_helper's in fb_ops it is not possible to >> > > > > > > change >> > > > > > > video mode, because of different var->pixclock evaluation: ... >> > > > > > >> > > > > > patch: >> > > > > > http://www.mail-archive.com/dri...@li.../msg44369.html >> > > > > >> > > > > Those patches will enable fbdev apps to run properly. More patches are >> > > > > needed if you want to support mode switching using the fbdev emulation >> > > > > layer. I noticed my patches and yours where lost. Who do you send >> > > > > patches >> > > > > too that can merge them ? >> > > > >> > > > y:/usr/src/git26> perl scripts/get_maintainer.pl -f >> > > > drivers/gpu/drm/drm_fb_helper.c >> > > > David Airlie<ai...@li...> >> > > > Dave Airlie<ai...@re...> >> > > > Jesse Barnes<jb...@vi...> >> > > > Mikael Pettersson<mi...@it...> >> > > > dri...@li... >> > > > lin...@vg... >> > > > >> > > > That's accurate enough. >> > > > >> > > > Generally, if nothing has happened in a week, the chances that it's >> > > > lost are very high. Resend. If you like, cc me and I'll maintain the >> > > > patches >> > > > and resend them for you. >> > > >> > > You can add Tested-by: Paulius Zaleckas<pau...@gm...> >> > > for >> > > http://www.mail-archive.com/dri...@li.../msg44369.html >> > > as this was preventing DirectFB from running on my Asus Eee PC 701. >> > >> > I tested it as well with the both my 3Dfx driver that I wrote with KMS and >> > the nouveau driver. We just need to make sure that the patches end up in >> > the drm-next tree or these patches will be lost when drm-next gets merged >> > to linus tree. >> >> IMHO this patch should end up in current (2.6.32) kernel and we should >> send it to stable ML. > > Honestly I like to see it there as well. > I have them queued for drm-next already at least locally, I wasn't aware they were suitable for final, I didn't get a chance to really test them until last week and make sure they didn't hide any side effects. I can ask for them to go to stable when the merge window opens, I think its too late for final. Dave. |
From: James S. <jsi...@in...> - 2009-11-20 20:48:28
|
On Fri, 20 Nov 2009, Paulius Zaleckas wrote: > On 11/20/2009 10:01 PM, James Simmons wrote: > > > > > > > > Paulius Zaleckas wrote: > > > > > > > On drivers using drm_fb_helper's in fb_ops it is not possible to > > > > > > > change > > > > > > > video mode, because of different var->pixclock evaluation: ... > > > > > > > > > > > > patch: > > > > > > http://www.mail-archive.com/dri...@li.../msg44369.html > > > > > > > > > > Those patches will enable fbdev apps to run properly. More patches are > > > > > needed if you want to support mode switching using the fbdev emulation > > > > > layer. I noticed my patches and yours where lost. Who do you send > > > > > patches > > > > > too that can merge them ? > > > > > > > > y:/usr/src/git26> perl scripts/get_maintainer.pl -f > > > > drivers/gpu/drm/drm_fb_helper.c > > > > David Airlie<ai...@li...> > > > > Dave Airlie<ai...@re...> > > > > Jesse Barnes<jb...@vi...> > > > > Mikael Pettersson<mi...@it...> > > > > dri...@li... > > > > lin...@vg... > > > > > > > > That's accurate enough. > > > > > > > > Generally, if nothing has happened in a week, the chances that it's > > > > lost are very high. Resend. If you like, cc me and I'll maintain the > > > > patches > > > > and resend them for you. > > > > > > You can add Tested-by: Paulius Zaleckas<pau...@gm...> > > > for > > > http://www.mail-archive.com/dri...@li.../msg44369.html > > > as this was preventing DirectFB from running on my Asus Eee PC 701. > > > > I tested it as well with the both my 3Dfx driver that I wrote with KMS and > > the nouveau driver. We just need to make sure that the patches end up in > > the drm-next tree or these patches will be lost when drm-next gets merged > > to linus tree. > > IMHO this patch should end up in current (2.6.32) kernel and we should > send it to stable ML. Honestly I like to see it there as well. |
From: Geert U. <ge...@li...> - 2009-11-20 20:11:22
|
The fbdev mailing lists at SourceForge have been migrated to a single mailing list at kernel.org: lin...@vg.... Signed-off-by: Geert Uytterhoeven <ge...@li...> --- Documentation/fb/framebuffer.txt | 6 ++---- MAINTAINERS | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Documentation/fb/framebuffer.txt b/Documentation/fb/framebuffer.txt index b3e3a03..fe79e3c 100644 --- a/Documentation/fb/framebuffer.txt +++ b/Documentation/fb/framebuffer.txt @@ -312,10 +312,8 @@ and to the following documentation: 8. Mailing list --------------- -There are several frame buffer device related mailing lists at SourceForge: - - lin...@li..., for announcements, - - lin...@li..., for generic user support, - - lin...@li..., for project developers. +There is a frame buffer device related mailing list at kernel.org: +li...@vg.... Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for subscription information and archive browsing. diff --git a/MAINTAINERS b/MAINTAINERS index c824b4d..5726ffc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1027,7 +1027,7 @@ F: drivers/serial/atmel_serial.c ATMEL LCDFB DRIVER M: Nicolas Ferre <nic...@at...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/atmel_lcdfb.c F: include/video/atmel_lcdc.h @@ -2113,7 +2113,7 @@ F: drivers/net/wan/dlci.c F: drivers/net/wan/sdla.c FRAMEBUFFER LAYER -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... W: http://linux-fbdev.sourceforge.net/ S: Orphan F: Documentation/fb/ @@ -2136,7 +2136,7 @@ F: drivers/i2c/busses/i2c-cpm.c FREESCALE IMX / MXC FRAMEBUFFER DRIVER M: Sascha Hauer <ke...@pe...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... L: lin...@li... (moderated for non-subscribers) S: Maintained F: arch/arm/plat-mxc/include/mach/imxfb.h @@ -2635,7 +2635,7 @@ S: Supported F: security/integrity/ima/ IMS TWINTURBO FRAMEBUFFER DRIVER -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Orphan F: drivers/video/imsttfb.c @@ -2670,14 +2670,14 @@ F: drivers/input/ INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) M: Sylvain Meyer <syl...@wo...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: Documentation/fb/intelfb.txt F: drivers/video/intelfb/ INTEL 810/815 FRAMEBUFFER DRIVER M: Antonino Daplas <ad...@gm...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/i810/ @@ -3391,7 +3391,7 @@ S: Supported MATROX FRAMEBUFFER DRIVER M: Petr Vandrovec <van...@vc...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/matrox/matroxfb_* F: include/linux/matroxfb.h @@ -3778,7 +3778,7 @@ F: fs/ntfs/ NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER M: Antonino Daplas <ad...@gm...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/riva/ F: drivers/video/nvidia/ @@ -3813,7 +3813,7 @@ F: sound/soc/omap/ OMAP FRAMEBUFFER SUPPORT M: Imre Deak <imr...@no...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... L: lin...@vg... S: Maintained F: drivers/video/omap/ @@ -4319,14 +4319,14 @@ F: include/linux/qnxtypes.h RADEON FRAMEBUFFER DISPLAY DRIVER M: Benjamin Herrenschmidt <be...@ke...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/aty/radeon* F: include/linux/radeonfb.h RAGE128 FRAMEBUFFER DISPLAY DRIVER M: Paul Mackerras <pa...@sa...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/aty/aty128fb.c @@ -4465,7 +4465,7 @@ F: drivers/net/wireless/rtl818x/rtl8187* S3 SAVAGE FRAMEBUFFER DRIVER M: Antonino Daplas <ad...@gm...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/savage/ @@ -5628,7 +5628,7 @@ S: Maintained UVESAFB DRIVER M: Michal Januszewski <sp...@ge...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... W: http://dev.gentoo.org/~spock/projects/uvesafb/ S: Maintained F: Documentation/fb/uvesafb.txt @@ -5661,7 +5661,7 @@ F: drivers/mmc/host/via-sdmmc.c VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER M: Joseph Chan <Jos...@vi...> M: Scott Fang <Sco...@vi...> -L: lin...@li... (moderated for non-subscribers) +L: lin...@vg... S: Maintained F: drivers/video/via/ -- 1.6.0.4 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |
From: Paulius Z. <pau...@gm...> - 2009-11-20 20:08:43
|
On 11/20/2009 10:01 PM, James Simmons wrote: > >>>>> Paulius Zaleckas wrote: >>>>>> On drivers using drm_fb_helper's in fb_ops it is not possible to >>>>>> change >>>>>> video mode, because of different var->pixclock evaluation: ... >>>>> >>>>> patch: >>>>> http://www.mail-archive.com/dri...@li.../msg44369.html >>>> >>>> Those patches will enable fbdev apps to run properly. More patches are >>>> needed if you want to support mode switching using the fbdev emulation >>>> layer. I noticed my patches and yours where lost. Who do you send patches >>>> too that can merge them ? >>> >>> y:/usr/src/git26> perl scripts/get_maintainer.pl -f >>> drivers/gpu/drm/drm_fb_helper.c >>> David Airlie<ai...@li...> >>> Dave Airlie<ai...@re...> >>> Jesse Barnes<jb...@vi...> >>> Mikael Pettersson<mi...@it...> >>> dri...@li... >>> lin...@vg... >>> >>> That's accurate enough. >>> >>> Generally, if nothing has happened in a week, the chances that it's >>> lost are very high. Resend. If you like, cc me and I'll maintain the >>> patches >>> and resend them for you. >> >> You can add Tested-by: Paulius Zaleckas<pau...@gm...> >> for http://www.mail-archive.com/dri...@li.../msg44369.html >> as this was preventing DirectFB from running on my Asus Eee PC 701. > > I tested it as well with the both my 3Dfx driver that I wrote with KMS and > the nouveau driver. We just need to make sure that the patches end up in > the drm-next tree or these patches will be lost when drm-next gets merged > to linus tree. IMHO this patch should end up in current (2.6.32) kernel and we should send it to stable ML. |