Skip to content

Commit

Permalink
Merge tag 'fbdev-4.6' of git://git.kernel.org/pub/scm/linux/kernel/gi…
Browse files Browse the repository at this point in the history
…t/tomba/linux

Pull fbdev updates from Tomi Valkeinen:

 - Miscallaneous small fixes to various fbdev drivers

 - Remove fb_rotate, which was never used

 - pmag fb improvements

* tag 'fbdev-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (21 commits)
  xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND"
  video: fbdev: sis: remove unused variable
  drivers/video: make fbdev/sunxvr2500.c explicitly non-modular
  drivers/video: make fbdev/sunxvr1000.c explicitly non-modular
  drivers/video: make fbdev/sunxvr500.c explicitly non-modular
  video: exynos: fix modular build
  fbdev: da8xx-fb: fix videomodes of lcd panels
  fbdev: kill fb_rotate
  video: fbdev: bt431: Correct cursor format control macro
  video: fbdev: pmag-ba-fb: Optimize Bt455 colormap addressing
  video: fbdev: pmag-ba-fb: Fix and rework Bt455 colormap handling
  video: fbdev: bt455: Remove unneeded colormap helpers for cursor support
  video: fbdev: pmag-aa-fb: Report video timings
  video: fbdev: pmag-aa-fb: Enable building as a module
  video: fbdev: pmag-aa-fb: Adapt to current APIs
  video: fbdev: pmag-ba-fb: Fix the lower margin size
  fbdev: sh_mobile_lcdc: Use ARCH_RENESAS
  fbdev: n411: check return value
  fbdev: exynos: fix IS_ERR_VALUE usage
  video: Use bool instead int pointer for get_opt_bool() argument
  ...
  • Loading branch information
torvalds committed Mar 17, 2016
2 parents bace3db + 13aa38e commit 09fd671
Show file tree
Hide file tree
Showing 22 changed files with 310 additions and 681 deletions.
7 changes: 3 additions & 4 deletions drivers/video/fbdev/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1808,8 +1808,8 @@ config FB_HIT
frame buffer card.

config FB_PMAG_AA
bool "PMAG-AA TURBOchannel framebuffer support"
depends on (FB = y) && TC
tristate "PMAG-AA TURBOchannel framebuffer support"
depends on FB && TC
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
Expand Down Expand Up @@ -1985,7 +1985,7 @@ config FB_W100

config FB_SH_MOBILE_LCDC
tristate "SuperH Mobile LCDC framebuffer support"
depends on FB && (SUPERH || ARCH_SHMOBILE) && HAVE_CLK
depends on FB && (SUPERH || ARCH_RENESAS) && HAVE_CLK
depends on FB_SH_MOBILE_MERAM || !FB_SH_MOBILE_MERAM
select FB_SYS_FILLRECT
select FB_SYS_COPYAREA
Expand Down Expand Up @@ -2246,7 +2246,6 @@ config XEN_FBDEV_FRONTEND
select FB_SYS_IMAGEBLIT
select FB_SYS_FOPS
select FB_DEFERRED_IO
select INPUT_XEN_KBDDEV_FRONTEND if INPUT_MISC
select XEN_XENBUS_FRONTEND
default y
help
Expand Down
3 changes: 0 additions & 3 deletions drivers/video/fbdev/atafb.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,6 @@ extern unsigned char fontdata_8x16[];
* * Draws cursor *
* int (*fb_cursor) (struct fb_info *info, struct fb_cursor *cursor);
*
* * Rotates the display *
* void (*fb_rotate)(struct fb_info *info, int angle);
*
* * wait for blit idle, optional *
* int (*fb_sync)(struct fb_info *info);
*
Expand Down
22 changes: 0 additions & 22 deletions drivers/video/fbdev/au1100fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,27 +334,6 @@ int au1100fb_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *fbi)
return 0;
}

/* fb_rotate
* Rotate the display of this angle. This doesn't seems to be used by the core,
* but as our hardware supports it, so why not implementing it...
*/
void au1100fb_fb_rotate(struct fb_info *fbi, int angle)
{
struct au1100fb_device *fbdev = to_au1100fb_device(fbi);

print_dbg("fb_rotate %p %d", fbi, angle);

if (fbdev && (angle > 0) && !(angle % 90)) {

fbdev->regs->lcd_control &= ~LCD_CONTROL_GO;

fbdev->regs->lcd_control &= ~(LCD_CONTROL_SM_MASK);
fbdev->regs->lcd_control |= ((angle/90) << LCD_CONTROL_SM_BIT);

fbdev->regs->lcd_control |= LCD_CONTROL_GO;
}
}

/* fb_mmap
* Map video memory in user space. We don't use the generic fb_mmap method mainly
* to allow the use of the TLB streaming flag (CCA=6)
Expand All @@ -380,7 +359,6 @@ static struct fb_ops au1100fb_ops =
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
.fb_rotate = au1100fb_fb_rotate,
.fb_mmap = au1100fb_fb_mmap,
};

Expand Down
23 changes: 0 additions & 23 deletions drivers/video/fbdev/bf537-lq035.c
Original file line number Diff line number Diff line change
Expand Up @@ -554,28 +554,6 @@ static int bfin_lq035_fb_check_var(struct fb_var_screeninfo *var,
return 0;
}

/* fb_rotate
* Rotate the display of this angle. This doesn't seems to be used by the core,
* but as our hardware supports it, so why not implementing it...
*/
static void bfin_lq035_fb_rotate(struct fb_info *fbi, int angle)
{
pr_debug("%s: %p %d", __func__, fbi, angle);
#if (defined(UD) && defined(LBR))
switch (angle) {

case 180:
gpio_set_value(LBR, 0);
gpio_set_value(UD, 1);
break;
default:
gpio_set_value(LBR, 1);
gpio_set_value(UD, 0);
break;
}
#endif
}

static int bfin_lq035_fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
{
if (nocursor)
Expand Down Expand Up @@ -623,7 +601,6 @@ static struct fb_ops bfin_lq035_fb_ops = {
.fb_open = bfin_lq035_fb_open,
.fb_release = bfin_lq035_fb_release,
.fb_check_var = bfin_lq035_fb_check_var,
.fb_rotate = bfin_lq035_fb_rotate,
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
Expand Down
43 changes: 24 additions & 19 deletions drivers/video/fbdev/bt431.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
* linux/drivers/video/bt431.h
*
* Copyright 2003 Thiemo Seufer <[email protected]>
* Copyright 2016 Maciej W. Rozycki <[email protected]>
*
* This file is subject to the terms and conditions of the GNU General
* Public License. See the file COPYING in the main directory of this
* archive for more details.
*/
#include <linux/types.h>

#define BT431_CURSOR_SIZE 64

/*
* Bt431 cursor generator registers, 32-bit aligned.
* Two twin Bt431 are used on the DECstation's PMAG-AA.
Expand Down Expand Up @@ -60,7 +63,7 @@ static inline u8 bt431_get_value(u16 val)
#define BT431_CMD_CURS_ENABLE 0x40
#define BT431_CMD_XHAIR_ENABLE 0x20
#define BT431_CMD_OR_CURSORS 0x10
#define BT431_CMD_AND_CURSORS 0x00
#define BT431_CMD_XOR_CURSORS 0x00
#define BT431_CMD_1_1_MUX 0x00
#define BT431_CMD_4_1_MUX 0x04
#define BT431_CMD_5_1_MUX 0x08
Expand Down Expand Up @@ -196,28 +199,30 @@ static inline void bt431_position_cursor(struct bt431_regs *regs, u16 x, u16 y)
bt431_write_reg_inc(regs, (y >> 8) & 0x0f); /* BT431_REG_CYHI */
}

static inline void bt431_set_font(struct bt431_regs *regs, u8 fgc,
u16 width, u16 height)
static inline void bt431_set_cursor(struct bt431_regs *regs,
const char *data, const char *mask,
u16 rop, u16 width, u16 height)
{
u16 x, y;
int i;
u16 fgp = fgc ? 0xffff : 0x0000;
u16 bgp = fgc ? 0x0000 : 0xffff;

i = 0;
width = DIV_ROUND_UP(width, 8);
bt431_select_reg(regs, BT431_REG_CRAM_BASE);
for (i = BT431_REG_CRAM_BASE; i <= BT431_REG_CRAM_END; i++) {
u16 value;

if (height << 6 <= i << 3)
value = bgp;
else if (width <= i % 8 << 3)
value = bgp;
else if (((width >> 3) & 0xffff) > i % 8)
value = fgp;
else
value = fgp & ~(bgp << (width % 8 << 1));

bt431_write_cmap_inc(regs, value);
}
for (y = 0; y < BT431_CURSOR_SIZE; y++)
for (x = 0; x < BT431_CURSOR_SIZE / 8; x++) {
u16 val = 0;

if (y < height && x < width) {
val = mask[i];
if (rop == ROP_XOR)
val = (val << 8) | (val ^ data[i]);
else
val = (val << 8) | (val & data[i]);
i++;
}
bt431_write_cmap_inc(regs, val);
}
}

static inline void bt431_init_cursor(struct bt431_regs *regs)
Expand Down
68 changes: 32 additions & 36 deletions drivers/video/fbdev/bt455.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* linux/drivers/video/bt455.h
*
* Copyright 2003 Thiemo Seufer <[email protected]>
* Copyright 2016 Maciej W. Rozycki <[email protected]>
*
* This file is subject to the terms and conditions of the GNU General
* Public License. See the file COPYING in the main directory of this
Expand Down Expand Up @@ -29,66 +30,61 @@ static inline void bt455_select_reg(struct bt455_regs *regs, int ir)
regs->addr_cmap = ir & 0x0f;
}

static inline void bt455_reset_reg(struct bt455_regs *regs)
{
mb();
regs->addr_clr = 0;
}

/*
* Read/write to a Bt455 color map register.
*/
static inline void bt455_read_cmap_entry(struct bt455_regs *regs, int cr,
u8* red, u8* green, u8* blue)
static inline void bt455_read_cmap_next(struct bt455_regs *regs, u8 *grey)
{
bt455_select_reg(regs, cr);
mb();
*red = regs->addr_cmap_data & 0x0f;
regs->addr_cmap_data;
rmb();
*green = regs->addr_cmap_data & 0x0f;
*grey = regs->addr_cmap_data & 0xf;
rmb();
*blue = regs->addr_cmap_data & 0x0f;
regs->addr_cmap_data;
}

static inline void bt455_write_cmap_entry(struct bt455_regs *regs, int cr,
u8 red, u8 green, u8 blue)
static inline void bt455_write_cmap_next(struct bt455_regs *regs, u8 grey)
{
bt455_select_reg(regs, cr);
wmb();
regs->addr_cmap_data = red & 0x0f;
regs->addr_cmap_data = 0x0;
wmb();
regs->addr_cmap_data = green & 0x0f;
regs->addr_cmap_data = grey & 0xf;
wmb();
regs->addr_cmap_data = blue & 0x0f;
regs->addr_cmap_data = 0x0;
}

static inline void bt455_write_ovly_entry(struct bt455_regs *regs, int cr,
u8 red, u8 green, u8 blue)
static inline void bt455_write_ovly_next(struct bt455_regs *regs, u8 grey)
{
bt455_select_reg(regs, cr);
wmb();
regs->addr_ovly = red & 0x0f;
regs->addr_ovly = 0x0;
wmb();
regs->addr_ovly = green & 0x0f;
regs->addr_ovly = grey & 0xf;
wmb();
regs->addr_ovly = blue & 0x0f;
regs->addr_ovly = 0x0;
}

static inline void bt455_set_cursor(struct bt455_regs *regs)
static inline void bt455_read_cmap_entry(struct bt455_regs *regs,
int cr, u8 *grey)
{
mb();
regs->addr_ovly = 0x0f;
wmb();
regs->addr_ovly = 0x0f;
wmb();
regs->addr_ovly = 0x0f;
bt455_select_reg(regs, cr);
bt455_read_cmap_next(regs, grey);
}

static inline void bt455_erase_cursor(struct bt455_regs *regs)
static inline void bt455_write_cmap_entry(struct bt455_regs *regs,
int cr, u8 grey)
{
/* bt455_write_cmap_entry(regs, 8, 0x00, 0x00, 0x00); */
/* bt455_write_cmap_entry(regs, 9, 0x00, 0x00, 0x00); */
bt455_write_ovly_entry(regs, 8, 0x03, 0x03, 0x03);
bt455_write_ovly_entry(regs, 9, 0x07, 0x07, 0x07);
bt455_select_reg(regs, cr);
bt455_write_cmap_next(regs, grey);
}

wmb();
regs->addr_ovly = 0x09;
wmb();
regs->addr_ovly = 0x09;
wmb();
regs->addr_ovly = 0x09;
static inline void bt455_write_ovly_entry(struct bt455_regs *regs, u8 grey)
{
bt455_reset_reg(regs);
bt455_write_ovly_next(regs, grey);
}
7 changes: 3 additions & 4 deletions drivers/video/fbdev/da8xx-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,7 @@ static struct fb_videomode known_lcd_panels[] = {
.lower_margin = 2,
.hsync_len = 0,
.vsync_len = 0,
.sync = FB_SYNC_CLK_INVERT |
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
.sync = FB_SYNC_CLK_INVERT,
},
/* Sharp LK043T1DG01 */
[1] = {
Expand All @@ -224,7 +223,7 @@ static struct fb_videomode known_lcd_panels[] = {
.lower_margin = 2,
.hsync_len = 41,
.vsync_len = 10,
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
.sync = 0,
.flag = 0,
},
[2] = {
Expand All @@ -239,7 +238,7 @@ static struct fb_videomode known_lcd_panels[] = {
.lower_margin = 10,
.hsync_len = 10,
.vsync_len = 10,
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
.sync = 0,
.flag = 0,
},
[3] = {
Expand Down
6 changes: 3 additions & 3 deletions drivers/video/fbdev/exynos/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#

menuconfig EXYNOS_VIDEO
bool "Exynos Video driver support"
tristate "Exynos Video driver support"
depends on ARCH_S5PV210 || ARCH_EXYNOS
help
This enables support for EXYNOS Video device.
Expand All @@ -15,13 +15,13 @@ if EXYNOS_VIDEO
#

config EXYNOS_MIPI_DSI
bool "EXYNOS MIPI DSI driver support."
tristate "EXYNOS MIPI DSI driver support."
select GENERIC_PHY
help
This enables support for MIPI-DSI device.

config EXYNOS_LCD_S6E8AX0
bool "S6E8AX0 MIPI AMOLED LCD Driver"
tristate "S6E8AX0 MIPI AMOLED LCD Driver"
depends on EXYNOS_MIPI_DSI && BACKLIGHT_CLASS_DEVICE
depends on (LCD_CLASS_DEVICE = y)
default n
Expand Down
6 changes: 4 additions & 2 deletions drivers/video/fbdev/exynos/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Makefile for the exynos video drivers.
#

obj-$(CONFIG_EXYNOS_MIPI_DSI) += exynos_mipi_dsi.o exynos_mipi_dsi_common.o \
exynos_mipi_dsi_lowlevel.o
obj-$(CONFIG_EXYNOS_MIPI_DSI) += exynos-mipi-dsi-mod.o

exynos-mipi-dsi-mod-objs += exynos_mipi_dsi.o exynos_mipi_dsi_common.o \
exynos_mipi_dsi_lowlevel.o
obj-$(CONFIG_EXYNOS_LCD_S6E8AX0) += s6e8ax0.o
7 changes: 4 additions & 3 deletions drivers/video/fbdev/exynos/exynos_mipi_dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ int exynos_mipi_dsi_register_lcd_driver(struct mipi_dsim_lcd_driver *lcd_drv)
return 0;

}
EXPORT_SYMBOL_GPL(exynos_mipi_dsi_register_lcd_driver);

static struct mipi_dsim_ddi *exynos_mipi_dsi_bind_lcd_ddi(
struct mipi_dsim_device *dsim,
Expand Down Expand Up @@ -402,12 +403,12 @@ static int exynos_mipi_dsi_probe(struct platform_device *pdev)
goto error;
}

dsim->irq = platform_get_irq(pdev, 0);
if (IS_ERR_VALUE(dsim->irq)) {
ret = platform_get_irq(pdev, 0);
if (ret < 0) {
dev_err(&pdev->dev, "failed to request dsim irq resource\n");
ret = -EINVAL;
goto error;
}
dsim->irq = ret;

init_completion(&dsim_wr_comp);
init_completion(&dsim_rd_comp);
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/fbdev/intelfb/intelfbdrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ static __inline__ int get_opt_int(const char *this_opt, const char *name,
}

static __inline__ int get_opt_bool(const char *this_opt, const char *name,
int *ret)
bool *ret)
{
if (!ret)
return 0;
Expand Down
Loading

0 comments on commit 09fd671

Please sign in to comment.