From patchwork Sat Nov 25 17:33:41 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: 10074907 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 F34D9602BC for ; Sat, 25 Nov 2017 17:34:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DFB6329011 for ; Sat, 25 Nov 2017 17:34:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D4B9629013; Sat, 25 Nov 2017 17:34:03 +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 487A329011 for ; Sat, 25 Nov 2017 17:34:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751853AbdKYReD (ORCPT ); Sat, 25 Nov 2017 12:34:03 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:36601 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751848AbdKYReC (ORCPT ); Sat, 25 Nov 2017 12:34:02 -0500 Received: by mail-wm0-f68.google.com with SMTP id r68so27818506wmr.1 for ; Sat, 25 Nov 2017 09:34:01 -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=hhFSUpIPoetorv2BeTIk05iDGCqOiE87MMgL6eGXrmU=; b=liXGG4+nO3jEWp/g2KBCpoMav/kDaqkMvUufVy4qPZhnpDYbakYH/PgowDO5V3LGdU w2PIsaM0188e++HZuqPiQBmI713S9LNKa1IFQ6SiF6zmozXJVwNk0GNBVOewjo0Q5Hvz RAb3+o5UIFVGiT0hiBW3Bxk3VT3pKCBZpvtRrKqlRSvM1y4VkAA/eXKMx6qNxuJxAxSZ I3mQ1tw0QYOE7LxF7bloKKvw2icqMfwGJOQKDBWfO0ZdgASnYRxlpeuTgj85+AX0D/mA OxCX8R/bHQSQ12gEABL9LmJI5+3UpskspQL+bowCzyfeosnQvtvjn93a6xIFeijW3cQQ z2hQ== 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=hhFSUpIPoetorv2BeTIk05iDGCqOiE87MMgL6eGXrmU=; b=gofQ2jTIVam6MgCM1erMGUjX3Uwgj9jIGeuYlRgijjbKKiuTxLaihqentMsGmj47V/ vznNTb358rKt64xdjosaIe6VdEB1LBUa1uI1955iv9WK5ctAnqNlrT4Dnfn8oauFAm+7 gmrmIl3xgm8XXmTbmz0CHQd50p809GI335wF2GQu2y5W/RfRqGQfgGyv13SxeqsjoK4k 40sOeG6QduIZm97/geVXdKtC8cOBnEH++vvuJJLafcTaCFTBksr/GZsxQBgm+8zxhBLM cagvrUwZb2W7qXcGou1SWGPtApMVujzcQ5XlUbYIgELN05rteVj8yDD6SGiWcSLjfdhr gVbw== X-Gm-Message-State: AJaThX5IGdSD4ESE+4HbUcTbyH8rpPz7H/dKb+4NhKeaUJBk/e++l4z4 I0uLXNaLDhNw82sv1Fmmc6E= X-Google-Smtp-Source: AGs4zMZ43XTSfx3lo5TUlOTYqYJkSAZ2M+w6sBX+g9SsT5FPlJU4csG5vHBsg79HPIG1+TyQmydXwg== X-Received: by 10.28.111.15 with SMTP id k15mr10322683wmc.139.1511631241055; Sat, 25 Nov 2017 09:34:01 -0800 (PST) Received: from localhost.localdomain.com ([2001:470:7a95:4242:2c1c:b9eb:f8cb:6ccb]) by smtp.gmail.com with ESMTPSA id o135sm8439658wmg.1.2017.11.25.09.33.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 25 Nov 2017 09:34:00 -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 v6 7/7] fbcon: Remove dmi quirk table Date: Sat, 25 Nov 2017 18:33:41 +0100 Message-Id: <20171125173341.14162-8-hdegoede@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171125173341.14162-1-hdegoede@redhat.com> References: <20171125173341.14162-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 30014e5867db..5baf7bc054e1 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -969,7 +969,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); @@ -1112,7 +1112,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 9f7744fbc962..21912a3ba32f 100644 --- a/drivers/video/fbdev/core/fbcon.h +++ b/drivers/video/fbdev/core/fbcon.h @@ -262,10 +262,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; -}