summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/video/fbdev/core
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/video/fbdev/core')
-rw-r--r--kernel/drivers/video/fbdev/core/Makefile2
-rw-r--r--kernel/drivers/video/fbdev/core/fb_ddc.c28
-rw-r--r--kernel/drivers/video/fbdev/core/fb_defio.c2
-rw-r--r--kernel/drivers/video/fbdev/core/fbmon.c8
-rw-r--r--kernel/drivers/video/fbdev/core/fbsysfs.c2
-rw-r--r--kernel/drivers/video/fbdev/core/modedb.c2
6 files changed, 26 insertions, 18 deletions
diff --git a/kernel/drivers/video/fbdev/core/Makefile b/kernel/drivers/video/fbdev/core/Makefile
index 67f28e20a..23d86a8b7 100644
--- a/kernel/drivers/video/fbdev/core/Makefile
+++ b/kernel/drivers/video/fbdev/core/Makefile
@@ -3,6 +3,7 @@ obj-$(CONFIG_FB_CMDLINE) += fb_cmdline.o
obj-$(CONFIG_FB) += fb.o
fb-y := fbmem.o fbmon.o fbcmap.o fbsysfs.o \
modedb.o fbcvt.o
+fb-$(CONFIG_FB_DEFERRED_IO) += fb_defio.o
fb-objs := $(fb-y)
obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o
@@ -14,4 +15,3 @@ obj-$(CONFIG_FB_SYS_IMAGEBLIT) += sysimgblt.o
obj-$(CONFIG_FB_SYS_FOPS) += fb_sys_fops.o
obj-$(CONFIG_FB_SVGALIB) += svgalib.o
obj-$(CONFIG_FB_DDC) += fb_ddc.o
-obj-$(CONFIG_FB_DEFERRED_IO) += fb_defio.o
diff --git a/kernel/drivers/video/fbdev/core/fb_ddc.c b/kernel/drivers/video/fbdev/core/fb_ddc.c
index 94322ccfe..8bf5f2f54 100644
--- a/kernel/drivers/video/fbdev/core/fb_ddc.c
+++ b/kernel/drivers/video/fbdev/core/fb_ddc.c
@@ -67,13 +67,17 @@ unsigned char *fb_ddc_read(struct i2c_adapter *adapter)
msleep(13);
algo_data->setscl(algo_data->data, 1);
- for (j = 0; j < 5; j++) {
- msleep(10);
- if (algo_data->getscl(algo_data->data))
- break;
+ if (algo_data->getscl) {
+ for (j = 0; j < 5; j++) {
+ msleep(10);
+ if (algo_data->getscl(algo_data->data))
+ break;
+ }
+ if (j == 5)
+ continue;
+ } else {
+ udelay(algo_data->udelay);
}
- if (j == 5)
- continue;
algo_data->setsda(algo_data->data, 0);
msleep(15);
@@ -89,10 +93,14 @@ unsigned char *fb_ddc_read(struct i2c_adapter *adapter)
msleep(15);
algo_data->setscl(algo_data->data, 1);
- for (j = 0; j < 10; j++) {
- msleep(10);
- if (algo_data->getscl(algo_data->data))
- break;
+ if (algo_data->getscl) {
+ for (j = 0; j < 10; j++) {
+ msleep(10);
+ if (algo_data->getscl(algo_data->data))
+ break;
+ }
+ } else {
+ udelay(algo_data->udelay);
}
algo_data->setsda(algo_data->data, 1);
diff --git a/kernel/drivers/video/fbdev/core/fb_defio.c b/kernel/drivers/video/fbdev/core/fb_defio.c
index d6cab1fd9..3fc63c208 100644
--- a/kernel/drivers/video/fbdev/core/fb_defio.c
+++ b/kernel/drivers/video/fbdev/core/fb_defio.c
@@ -242,5 +242,3 @@ void fb_deferred_io_cleanup(struct fb_info *info)
mutex_destroy(&fbdefio->lock);
}
EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
-
-MODULE_LICENSE("GPL");
diff --git a/kernel/drivers/video/fbdev/core/fbmon.c b/kernel/drivers/video/fbdev/core/fbmon.c
index 01ef1b953..47c3191ec 100644
--- a/kernel/drivers/video/fbdev/core/fbmon.c
+++ b/kernel/drivers/video/fbdev/core/fbmon.c
@@ -1072,9 +1072,9 @@ void fb_edid_add_monspecs(unsigned char *edid, struct fb_monspecs *specs)
for (i = specs->modedb_len + num; i < specs->modedb_len + num + svd_n; i++) {
int idx = svd[i - specs->modedb_len - num];
- if (!idx || idx > 63) {
+ if (!idx || idx >= ARRAY_SIZE(cea_modes)) {
pr_warning("Reserved SVD code %d\n", idx);
- } else if (idx > ARRAY_SIZE(cea_modes) || !cea_modes[idx].xres) {
+ } else if (!cea_modes[idx].xres) {
pr_warning("Unimplemented SVD code %d\n", idx);
} else {
memcpy(&m[i], cea_modes + idx, sizeof(m[i]));
@@ -1475,7 +1475,9 @@ int of_get_fb_videomode(struct device_node *np, struct fb_videomode *fb,
if (ret)
return ret;
- fb_videomode_from_videomode(&vm, fb);
+ ret = fb_videomode_from_videomode(&vm, fb);
+ if (ret)
+ return ret;
pr_debug("%s: got %dx%d display mode from %s\n",
of_node_full_name(np), vm.hactive, vm.vactive, np->name);
diff --git a/kernel/drivers/video/fbdev/core/fbsysfs.c b/kernel/drivers/video/fbdev/core/fbsysfs.c
index 60c3f0a16..15755ce1d 100644
--- a/kernel/drivers/video/fbdev/core/fbsysfs.c
+++ b/kernel/drivers/video/fbdev/core/fbsysfs.c
@@ -485,7 +485,7 @@ static ssize_t show_bl_curve(struct device *device,
mutex_lock(&fb_info->bl_curve_mutex);
for (i = 0; i < FB_BACKLIGHT_LEVELS; i += 8)
- len += snprintf(&buf[len], PAGE_SIZE, "%8ph\n",
+ len += scnprintf(&buf[len], PAGE_SIZE - len, "%8ph\n",
fb_info->bl_curve + i);
mutex_unlock(&fb_info->bl_curve_mutex);
diff --git a/kernel/drivers/video/fbdev/core/modedb.c b/kernel/drivers/video/fbdev/core/modedb.c
index 7d07cf824..2510fa728 100644
--- a/kernel/drivers/video/fbdev/core/modedb.c
+++ b/kernel/drivers/video/fbdev/core/modedb.c
@@ -289,7 +289,7 @@ static const struct fb_videomode modedb[] = {
};
#ifdef CONFIG_FB_MODE_HELPERS
-const struct fb_videomode cea_modes[64] = {
+const struct fb_videomode cea_modes[65] = {
/* #1: 640x480p@59.94/60Hz */
[1] = {
NULL, 60, 640, 480, 39722, 48, 16, 33, 10, 96, 2, 0,