From patchwork Sat Nov 25 19:35:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 10075037 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 88B6860353 for ; Sat, 25 Nov 2017 19:36:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7C19F28E2D for ; Sat, 25 Nov 2017 19:36:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 70FA228E3D; Sat, 25 Nov 2017 19:36:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C1E228E2D for ; Sat, 25 Nov 2017 19:36:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751945AbdKYTgK (ORCPT ); Sat, 25 Nov 2017 14:36:10 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:33472 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751024AbdKYTgJ (ORCPT ); Sat, 25 Nov 2017 14:36:09 -0500 Received: by mail-wm0-f67.google.com with SMTP id g130so23736580wme.0 for ; Sat, 25 Nov 2017 11:36:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6LIJVXH95OzTbRjJr1XhLuGECZqewdbTigMnopfSmk8=; b=kN9Vk3AWGiurnFEJRyLW+h4H40WoBXnM8F2wg/PH1H+PmV0Tw4iMh+EyMCe2lqeWIj tbBlTiXM+V4WFA2NwA7UZaWjSl2XF5i5o4LcQiLMwkhw614/SgfexJXLbzRNRdNG80nG 8jqEi8pWHEa+zAGNAEGni3KDUVa1SVwW43/dCwI3MPNdvj1bMRqyp6z8TyoJCfCLpDfU NMH0SEOGAfs66MGvV/+TWnEXfqmsiBqxSig4alzUNUIuygFfmzGpc1qSmKAVj2N/nyNF Ksc0pLUHXyUSWmYps/fVNqyBhM9vks4MHfcJFdQUiOGMuwQJ59ZFLGDbSc/kPD6xjbuW YqeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=6LIJVXH95OzTbRjJr1XhLuGECZqewdbTigMnopfSmk8=; b=KTUs8cw+bte0txImh30WPp2SKqihg2KqDP/+BIVwVujwI92RdvWQdQUisPh8FdXHcE oeAHiPJTT426uMNL6sDM7IckeMHJvJeuki7Gq1p1dZBdxWav/PeIxFgyFQZfbRIOXFeB aMkl6DgEG5UrRWzTuxjvB4H6/LFvecuuUjwa0E6nBdzXp06rBdK6MaFThBNwVsWvXpNT 1CMBbA/SQsLE3GMmRnV35HgNPH4g7smfvUSE2+tRdlVGAhx0j4WBOnkFYc+R6sp3370V 18wYare5XcuHwTb2GEnwJr1RtL1qwoNb78w6OZ7KHoO6m9VUN3aroYFDowTKuB2HMeam yUOQ== X-Gm-Message-State: AJaThX6lazO5Kyfk8IScU1nKrhGVxm+o4B/DSCPorQk+OZU79ftYKr5T nvqV+nKPpzHQw+dj2OpM+A8= X-Google-Smtp-Source: AGs4zMbtFblVvswT2iqMuNaXfB3IxviQXYDsCpgzV1SQYJqpI3tYHSwht+n2SgK59kO79JYZyQzKRw== X-Received: by 10.28.71.5 with SMTP id u5mr9232776wma.84.1511638567723; Sat, 25 Nov 2017 11:36:07 -0800 (PST) Received: from localhost.localdomain.com ([2001:470:7a95:4242:2c1c:b9eb:f8cb:6ccb]) by smtp.gmail.com with ESMTPSA id l142sm1835010wmb.43.2017.11.25.11.36.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 25 Nov 2017 11:36:06 -0800 (PST) From: Hans de Goede X-Google-Original-From: Hans de Goede To: Daniel Vetter , Jani Nikula , Sean Paul , Dave Airlie , Bartlomiej Zolnierkiewicz Cc: Hans de Goede , intel-gfx , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Subject: [PATCH v7 7/7] fbcon: Remove dmi quirk table Date: Sat, 25 Nov 2017 20:35:53 +0100 Message-Id: <20171125193553.23986-8-hdegoede@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171125193553.23986-1-hdegoede@redhat.com> References: <20171125193553.23986-1-hdegoede@redhat.com> Sender: linux-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This is now all handled in the drivers and communicated through fb_info.fbcon_rotate_hint. Signed-off-by: Hans de Goede --- drivers/video/fbdev/core/Makefile | 3 - drivers/video/fbdev/core/fbcon.c | 4 +- drivers/video/fbdev/core/fbcon.h | 6 -- drivers/video/fbdev/core/fbcon_dmi_quirks.c | 145 ---------------------------- 4 files changed, 2 insertions(+), 156 deletions(-) delete mode 100644 drivers/video/fbdev/core/fbcon_dmi_quirks.c diff --git a/drivers/video/fbdev/core/Makefile b/drivers/video/fbdev/core/Makefile index d34fd182ca68..37710316a680 100644 --- a/drivers/video/fbdev/core/Makefile +++ b/drivers/video/fbdev/core/Makefile @@ -15,9 +15,6 @@ ifeq ($(CONFIG_FRAMEBUFFER_CONSOLE_ROTATION),y) fb-y += fbcon_rotate.o fbcon_cw.o fbcon_ud.o \ fbcon_ccw.o endif -ifeq ($(CONFIG_DMI),y) -fb-y += fbcon_dmi_quirks.o -endif endif fb-objs := $(fb-y) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index fb317ed76b45..157a40670a47 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -968,7 +968,7 @@ static const char *fbcon_startup(void) if (p->con_rotate == -1) p->con_rotate = info->fbcon_rotate_hint; if (p->con_rotate == -1) - p->con_rotate = fbcon_platform_get_rotate(info); + p->con_rotate = FB_ROTATE_UR; set_blitting_type(vc, info); @@ -1111,7 +1111,7 @@ static void fbcon_init(struct vc_data *vc, int init) if (p->con_rotate == -1) p->con_rotate = info->fbcon_rotate_hint; if (p->con_rotate == -1) - p->con_rotate = fbcon_platform_get_rotate(info); + p->con_rotate = FB_ROTATE_UR; set_blitting_type(vc, info); diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h index 18f3ac144237..3746828356ed 100644 --- a/drivers/video/fbdev/core/fbcon.h +++ b/drivers/video/fbdev/core/fbcon.h @@ -261,10 +261,4 @@ extern void fbcon_set_rotate(struct fbcon_ops *ops); #define fbcon_set_rotate(x) do {} while(0) #endif /* CONFIG_FRAMEBUFFER_CONSOLE_ROTATION */ -#ifdef CONFIG_DMI -int fbcon_platform_get_rotate(struct fb_info *info); -#else -#define fbcon_platform_get_rotate(i) FB_ROTATE_UR -#endif /* CONFIG_DMI */ - #endif /* _VIDEO_FBCON_H */ diff --git a/drivers/video/fbdev/core/fbcon_dmi_quirks.c b/drivers/video/fbdev/core/fbcon_dmi_quirks.c deleted file mode 100644 index 6904e47d1e51..000000000000 --- a/drivers/video/fbdev/core/fbcon_dmi_quirks.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * fbcon_dmi_quirks.c -- DMI based quirk detection for fbcon - * - * Copyright (C) 2017 Hans de Goede - * - * 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 -#include -#include -#include "fbcon.h" - -/* - * Some x86 clamshell design devices use portrait tablet screens and a display - * engine which cannot rotate in hardware, so we need to rotate the fbcon to - * compensate. Unfortunately these (cheap) devices also typically have quite - * generic DMI data, so we match on a combination of DMI data, screen resolution - * and a list of known BIOS dates to avoid false positives. - */ - -struct fbcon_dmi_rotate_data { - int width; - int height; - const char * const *bios_dates; - int rotate; -}; - -static const struct fbcon_dmi_rotate_data rotate_data_asus_t100ha = { - .width = 800, - .height = 1280, - .rotate = FB_ROTATE_CCW, -}; - -static const struct fbcon_dmi_rotate_data rotate_data_gpd_pocket = { - .width = 1200, - .height = 1920, - .bios_dates = (const char * const []){ "05/26/2017", "06/28/2017", - "07/05/2017", "08/07/2017", NULL }, - .rotate = FB_ROTATE_CW, -}; - -static const struct fbcon_dmi_rotate_data rotate_data_gpd_win = { - .width = 720, - .height = 1280, - .bios_dates = (const char * const []){ - "10/25/2016", "11/18/2016", "12/23/2016", "12/26/2016", - "02/21/2017", "03/20/2017", "05/25/2017", NULL }, - .rotate = FB_ROTATE_CW, -}; - -static const struct fbcon_dmi_rotate_data rotate_data_itworks_tw891 = { - .width = 800, - .height = 1280, - .bios_dates = (const char * const []){ "10/16/2015", NULL }, - .rotate = FB_ROTATE_CW, -}; - -static const struct fbcon_dmi_rotate_data rotate_data_vios_lth17 = { - .width = 800, - .height = 1280, - .rotate = FB_ROTATE_CW, -}; - -static const struct dmi_system_id rotate_data[] = { - { /* Asus T100HA */ - .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100HAN"), - }, - .driver_data = (void *)&rotate_data_asus_t100ha, - }, { /* - * GPD Pocket, note that the the DMI data is less generic then - * it seems, devices with a board-vendor of "AMI Corporation" - * are quite rare, as are devices which have both board- *and* - * product-id set to "Default String" - */ - .matches = { - DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), - DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), - DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), - }, - .driver_data = (void *)&rotate_data_gpd_pocket, - }, { /* GPD Win (same note on DMI match as GPD Pocket) */ - .matches = { - DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), - DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), - DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), - }, - .driver_data = (void *)&rotate_data_gpd_win, - }, { /* I.T.Works TW891 */ - .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "TW891"), - DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "To be filled by O.E.M."), - DMI_EXACT_MATCH(DMI_BOARD_NAME, "TW891"), - }, - .driver_data = (void *)&rotate_data_itworks_tw891, - }, { /* VIOS LTH17 */ - .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VIOS"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "LTH17"), - DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "VIOS"), - DMI_EXACT_MATCH(DMI_BOARD_NAME, "LTH17"), - }, - .driver_data = (void *)&rotate_data_vios_lth17, - }, - {} -}; - -int fbcon_platform_get_rotate(struct fb_info *info) -{ - const struct dmi_system_id *match; - const struct fbcon_dmi_rotate_data *data; - const char *bios_date; - int i; - - for (match = dmi_first_match(rotate_data); - match; - match = dmi_first_match(match + 1)) { - data = match->driver_data; - - if (data->width != info->var.xres || - data->height != info->var.yres) - continue; - - if (!data->bios_dates) - return data->rotate; - - bios_date = dmi_get_system_info(DMI_BIOS_DATE); - if (!bios_date) - continue; - - for (i = 0; data->bios_dates[i]; i++) { - if (!strcmp(data->bios_dates[i], bios_date)) - return data->rotate; - } - } - - return FB_ROTATE_UR; -}