[10/33] fbcon: call fbcon_fb_(un)registered directly
diff mbox series

Message ID 20190520082216.26273-11-daniel.vetter@ffwll.ch
State New
Headers show
Series
  • fbcon notifier begone!
Related show

Commit Message

Daniel Vetter May 20, 2019, 8:21 a.m. UTC
With

commit 6104c37094e729f3d4ce65797002112735d49cd1
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
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.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Noralf Trønnes" <noralf@tronnes.org>
Cc: Yisheng Xie <ysxie@foxmail.com>
Cc: Peter Rosin <peda@axentia.se>
Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: linux-fbdev@vger.kernel.org
---
 drivers/video/fbdev/core/fbcon.c | 14 +++-----------
 drivers/video/fbdev/core/fbmem.c |  9 ++-------
 include/linux/fb.h               |  4 ----
 include/linux/fbcon.h            |  4 ++++
 4 files changed, 9 insertions(+), 22 deletions(-)

Comments

Thomas Zimmermann May 20, 2019, 8:33 a.m. UTC | #1
Hi

Am 20.05.19 um 10:21 schrieb Daniel Vetter:
...
> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> index fc3d34a8ea5b..ae2db31eeba7 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,6 @@ 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;
>  	if (!lockless_register_fb)
>  		console_lock();
>  	else
> @@ -1732,9 +1730,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);

What about backlight drivers? [1] Apparently these also use the
notifiers. [2] From my understanding, backlight drivers would stop
working with this change.

Best regards
Thomas

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight
[2]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40

>  	unlock_fb_info(fb_info);
>  unlock_console:
>  	if (!lockless_register_fb)
> @@ -1771,7 +1768,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 +1785,8 @@ 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;
>  	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..701abaf79c87 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -136,10 +136,6 @@ 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 */
> -#define FB_EVENT_FB_REGISTERED          0x05
> -/*      A driver unregistered itself */
> -#define FB_EVENT_FB_UNREGISTERED        0x06
>  /*      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 */
>
Thomas Zimmermann May 20, 2019, 8:37 a.m. UTC | #2
Hi

Am 20.05.19 um 10:33 schrieb Thomas Zimmermann:
> Hi
> 
> Am 20.05.19 um 10:21 schrieb Daniel Vetter:
> ...
>> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
>> index fc3d34a8ea5b..ae2db31eeba7 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,6 @@ 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;
>>  	if (!lockless_register_fb)
>>  		console_lock();
>>  	else
>> @@ -1732,9 +1730,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);
> 
> What about backlight drivers? [1] Apparently these also use the
> notifiers. [2] From my understanding, backlight drivers would stop
> working with this change.

I just saw that backlight drivers only care about blanking and
unblanking. Never mind then.

Best regards
Thomas

> 
> Best regards
> Thomas
> 
> [1]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight
> [2]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40
> 
>>  	unlock_fb_info(fb_info);
>>  unlock_console:
>>  	if (!lockless_register_fb)
>> @@ -1771,7 +1768,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 +1785,8 @@ 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;
>>  	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..701abaf79c87 100644
>> --- a/include/linux/fb.h
>> +++ b/include/linux/fb.h
>> @@ -136,10 +136,6 @@ 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 */
>> -#define FB_EVENT_FB_REGISTERED          0x05
>> -/*      A driver unregistered itself */
>> -#define FB_EVENT_FB_UNREGISTERED        0x06
>>  /*      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 */
>>
>
Sam Ravnborg May 20, 2019, 5:08 p.m. UTC | #3
Hi Daniel.

While browsing this nice patch series I stumbled upon a detail.

On Mon, May 20, 2019 at 10:21:53AM +0200, Daniel Vetter wrote:
> With
> 
> commit 6104c37094e729f3d4ce65797002112735d49cd1
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> 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.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: "Noralf Trønnes" <noralf@tronnes.org>
> Cc: Yisheng Xie <ysxie@foxmail.com>
> Cc: Peter Rosin <peda@axentia.se>
> Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Mikulas Patocka <mpatocka@redhat.com>
> Cc: linux-fbdev@vger.kernel.org
> ---
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index f52ef0ad6781..701abaf79c87 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -136,10 +136,6 @@ 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 */
> -#define FB_EVENT_FB_REGISTERED          0x05
> -/*      A driver unregistered itself */
> -#define FB_EVENT_FB_UNREGISTERED        0x06
>  /*      CONSOLE-SPECIFIC: get console to framebuffer mapping */
>  #define FB_EVENT_GET_CONSOLE_MAP        0x07
>  /*      CONSOLE-SPECIFIC: set console to framebuffer mapping */

This breaks build of arch/arm/mach-pxa/am200epd.c thats uses
FB_EVENT_FB_*REGISTERED:


       if (event == FB_EVENT_FB_REGISTERED)
                return am200_share_video_mem(info);
        else if (event == FB_EVENT_FB_UNREGISTERED)
                return am200_unshare_video_mem(info);


Found while grepping for "FB_EVENT" so this is not a build
error I triggered.

	Sam
Daniel Vetter May 20, 2019, 5:25 p.m. UTC | #4
On Mon, May 20, 2019 at 7:08 PM Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Daniel.
>
> While browsing this nice patch series I stumbled upon a detail.
>
> On Mon, May 20, 2019 at 10:21:53AM +0200, Daniel Vetter wrote:
> > With
> >
> > commit 6104c37094e729f3d4ce65797002112735d49cd1
> > Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> > 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.
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Hans de Goede <hdegoede@redhat.com>
> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Cc: "Noralf Trønnes" <noralf@tronnes.org>
> > Cc: Yisheng Xie <ysxie@foxmail.com>
> > Cc: Peter Rosin <peda@axentia.se>
> > Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: Mikulas Patocka <mpatocka@redhat.com>
> > Cc: linux-fbdev@vger.kernel.org
> > ---
> > diff --git a/include/linux/fb.h b/include/linux/fb.h
> > index f52ef0ad6781..701abaf79c87 100644
> > --- a/include/linux/fb.h
> > +++ b/include/linux/fb.h
> > @@ -136,10 +136,6 @@ 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 */
> > -#define FB_EVENT_FB_REGISTERED          0x05
> > -/*      A driver unregistered itself */
> > -#define FB_EVENT_FB_UNREGISTERED        0x06
> >  /*      CONSOLE-SPECIFIC: get console to framebuffer mapping */
> >  #define FB_EVENT_GET_CONSOLE_MAP        0x07
> >  /*      CONSOLE-SPECIFIC: set console to framebuffer mapping */
>
> This breaks build of arch/arm/mach-pxa/am200epd.c thats uses
> FB_EVENT_FB_*REGISTERED:
>
>
>        if (event == FB_EVENT_FB_REGISTERED)
>                 return am200_share_video_mem(info);
>         else if (event == FB_EVENT_FB_UNREGISTERED)
>                 return am200_unshare_video_mem(info);
>
>
> Found while grepping for "FB_EVENT" so this is not a build
> error I triggered.

Oh this is glorious :-/

Thanks a lot for spotting this, I guess I need to hack around on
metronomefb a bit ...
-Daniel
Daniel Vetter May 21, 2019, 3:09 p.m. UTC | #5
On Mon, May 20, 2019 at 10:37:53AM +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 20.05.19 um 10:33 schrieb Thomas Zimmermann:
> > Hi
> > 
> > Am 20.05.19 um 10:21 schrieb Daniel Vetter:
> > ...
> >> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> >> index fc3d34a8ea5b..ae2db31eeba7 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,6 @@ 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;
> >>  	if (!lockless_register_fb)
> >>  		console_lock();
> >>  	else
> >> @@ -1732,9 +1730,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);
> > 
> > What about backlight drivers? [1] Apparently these also use the
> > notifiers. [2] From my understanding, backlight drivers would stop
> > working with this change.
> 
> I just saw that backlight drivers only care about blanking and
> unblanking. Never mind then.

I did screw this up for one event for the mode changes. But should be
fixed in the next series.

I also added a patch to simplify the backlight/lcd notifier, since it
doesn't need to filter events anymore after this series - the only events
left are the ones backlight cares about.

Cheers, Daniel

> 
> Best regards
> Thomas
> 
> > 
> > Best regards
> > Thomas
> > 
> > [1]
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight
> > [2]
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40
> > 
> >>  	unlock_fb_info(fb_info);
> >>  unlock_console:
> >>  	if (!lockless_register_fb)
> >> @@ -1771,7 +1768,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 +1785,8 @@ 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;
> >>  	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..701abaf79c87 100644
> >> --- a/include/linux/fb.h
> >> +++ b/include/linux/fb.h
> >> @@ -136,10 +136,6 @@ 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 */
> >> -#define FB_EVENT_FB_REGISTERED          0x05
> >> -/*      A driver unregistered itself */
> >> -#define FB_EVENT_FB_UNREGISTERED        0x06
> >>  /*      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 */
> >>
> > 
> 
> -- 
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
> GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
> HRB 21284 (AG Nürnberg)
>

Patch
diff mbox series

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index a1be589b692f..95af6bd783e8 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -3115,14 +3115,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++) {
@@ -3151,8 +3151,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 */
@@ -3211,7 +3209,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;
 
@@ -3355,12 +3353,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 fc3d34a8ea5b..ae2db31eeba7 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,6 @@  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;
 	if (!lockless_register_fb)
 		console_lock();
 	else
@@ -1732,9 +1730,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 +1768,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 +1785,8 @@  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;
 	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..701abaf79c87 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -136,10 +136,6 @@  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 */
-#define FB_EVENT_FB_REGISTERED          0x05
-/*      A driver unregistered itself */
-#define FB_EVENT_FB_UNREGISTERED        0x06
 /*      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 */