Commit 86fdf61e authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-misc-fixes-2020-10-01' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

drm-misc-fixes for v5.9:
- Small doc fix.
- Re-add FB_ARMCLCD for android.
- Fix global-out-of-bounds read in fbcon_get_font().
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/8585daa2-fcbc-3924-ac4f-e7b5668808e0@linux.intel.com
parents 549738f1 27204b99
...@@ -1460,6 +1460,11 @@ S: Odd Fixes ...@@ -1460,6 +1460,11 @@ S: Odd Fixes
F: drivers/amba/ F: drivers/amba/
F: include/linux/amba/bus.h F: include/linux/amba/bus.h
ARM PRIMECELL CLCD PL110 DRIVER
M: Russell King <linux@armlinux.org.uk>
S: Odd Fixes
F: drivers/video/fbdev/amba-clcd.*
ARM PRIMECELL KMI PL050 DRIVER ARM PRIMECELL KMI PL050 DRIVER
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Odd Fixes S: Odd Fixes
......
...@@ -35,12 +35,6 @@ ...@@ -35,12 +35,6 @@
#define FONT_DATA ((unsigned char *)font_vga_8x16.data) #define FONT_DATA ((unsigned char *)font_vga_8x16.data)
/* borrowed from fbcon.c */
#define REFCOUNT(fd) (((int *)(fd))[-1])
#define FNTSIZE(fd) (((int *)(fd))[-2])
#define FNTCHARCNT(fd) (((int *)(fd))[-3])
#define FONT_EXTRA_WORDS 3
static unsigned char *font_data[MAX_NR_CONSOLES]; static unsigned char *font_data[MAX_NR_CONSOLES];
static struct newport_regs *npregs; static struct newport_regs *npregs;
...@@ -522,6 +516,7 @@ static int newport_set_font(int unit, struct console_font *op) ...@@ -522,6 +516,7 @@ static int newport_set_font(int unit, struct console_font *op)
FNTSIZE(new_data) = size; FNTSIZE(new_data) = size;
FNTCHARCNT(new_data) = op->charcount; FNTCHARCNT(new_data) = op->charcount;
REFCOUNT(new_data) = 0; /* usage counter */ REFCOUNT(new_data) = 0; /* usage counter */
FNTSUM(new_data) = 0;
p = new_data; p = new_data;
for (i = 0; i < op->charcount; i++) { for (i = 0; i < op->charcount; i++) {
......
...@@ -272,6 +272,26 @@ config FB_PM2_FIFO_DISCONNECT ...@@ -272,6 +272,26 @@ config FB_PM2_FIFO_DISCONNECT
help help
Support the Permedia2 FIFO disconnect feature. Support the Permedia2 FIFO disconnect feature.
config FB_ARMCLCD
tristate "ARM PrimeCell PL110 support"
depends on ARM || ARM64 || COMPILE_TEST
depends on FB && ARM_AMBA && HAS_IOMEM
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
select FB_MODE_HELPERS if OF
select VIDEOMODE_HELPERS if OF
select BACKLIGHT_CLASS_DEVICE if OF
help
This framebuffer device driver is for the ARM PrimeCell PL110
Colour LCD controller. ARM PrimeCells provide the building
blocks for System on a Chip devices.
If you want to compile this as a module (=code which can be
inserted into and removed from the running kernel), say M
here and read <file:Documentation/kbuild/modules.rst>. The module
will be called amba-clcd.
config FB_ACORN config FB_ACORN
bool "Acorn VIDC support" bool "Acorn VIDC support"
depends on (FB = y) && ARM && ARCH_ACORN depends on (FB = y) && ARM && ARCH_ACORN
......
...@@ -75,6 +75,7 @@ obj-$(CONFIG_FB_HIT) += hitfb.o ...@@ -75,6 +75,7 @@ obj-$(CONFIG_FB_HIT) += hitfb.o
obj-$(CONFIG_FB_ATMEL) += atmel_lcdfb.o obj-$(CONFIG_FB_ATMEL) += atmel_lcdfb.o
obj-$(CONFIG_FB_PVR2) += pvr2fb.o obj-$(CONFIG_FB_PVR2) += pvr2fb.o
obj-$(CONFIG_FB_VOODOO1) += sstfb.o obj-$(CONFIG_FB_VOODOO1) += sstfb.o
obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o
obj-$(CONFIG_FB_GOLDFISH) += goldfishfb.o obj-$(CONFIG_FB_GOLDFISH) += goldfishfb.o
obj-$(CONFIG_FB_68328) += 68328fb.o obj-$(CONFIG_FB_68328) += 68328fb.o
obj-$(CONFIG_FB_GBE) += gbefb.o obj-$(CONFIG_FB_GBE) += gbefb.o
......
This diff is collapsed.
...@@ -2299,6 +2299,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) ...@@ -2299,6 +2299,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
if (font->width <= 8) { if (font->width <= 8) {
j = vc->vc_font.height; j = vc->vc_font.height;
if (font->charcount * j > FNTSIZE(fontdata))
return -EINVAL;
for (i = 0; i < font->charcount; i++) { for (i = 0; i < font->charcount; i++) {
memcpy(data, fontdata, j); memcpy(data, fontdata, j);
memset(data + j, 0, 32 - j); memset(data + j, 0, 32 - j);
...@@ -2307,6 +2310,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) ...@@ -2307,6 +2310,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
} }
} else if (font->width <= 16) { } else if (font->width <= 16) {
j = vc->vc_font.height * 2; j = vc->vc_font.height * 2;
if (font->charcount * j > FNTSIZE(fontdata))
return -EINVAL;
for (i = 0; i < font->charcount; i++) { for (i = 0; i < font->charcount; i++) {
memcpy(data, fontdata, j); memcpy(data, fontdata, j);
memset(data + j, 0, 64 - j); memset(data + j, 0, 64 - j);
...@@ -2314,6 +2320,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) ...@@ -2314,6 +2320,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
fontdata += j; fontdata += j;
} }
} else if (font->width <= 24) { } else if (font->width <= 24) {
if (font->charcount * (vc->vc_font.height * sizeof(u32)) > FNTSIZE(fontdata))
return -EINVAL;
for (i = 0; i < font->charcount; i++) { for (i = 0; i < font->charcount; i++) {
for (j = 0; j < vc->vc_font.height; j++) { for (j = 0; j < vc->vc_font.height; j++) {
*data++ = fontdata[0]; *data++ = fontdata[0];
...@@ -2326,6 +2335,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) ...@@ -2326,6 +2335,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
} }
} else { } else {
j = vc->vc_font.height * 4; j = vc->vc_font.height * 4;
if (font->charcount * j > FNTSIZE(fontdata))
return -EINVAL;
for (i = 0; i < font->charcount; i++) { for (i = 0; i < font->charcount; i++) {
memcpy(data, fontdata, j); memcpy(data, fontdata, j);
memset(data + j, 0, 128 - j); memset(data + j, 0, 128 - j);
......
...@@ -152,13 +152,6 @@ static inline int attr_col_ec(int shift, struct vc_data *vc, ...@@ -152,13 +152,6 @@ static inline int attr_col_ec(int shift, struct vc_data *vc,
#define attr_bgcol_ec(bgshift, vc, info) attr_col_ec(bgshift, vc, info, 0) #define attr_bgcol_ec(bgshift, vc, info) attr_col_ec(bgshift, vc, info, 0)
#define attr_fgcol_ec(fgshift, vc, info) attr_col_ec(fgshift, vc, info, 1) #define attr_fgcol_ec(fgshift, vc, info) attr_col_ec(fgshift, vc, info, 1)
/* Font */
#define REFCOUNT(fd) (((int *)(fd))[-1])
#define FNTSIZE(fd) (((int *)(fd))[-2])
#define FNTCHARCNT(fd) (((int *)(fd))[-3])
#define FNTSUM(fd) (((int *)(fd))[-4])
#define FONT_EXTRA_WORDS 4
/* /*
* Scroll Method * Scroll Method
*/ */
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/fb.h> #include <linux/fb.h>
#include <linux/vt_kern.h> #include <linux/vt_kern.h>
#include <linux/console.h> #include <linux/console.h>
#include <linux/font.h>
#include <asm/types.h> #include <asm/types.h>
#include "fbcon.h" #include "fbcon.h"
#include "fbcon_rotate.h" #include "fbcon_rotate.h"
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/fb.h> #include <linux/fb.h>
#include <linux/vt_kern.h> #include <linux/vt_kern.h>
#include <linux/console.h> #include <linux/console.h>
#include <linux/font.h>
#include <asm/types.h> #include <asm/types.h>
#include "fbcon.h" #include "fbcon.h"
......
...@@ -588,7 +588,7 @@ struct drm_dsc_picture_parameter_set { ...@@ -588,7 +588,7 @@ struct drm_dsc_picture_parameter_set {
* This structure represents the DSC PPS infoframe required to send the Picture * This structure represents the DSC PPS infoframe required to send the Picture
* Parameter Set metadata required before enabling VESA Display Stream * Parameter Set metadata required before enabling VESA Display Stream
* Compression. This is based on the DP Secondary Data Packet structure and * Compression. This is based on the DP Secondary Data Packet structure and
* comprises of SDP Header as defined &struct struct dp_sdp_header in drm_dp_helper.h * comprises of SDP Header as defined &struct dp_sdp_header in drm_dp_helper.h
* and PPS payload defined in &struct drm_dsc_picture_parameter_set. * and PPS payload defined in &struct drm_dsc_picture_parameter_set.
* *
* @pps_header: Header for PPS as per DP SDP header format of type * @pps_header: Header for PPS as per DP SDP header format of type
......
/*
* David A Rusling
*
* Copyright (C) 2001 ARM Limited
*
* 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.
*/
#ifndef AMBA_CLCD_REGS_H
#define AMBA_CLCD_REGS_H
/*
* CLCD Controller Internal Register addresses
*/
#define CLCD_TIM0 0x00000000
#define CLCD_TIM1 0x00000004
#define CLCD_TIM2 0x00000008
#define CLCD_TIM3 0x0000000c
#define CLCD_UBAS 0x00000010
#define CLCD_LBAS 0x00000014
#define CLCD_PL110_IENB 0x00000018
#define CLCD_PL110_CNTL 0x0000001c
#define CLCD_PL110_STAT 0x00000020
#define CLCD_PL110_INTR 0x00000024
#define CLCD_PL110_UCUR 0x00000028
#define CLCD_PL110_LCUR 0x0000002C
#define CLCD_PL111_CNTL 0x00000018
#define CLCD_PL111_IENB 0x0000001c
#define CLCD_PL111_RIS 0x00000020
#define CLCD_PL111_MIS 0x00000024
#define CLCD_PL111_ICR 0x00000028
#define CLCD_PL111_UCUR 0x0000002c
#define CLCD_PL111_LCUR 0x00000030
#define CLCD_PALL 0x00000200
#define CLCD_PALETTE 0x00000200
#define TIM2_PCD_LO_MASK GENMASK(4, 0)
#define TIM2_PCD_LO_BITS 5
#define TIM2_CLKSEL (1 << 5)
#define TIM2_ACB_MASK GENMASK(10, 6)
#define TIM2_IVS (1 << 11)
#define TIM2_IHS (1 << 12)
#define TIM2_IPC (1 << 13)
#define TIM2_IOE (1 << 14)
#define TIM2_BCD (1 << 26)
#define TIM2_PCD_HI_MASK GENMASK(31, 27)
#define TIM2_PCD_HI_BITS 5
#define TIM2_PCD_HI_SHIFT 27
#define CNTL_LCDEN (1 << 0)
#define CNTL_LCDBPP1 (0 << 1)
#define CNTL_LCDBPP2 (1 << 1)
#define CNTL_LCDBPP4 (2 << 1)
#define CNTL_LCDBPP8 (3 << 1)
#define CNTL_LCDBPP16 (4 << 1)
#define CNTL_LCDBPP16_565 (6 << 1)
#define CNTL_LCDBPP16_444 (7 << 1)
#define CNTL_LCDBPP24 (5 << 1)
#define CNTL_LCDBW (1 << 4)
#define CNTL_LCDTFT (1 << 5)
#define CNTL_LCDMONO8 (1 << 6)
#define CNTL_LCDDUAL (1 << 7)
#define CNTL_BGR (1 << 8)
#define CNTL_BEBO (1 << 9)
#define CNTL_BEPO (1 << 10)
#define CNTL_LCDPWR (1 << 11)
#define CNTL_LCDVCOMP(x) ((x) << 12)
#define CNTL_LDMAFIFOTIME (1 << 15)
#define CNTL_WATERMARK (1 << 16)
/* ST Microelectronics variant bits */
#define CNTL_ST_1XBPP_444 0x0
#define CNTL_ST_1XBPP_5551 (1 << 17)
#define CNTL_ST_1XBPP_565 (1 << 18)
#define CNTL_ST_CDWID_12 0x0
#define CNTL_ST_CDWID_16 (1 << 19)
#define CNTL_ST_CDWID_18 (1 << 20)
#define CNTL_ST_CDWID_24 ((1 << 19)|(1 << 20))
#define CNTL_ST_CEAEN (1 << 21)
#define CNTL_ST_LCDBPP24_PACKED (6 << 1)
#endif /* AMBA_CLCD_REGS_H */
/*
* linux/include/asm-arm/hardware/amba_clcd.h -- Integrator LCD panel.
*
* David A Rusling
*
* Copyright (C) 2001 ARM Limited
*
* 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/fb.h>
#include <linux/amba/clcd-regs.h>
enum {
/* individual formats */
CLCD_CAP_RGB444 = (1 << 0),
CLCD_CAP_RGB5551 = (1 << 1),
CLCD_CAP_RGB565 = (1 << 2),
CLCD_CAP_RGB888 = (1 << 3),
CLCD_CAP_BGR444 = (1 << 4),
CLCD_CAP_BGR5551 = (1 << 5),
CLCD_CAP_BGR565 = (1 << 6),
CLCD_CAP_BGR888 = (1 << 7),
/* connection layouts */
CLCD_CAP_444 = CLCD_CAP_RGB444 | CLCD_CAP_BGR444,
CLCD_CAP_5551 = CLCD_CAP_RGB5551 | CLCD_CAP_BGR5551,
CLCD_CAP_565 = CLCD_CAP_RGB565 | CLCD_CAP_BGR565,
CLCD_CAP_888 = CLCD_CAP_RGB888 | CLCD_CAP_BGR888,
/* red/blue ordering */
CLCD_CAP_RGB = CLCD_CAP_RGB444 | CLCD_CAP_RGB5551 |
CLCD_CAP_RGB565 | CLCD_CAP_RGB888,
CLCD_CAP_BGR = CLCD_CAP_BGR444 | CLCD_CAP_BGR5551 |
CLCD_CAP_BGR565 | CLCD_CAP_BGR888,
CLCD_CAP_ALL = CLCD_CAP_BGR | CLCD_CAP_RGB,
};
struct backlight_device;
struct clcd_panel {
struct fb_videomode mode;
signed short width; /* width in mm */
signed short height; /* height in mm */
u32 tim2;
u32 tim3;
u32 cntl;
u32 caps;
unsigned int bpp:8,
fixedtimings:1,
grayscale:1;
unsigned int connector;
struct backlight_device *backlight;
/*
* If the B/R lines are switched between the CLCD
* and the panel we need to know this and not try to
* compensate with the BGR bit in the control register.
*/
bool bgr_connection;
};
struct clcd_regs {
u32 tim0;
u32 tim1;
u32 tim2;
u32 tim3;
u32 cntl;
unsigned long pixclock;
};
struct clcd_fb;
/*
* the board-type specific routines
*/
struct clcd_board {
const char *name;
/*
* Optional. Hardware capability flags.
*/
u32 caps;
/*
* Optional. Check whether the var structure is acceptable
* for this display.
*/
int (*check)(struct clcd_fb *fb, struct fb_var_screeninfo *var);
/*
* Compulsory. Decode fb->fb.var into regs->*. In the case of
* fixed timing, set regs->* to the register values required.
*/
void (*decode)(struct clcd_fb *fb, struct clcd_regs *regs);
/*
* Optional. Disable any extra display hardware.
*/
void (*disable)(struct clcd_fb *);
/*
* Optional. Enable any extra display hardware.
*/
void (*enable)(struct clcd_fb *);
/*
* Setup platform specific parts of CLCD driver
*/
int (*setup)(struct clcd_fb *);
/*
* mmap the framebuffer memory
*/
int (*mmap)(struct clcd_fb *, struct vm_area_struct *);
/*
* Remove platform specific parts of CLCD driver
*/
void (*remove)(struct clcd_fb *);
};
struct amba_device;
struct clk;
/* this data structure describes each frame buffer device we find */
struct clcd_fb {
struct fb_info fb;
struct amba_device *dev;
struct clk *clk;
struct clcd_panel *panel;
struct clcd_board *board;
void *board_data;
void __iomem *regs;
u16 off_ienb;
u16 off_cntl;
u32 clcd_cntl;
u32 cmap[16];
bool clk_enabled;
};
static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs)
{
struct fb_var_screeninfo *var = &fb->fb.var;
u32 val, cpl;
/*
* Program the CLCD controller registers and start the CLCD
*/
val = ((var->xres / 16) - 1) << 2;
val |= (var->hsync_len - 1) << 8;
val |= (var->right_margin - 1) << 16;
val |= (var->left_margin - 1) << 24;
regs->tim0 = val;
val = var->yres;
if (fb->panel->cntl & CNTL_LCDDUAL)
val /= 2;
val -= 1;
val |= (var->vsync_len - 1) << 10;
val |= var->lower_margin << 16;
val |= var->upper_margin << 24;
regs->tim1 = val;
val = fb->panel->tim2;
val |= var->sync & FB_SYNC_HOR_HIGH_ACT ? 0 : TIM2_IHS;
val |= var->sync & FB_SYNC_VERT_HIGH_ACT ? 0 : TIM2_IVS;
cpl = var->xres_virtual;
if (fb->panel->cntl & CNTL_LCDTFT) /* TFT */
/* / 1 */;
else if (!var->grayscale) /* STN color */
cpl = cpl * 8 / 3;
else if (fb->panel->cntl & CNTL_LCDMONO8) /* STN monochrome, 8bit */
cpl /= 8;
else /* STN monochrome, 4bit */
cpl /= 4;
regs->tim2 = val | ((cpl - 1) << 16);
regs->tim3 = fb->panel->tim3;
val = fb->panel->cntl;
if (var->grayscale)
val |= CNTL_LCDBW;
if (fb->panel->caps && fb->board->caps && var->bits_per_pixel >= 16) {
/*
* if board and panel supply capabilities, we can support
* changing BGR/RGB depending on supplied parameters. Here
* we switch to what the framebuffer is providing if need
* be, so if the framebuffer is BGR but the display connection
* is RGB (first case) we switch it around. Vice versa mutatis
* mutandis if the framebuffer is RGB but the display connection
* is BGR, we flip it around.
*/
if (var->red.offset == 0)
val &= ~CNTL_BGR;
else
val |= CNTL_BGR;
if (fb->panel->bgr_connection)
val ^= CNTL_BGR;
}
switch (var->bits_per_pixel) {
case 1:
val |= CNTL_LCDBPP1;
break;
case 2:
val |= CNTL_LCDBPP2;
break;
case 4:
val |= CNTL_LCDBPP4;
break;
case 8:
val |= CNTL_LCDBPP8;
break;
case 16:
/*
* PL110 cannot choose between 5551 and 565 modes in its
* control register. It is possible to use 565 with
* custom external wiring.
*/
if (amba_part(fb->dev) == 0x110 ||
var->green.length == 5)
val |= CNTL_LCDBPP16;
else if (var->green.length == 6)
val |= CNTL_LCDBPP16_565;
else
val |= CNTL_LCDBPP16_444;
break;
case 32:
val |= CNTL_LCDBPP24;
break;
}
regs->cntl = val;
regs->pixclock = var->pixclock;
}
static inline int clcdfb_check(struct clcd_fb *fb, struct fb_var_screeninfo *var)
{
var->xres_virtual = var->xres = (var->xres + 15) & ~15;
var->yres_virtual = var->yres = (var->yres + 1) & ~1;
#define CHECK(e,l,h) (var->e < l || var->e > h)
if (CHECK(right_margin, (5+1), 256) || /* back porch */
CHECK(left_margin, (5+1), 256) || /* front porch */
CHECK(hsync_len, (5+1), 256) ||
var->xres > 4096 ||
var->lower_margin > 255 || /* back porch */
var->upper_margin > 255 || /* front porch */
var->vsync_len > 32 ||
var->yres > 1024)
return -EINVAL;
#undef CHECK
/* single panel mode: PCD = max(PCD, 1) */
/* dual panel mode: PCD = max(PCD, 5) */
/*
* You can't change the grayscale setting, and
* we can only do non-interlaced video.
*/
if (var->grayscale != fb->fb.var.grayscale ||
(var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED)
return -EINVAL;
#define CHECK(e) (var->e != fb->fb.var.e)
if (fb->panel->fixedtimings &&
(CHECK(xres) ||
CHECK(yres) ||
CHECK(bits_per_pixel) ||
CHECK(pixclock) ||
CHECK(left_margin) ||
CHECK(right_margin) ||
CHECK(upper_margin) ||
CHECK(lower_margin) ||
CHECK(hsync_len) ||
CHECK(vsync_len) ||
CHECK(sync)))
return -EINVAL;
#undef CHECK
var->nonstd = 0;
var->accel_flags = 0;
return 0;
}
...@@ -59,4 +59,17 @@ extern const struct font_desc *get_default_font(int xres, int yres, ...@@ -59,4 +59,17 @@ extern const struct font_desc *get_default_font(int xres, int yres,
/* Max. length for the name of a predefined font */ /* Max. length for the name of a predefined font */
#define MAX_FONT_NAME 32 #define MAX_FONT_NAME 32
/* Extra word getters */
#define REFCOUNT(fd) (((int *)(fd))[-1])
#define FNTSIZE(fd) (((int *)(fd))[-2])
#define FNTCHARCNT(fd) (((int *)(fd))[-3])
#define FNTSUM(fd) (((int *)(fd))[-4])
#define FONT_EXTRA_WORDS 4
struct font_data {
unsigned int extra[FONT_EXTRA_WORDS];
const unsigned char data[];
} __packed;
#endif /* _VIDEO_FONT_H */ #endif /* _VIDEO_FONT_H */
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#define FONTDATAMAX 9216 #define FONTDATAMAX 9216
static const unsigned char fontdata_10x18[FONTDATAMAX] = { static struct font_data fontdata_10x18 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
...@@ -5129,8 +5129,7 @@ static const unsigned char fontdata_10x18[FONTDATAMAX] = { ...@@ -5129,8 +5129,7 @@ static const unsigned char fontdata_10x18[FONTDATAMAX] = {
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
} };
};
const struct font_desc font_10x18 = { const struct font_desc font_10x18 = {
...@@ -5138,7 +5137,7 @@ const struct font_desc font_10x18 = { ...@@ -5138,7 +5137,7 @@ const struct font_desc font_10x18 = {
.name = "10x18", .name = "10x18",
.width = 10, .width = 10,
.height = 18, .height = 18,
.data = fontdata_10x18, .data = fontdata_10x18.data,
#ifdef __sparc__ #ifdef __sparc__
.pref = 5, .pref = 5,
#else #else
......
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/font.h> #include <linux/font.h>
static const unsigned char fontdata_6x10[] = { #define FONTDATAMAX 2560
static struct font_data fontdata_6x10 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -3074,14 +3076,13 @@ static const unsigned char fontdata_6x10[] = { ...@@ -3074,14 +3076,13 @@ static const unsigned char fontdata_6x10[] = {
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
} };
};
const struct font_desc font_6x10 = { const struct font_desc font_6x10 = {
.idx = FONT6x10_IDX, .idx = FONT6x10_IDX,
.name = "6x10", .name = "6x10",
.width = 6, .width = 6,
.height = 10, .height = 10,
.data = fontdata_6x10, .data = fontdata_6x10.data,
.pref = 0, .pref = 0,
}; };
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#define FONTDATAMAX (11*256) #define FONTDATAMAX (11*256)
static const unsigned char fontdata_6x11[FONTDATAMAX] = { static struct font_data fontdata_6x11 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -3338,8 +3338,7 @@ static const unsigned char fontdata_6x11[FONTDATAMAX] = { ...@@ -3338,8 +3338,7 @@ static const unsigned char fontdata_6x11[FONTDATAMAX] = {
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
} };
};
const struct font_desc font_vga_6x11 = { const struct font_desc font_vga_6x11 = {
...@@ -3347,7 +3346,7 @@ const struct font_desc font_vga_6x11 = { ...@@ -3347,7 +3346,7 @@ const struct font_desc font_vga_6x11 = {
.name = "ProFont6x11", .name = "ProFont6x11",
.width = 6, .width = 6,
.height = 11, .height = 11,
.data = fontdata_6x11, .data = fontdata_6x11.data,
/* Try avoiding this font if possible unless on MAC */ /* Try avoiding this font if possible unless on MAC */
.pref = -2000, .pref = -2000,
}; };
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#define FONTDATAMAX 3584 #define FONTDATAMAX 3584
static const unsigned char fontdata_7x14[FONTDATAMAX] = { static struct font_data fontdata_7x14 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 0000000 */ 0x00, /* 0000000 */
0x00, /* 0000000 */ 0x00, /* 0000000 */
...@@ -4105,8 +4105,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = { ...@@ -4105,8 +4105,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = {
0x00, /* 0000000 */ 0x00, /* 0000000 */
0x00, /* 0000000 */ 0x00, /* 0000000 */
0x00, /* 0000000 */ 0x00, /* 0000000 */
} };
};
const struct font_desc font_7x14 = { const struct font_desc font_7x14 = {
...@@ -4114,6 +4113,6 @@ const struct font_desc font_7x14 = { ...@@ -4114,6 +4113,6 @@ const struct font_desc font_7x14 = {
.name = "7x14", .name = "7x14",
.width = 7, .width = 7,
.height = 14, .height = 14,
.data = fontdata_7x14, .data = fontdata_7x14.data,
.pref = 0, .pref = 0,
}; };
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
#define FONTDATAMAX 4096 #define FONTDATAMAX 4096
static const unsigned char fontdata_8x16[FONTDATAMAX] = { static struct font_data fontdata_8x16 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -4619,8 +4619,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = { ...@@ -4619,8 +4619,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = {
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
} };
};
const struct font_desc font_vga_8x16 = { const struct font_desc font_vga_8x16 = {
...@@ -4628,7 +4627,7 @@ const struct font_desc font_vga_8x16 = { ...@@ -4628,7 +4627,7 @@ const struct font_desc font_vga_8x16 = {
.name = "VGA8x16", .name = "VGA8x16",
.width = 8, .width = 8,
.height = 16, .height = 16,
.data = fontdata_8x16, .data = fontdata_8x16.data,
.pref = 0, .pref = 0,
}; };
EXPORT_SYMBOL(font_vga_8x16); EXPORT_SYMBOL(font_vga_8x16);
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#define FONTDATAMAX 2048 #define FONTDATAMAX 2048
static const unsigned char fontdata_8x8[FONTDATAMAX] = { static struct font_data fontdata_8x8 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -2570,8 +2570,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = { ...@@ -2570,8 +2570,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = {
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
} };
};
const struct font_desc font_vga_8x8 = { const struct font_desc font_vga_8x8 = {
...@@ -2579,6 +2578,6 @@ const struct font_desc font_vga_8x8 = { ...@@ -2579,6 +2578,6 @@ const struct font_desc font_vga_8x8 = {
.name = "VGA8x8", .name = "VGA8x8",
.width = 8, .width = 8,
.height = 8, .height = 8,
.data = fontdata_8x8, .data = fontdata_8x8.data,
.pref = 0, .pref = 0,
}; };
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
#include <linux/font.h> #include <linux/font.h>
static const unsigned char acorndata_8x8[] = { #define FONTDATAMAX 2048
static struct font_data acorndata_8x8 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */ /* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */
/* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */ /* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */
/* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */ /* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */
...@@ -260,14 +263,14 @@ static const unsigned char acorndata_8x8[] = { ...@@ -260,14 +263,14 @@ static const unsigned char acorndata_8x8[] = {
/* FD */ 0x38, 0x04, 0x18, 0x20, 0x3c, 0x00, 0x00, 0x00, /* FD */ 0x38, 0x04, 0x18, 0x20, 0x3c, 0x00, 0x00, 0x00,
/* FE */ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, /* FE */ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00,
/* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; } };
const struct font_desc font_acorn_8x8 = { const struct font_desc font_acorn_8x8 = {
.idx = ACORN8x8_IDX, .idx = ACORN8x8_IDX,
.name = "Acorn8x8", .name = "Acorn8x8",
.width = 8, .width = 8,
.height = 8, .height = 8,
.data = acorndata_8x8, .data = acorndata_8x8.data,
#ifdef CONFIG_ARCH_ACORN #ifdef CONFIG_ARCH_ACORN
.pref = 20, .pref = 20,
#else #else
......
...@@ -43,8 +43,8 @@ __END__; ...@@ -43,8 +43,8 @@ __END__;
#define FONTDATAMAX 1536 #define FONTDATAMAX 1536
static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { static struct font_data fontdata_mini_4x6 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/*{*/ /*{*/
/* Char 0: ' ' */ /* Char 0: ' ' */
0xee, /*= [*** ] */ 0xee, /*= [*** ] */
...@@ -2145,14 +2145,14 @@ static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { ...@@ -2145,14 +2145,14 @@ static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = {
0xee, /*= [*** ] */ 0xee, /*= [*** ] */
0x00, /*= [ ] */ 0x00, /*= [ ] */
/*}*/ /*}*/
}; } };
const struct font_desc font_mini_4x6 = { const struct font_desc font_mini_4x6 = {
.idx = MINI4x6_IDX, .idx = MINI4x6_IDX,
.name = "MINI4x6", .name = "MINI4x6",
.width = 4, .width = 4,
.height = 6, .height = 6,
.data = fontdata_mini_4x6, .data = fontdata_mini_4x6.data,
.pref = 3, .pref = 3,
}; };
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
#define FONTDATAMAX 2048 #define FONTDATAMAX 2048
static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { static struct font_data fontdata_pearl8x8 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -2575,14 +2575,13 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { ...@@ -2575,14 +2575,13 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = {
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
0x00, /* 00000000 */ 0x00, /* 00000000 */
} };
};
const struct font_desc font_pearl_8x8 = { const struct font_desc font_pearl_8x8 = {
.idx = PEARL8x8_IDX, .idx = PEARL8x8_IDX,
.name = "PEARL8x8", .name = "PEARL8x8",
.width = 8, .width = 8,
.height = 8, .height = 8,
.data = fontdata_pearl8x8, .data = fontdata_pearl8x8.data,
.pref = 2, .pref = 2,
}; };
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
#define FONTDATAMAX 11264 #define FONTDATAMAX 11264
static const unsigned char fontdata_sun12x22[FONTDATAMAX] = { static struct font_data fontdata_sun12x22 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
...@@ -6148,8 +6148,7 @@ static const unsigned char fontdata_sun12x22[FONTDATAMAX] = { ...@@ -6148,8 +6148,7 @@ static const unsigned char fontdata_sun12x22[FONTDATAMAX] = {
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
} };
};
const struct font_desc font_sun_12x22 = { const struct font_desc font_sun_12x22 = {
...@@ -6157,7 +6156,7 @@ const struct font_desc font_sun_12x22 = { ...@@ -6157,7 +6156,7 @@ const struct font_desc font_sun_12x22 = {
.name = "SUN12x22", .name = "SUN12x22",
.width = 12, .width = 12,
.height = 22, .height = 22,
.data = fontdata_sun12x22, .data = fontdata_sun12x22.data,
#ifdef __sparc__ #ifdef __sparc__
.pref = 5, .pref = 5,
#else #else
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
#define FONTDATAMAX 4096 #define FONTDATAMAX 4096
static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { static struct font_data fontdata_sun8x16 = {
{ 0, 0, FONTDATAMAX, 0 }, {
/* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00,
...@@ -260,14 +261,14 @@ static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { ...@@ -260,14 +261,14 @@ static const unsigned char fontdata_sun8x16[FONTDATAMAX] = {
/* */ 0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x00,0x00,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
}; } };
const struct font_desc font_sun_8x16 = { const struct font_desc font_sun_8x16 = {
.idx = SUN8x16_IDX, .idx = SUN8x16_IDX,
.name = "SUN8x16", .name = "SUN8x16",
.width = 8, .width = 8,
.height = 16, .height = 16,
.data = fontdata_sun8x16, .data = fontdata_sun8x16.data,
#ifdef __sparc__ #ifdef __sparc__
.pref = 10, .pref = 10,
#else #else
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
#define FONTDATAMAX 16384 #define FONTDATAMAX 16384
static const unsigned char fontdata_ter16x32[FONTDATAMAX] = { static struct font_data fontdata_ter16x32 = {
{ 0, 0, FONTDATAMAX, 0 }, {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x7f, 0xfc,
0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c,
...@@ -2054,8 +2054,7 @@ static const unsigned char fontdata_ter16x32[FONTDATAMAX] = { ...@@ -2054,8 +2054,7 @@ static const unsigned char fontdata_ter16x32[FONTDATAMAX] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 255 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 255 */
} };
};
const struct font_desc font_ter_16x32 = { const struct font_desc font_ter_16x32 = {
...@@ -2063,7 +2062,7 @@ const struct font_desc font_ter_16x32 = { ...@@ -2063,7 +2062,7 @@ const struct font_desc font_ter_16x32 = {
.name = "TER16x32", .name = "TER16x32",
.width = 16, .width = 16,
.height = 32, .height = 32,
.data = fontdata_ter16x32, .data = fontdata_ter16x32.data,
#ifdef __sparc__ #ifdef __sparc__
.pref = 5, .pref = 5,
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment