Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5059171imu; Tue, 25 Dec 2018 16:46:42 -0800 (PST) X-Google-Smtp-Source: AFSGD/WagiTAgT44IuMxUmhylhppXcvVoVgDVqGD7AcbXEuce26vGNqzkZDb33dFY3XFIMSiuqKe X-Received: by 2002:a62:4886:: with SMTP id q6mr18759075pfi.182.1545785202387; Tue, 25 Dec 2018 16:46:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545785202; cv=none; d=google.com; s=arc-20160816; b=IpGfIIyDHBtezeyY6+c4ZmKMbxB+/7GkuEpaYMLt1ml5IOwldVGJ6dCq33WRFY4Sr+ vcdgUdC5ZKLZ0KsXpdtrw3MKIteLvUCvpPXVtPX9m3MW3xISTfLOO3eHQCjO6NrYlrQ8 PSS1nXm+NQXmgpWDcfwKuYUVFY8ahwabqmUiP5bsF0NUV1iuRPl7U+LpYr/gbfAkkfDj myBP7NQNuk0qNu3vsQHaeAynwnA5N3ansRBgWglLWJe0WLq99BXOTC1D/huDcJwb35Y6 feT3rzzE5BSzydEq9cKTkEZm5KPFhlaum2ofSGmkLZ+vCMd+iCdaHL5J/wGss6rZ31oe a90w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:from:references:in-reply-to :message-id:cc:to; bh=yd+bNESfuID3rk0plC1pqnt4b2S8PwCUUGbGwEL+SDc=; b=kTaZJ3RhwjMmBra3/vXKnVx+ZaerEbGK6dNG8Pp3wg9DA27F+Kfos4xnlb2pS4VbWd eoyZOdtZptKYgm8Np3j7bNpDKQcg3sttFeGysB5KBDEfj6jB3xGwxNI6u2KywxOf1Cp0 9UOdROxoiZ1CI+lh/TuJH/xJZ0yDlSI3Y1DHp0j6dJvMhthF+oJl6Tq18FGBsS8+bwwl ZiGrzsKDGmhulzIL0z5VxfLLRHj3FfU8zQzEOyqh8u0UmSLFfVGZAnRPfvBgTLB1Ldi1 ZjloyTTSwcM03B1OdKFBFSqcZqyS9Nj2VXVHUEpWJ+3IeCHTIrTzRyoGrlLG4bZVpqvA vHzg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 76si33079214pfw.66.2018.12.25.16.46.06; Tue, 25 Dec 2018 16:46:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729665AbeLZAoL (ORCPT + 99 others); Tue, 25 Dec 2018 19:44:11 -0500 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:57378 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726045AbeLZAoC (ORCPT ); Tue, 25 Dec 2018 19:44:02 -0500 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id D1D6C29529; Tue, 25 Dec 2018 19:43:56 -0500 (EST) To: Arnd Bergmann , Greg Kroah-Hartman , Bartlomiej Zolnierkiewicz Cc: linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linuxppc-dev@lists.ozlabs.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Message-Id: <88b7f55b6b27aac143c364de12d01c73afce78e9.1545784679.git.fthain@telegraphics.com.au> In-Reply-To: References: From: Finn Thain Subject: [PATCH v8 19/25] powerpc, fbdev: Use NV_CMODE and NV_VMODE only when CONFIG_PPC32 && CONFIG_PPC_PMAC && CONFIG_NVRAM Date: Wed, 26 Dec 2018 11:37:59 +1100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch addresses inconsistencies in Mac framebuffer drivers and their use of Kconfig symbols relating to NVRAM, so PPC64 can use CONFIG_NVRAM. Macintosh framebuffer drivers use default settings for color mode and video mode that are found in NVRAM. On PCI Macs, MacOS stores display settings in the Name Registry (NR) partition in NVRAM*. On NuBus Macs, there is no NR partition and MacOS stores display mode settings in PRAM**. Early-model Macs are the ones most likely to benefit from these settings, since they are more likely to have a fixed-frequency monitor connected to the built-in framebuffer device. Moreover, a single NV_CMODE value and a single NV_VMODE value provide for only one display. The NV_CMODE and NV_VMODE constants are apparently offsets into the NR partition for Old World machines. This also suggests that these defaults are not useful on later models. The NR partition seems to be optional on New World machines. CONFIG_NVRAM cannot be enabled on PPC64 at present. It is safe to say that NVRAM support in PowerMac fbdev drivers is only applicable to CONFIG_PPC32 so make this condition explicit. This means matroxfb driver won't crash on PPC64 when CONFIG_NVRAM becomes available there. For imsttfb, add the missing CONFIG_NVRAM test to prevent a build failure, since PPC64 does not implement nvram_read_byte(). Also add a missing machine_is(powermac) check. Change the inconsistent dependency on CONFIG_PPC and the matching #ifdef tests to CONFIG_PPC_PMAC. For valkyriefb, to improve clarity and consistency with the other PowerMac fbdev drivers, test for CONFIG_PPC_PMAC instead of !CONFIG_MAC. Remove a bogus comment regarding PRAM. * See GetPreferredConfiguration and SavePreferredConfiguration in "Designing PCI Cards and Drivers for Power Macintosh Computers". ** See SetDefaultMode and GetDefaultMode in "Designing Cards and Drivers for the Macintosh Family". Signed-off-by: Finn Thain --- drivers/video/fbdev/Kconfig | 2 +- drivers/video/fbdev/imsttfb.c | 12 +++++------- drivers/video/fbdev/matrox/matroxfb_base.c | 2 +- drivers/video/fbdev/valkyriefb.c | 14 ++++++-------- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig index e413f54208f4..52453ce3040a 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -536,7 +536,7 @@ config FB_IMSTT bool "IMS Twin Turbo display support" depends on (FB = y) && PCI select FB_CFB_IMAGEBLIT - select FB_MACMODES if PPC + select FB_MACMODES if PPC_PMAC help The IMS Twin Turbo is a PCI-based frame buffer card bundled with many Macintosh and compatible computers. diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c index 901ca4ed10e9..8d231591ff0e 100644 --- a/drivers/video/fbdev/imsttfb.c +++ b/drivers/video/fbdev/imsttfb.c @@ -30,9 +30,8 @@ #include #include -#if defined(CONFIG_PPC) +#if defined(CONFIG_PPC_PMAC) #include -#include #include "macmodes.h" #endif @@ -327,14 +326,13 @@ enum { TVP = 1 }; -#define USE_NV_MODES 1 #define INIT_BPP 8 #define INIT_XRES 640 #define INIT_YRES 480 static int inverse = 0; static char fontname[40] __initdata = { 0 }; -#if defined(CONFIG_PPC) +#if defined(CONFIG_PPC_PMAC) static signed char init_vmode = -1, init_cmode = -1; #endif @@ -1390,8 +1388,8 @@ static void init_imstt(struct fb_info *info) } } -#if USE_NV_MODES && defined(CONFIG_PPC32) - { +#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32) && defined(CONFIG_NVRAM) + if (machine_is(powermac)) { int vmode = init_vmode, cmode = init_cmode; if (vmode == -1) { @@ -1565,7 +1563,7 @@ imsttfb_setup(char *options) inverse = 1; fb_invert_cmaps(); } -#if defined(CONFIG_PPC) +#if defined(CONFIG_PPC_PMAC) else if (!strncmp(this_opt, "vmode:", 6)) { int vmode = simple_strtoul(this_opt+6, NULL, 0); if (vmode > 0 && vmode <= VMODE_MAX) diff --git a/drivers/video/fbdev/matrox/matroxfb_base.c b/drivers/video/fbdev/matrox/matroxfb_base.c index 0a4e5bad33f4..cac5865d461c 100644 --- a/drivers/video/fbdev/matrox/matroxfb_base.c +++ b/drivers/video/fbdev/matrox/matroxfb_base.c @@ -1874,7 +1874,7 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b) struct fb_var_screeninfo var; if (default_vmode <= 0 || default_vmode > VMODE_MAX) default_vmode = VMODE_640_480_60; -#ifdef CONFIG_NVRAM +#if defined(CONFIG_PPC32) && defined(CONFIG_NVRAM) if (default_cmode == CMODE_NVRAM) default_cmode = nvram_read_byte(NV_CMODE); #endif diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c index d51c3a8009cb..8022316ee9c9 100644 --- a/drivers/video/fbdev/valkyriefb.c +++ b/drivers/video/fbdev/valkyriefb.c @@ -63,14 +63,12 @@ #include "macmodes.h" #include "valkyriefb.h" -#ifdef CONFIG_MAC -/* We don't yet have functions to read the PRAM... perhaps we can - adapt them from the PPC code? */ -static int default_vmode = VMODE_CHOOSE; -static int default_cmode = CMODE_8; -#else +#ifdef CONFIG_PPC_PMAC static int default_vmode = VMODE_NVRAM; static int default_cmode = CMODE_NVRAM; +#else +static int default_vmode = VMODE_CHOOSE; +static int default_cmode = CMODE_8; #endif struct fb_par_valkyrie { @@ -283,7 +281,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p) printk(KERN_INFO "Monitor sense value = 0x%x\n", p->sense); /* Try to pick a video mode out of NVRAM if we have one. */ -#if !defined(CONFIG_MAC) && defined(CONFIG_NVRAM) +#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_NVRAM) if (default_vmode == VMODE_NVRAM) { default_vmode = nvram_read_byte(NV_VMODE); if (default_vmode <= 0 @@ -296,7 +294,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p) default_vmode = mac_map_monitor_sense(p->sense); if (!valkyrie_reg_init[default_vmode - 1]) default_vmode = VMODE_640_480_67; -#if !defined(CONFIG_MAC) && defined(CONFIG_NVRAM) +#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_NVRAM) if (default_cmode == CMODE_NVRAM) default_cmode = nvram_read_byte(NV_CMODE); #endif -- 2.19.2