mb862xxfbdrv.c (bf1842996aaa726bf3d108b41f366b88680acbe6) | mb862xxfbdrv.c (e035a53e7b048ebd52fe8c46a2c7bc4e7e685ba3) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * drivers/mb862xx/mb862xxfb.c 4 * 5 * Fujitsu Carmine/Coral-P(A)/Lime framebuffer driver 6 * 7 * (C) 2008 Anatolij Gustschin <agust@denx.de> 8 * DENX Software Engineering --- 4 unchanged lines hidden (view full) --- 13#include <linux/aperture.h> 14#include <linux/fb.h> 15#include <linux/delay.h> 16#include <linux/uaccess.h> 17#include <linux/module.h> 18#include <linux/init.h> 19#include <linux/interrupt.h> 20#include <linux/pci.h> | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * drivers/mb862xx/mb862xxfb.c 4 * 5 * Fujitsu Carmine/Coral-P(A)/Lime framebuffer driver 6 * 7 * (C) 2008 Anatolij Gustschin <agust@denx.de> 8 * DENX Software Engineering --- 4 unchanged lines hidden (view full) --- 13#include <linux/aperture.h> 14#include <linux/fb.h> 15#include <linux/delay.h> 16#include <linux/uaccess.h> 17#include <linux/module.h> 18#include <linux/init.h> 19#include <linux/interrupt.h> 20#include <linux/pci.h> |
21#include <linux/of.h> | 21#if defined(CONFIG_OF) |
22#include <linux/of_address.h> 23#include <linux/of_irq.h> | 22#include <linux/of_address.h> 23#include <linux/of_irq.h> |
24#include <linux/platform_device.h> 25 | 24#include <linux/of_platform.h> 25#endif |
26#include "mb862xxfb.h" 27#include "mb862xx_reg.h" 28 29#define NR_PALETTE 256 30#define MB862XX_MEM_SIZE 0x1000000 31#define CORALP_MEM_SIZE 0x2000000 32#define CARMINE_MEM_SIZE 0x8000000 33#define DRV_NAME "mb862xxfb" --- 73 unchanged lines hidden (view full) --- 107 return 0; 108} 109 110static int mb862xxfb_check_var(struct fb_var_screeninfo *var, 111 struct fb_info *fbi) 112{ 113 unsigned long tmp; 114 | 26#include "mb862xxfb.h" 27#include "mb862xx_reg.h" 28 29#define NR_PALETTE 256 30#define MB862XX_MEM_SIZE 0x1000000 31#define CORALP_MEM_SIZE 0x2000000 32#define CARMINE_MEM_SIZE 0x8000000 33#define DRV_NAME "mb862xxfb" --- 73 unchanged lines hidden (view full) --- 107 return 0; 108} 109 110static int mb862xxfb_check_var(struct fb_var_screeninfo *var, 111 struct fb_info *fbi) 112{ 113 unsigned long tmp; 114 |
115 if (fbi->dev) 116 dev_dbg(fbi->dev, "%s\n", __func__); | 115 fb_dbg(fbi, "%s\n", __func__); |
117 118 /* check if these values fit into the registers */ 119 if (var->hsync_len > 255 || var->vsync_len > 255) 120 return -EINVAL; 121 122 if ((var->xres + var->right_margin) >= 4096) 123 return -EINVAL; 124 --- 160 unchanged lines hidden (view full) --- 285 return 0; 286} 287 288static int mb862xxfb_blank(int mode, struct fb_info *fbi) 289{ 290 struct mb862xxfb_par *par = fbi->par; 291 unsigned long reg; 292 | 116 117 /* check if these values fit into the registers */ 118 if (var->hsync_len > 255 || var->vsync_len > 255) 119 return -EINVAL; 120 121 if ((var->xres + var->right_margin) >= 4096) 122 return -EINVAL; 123 --- 160 unchanged lines hidden (view full) --- 284 return 0; 285} 286 287static int mb862xxfb_blank(int mode, struct fb_info *fbi) 288{ 289 struct mb862xxfb_par *par = fbi->par; 290 unsigned long reg; 291 |
293 dev_dbg(fbi->dev, "blank mode=%d\n", mode); | 292 fb_dbg(fbi, "blank mode=%d\n", mode); |
294 295 switch (mode) { 296 case FB_BLANK_POWERDOWN: 297 reg = inreg(disp, GC_DCM1); 298 reg &= ~GC_DCM01_DEN; 299 outreg(disp, GC_DCM1, reg); 300 break; 301 case FB_BLANK_UNBLANK: --- 101 unchanged lines hidden (view full) --- 403 return -EINVAL; 404 } 405 return 0; 406} 407 408/* framebuffer ops */ 409static struct fb_ops mb862xxfb_ops = { 410 .owner = THIS_MODULE, | 293 294 switch (mode) { 295 case FB_BLANK_POWERDOWN: 296 reg = inreg(disp, GC_DCM1); 297 reg &= ~GC_DCM01_DEN; 298 outreg(disp, GC_DCM1, reg); 299 break; 300 case FB_BLANK_UNBLANK: --- 101 unchanged lines hidden (view full) --- 402 return -EINVAL; 403 } 404 return 0; 405} 406 407/* framebuffer ops */ 408static struct fb_ops mb862xxfb_ops = { 409 .owner = THIS_MODULE, |
410 FB_DEFAULT_IOMEM_OPS, |
|
411 .fb_check_var = mb862xxfb_check_var, 412 .fb_set_par = mb862xxfb_set_par, 413 .fb_setcolreg = mb862xxfb_setcolreg, 414 .fb_blank = mb862xxfb_blank, 415 .fb_pan_display = mb862xxfb_pan, | 411 .fb_check_var = mb862xxfb_check_var, 412 .fb_set_par = mb862xxfb_set_par, 413 .fb_setcolreg = mb862xxfb_setcolreg, 414 .fb_blank = mb862xxfb_blank, 415 .fb_pan_display = mb862xxfb_pan, |
416 .fb_fillrect = cfb_fillrect, 417 .fb_copyarea = cfb_copyarea, 418 .fb_imageblit = cfb_imageblit, | |
419 .fb_ioctl = mb862xxfb_ioctl, 420}; 421 422/* initialize fb_info data */ 423static int mb862xxfb_init_fbinfo(struct fb_info *fbi) 424{ 425 struct mb862xxfb_par *par = fbi->par; 426 struct mb862xx_gc_mode *mode = par->gc_mode; --- 70 unchanged lines hidden (view full) --- 497 fbi->var.yoffset = 0; 498 fbi->var.grayscale = 0; 499 fbi->var.nonstd = 0; 500 fbi->var.height = -1; 501 fbi->var.width = -1; 502 fbi->var.accel_flags = 0; 503 fbi->var.vmode = FB_VMODE_NONINTERLACED; 504 fbi->var.activate = FB_ACTIVATE_NOW; | 416 .fb_ioctl = mb862xxfb_ioctl, 417}; 418 419/* initialize fb_info data */ 420static int mb862xxfb_init_fbinfo(struct fb_info *fbi) 421{ 422 struct mb862xxfb_par *par = fbi->par; 423 struct mb862xx_gc_mode *mode = par->gc_mode; --- 70 unchanged lines hidden (view full) --- 494 fbi->var.yoffset = 0; 495 fbi->var.grayscale = 0; 496 fbi->var.nonstd = 0; 497 fbi->var.height = -1; 498 fbi->var.width = -1; 499 fbi->var.accel_flags = 0; 500 fbi->var.vmode = FB_VMODE_NONINTERLACED; 501 fbi->var.activate = FB_ACTIVATE_NOW; |
505 fbi->flags = FBINFO_DEFAULT | | 502 fbi->flags = |
506#ifdef __BIG_ENDIAN 507 FBINFO_FOREIGN_ENDIAN | 508#endif 509 FBINFO_HWACCEL_XPAN | 510 FBINFO_HWACCEL_YPAN; 511 512 /* check and possibly fix bpp */ 513 if ((fbi->fbops->fb_check_var)(&fbi->var, fbi)) --- 272 unchanged lines hidden (view full) --- 786 787static void of_platform_mb862xx_remove(struct platform_device *ofdev) 788{ 789 struct fb_info *fbi = dev_get_drvdata(&ofdev->dev); 790 struct mb862xxfb_par *par = fbi->par; 791 resource_size_t res_size = resource_size(par->res); 792 unsigned long reg; 793 | 503#ifdef __BIG_ENDIAN 504 FBINFO_FOREIGN_ENDIAN | 505#endif 506 FBINFO_HWACCEL_XPAN | 507 FBINFO_HWACCEL_YPAN; 508 509 /* check and possibly fix bpp */ 510 if ((fbi->fbops->fb_check_var)(&fbi->var, fbi)) --- 272 unchanged lines hidden (view full) --- 783 784static void of_platform_mb862xx_remove(struct platform_device *ofdev) 785{ 786 struct fb_info *fbi = dev_get_drvdata(&ofdev->dev); 787 struct mb862xxfb_par *par = fbi->par; 788 resource_size_t res_size = resource_size(par->res); 789 unsigned long reg; 790 |
794 dev_dbg(fbi->dev, "%s release\n", fbi->fix.id); | 791 fb_dbg(fbi, "%s release\n", fbi->fix.id); |
795 796 /* display off */ 797 reg = inreg(disp, GC_DCM1); 798 reg &= ~(GC_DCM01_DEN | GC_DCM01_L0E); 799 outreg(disp, GC_DCM1, reg); 800 801 /* disable interrupts */ 802 outreg(host, GC_IMASK, 0); --- 330 unchanged lines hidden (view full) --- 1133} 1134 1135static void mb862xx_pci_remove(struct pci_dev *pdev) 1136{ 1137 struct fb_info *fbi = pci_get_drvdata(pdev); 1138 struct mb862xxfb_par *par = fbi->par; 1139 unsigned long reg; 1140 | 792 793 /* display off */ 794 reg = inreg(disp, GC_DCM1); 795 reg &= ~(GC_DCM01_DEN | GC_DCM01_L0E); 796 outreg(disp, GC_DCM1, reg); 797 798 /* disable interrupts */ 799 outreg(host, GC_IMASK, 0); --- 330 unchanged lines hidden (view full) --- 1130} 1131 1132static void mb862xx_pci_remove(struct pci_dev *pdev) 1133{ 1134 struct fb_info *fbi = pci_get_drvdata(pdev); 1135 struct mb862xxfb_par *par = fbi->par; 1136 unsigned long reg; 1137 |
1141 dev_dbg(fbi->dev, "%s release\n", fbi->fix.id); | 1138 fb_dbg(fbi, "%s release\n", fbi->fix.id); |
1142 1143 /* display off */ 1144 reg = inreg(disp, GC_DCM1); 1145 reg &= ~(GC_DCM01_DEN | GC_DCM01_L0E); 1146 outreg(disp, GC_DCM1, reg); 1147 1148 if (par->type == BT_CARMINE) { 1149 outreg(ctrl, GC_CTRL_INT_MASK, 0); --- 61 unchanged lines hidden --- | 1139 1140 /* display off */ 1141 reg = inreg(disp, GC_DCM1); 1142 reg &= ~(GC_DCM01_DEN | GC_DCM01_L0E); 1143 outreg(disp, GC_DCM1, reg); 1144 1145 if (par->type == BT_CARMINE) { 1146 outreg(ctrl, GC_CTRL_INT_MASK, 0); --- 61 unchanged lines hidden --- |