aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-04-25 16:06:50 -0400
committerIngo Molnar <mingo@kernel.org>2016-04-28 05:33:57 -0400
commit21289ec02b41c4b928a0b3de1778b325d714eea3 (patch)
tree7bc0b75c33c3cedb33ac00d4c967a62856035477 /drivers/video
parentfc37206427ce38eafbeff48099d873235e878450 (diff)
x86/efi/efifb: Move DMI based quirks handling out of generic code
The efifb quirks handling based on DMI identification of the platform is specific to x86, so move it to x86 arch code. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk> Acked-by: David Herrmann <dh.herrmann@gmail.com> Acked-by: Peter Jones <pjones@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon <will.deacon@arm.com> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/1461614832-17633-19-git-send-email-matt@codeblueprint.co.uk Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/efifb.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 95d293b7445a..dd594369b8a6 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/efi.h>
11#include <linux/errno.h> 12#include <linux/errno.h>
12#include <linux/fb.h> 13#include <linux/fb.h>
13#include <linux/platform_device.h> 14#include <linux/platform_device.h>
@@ -15,7 +16,7 @@
15#include <linux/dmi.h> 16#include <linux/dmi.h>
16#include <linux/pci.h> 17#include <linux/pci.h>
17#include <video/vga.h> 18#include <video/vga.h>
18#include <asm/sysfb.h> 19#include <asm/efi.h>
19 20
20static bool request_mem_succeeded = false; 21static bool request_mem_succeeded = false;
21 22
@@ -85,21 +86,13 @@ static struct fb_ops efifb_ops = {
85static int efifb_setup(char *options) 86static int efifb_setup(char *options)
86{ 87{
87 char *this_opt; 88 char *this_opt;
88 int i;
89 89
90 if (options && *options) { 90 if (options && *options) {
91 while ((this_opt = strsep(&options, ",")) != NULL) { 91 while ((this_opt = strsep(&options, ",")) != NULL) {
92 if (!*this_opt) continue; 92 if (!*this_opt) continue;
93 93
94 for (i = 0; i < M_UNKNOWN; i++) { 94 efifb_setup_from_dmi(&screen_info, this_opt);
95 if (efifb_dmi_list[i].base != 0 && 95
96 !strcmp(this_opt, efifb_dmi_list[i].optname)) {
97 screen_info.lfb_base = efifb_dmi_list[i].base;
98 screen_info.lfb_linelength = efifb_dmi_list[i].stride;
99 screen_info.lfb_width = efifb_dmi_list[i].width;
100 screen_info.lfb_height = efifb_dmi_list[i].height;
101 }
102 }
103 if (!strncmp(this_opt, "base:", 5)) 96 if (!strncmp(this_opt, "base:", 5))
104 screen_info.lfb_base = simple_strtoul(this_opt+5, NULL, 0); 97 screen_info.lfb_base = simple_strtoul(this_opt+5, NULL, 0);
105 else if (!strncmp(this_opt, "stride:", 7)) 98 else if (!strncmp(this_opt, "stride:", 7))