From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DF8FC04AB6 for ; Tue, 28 May 2019 09:03:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D31662075C for ; Tue, 28 May 2019 09:03:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="YwRF4P97" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727066AbfE1JDf (ORCPT ); Tue, 28 May 2019 05:03:35 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:41988 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726974AbfE1JDb (ORCPT ); Tue, 28 May 2019 05:03:31 -0400 Received: by mail-ed1-f68.google.com with SMTP id g24so2698486eds.9 for ; Tue, 28 May 2019 02:03:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UVMz2IJ4/RyaqNE4ZvaPs86LwJMcSiemc8l514rOxoE=; b=YwRF4P97LOBFhUta0OKI5wlSv1Ox7DssXRuK+2PmuzP3Bb2FNwARl2akdmKCZyXlht lHNH4diyj6fBWHpDeH4K0gYOQYM0gek4oMHoK34CxS4WpKKsdP2bhwltVDvw34z8ct3A BwBi6OjIWHKaCQP3HMqUL0tNKRaKaadMkDaxA= 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:mime-version:content-transfer-encoding; bh=UVMz2IJ4/RyaqNE4ZvaPs86LwJMcSiemc8l514rOxoE=; b=FVfbRY4L6XReLKFZzzgSThQ2d7qX6SuDpUtmKkN9jh+Q44N7UH00aor8YJxfIzLC26 m5OUZ06hQAVfv2DwKMozSAuZBtcng3e0MdGsz9jGcBIZNBJ6scWIwUhrSou6/i1wtTmh BopIx9WT3lRkvdogKiNnma5uNckZInFYG9eXJ7kx5n2cEER8bKjAfrXrtdXrm9YxQsXx E6ZL1p3Fj9QVTe6S5eVsVHm9w3FZUWoHjAGgcmjnyHUHUdqUJltclcRXArDA80Cx3Acw uad8CdAZPSB9shl/+Kx5PPyqMXz6yD4Hjxh5ZokRZBoFFaoj8ZVrMcOtmrmU1DajIBru puww== X-Gm-Message-State: APjAAAUvtc1Bh0bZcGJbY45elg0T+IEeCatd0oEjZdPvo561iLSxBaGM 2lFA8ncQJcMelxqll2/GNHrgvoRI5s0= X-Google-Smtp-Source: APXvYqzzJazZYKbqsmGP/BM9TTGVXR1j+0xbyiZYi+o+JaVEFP6ppO34Lw/fLHCAVJ+XHdehH4WMbA== X-Received: by 2002:a50:be42:: with SMTP id b2mr129139954edi.228.1559034206926; Tue, 28 May 2019 02:03:26 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id x49sm4072656edm.25.2019.05.28.02.03.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 May 2019 02:03:26 -0700 (PDT) From: Daniel Vetter To: LKML Cc: DRI Development , Intel Graphics Development , linux-fbdev@vger.kernel.org, Daniel Thompson , Bartlomiej Zolnierkiewicz , Daniel Vetter , Daniel Vetter , Sam Ravnborg , Maarten Lankhorst , Hans de Goede , Greg Kroah-Hartman , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Yisheng Xie , Peter Rosin , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Thomas Zimmermann , Mikulas Patocka , Daniel Mack , Haojian Zhuang , Robert Jarzmik , Konstantin Khorenko , Prarit Bhargava , Gerd Hoffmann , Steve Sakoman , Steve Sakoman , linux-arm-kernel@lists.infradead.org Subject: [PATCH 10/33] fbcon: call fbcon_fb_(un)registered directly Date: Tue, 28 May 2019 11:02:41 +0200 Message-Id: <20190528090304.9388-11-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With commit 6104c37094e729f3d4ce65797002112735d49cd1 Author: Daniel Vetter Date: Tue Aug 1 17:32:07 2017 +0200 fbcon: Make fbcon a built-time depency for fbdev we have a static dependency between fbcon and fbdev, and we can replace the indirection through the notifier chain with a function call. v2: Sam Ravnborg noticed that mach-pxa/am200epd.c has a notifier too, and listens to this. ... Looking at the code it seems to wait for some fb to show up, so that it can get the framebuffer base address from the fb_info struct. I suspect his is some firmware fbdev. Then it uses that information to let the real fbdev driver (metronomefb.c by the looks) get at the framebuffer memory. This doesn't looke like it's easy to fix (except by deleting the entire thing, seems untouched since 2008, we might be able to get away with that), so let's just stuff a few #ifdef into fb.h and fbmem.c and cry over them for a bit. Signed-off-by: Daniel Vetter Reviewed-by: Sam Ravnborg Reviewed-by: Maarten Lankhorst Cc: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter Cc: Hans de Goede Cc: Greg Kroah-Hartman Cc: "Noralf Trønnes" Cc: Yisheng Xie Cc: Peter Rosin Cc: "Michał Mirosław" Cc: Thomas Zimmermann Cc: Mikulas Patocka Cc: linux-fbdev@vger.kernel.org Cc: Daniel Mack Cc: Haojian Zhuang Cc: Robert Jarzmik Cc: Konstantin Khorenko Cc: Prarit Bhargava Cc: Gerd Hoffmann Cc: Steve Sakoman Cc: Steve Sakoman Cc: linux-arm-kernel@lists.infradead.org --- arch/arm/mach-pxa/am200epd.c | 13 +++++++++++-- drivers/video/fbdev/core/fbcon.c | 14 +++----------- drivers/video/fbdev/core/fbmem.c | 24 +++++++++++++++++------- include/linux/fb.h | 7 +++++-- include/linux/fbcon.h | 4 ++++ 5 files changed, 40 insertions(+), 22 deletions(-) diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c index 50e18ed37fa6..cac0bb09db14 100644 --- a/arch/arm/mach-pxa/am200epd.c +++ b/arch/arm/mach-pxa/am200epd.c @@ -347,8 +347,17 @@ int __init am200_init(void) { int ret; - /* before anything else, we request notification for any fb - * creation events */ + /* + * Before anything else, we request notification for any fb + * creation events. + * + * FIXME: This is terrible and needs to be nuked. The notifier is used + * to get at the fb base address from the boot splash fb driver, which + * is then passed to metronomefb. Instaed of metronomfb or this board + * support file here figuring this out on their own. + * + * See also the #ifdef in fbmem.c. + */ fb_register_client(&am200_fb_notif); pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config)); diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index e11bae2787e6..5a9fe0c0dd3c 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3119,14 +3119,14 @@ static int fbcon_fb_unbind(int idx) } /* called with console_lock held */ -static int fbcon_fb_unregistered(struct fb_info *info) +void fbcon_fb_unregistered(struct fb_info *info) { int i, idx; WARN_CONSOLE_UNLOCKED(); if (deferred_takeover) - return 0; + return; idx = info->node; for (i = first_fb_vc; i <= last_fb_vc; i++) { @@ -3155,8 +3155,6 @@ static int fbcon_fb_unregistered(struct fb_info *info) if (!num_registered_fb) do_unregister_con_driver(&fb_con); - - return 0; } /* called with console_lock held */ @@ -3215,7 +3213,7 @@ static inline void fbcon_select_primary(struct fb_info *info) #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */ /* called with console_lock held */ -static int fbcon_fb_registered(struct fb_info *info) +int fbcon_fb_registered(struct fb_info *info) { int ret = 0, i, idx; @@ -3359,12 +3357,6 @@ static int fbcon_event_notify(struct notifier_block *self, idx = info->node; ret = fbcon_fb_unbind(idx); break; - case FB_EVENT_FB_REGISTERED: - ret = fbcon_fb_registered(info); - break; - case FB_EVENT_FB_UNREGISTERED: - ret = fbcon_fb_unregistered(info); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 8ba674ffb3c9..bed7698ad18a 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, static int do_register_framebuffer(struct fb_info *fb_info) { int i, ret; - struct fb_event event; struct fb_videomode mode; if (fb_check_foreignness(fb_info)) @@ -1723,7 +1722,14 @@ static int do_register_framebuffer(struct fb_info *fb_info) fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info; - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + } +#endif + if (!lockless_register_fb) console_lock(); else @@ -1732,9 +1738,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) ret = -ENODEV; goto unlock_console; } - ret = 0; - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + ret = fbcon_fb_registered(fb_info); unlock_fb_info(fb_info); unlock_console: if (!lockless_register_fb) @@ -1771,7 +1776,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); static int do_unregister_framebuffer(struct fb_info *fb_info) { - struct fb_event event; int ret; ret = unbind_console(fb_info); @@ -1789,9 +1793,15 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) registered_fb[fb_info->node] = NULL; num_registered_fb--; fb_cleanup_device(fb_info); - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + } +#endif console_lock(); - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + fbcon_fb_unregistered(fb_info); console_unlock(); /* this may free fb info */ diff --git a/include/linux/fb.h b/include/linux/fb.h index f52ef0ad6781..288175fafaf6 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -136,10 +136,13 @@ struct fb_cursor_user { #define FB_EVENT_RESUME 0x03 /* An entry from the modelist was removed */ #define FB_EVENT_MODE_DELETE 0x04 -/* A driver registered itself */ + +#ifdef CONFIG_GUMSTIX_AM200EPD +/* only used by mach-pxa/am200epd.c */ #define FB_EVENT_FB_REGISTERED 0x05 -/* A driver unregistered itself */ #define FB_EVENT_FB_UNREGISTERED 0x06 +#endif + /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ #define FB_EVENT_GET_CONSOLE_MAP 0x07 /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index f68a7db14165..94a71e9e1257 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -4,9 +4,13 @@ #ifdef CONFIG_FRAMEBUFFER_CONSOLE void __init fb_console_init(void); void __exit fb_console_exit(void); +int fbcon_fb_registered(struct fb_info *info); +void fbcon_fb_unregistered(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } +static inline void fbcon_fb_unregistered(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */ -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Date: Tue, 28 May 2019 09:02:41 +0000 Subject: [PATCH 10/33] fbcon: call fbcon_fb_(un)registered directly Message-Id: <20190528090304.9388-11-daniel.vetter@ffwll.ch> List-Id: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: LKML Cc: DRI Development , Intel Graphics Development , linux-fbdev@vger.kernel.org, Daniel Thompson , Bartlomiej Zolnierkiewicz , Daniel Vetter , Daniel Vetter , Sam Ravnborg , Maarten Lankhorst , Hans de Goede , Greg Kroah-Hartman , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Yisheng Xie , Peter Rosin , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Thomas Zimmermann , Mikulas Patocka Dani With commit 6104c37094e729f3d4ce65797002112735d49cd1 Author: Daniel Vetter Date: Tue Aug 1 17:32:07 2017 +0200 fbcon: Make fbcon a built-time depency for fbdev we have a static dependency between fbcon and fbdev, and we can replace the indirection through the notifier chain with a function call. v2: Sam Ravnborg noticed that mach-pxa/am200epd.c has a notifier too, and listens to this. ... Looking at the code it seems to wait for some fb to show up, so that it can get the framebuffer base address from the fb_info struct. I suspect his is some firmware fbdev. Then it uses that information to let the real fbdev driver (metronomefb.c by the looks) get at the framebuffer memory. This doesn't looke like it's easy to fix (except by deleting the entire thing, seems untouched since 2008, we might be able to get away with that), so let's just stuff a few #ifdef into fb.h and fbmem.c and cry over them for a bit. Signed-off-by: Daniel Vetter Reviewed-by: Sam Ravnborg Reviewed-by: Maarten Lankhorst Cc: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter Cc: Hans de Goede Cc: Greg Kroah-Hartman Cc: "Noralf Trønnes" Cc: Yisheng Xie Cc: Peter Rosin Cc: "Michał Mirosław" Cc: Thomas Zimmermann Cc: Mikulas Patocka Cc: linux-fbdev@vger.kernel.org Cc: Daniel Mack Cc: Haojian Zhuang Cc: Robert Jarzmik Cc: Konstantin Khorenko Cc: Prarit Bhargava Cc: Gerd Hoffmann Cc: Steve Sakoman Cc: Steve Sakoman Cc: linux-arm-kernel@lists.infradead.org --- arch/arm/mach-pxa/am200epd.c | 13 +++++++++++-- drivers/video/fbdev/core/fbcon.c | 14 +++----------- drivers/video/fbdev/core/fbmem.c | 24 +++++++++++++++++------- include/linux/fb.h | 7 +++++-- include/linux/fbcon.h | 4 ++++ 5 files changed, 40 insertions(+), 22 deletions(-) diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c index 50e18ed37fa6..cac0bb09db14 100644 --- a/arch/arm/mach-pxa/am200epd.c +++ b/arch/arm/mach-pxa/am200epd.c @@ -347,8 +347,17 @@ int __init am200_init(void) { int ret; - /* before anything else, we request notification for any fb - * creation events */ + /* + * Before anything else, we request notification for any fb + * creation events. + * + * FIXME: This is terrible and needs to be nuked. The notifier is used + * to get at the fb base address from the boot splash fb driver, which + * is then passed to metronomefb. Instaed of metronomfb or this board + * support file here figuring this out on their own. + * + * See also the #ifdef in fbmem.c. + */ fb_register_client(&am200_fb_notif); pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config)); diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index e11bae2787e6..5a9fe0c0dd3c 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3119,14 +3119,14 @@ static int fbcon_fb_unbind(int idx) } /* called with console_lock held */ -static int fbcon_fb_unregistered(struct fb_info *info) +void fbcon_fb_unregistered(struct fb_info *info) { int i, idx; WARN_CONSOLE_UNLOCKED(); if (deferred_takeover) - return 0; + return; idx = info->node; for (i = first_fb_vc; i <= last_fb_vc; i++) { @@ -3155,8 +3155,6 @@ static int fbcon_fb_unregistered(struct fb_info *info) if (!num_registered_fb) do_unregister_con_driver(&fb_con); - - return 0; } /* called with console_lock held */ @@ -3215,7 +3213,7 @@ static inline void fbcon_select_primary(struct fb_info *info) #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */ /* called with console_lock held */ -static int fbcon_fb_registered(struct fb_info *info) +int fbcon_fb_registered(struct fb_info *info) { int ret = 0, i, idx; @@ -3359,12 +3357,6 @@ static int fbcon_event_notify(struct notifier_block *self, idx = info->node; ret = fbcon_fb_unbind(idx); break; - case FB_EVENT_FB_REGISTERED: - ret = fbcon_fb_registered(info); - break; - case FB_EVENT_FB_UNREGISTERED: - ret = fbcon_fb_unregistered(info); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 8ba674ffb3c9..bed7698ad18a 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, static int do_register_framebuffer(struct fb_info *fb_info) { int i, ret; - struct fb_event event; struct fb_videomode mode; if (fb_check_foreignness(fb_info)) @@ -1723,7 +1722,14 @@ static int do_register_framebuffer(struct fb_info *fb_info) fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info; - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + } +#endif + if (!lockless_register_fb) console_lock(); else @@ -1732,9 +1738,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) ret = -ENODEV; goto unlock_console; } - ret = 0; - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + ret = fbcon_fb_registered(fb_info); unlock_fb_info(fb_info); unlock_console: if (!lockless_register_fb) @@ -1771,7 +1776,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); static int do_unregister_framebuffer(struct fb_info *fb_info) { - struct fb_event event; int ret; ret = unbind_console(fb_info); @@ -1789,9 +1793,15 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) registered_fb[fb_info->node] = NULL; num_registered_fb--; fb_cleanup_device(fb_info); - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + } +#endif console_lock(); - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + fbcon_fb_unregistered(fb_info); console_unlock(); /* this may free fb info */ diff --git a/include/linux/fb.h b/include/linux/fb.h index f52ef0ad6781..288175fafaf6 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -136,10 +136,13 @@ struct fb_cursor_user { #define FB_EVENT_RESUME 0x03 /* An entry from the modelist was removed */ #define FB_EVENT_MODE_DELETE 0x04 -/* A driver registered itself */ + +#ifdef CONFIG_GUMSTIX_AM200EPD +/* only used by mach-pxa/am200epd.c */ #define FB_EVENT_FB_REGISTERED 0x05 -/* A driver unregistered itself */ #define FB_EVENT_FB_UNREGISTERED 0x06 +#endif + /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ #define FB_EVENT_GET_CONSOLE_MAP 0x07 /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index f68a7db14165..94a71e9e1257 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -4,9 +4,13 @@ #ifdef CONFIG_FRAMEBUFFER_CONSOLE void __init fb_console_init(void); void __exit fb_console_exit(void); +int fbcon_fb_registered(struct fb_info *info); +void fbcon_fb_unregistered(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } +static inline void fbcon_fb_unregistered(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */ -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A69D4C04AB6 for ; Tue, 28 May 2019 09:03:47 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7F94620989 for ; Tue, 28 May 2019 09:03:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AqL8bSXq"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="YwRF4P97" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7F94620989 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Zo8kkmA81IhHTDZIj2Tqvto3ezTApbq2CyyVbUbMryQ=; b=AqL8bSXqG87G2+ 3d25htPeQRkKrQ5F0LPQiOjvR0iGgLgRcrjeialRmmnS/54jzoh8PO8mcEioVgID+3ulVxcjvKw3J TWpTDtPVMN3LKh3gZlNW0O5986JaScA2DiuFU5tvHC9kRBtiVI69JLpkwb+hLXGTDJ/ffEsArs+2D 3FzW3jR23aWy1Y4E1pTEm1F6YLcdbnbRUdUgqh9aziH/XcO5sDsamc8TU3cKARiPN0+r371gpgwp+ gct6gSHucYaAdCtxFyZ5qBf4v76kcjBRsTv7PqFLUnIznqKYv9P9k5MOOJLqHg+E+k31KaCY+P3mR J1kL8umkhNg1YjMNo9Aw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hVY1H-0005l4-HX; Tue, 28 May 2019 09:03:43 +0000 Received: from mail-ed1-x542.google.com ([2a00:1450:4864:20::542]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hVY13-0005Xd-Qd for linux-arm-kernel@lists.infradead.org; Tue, 28 May 2019 09:03:35 +0000 Received: by mail-ed1-x542.google.com with SMTP id g57so15791264edc.12 for ; Tue, 28 May 2019 02:03:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UVMz2IJ4/RyaqNE4ZvaPs86LwJMcSiemc8l514rOxoE=; b=YwRF4P97LOBFhUta0OKI5wlSv1Ox7DssXRuK+2PmuzP3Bb2FNwARl2akdmKCZyXlht lHNH4diyj6fBWHpDeH4K0gYOQYM0gek4oMHoK34CxS4WpKKsdP2bhwltVDvw34z8ct3A BwBi6OjIWHKaCQP3HMqUL0tNKRaKaadMkDaxA= 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:mime-version:content-transfer-encoding; bh=UVMz2IJ4/RyaqNE4ZvaPs86LwJMcSiemc8l514rOxoE=; b=RvHdmeZQx4NBdVvTj1zy+75H1czpHQgrHZEPrsmErH9nF2TRfO8TjOIT1j424H6apJ iNWfFwTsXpW+Bd6zPbn+7KvoMSVmUhtbe7gT1febh66bZGIzHhQKxsICfySQh+WQcc4R Bid0xaT7M8y+LgcWzvksw0hWIjGGNW1qkEhFds2JsdfCRMb3c9qRNrRqxTLnrpaZh2dV M8mYX4YpcOa7evSFMfkq+AhJp/MxgMX32ZG4UIPucFdCpBgv4YufSjYwmB48M7TpK32N zWzw8SVK2NMDLdX0efHyOuBSb+Ku3AiOVcbBz08H65jyJUg1ThKqgsnO5TPE3Roe6EF3 PHDA== X-Gm-Message-State: APjAAAUPogS+z8AFDVHR84sAhcwAg6m7zIxQq7rneJBrkLcQTJRAk9XZ Iq6ggPUmrWkY33M4ZvzlS9nKTw== X-Google-Smtp-Source: APXvYqzzJazZYKbqsmGP/BM9TTGVXR1j+0xbyiZYi+o+JaVEFP6ppO34Lw/fLHCAVJ+XHdehH4WMbA== X-Received: by 2002:a50:be42:: with SMTP id b2mr129139954edi.228.1559034206926; Tue, 28 May 2019 02:03:26 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id x49sm4072656edm.25.2019.05.28.02.03.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 May 2019 02:03:26 -0700 (PDT) From: Daniel Vetter To: LKML Subject: [PATCH 10/33] fbcon: call fbcon_fb_(un)registered directly Date: Tue, 28 May 2019 11:02:41 +0200 Message-Id: <20190528090304.9388-11-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190528_020330_060914_B3BBAF38 X-CRM114-Status: GOOD ( 22.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-fbdev@vger.kernel.org, Daniel Vetter , DRI Development , Gerd Hoffmann , Daniel Vetter , Robert Jarzmik , Konstantin Khorenko , Steve Sakoman , Prarit Bhargava , Daniel Thompson , Sam Ravnborg , Steve Sakoman , Bartlomiej Zolnierkiewicz , Intel Graphics Development , Maarten Lankhorst , Haojian Zhuang , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Hans de Goede , Mikulas Patocka , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman , Yisheng Xie , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Thomas Zimmermann , Peter Rosin , Daniel Mack Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org V2l0aAoKY29tbWl0IDYxMDRjMzcwOTRlNzI5ZjNkNGNlNjU3OTcwMDIxMTI3MzVkNDljZDEKQXV0 aG9yOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpEYXRlOiAgIFR1ZSBB dWcgMSAxNzozMjowNyAyMDE3ICswMjAwCgogICAgZmJjb246IE1ha2UgZmJjb24gYSBidWlsdC10 aW1lIGRlcGVuY3kgZm9yIGZiZGV2Cgp3ZSBoYXZlIGEgc3RhdGljIGRlcGVuZGVuY3kgYmV0d2Vl biBmYmNvbiBhbmQgZmJkZXYsIGFuZCB3ZSBjYW4KcmVwbGFjZSB0aGUgaW5kaXJlY3Rpb24gdGhy b3VnaCB0aGUgbm90aWZpZXIgY2hhaW4gd2l0aCBhIGZ1bmN0aW9uCmNhbGwuCgp2MjogU2FtIFJh dm5ib3JnIG5vdGljZWQgdGhhdCBtYWNoLXB4YS9hbTIwMGVwZC5jIGhhcyBhIG5vdGlmaWVyIHRv bywKYW5kIGxpc3RlbnMgdG8gdGhpcy4KCi4uLgoKTG9va2luZyBhdCB0aGUgY29kZSBpdCBzZWVt cyB0byB3YWl0IGZvciBzb21lIGZiIHRvIHNob3cgdXAsIHNvIHRoYXQKaXQgY2FuIGdldCB0aGUg ZnJhbWVidWZmZXIgYmFzZSBhZGRyZXNzIGZyb20gdGhlIGZiX2luZm8gc3RydWN0LiBJCnN1c3Bl Y3QgaGlzIGlzIHNvbWUgZmlybXdhcmUgZmJkZXYuIFRoZW4gaXQgdXNlcyB0aGF0IGluZm9ybWF0 aW9uIHRvCmxldCB0aGUgcmVhbCBmYmRldiBkcml2ZXIgKG1ldHJvbm9tZWZiLmMgYnkgdGhlIGxv b2tzKSBnZXQgYXQgdGhlCmZyYW1lYnVmZmVyIG1lbW9yeS4KClRoaXMgZG9lc24ndCBsb29rZSBs aWtlIGl0J3MgZWFzeSB0byBmaXggKGV4Y2VwdCBieSBkZWxldGluZyB0aGUKZW50aXJlIHRoaW5n LCBzZWVtcyB1bnRvdWNoZWQgc2luY2UgMjAwOCwgd2UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYXdh eQp3aXRoIHRoYXQpLCBzbyBsZXQncyBqdXN0IHN0dWZmIGEgZmV3ICNpZmRlZiBpbnRvIGZiLmgg YW5kIGZibWVtLmMgYW5kCmNyeSBvdmVyIHRoZW0gZm9yIGEgYml0LgoKU2lnbmVkLW9mZi1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBTYW0g UmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogQmFydGxvbWllaiBab2xu aWVya2lld2ljeiA8Yi56b2xuaWVya2llQHNhbXN1bmcuY29tPgpDYzogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhh dC5jb20+CkNjOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn PgpDYzogIk5vcmFsZiBUcsO4bm5lcyIgPG5vcmFsZkB0cm9ubmVzLm9yZz4KQ2M6IFlpc2hlbmcg WGllIDx5c3hpZUBmb3htYWlsLmNvbT4KQ2M6IFBldGVyIFJvc2luIDxwZWRhQGF4ZW50aWEuc2U+ CkNjOiAiTWljaGHFgiBNaXJvc8WCYXciIDxtaXJxLWxpbnV4QHJlcmUucW1xbS5wbD4KQ2M6IFRo b21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgpDYzogTWlrdWxhcyBQYXRvY2th IDxtcGF0b2NrYUByZWRoYXQuY29tPgpDYzogbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCkNj OiBEYW5pZWwgTWFjayA8ZGFuaWVsQHpvbnF1ZS5vcmc+CkNjOiBIYW9qaWFuIFpodWFuZyA8aGFv amlhbi56aHVhbmdAZ21haWwuY29tPgpDYzogUm9iZXJ0IEphcnptaWsgPHJvYmVydC5qYXJ6bWlr QGZyZWUuZnI+CkNjOiBLb25zdGFudGluIEtob3JlbmtvIDxraG9yZW5rb0B2aXJ0dW96em8uY29t PgpDYzogUHJhcml0IEJoYXJnYXZhIDxwcmFyaXRAcmVkaGF0LmNvbT4KQ2M6IEdlcmQgSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPgpDYzogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5j b20+CkNjOiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KQ2M6IGxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwotLS0KIGFyY2gvYXJtL21hY2gtcHhhL2FtMjAwZXBk LmMgICAgIHwgMTMgKysrKysrKysrKystLQogZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29u LmMgfCAxNCArKystLS0tLS0tLS0tLQogZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMg fCAyNCArKysrKysrKysrKysrKysrKy0tLS0tLS0KIGluY2x1ZGUvbGludXgvZmIuaCAgICAgICAg ICAgICAgIHwgIDcgKysrKystLQogaW5jbHVkZS9saW51eC9mYmNvbi5oICAgICAgICAgICAgfCAg NCArKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2FtMjAwZXBkLmMgYi9hcmNoL2FybS9t YWNoLXB4YS9hbTIwMGVwZC5jCmluZGV4IDUwZTE4ZWQzN2ZhNi4uY2FjMGJiMDlkYjE0IDEwMDY0 NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9hbTIwMGVwZC5jCisrKyBiL2FyY2gvYXJtL21hY2gt cHhhL2FtMjAwZXBkLmMKQEAgLTM0Nyw4ICszNDcsMTcgQEAgaW50IF9faW5pdCBhbTIwMF9pbml0 KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCS8qIGJlZm9yZSBhbnl0aGluZyBlbHNlLCB3ZSByZXF1 ZXN0IG5vdGlmaWNhdGlvbiBmb3IgYW55IGZiCi0JICogY3JlYXRpb24gZXZlbnRzICovCisJLyoK KwkgKiBCZWZvcmUgYW55dGhpbmcgZWxzZSwgd2UgcmVxdWVzdCBub3RpZmljYXRpb24gZm9yIGFu eSBmYgorCSAqIGNyZWF0aW9uIGV2ZW50cy4KKwkgKgorCSAqIEZJWE1FOiBUaGlzIGlzIHRlcnJp YmxlIGFuZCBuZWVkcyB0byBiZSBudWtlZC4gVGhlIG5vdGlmaWVyIGlzIHVzZWQKKwkgKiB0byBn ZXQgYXQgdGhlIGZiIGJhc2UgYWRkcmVzcyBmcm9tIHRoZSBib290IHNwbGFzaCBmYiBkcml2ZXIs IHdoaWNoCisJICogaXMgdGhlbiBwYXNzZWQgdG8gbWV0cm9ub21lZmIuIEluc3RhZWQgb2YgbWV0 cm9ub21mYiBvciB0aGlzIGJvYXJkCisJICogc3VwcG9ydCBmaWxlIGhlcmUgZmlndXJpbmcgdGhp cyBvdXQgb24gdGhlaXIgb3duLgorCSAqCisJICogU2VlIGFsc28gdGhlICNpZmRlZiBpbiBmYm1l bS5jLgorCSAqLwogCWZiX3JlZ2lzdGVyX2NsaWVudCgmYW0yMDBfZmJfbm90aWYpOwogCiAJcHhh Mnh4X21mcF9jb25maWcoQVJSQVlfQU5EX1NJWkUoYW0yMDBfcGluX2NvbmZpZykpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvcmUvZmJjb24uYwppbmRleCBlMTFiYWUyNzg3ZTYuLjVhOWZlMGMwZGQzYyAxMDA2NDQK LS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKKysrIGIvZHJpdmVycy92aWRl by9mYmRldi9jb3JlL2ZiY29uLmMKQEAgLTMxMTksMTQgKzMxMTksMTQgQEAgc3RhdGljIGludCBm YmNvbl9mYl91bmJpbmQoaW50IGlkeCkKIH0KIAogLyogY2FsbGVkIHdpdGggY29uc29sZV9sb2Nr IGhlbGQgKi8KLXN0YXRpYyBpbnQgZmJjb25fZmJfdW5yZWdpc3RlcmVkKHN0cnVjdCBmYl9pbmZv ICppbmZvKQordm9pZCBmYmNvbl9mYl91bnJlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmluZm8p CiB7CiAJaW50IGksIGlkeDsKIAogCVdBUk5fQ09OU09MRV9VTkxPQ0tFRCgpOwogCiAJaWYgKGRl ZmVycmVkX3Rha2VvdmVyKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOwogCiAJaWR4ID0gaW5mby0+ bm9kZTsKIAlmb3IgKGkgPSBmaXJzdF9mYl92YzsgaSA8PSBsYXN0X2ZiX3ZjOyBpKyspIHsKQEAg LTMxNTUsOCArMzE1NSw2IEBAIHN0YXRpYyBpbnQgZmJjb25fZmJfdW5yZWdpc3RlcmVkKHN0cnVj dCBmYl9pbmZvICppbmZvKQogCiAJaWYgKCFudW1fcmVnaXN0ZXJlZF9mYikKIAkJZG9fdW5yZWdp c3Rlcl9jb25fZHJpdmVyKCZmYl9jb24pOwotCi0JcmV0dXJuIDA7CiB9CiAKIC8qIGNhbGxlZCB3 aXRoIGNvbnNvbGVfbG9jayBoZWxkICovCkBAIC0zMjE1LDcgKzMyMTMsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZmJjb25fc2VsZWN0X3ByaW1hcnkoc3RydWN0IGZiX2luZm8gKmluZm8pCiAjZW5k aWYgLyogQ09ORklHX0ZSQU1FQlVGRkVSX0RFVEVDVF9QUklNQVJZICovCiAKIC8qIGNhbGxlZCB3 aXRoIGNvbnNvbGVfbG9jayBoZWxkICovCi1zdGF0aWMgaW50IGZiY29uX2ZiX3JlZ2lzdGVyZWQo c3RydWN0IGZiX2luZm8gKmluZm8pCitpbnQgZmJjb25fZmJfcmVnaXN0ZXJlZChzdHJ1Y3QgZmJf aW5mbyAqaW5mbykKIHsKIAlpbnQgcmV0ID0gMCwgaSwgaWR4OwogCkBAIC0zMzU5LDEyICszMzU3 LDYgQEAgc3RhdGljIGludCBmYmNvbl9ldmVudF9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpzZWxmLAogCQlpZHggPSBpbmZvLT5ub2RlOwogCQlyZXQgPSBmYmNvbl9mYl91bmJpbmQoaWR4 KTsKIAkJYnJlYWs7Ci0JY2FzZSBGQl9FVkVOVF9GQl9SRUdJU1RFUkVEOgotCQlyZXQgPSBmYmNv bl9mYl9yZWdpc3RlcmVkKGluZm8pOwotCQlicmVhazsKLQljYXNlIEZCX0VWRU5UX0ZCX1VOUkVH SVNURVJFRDoKLQkJcmV0ID0gZmJjb25fZmJfdW5yZWdpc3RlcmVkKGluZm8pOwotCQlicmVhazsK IAljYXNlIEZCX0VWRU5UX1NFVF9DT05TT0xFX01BUDoKIAkJLyogY2FsbGVkIHdpdGggY29uc29s ZSBsb2NrIGhlbGQgKi8KIAkJY29uMmZiID0gZXZlbnQtPmRhdGE7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9m Ym1lbS5jCmluZGV4IDhiYTY3NGZmYjNjOS4uYmVkNzY5OGFkMThhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nv cmUvZmJtZW0uYwpAQCAtMTY2MCw3ICsxNjYwLDYgQEAgTU9EVUxFX1BBUk1fREVTQyhsb2NrbGVz c19yZWdpc3Rlcl9mYiwKIHN0YXRpYyBpbnQgZG9fcmVnaXN0ZXJfZnJhbWVidWZmZXIoc3RydWN0 IGZiX2luZm8gKmZiX2luZm8pCiB7CiAJaW50IGksIHJldDsKLQlzdHJ1Y3QgZmJfZXZlbnQgZXZl bnQ7CiAJc3RydWN0IGZiX3ZpZGVvbW9kZSBtb2RlOwogCiAJaWYgKGZiX2NoZWNrX2ZvcmVpZ25u ZXNzKGZiX2luZm8pKQpAQCAtMTcyMyw3ICsxNzIyLDE0IEBAIHN0YXRpYyBpbnQgZG9fcmVnaXN0 ZXJfZnJhbWVidWZmZXIoc3RydWN0IGZiX2luZm8gKmZiX2luZm8pCiAJZmJfYWRkX3ZpZGVvbW9k ZSgmbW9kZSwgJmZiX2luZm8tPm1vZGVsaXN0KTsKIAlyZWdpc3RlcmVkX2ZiW2ldID0gZmJfaW5m bzsKIAotCWV2ZW50LmluZm8gPSBmYl9pbmZvOworI2lmZGVmIENPTkZJR19HVU1TVElYX0FNMjAw RVBECisJeworCQlzdHJ1Y3QgZmJfZXZlbnQgZXZlbnQ7CisJCWV2ZW50LmluZm8gPSBmYl9pbmZv OworCQlmYl9ub3RpZmllcl9jYWxsX2NoYWluKEZCX0VWRU5UX0ZCX1JFR0lTVEVSRUQsICZldmVu dCk7CisJfQorI2VuZGlmCisKIAlpZiAoIWxvY2tsZXNzX3JlZ2lzdGVyX2ZiKQogCQljb25zb2xl X2xvY2soKTsKIAllbHNlCkBAIC0xNzMyLDkgKzE3MzgsOCBAQCBzdGF0aWMgaW50IGRvX3JlZ2lz dGVyX2ZyYW1lYnVmZmVyKHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKQogCQlyZXQgPSAtRU5PREVW OwogCQlnb3RvIHVubG9ja19jb25zb2xlOwogCX0KLQlyZXQgPSAwOwogCi0JZmJfbm90aWZpZXJf Y2FsbF9jaGFpbihGQl9FVkVOVF9GQl9SRUdJU1RFUkVELCAmZXZlbnQpOworCXJldCA9IGZiY29u X2ZiX3JlZ2lzdGVyZWQoZmJfaW5mbyk7CiAJdW5sb2NrX2ZiX2luZm8oZmJfaW5mbyk7CiB1bmxv Y2tfY29uc29sZToKIAlpZiAoIWxvY2tsZXNzX3JlZ2lzdGVyX2ZiKQpAQCAtMTc3MSw3ICsxNzc2 LDYgQEAgc3RhdGljIGludCBfX3VubGlua19mcmFtZWJ1ZmZlcihzdHJ1Y3QgZmJfaW5mbyAqZmJf aW5mbyk7CiAKIHN0YXRpYyBpbnQgZG9fdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcihzdHJ1Y3QgZmJf aW5mbyAqZmJfaW5mbykKIHsKLQlzdHJ1Y3QgZmJfZXZlbnQgZXZlbnQ7CiAJaW50IHJldDsKIAog CXJldCA9IHVuYmluZF9jb25zb2xlKGZiX2luZm8pOwpAQCAtMTc4OSw5ICsxNzkzLDE1IEBAIHN0 YXRpYyBpbnQgZG9fdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcihzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5m bykKIAlyZWdpc3RlcmVkX2ZiW2ZiX2luZm8tPm5vZGVdID0gTlVMTDsKIAludW1fcmVnaXN0ZXJl ZF9mYi0tOwogCWZiX2NsZWFudXBfZGV2aWNlKGZiX2luZm8pOwotCWV2ZW50LmluZm8gPSBmYl9p bmZvOworI2lmZGVmIENPTkZJR19HVU1TVElYX0FNMjAwRVBECisJeworCQlzdHJ1Y3QgZmJfZXZl bnQgZXZlbnQ7CisJCWV2ZW50LmluZm8gPSBmYl9pbmZvOworCQlmYl9ub3RpZmllcl9jYWxsX2No YWluKEZCX0VWRU5UX0ZCX1VOUkVHSVNURVJFRCwgJmV2ZW50KTsKKwl9CisjZW5kaWYKIAljb25z b2xlX2xvY2soKTsKLQlmYl9ub3RpZmllcl9jYWxsX2NoYWluKEZCX0VWRU5UX0ZCX1VOUkVHSVNU RVJFRCwgJmV2ZW50KTsKKwlmYmNvbl9mYl91bnJlZ2lzdGVyZWQoZmJfaW5mbyk7CiAJY29uc29s ZV91bmxvY2soKTsKIAogCS8qIHRoaXMgbWF5IGZyZWUgZmIgaW5mbyAqLwpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9mYi5oIGIvaW5jbHVkZS9saW51eC9mYi5oCmluZGV4IGY1MmVmMGFkNjc4 MS4uMjg4MTc1ZmFmYWY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZiLmgKKysrIGIvaW5j bHVkZS9saW51eC9mYi5oCkBAIC0xMzYsMTAgKzEzNiwxMyBAQCBzdHJ1Y3QgZmJfY3Vyc29yX3Vz ZXIgewogI2RlZmluZSBGQl9FVkVOVF9SRVNVTUUJCQkweDAzCiAvKiAgICAgIEFuIGVudHJ5IGZy b20gdGhlIG1vZGVsaXN0IHdhcyByZW1vdmVkICovCiAjZGVmaW5lIEZCX0VWRU5UX01PREVfREVM RVRFICAgICAgICAgICAgMHgwNAotLyogICAgICBBIGRyaXZlciByZWdpc3RlcmVkIGl0c2VsZiAq LworCisjaWZkZWYgQ09ORklHX0dVTVNUSVhfQU0yMDBFUEQKKy8qIG9ubHkgdXNlZCBieSBtYWNo LXB4YS9hbTIwMGVwZC5jICovCiAjZGVmaW5lIEZCX0VWRU5UX0ZCX1JFR0lTVEVSRUQgICAgICAg ICAgMHgwNQotLyogICAgICBBIGRyaXZlciB1bnJlZ2lzdGVyZWQgaXRzZWxmICovCiAjZGVmaW5l IEZCX0VWRU5UX0ZCX1VOUkVHSVNURVJFRCAgICAgICAgMHgwNgorI2VuZGlmCisKIC8qICAgICAg Q09OU09MRS1TUEVDSUZJQzogZ2V0IGNvbnNvbGUgdG8gZnJhbWVidWZmZXIgbWFwcGluZyAqLwog I2RlZmluZSBGQl9FVkVOVF9HRVRfQ09OU09MRV9NQVAgICAgICAgIDB4MDcKIC8qICAgICAgQ09O U09MRS1TUEVDSUZJQzogc2V0IGNvbnNvbGUgdG8gZnJhbWVidWZmZXIgbWFwcGluZyAqLwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mYmNvbi5oIGIvaW5jbHVkZS9saW51eC9mYmNvbi5oCmlu ZGV4IGY2OGE3ZGIxNDE2NS4uOTRhNzFlOWUxMjU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2ZiY29uLmgKKysrIGIvaW5jbHVkZS9saW51eC9mYmNvbi5oCkBAIC00LDkgKzQsMTMgQEAKICNp ZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRQogdm9pZCBfX2luaXQgZmJfY29uc29sZV9p bml0KHZvaWQpOwogdm9pZCBfX2V4aXQgZmJfY29uc29sZV9leGl0KHZvaWQpOworaW50IGZiY29u X2ZiX3JlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmluZm8pOwordm9pZCBmYmNvbl9mYl91bnJl Z2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmluZm8pOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9p ZCBmYl9jb25zb2xlX2luaXQodm9pZCkge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb25zb2xl X2V4aXQodm9pZCkge30KK3N0YXRpYyBpbmxpbmUgaW50IGZiY29uX2ZiX3JlZ2lzdGVyZWQoc3Ry dWN0IGZiX2luZm8gKmluZm8pIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBmYmNv bl9mYl91bnJlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmluZm8pIHt9CiAjZW5kaWYKIAogI2Vu ZGlmIC8qIF9MSU5VWF9GQkNPTl9IICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 10/33] fbcon: call fbcon_fb_(un)registered directly Date: Tue, 28 May 2019 11:02:41 +0200 Message-ID: <20190528090304.9388-11-daniel.vetter@ffwll.ch> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> Sender: linux-kernel-owner@vger.kernel.org To: LKML Cc: DRI Development , Intel Graphics Development , linux-fbdev@vger.kernel.org, Daniel Thompson , Bartlomiej Zolnierkiewicz , Daniel Vetter , Daniel Vetter , Sam Ravnborg , Maarten Lankhorst , Hans de Goede , Greg Kroah-Hartman , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Yisheng Xie , Peter Rosin , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Thomas Zimmermann , Mikulas Patocka Dani List-Id: dri-devel@lists.freedesktop.org With commit 6104c37094e729f3d4ce65797002112735d49cd1 Author: Daniel Vetter Date: Tue Aug 1 17:32:07 2017 +0200 fbcon: Make fbcon a built-time depency for fbdev we have a static dependency between fbcon and fbdev, and we can replace the indirection through the notifier chain with a function call. v2: Sam Ravnborg noticed that mach-pxa/am200epd.c has a notifier too, and listens to this. ... Looking at the code it seems to wait for some fb to show up, so that it can get the framebuffer base address from the fb_info struct. I suspect his is some firmware fbdev. Then it uses that information to let the real fbdev driver (metronomefb.c by the looks) get at the framebuffer memory. This doesn't looke like it's easy to fix (except by deleting the entire thing, seems untouched since 2008, we might be able to get away with that), so let's just stuff a few #ifdef into fb.h and fbmem.c and cry over them for a bit. Signed-off-by: Daniel Vetter Reviewed-by: Sam Ravnborg Reviewed-by: Maarten Lankhorst Cc: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter Cc: Hans de Goede Cc: Greg Kroah-Hartman Cc: "Noralf Trønnes" Cc: Yisheng Xie Cc: Peter Rosin Cc: "Michał Mirosław" Cc: Thomas Zimmermann Cc: Mikulas Patocka Cc: linux-fbdev@vger.kernel.org Cc: Daniel Mack Cc: Haojian Zhuang Cc: Robert Jarzmik Cc: Konstantin Khorenko Cc: Prarit Bhargava Cc: Gerd Hoffmann Cc: Steve Sakoman Cc: Steve Sakoman Cc: linux-arm-kernel@lists.infradead.org --- arch/arm/mach-pxa/am200epd.c | 13 +++++++++++-- drivers/video/fbdev/core/fbcon.c | 14 +++----------- drivers/video/fbdev/core/fbmem.c | 24 +++++++++++++++++------- include/linux/fb.h | 7 +++++-- include/linux/fbcon.h | 4 ++++ 5 files changed, 40 insertions(+), 22 deletions(-) diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c index 50e18ed37fa6..cac0bb09db14 100644 --- a/arch/arm/mach-pxa/am200epd.c +++ b/arch/arm/mach-pxa/am200epd.c @@ -347,8 +347,17 @@ int __init am200_init(void) { int ret; - /* before anything else, we request notification for any fb - * creation events */ + /* + * Before anything else, we request notification for any fb + * creation events. + * + * FIXME: This is terrible and needs to be nuked. The notifier is used + * to get at the fb base address from the boot splash fb driver, which + * is then passed to metronomefb. Instaed of metronomfb or this board + * support file here figuring this out on their own. + * + * See also the #ifdef in fbmem.c. + */ fb_register_client(&am200_fb_notif); pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config)); diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index e11bae2787e6..5a9fe0c0dd3c 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3119,14 +3119,14 @@ static int fbcon_fb_unbind(int idx) } /* called with console_lock held */ -static int fbcon_fb_unregistered(struct fb_info *info) +void fbcon_fb_unregistered(struct fb_info *info) { int i, idx; WARN_CONSOLE_UNLOCKED(); if (deferred_takeover) - return 0; + return; idx = info->node; for (i = first_fb_vc; i <= last_fb_vc; i++) { @@ -3155,8 +3155,6 @@ static int fbcon_fb_unregistered(struct fb_info *info) if (!num_registered_fb) do_unregister_con_driver(&fb_con); - - return 0; } /* called with console_lock held */ @@ -3215,7 +3213,7 @@ static inline void fbcon_select_primary(struct fb_info *info) #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */ /* called with console_lock held */ -static int fbcon_fb_registered(struct fb_info *info) +int fbcon_fb_registered(struct fb_info *info) { int ret = 0, i, idx; @@ -3359,12 +3357,6 @@ static int fbcon_event_notify(struct notifier_block *self, idx = info->node; ret = fbcon_fb_unbind(idx); break; - case FB_EVENT_FB_REGISTERED: - ret = fbcon_fb_registered(info); - break; - case FB_EVENT_FB_UNREGISTERED: - ret = fbcon_fb_unregistered(info); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 8ba674ffb3c9..bed7698ad18a 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, static int do_register_framebuffer(struct fb_info *fb_info) { int i, ret; - struct fb_event event; struct fb_videomode mode; if (fb_check_foreignness(fb_info)) @@ -1723,7 +1722,14 @@ static int do_register_framebuffer(struct fb_info *fb_info) fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info; - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + } +#endif + if (!lockless_register_fb) console_lock(); else @@ -1732,9 +1738,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) ret = -ENODEV; goto unlock_console; } - ret = 0; - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + ret = fbcon_fb_registered(fb_info); unlock_fb_info(fb_info); unlock_console: if (!lockless_register_fb) @@ -1771,7 +1776,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); static int do_unregister_framebuffer(struct fb_info *fb_info) { - struct fb_event event; int ret; ret = unbind_console(fb_info); @@ -1789,9 +1793,15 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) registered_fb[fb_info->node] = NULL; num_registered_fb--; fb_cleanup_device(fb_info); - event.info = fb_info; +#ifdef CONFIG_GUMSTIX_AM200EPD + { + struct fb_event event; + event.info = fb_info; + fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + } +#endif console_lock(); - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + fbcon_fb_unregistered(fb_info); console_unlock(); /* this may free fb info */ diff --git a/include/linux/fb.h b/include/linux/fb.h index f52ef0ad6781..288175fafaf6 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -136,10 +136,13 @@ struct fb_cursor_user { #define FB_EVENT_RESUME 0x03 /* An entry from the modelist was removed */ #define FB_EVENT_MODE_DELETE 0x04 -/* A driver registered itself */ + +#ifdef CONFIG_GUMSTIX_AM200EPD +/* only used by mach-pxa/am200epd.c */ #define FB_EVENT_FB_REGISTERED 0x05 -/* A driver unregistered itself */ #define FB_EVENT_FB_UNREGISTERED 0x06 +#endif + /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ #define FB_EVENT_GET_CONSOLE_MAP 0x07 /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index f68a7db14165..94a71e9e1257 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -4,9 +4,13 @@ #ifdef CONFIG_FRAMEBUFFER_CONSOLE void __init fb_console_init(void); void __exit fb_console_exit(void); +int fbcon_fb_registered(struct fb_info *info); +void fbcon_fb_unregistered(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } +static inline void fbcon_fb_unregistered(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */ -- 2.20.1