Skip to content

Commit 0d1d440

Browse files
committed
Merge tag 'fbdev-for-6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev
Pull fbdev updates from Helge Deller: "The Termius 10x18 console bitmap font has been added. It is good match for modern 13-16 inch laptop displays with resolutions like 1280x800 and 1440x900 pixels. The gbefb and tcx.c drivers got some fixes to restore X11 support, pxafb was not actually clamping input values and the ssd1307fb driver leaked memory in the failure path. The other patches convert some common drivers to use dev_info() and dev_dbg() instead of printk(). Summary: Framework updates: - fonts: Add Terminus 10x18 console font [Neilay Kharwadkar] Driver fixes: - gbefb: fix to use physical address instead of dma address [René Rebe] - tcx.c fix mem_map to correct smem_start offset [René Rebe] - pxafb: Fix multiple clamped values in pxafb_adjust_timing [Thorsten Blum] - ssd1307fb: fix potential page leak in ssd1307fb_probe() [Abdun Nihaal] Cleanups: - vga16fb: Request memory region [Javier Garcia] - vga16fb: replace printk() with dev_*() in probe [Vivek BalachandharTN] - vesafb, gxt4500fb, tridentfb: Use dev_dbg() instead of printk() [Javier Garcia] - i810: use dev_info() [Shi Hao]" * tag 'fbdev-for-6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: fbdev: ssd1307fb: fix potential page leak in ssd1307fb_probe() fbdev: i810: use appopriate log interface dev_info fbdev: tridentfb: replace printk() with dev_*() in probe lib/fonts: Add Terminus 10x18 console font fbdev: pxafb: Fix multiple clamped values in pxafb_adjust_timing fbdev: tcx.c fix mem_map to correct smem_start offset fbdev: gxt4500fb: Use dev_err instead of printk fbdev: gbefb: fix to use physical address instead of dma address fbdev: vesafb: Use dev_* fn's instead printk fbdev: vga16fb: Request memory region fbdev: vga16fb: replace printk() with dev_*() in probe
2 parents c06c303 + 1643126 commit 0d1d440

14 files changed

Lines changed: 5231 additions & 57 deletions

File tree

drivers/video/fbdev/gbefb.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <linux/delay.h>
1313
#include <linux/platform_device.h>
1414
#include <linux/dma-mapping.h>
15+
#include <linux/dma-direct.h>
1516
#include <linux/errno.h>
1617
#include <linux/gfp.h>
1718
#include <linux/fb.h>
@@ -65,7 +66,7 @@ struct gbefb_par {
6566
static unsigned int gbe_mem_size = CONFIG_FB_GBE_MEM * 1024*1024;
6667
static void *gbe_mem;
6768
static dma_addr_t gbe_dma_addr;
68-
static unsigned long gbe_mem_phys;
69+
static phys_addr_t gbe_mem_phys;
6970

7071
static struct {
7172
uint16_t *cpu;
@@ -1183,7 +1184,7 @@ static int gbefb_probe(struct platform_device *p_dev)
11831184
goto out_release_mem_region;
11841185
}
11851186

1186-
gbe_mem_phys = (unsigned long) gbe_dma_addr;
1187+
gbe_mem_phys = dma_to_phys(&p_dev->dev, gbe_dma_addr);
11871188
}
11881189

11891190
par = info->par;

drivers/video/fbdev/gxt4500.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ static int gxt4500_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
704704
}
705705
info->var = var;
706706
if (gxt4500_set_par(info)) {
707-
printk(KERN_ERR "gxt4500: cannot set video mode\n");
707+
dev_err(&pdev->dev, "cannot set video mode\n");
708708
goto err_free_cmap;
709709
}
710710

drivers/video/fbdev/i810/i810_main.c

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ static int i810_check_params(struct fb_var_screeninfo *var,
10121012
var->bits_per_pixel);
10131013
vidmem = line_length * info->var.yres;
10141014
if (vxres < var->xres) {
1015-
printk("i810fb: required video memory, "
1015+
dev_info(&par->dev->dev, "required video memory, "
10161016
"%d bytes, for %dx%d-%d (virtual) "
10171017
"is out of range\n",
10181018
vidmem, vxres, vyres,
@@ -1067,9 +1067,9 @@ static int i810_check_params(struct fb_var_screeninfo *var,
10671067
|(info->monspecs.hfmax-HFMAX)
10681068
|(info->monspecs.vfmin-VFMIN)
10691069
|(info->monspecs.vfmax-VFMAX);
1070-
printk("i810fb: invalid video mode%s\n",
1071-
default_sync ? "" : ". Specifying "
1072-
"vsyncN/hsyncN parameters may help");
1070+
dev_err(&par->dev->dev, "invalid video mode%s\n",
1071+
default_sync ? "" : ". Specifying "
1072+
"vsyncN/hsyncN parameters may help");
10731073
retval = -EINVAL;
10741074
}
10751075
}
@@ -1674,34 +1674,34 @@ static int i810_alloc_agp_mem(struct fb_info *info)
16741674
size = par->fb.size + par->iring.size;
16751675

16761676
if (!(bridge = agp_backend_acquire(par->dev))) {
1677-
printk("i810fb_alloc_fbmem: cannot acquire agpgart\n");
1677+
dev_warn(&par->dev->dev, "cannot acquire agpgart\n");
16781678
return -ENODEV;
16791679
}
16801680
if (!(par->i810_gtt.i810_fb_memory =
16811681
agp_allocate_memory(bridge, size >> 12, AGP_NORMAL_MEMORY))) {
1682-
printk("i810fb_alloc_fbmem: can't allocate framebuffer "
1682+
dev_warn(&par->dev->dev, "can't allocate framebuffer "
16831683
"memory\n");
16841684
agp_backend_release(bridge);
16851685
return -ENOMEM;
16861686
}
16871687
if (agp_bind_memory(par->i810_gtt.i810_fb_memory,
16881688
par->fb.offset)) {
1689-
printk("i810fb_alloc_fbmem: can't bind framebuffer memory\n");
1689+
dev_warn(&par->dev->dev, "can't bind framebuffer memory\n");
16901690
agp_backend_release(bridge);
16911691
return -EBUSY;
16921692
}
16931693

16941694
if (!(par->i810_gtt.i810_cursor_memory =
16951695
agp_allocate_memory(bridge, par->cursor_heap.size >> 12,
16961696
AGP_PHYSICAL_MEMORY))) {
1697-
printk("i810fb_alloc_cursormem: can't allocate "
1697+
dev_warn(&par->dev->dev, "can't allocate "
16981698
"cursor memory\n");
16991699
agp_backend_release(bridge);
17001700
return -ENOMEM;
17011701
}
17021702
if (agp_bind_memory(par->i810_gtt.i810_cursor_memory,
17031703
par->cursor_heap.offset)) {
1704-
printk("i810fb_alloc_cursormem: cannot bind cursor memory\n");
1704+
dev_warn(&par->dev->dev, "cannot bind cursor memory\n");
17051705
agp_backend_release(bridge);
17061706
return -EBUSY;
17071707
}
@@ -1844,7 +1844,7 @@ static int i810_allocate_pci_resource(struct i810fb_par *par,
18441844
int err;
18451845

18461846
if ((err = pci_enable_device(par->dev))) {
1847-
printk("i810fb_init: cannot enable device\n");
1847+
dev_err(&par->dev->dev, "cannot enable device\n");
18481848
return err;
18491849
}
18501850
par->res_flags |= PCI_DEVICE_ENABLED;
@@ -1859,37 +1859,37 @@ static int i810_allocate_pci_resource(struct i810fb_par *par,
18591859
par->mmio_start_phys = pci_resource_start(par->dev, 0);
18601860
}
18611861
if (!par->aperture.size) {
1862-
printk("i810fb_init: device is disabled\n");
1862+
dev_warn(&par->dev->dev, "device is disabled\n");
18631863
return -ENOMEM;
18641864
}
18651865

18661866
if (!request_mem_region(par->aperture.physical,
18671867
par->aperture.size,
18681868
i810_pci_list[entry->driver_data])) {
1869-
printk("i810fb_init: cannot request framebuffer region\n");
1869+
dev_warn(&par->dev->dev, "cannot request framebuffer region\n");
18701870
return -ENODEV;
18711871
}
18721872
par->res_flags |= FRAMEBUFFER_REQ;
18731873

18741874
par->aperture.virtual = ioremap_wc(par->aperture.physical,
18751875
par->aperture.size);
18761876
if (!par->aperture.virtual) {
1877-
printk("i810fb_init: cannot remap framebuffer region\n");
1877+
dev_warn(&par->dev->dev, "cannot remap framebuffer region\n");
18781878
return -ENODEV;
18791879
}
18801880

18811881
if (!request_mem_region(par->mmio_start_phys,
18821882
MMIO_SIZE,
18831883
i810_pci_list[entry->driver_data])) {
1884-
printk("i810fb_init: cannot request mmio region\n");
1884+
dev_warn(&par->dev->dev, "cannot request mmio region\n");
18851885
return -ENODEV;
18861886
}
18871887
par->res_flags |= MMIO_REQ;
18881888

18891889
par->mmio_start_virtual = ioremap(par->mmio_start_phys,
18901890
MMIO_SIZE);
18911891
if (!par->mmio_start_virtual) {
1892-
printk("i810fb_init: cannot remap mmio region\n");
1892+
dev_warn(&par->dev->dev, "cannot remap mmio region\n");
18931893
return -ENODEV;
18941894
}
18951895

@@ -1921,12 +1921,12 @@ static void i810fb_find_init_mode(struct fb_info *info)
19211921
}
19221922

19231923
if (!err)
1924-
printk("i810fb_init_pci: DDC probe successful\n");
1924+
dev_info(&par->dev->dev, "DDC probe successful\n");
19251925

19261926
fb_edid_to_monspecs(par->edid, specs);
19271927

19281928
if (specs->modedb == NULL)
1929-
printk("i810fb_init_pci: Unable to get Mode Database\n");
1929+
dev_info(&par->dev->dev, "Unable to get Mode Database\n");
19301930

19311931
fb_videomode_to_modelist(specs->modedb, specs->modedb_len,
19321932
&info->modelist);
@@ -2072,7 +2072,7 @@ static int i810fb_init_pci(struct pci_dev *dev,
20722072

20732073
if (err < 0) {
20742074
i810fb_release_resource(info, par);
2075-
printk("i810fb_init: cannot register framebuffer device\n");
2075+
dev_warn(&par->dev->dev, "cannot register framebuffer device\n");
20762076
return err;
20772077
}
20782078

@@ -2084,10 +2084,10 @@ static int i810fb_init_pci(struct pci_dev *dev,
20842084
vfreq = hfreq/(info->var.yres + info->var.upper_margin +
20852085
info->var.vsync_len + info->var.lower_margin);
20862086

2087-
printk("I810FB: fb%d : %s v%d.%d.%d%s\n"
2088-
"I810FB: Video RAM : %dK\n"
2089-
"I810FB: Monitor : H: %d-%d KHz V: %d-%d Hz\n"
2090-
"I810FB: Mode : %dx%d-%dbpp@%dHz\n",
2087+
dev_info(&par->dev->dev, "fb%d : %s v%d.%d.%d%s\n"
2088+
"Video RAM : %dK\n"
2089+
"Monitor : H: %d-%d KHz V: %d-%d Hz\n"
2090+
"Mode : %dx%d-%dbpp@%dHz\n",
20912091
info->node,
20922092
i810_pci_list[entry->driver_data],
20932093
VERSION_MAJOR, VERSION_MINOR, VERSION_TEENIE, BRANCH_VERSION,
@@ -2137,7 +2137,7 @@ static void i810fb_remove_pci(struct pci_dev *dev)
21372137

21382138
unregister_framebuffer(info);
21392139
i810fb_release_resource(info, par);
2140-
printk("cleanup_module: unloaded i810 framebuffer device\n");
2140+
dev_info(&par->dev->dev, "unloaded i810 framebuffer device\n");
21412141
}
21422142

21432143
#ifndef MODULE

drivers/video/fbdev/pxafb.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -419,12 +419,12 @@ static int pxafb_adjust_timing(struct pxafb_info *fbi,
419419
var->yres = max_t(int, var->yres, MIN_YRES);
420420

421421
if (!(fbi->lccr0 & LCCR0_LCDT)) {
422-
clamp_val(var->hsync_len, 1, 64);
423-
clamp_val(var->vsync_len, 1, 64);
424-
clamp_val(var->left_margin, 1, 255);
425-
clamp_val(var->right_margin, 1, 255);
426-
clamp_val(var->upper_margin, 1, 255);
427-
clamp_val(var->lower_margin, 1, 255);
422+
var->hsync_len = clamp(var->hsync_len, 1, 64);
423+
var->vsync_len = clamp(var->vsync_len, 1, 64);
424+
var->left_margin = clamp(var->left_margin, 1, 255);
425+
var->right_margin = clamp(var->right_margin, 1, 255);
426+
var->upper_margin = clamp(var->upper_margin, 1, 255);
427+
var->lower_margin = clamp(var->lower_margin, 1, 255);
428428
}
429429

430430
/* make sure each line is aligned on word boundary */

drivers/video/fbdev/ssd1307fb.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ static int ssd1307fb_probe(struct i2c_client *client)
680680
if (!ssd1307fb_defio) {
681681
dev_err(dev, "Couldn't allocate deferred io.\n");
682682
ret = -ENOMEM;
683-
goto fb_alloc_error;
683+
goto fb_defio_error;
684684
}
685685

686686
ssd1307fb_defio->delay = HZ / refreshrate;
@@ -757,6 +757,8 @@ static int ssd1307fb_probe(struct i2c_client *client)
757757
regulator_disable(par->vbat_reg);
758758
reset_oled_error:
759759
fb_deferred_io_cleanup(info);
760+
fb_defio_error:
761+
__free_pages(vmem, get_order(vmem_size));
760762
fb_alloc_error:
761763
framebuffer_release(info);
762764
return ret;

drivers/video/fbdev/tcx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ static int tcx_probe(struct platform_device *op)
428428
j = i;
429429
break;
430430
}
431-
par->mmap_map[i].poff = op->resource[j].start;
431+
par->mmap_map[i].poff = op->resource[j].start - info->fix.smem_start;
432432
}
433433

434434
info->fbops = &tcx_ops;

drivers/video/fbdev/tridentfb.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1631,7 +1631,7 @@ static int trident_pci_probe(struct pci_dev *dev,
16311631
}
16321632

16331633
if (noaccel) {
1634-
printk(KERN_DEBUG "disabling acceleration\n");
1634+
dev_dbg(&dev->dev, "disabling acceleration\n");
16351635
info->flags |= FBINFO_HWACCEL_DISABLED;
16361636
info->pixmap.scan_align = 1;
16371637
}
@@ -1693,7 +1693,7 @@ static int trident_pci_probe(struct pci_dev *dev,
16931693
info->var.activate |= FB_ACTIVATE_NOW;
16941694
info->device = &dev->dev;
16951695
if (register_framebuffer(info) < 0) {
1696-
printk(KERN_ERR "tridentfb: could not register framebuffer\n");
1696+
dev_err(&dev->dev, "could not register framebuffer\n");
16971697
fb_dealloc_cmap(&info->cmap);
16981698
err = -EINVAL;
16991699
goto out_unmap2;

drivers/video/fbdev/vesafb.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,8 @@ static int vesafb_probe(struct platform_device *dev)
314314
#endif
315315

316316
if (!request_mem_region(vesafb_fix.smem_start, size_total, "vesafb")) {
317-
printk(KERN_WARNING
318-
"vesafb: cannot reserve video memory at 0x%lx\n",
317+
dev_warn(&dev->dev,
318+
"cannot reserve video memory at 0x%lx\n",
319319
vesafb_fix.smem_start);
320320
/* We cannot make this fatal. Sometimes this comes from magic
321321
spaces our resource handlers simply don't know about */
@@ -333,12 +333,12 @@ static int vesafb_probe(struct platform_device *dev)
333333
par->base = si->lfb_base;
334334
par->size = size_total;
335335

336-
printk(KERN_INFO "vesafb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
336+
dev_info(&dev->dev, "mode is %dx%dx%d, linelength=%d, pages=%d\n",
337337
vesafb_defined.xres, vesafb_defined.yres, vesafb_defined.bits_per_pixel,
338338
vesafb_fix.line_length, si->pages);
339339

340340
if (si->vesapm_seg) {
341-
printk(KERN_INFO "vesafb: protected mode interface info at %04x:%04x\n",
341+
dev_info(&dev->dev, "protected mode interface info at %04x:%04x\n",
342342
si->vesapm_seg, si->vesapm_off);
343343
}
344344

@@ -352,9 +352,10 @@ static int vesafb_probe(struct platform_device *dev)
352352
pmi_base = (unsigned short *)phys_to_virt(pmi_phys);
353353
pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
354354
pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
355-
printk(KERN_INFO "vesafb: pmi: set display start = %p, set palette = %p\n",pmi_start,pmi_pal);
355+
dev_info(&dev->dev, "pmi: set display start = %p, set palette = %p\n",
356+
pmi_start, pmi_pal);
356357
if (pmi_base[3]) {
357-
printk(KERN_INFO "vesafb: pmi: ports = ");
358+
dev_info(&dev->dev, "pmi: ports = ");
358359
for (i = pmi_base[3]/2; pmi_base[i] != 0xffff; i++)
359360
printk("%x ", pmi_base[i]);
360361
printk("\n");
@@ -365,25 +366,25 @@ static int vesafb_probe(struct platform_device *dev)
365366
* Rules are: we have to set up a descriptor for the requested
366367
* memory area and pass it in the ES register to the BIOS function.
367368
*/
368-
printk(KERN_INFO "vesafb: can't handle memory requests, pmi disabled\n");
369+
dev_info(&dev->dev, "can't handle memory requests, pmi disabled\n");
369370
ypan = pmi_setpal = 0;
370371
}
371372
}
372373
}
373374

374375
if (vesafb_defined.bits_per_pixel == 8 && !pmi_setpal && !vga_compat) {
375-
printk(KERN_WARNING "vesafb: hardware palette is unchangeable,\n"
376+
dev_warn(&dev->dev, "hardware palette is unchangeable,\n"
376377
" colors may be incorrect\n");
377378
vesafb_fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
378379
}
379380

380381
vesafb_defined.xres_virtual = vesafb_defined.xres;
381382
vesafb_defined.yres_virtual = vesafb_fix.smem_len / vesafb_fix.line_length;
382383
if (ypan && vesafb_defined.yres_virtual > vesafb_defined.yres) {
383-
printk(KERN_INFO "vesafb: scrolling: %s using protected mode interface, yres_virtual=%d\n",
384+
dev_info(&dev->dev, "scrolling: %s using protected mode interface, yres_virtual=%d\n",
384385
(ypan > 1) ? "ywrap" : "ypan",vesafb_defined.yres_virtual);
385386
} else {
386-
printk(KERN_INFO "vesafb: scrolling: redraw\n");
387+
dev_info(&dev->dev, "scrolling: redraw\n");
387388
vesafb_defined.yres_virtual = vesafb_defined.yres;
388389
ypan = 0;
389390
}
@@ -410,7 +411,7 @@ static int vesafb_probe(struct platform_device *dev)
410411
vesafb_defined.bits_per_pixel;
411412
}
412413

413-
printk(KERN_INFO "vesafb: %s: "
414+
dev_info(&dev->dev, "%s: "
414415
"size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
415416
(vesafb_defined.bits_per_pixel > 8) ?
416417
"Truecolor" : (vga_compat || pmi_setpal) ?
@@ -453,14 +454,14 @@ static int vesafb_probe(struct platform_device *dev)
453454
}
454455

455456
if (!info->screen_base) {
456-
printk(KERN_ERR
457-
"vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
457+
dev_err(&dev->dev,
458+
"abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
458459
vesafb_fix.smem_len, vesafb_fix.smem_start);
459460
err = -EIO;
460461
goto err_release_region;
461462
}
462463

463-
printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, "
464+
dev_info(&dev->dev, "framebuffer at 0x%lx, mapped to 0x%p, "
464465
"using %dk, total %dk\n",
465466
vesafb_fix.smem_start, info->screen_base,
466467
size_remap/1024, size_total/1024);

0 commit comments

Comments
 (0)