mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
fbcon: replace FB_EVENT_MODE_CHANGE/_ALL with direct calls
Create a new wrapper function for this, feels like there's some refactoring room here between the two modes. v2: backlight notifier is also interested in the mode change event, it calls lcd->set_mode, of which there are 3 implementations. Thanks to Maarten for spotting this. So we keep that. We can ditch the differentiation between mode change and all mode changes (because backlight notifier doesn't care), and we can drop the FBINFO_MISC_USEREVENT stuff too, because that's just to prevent recursion between fbmem.c and fbcon.c. While at it flatten the control flow a bit. v3: Need to add a static inline to the dummy function. v4: Add missing #include <fbcon.h> to sh_mob (Sam). Cc: Sam Ravnborg <[email protected]> Signed-off-by: Daniel Vetter <[email protected]> Reviewed-by: Sam Ravnborg <[email protected]> Reviewed-by: Maarten Lankhorst <[email protected]> Acked-by: Daniel Thompson <[email protected]> Cc: Maarten Lankhorst <[email protected]> Cc: Lee Jones <[email protected]> Cc: Daniel Thompson <[email protected]> Cc: Jingoo Han <[email protected]> Cc: Bartlomiej Zolnierkiewicz <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: Hans de Goede <[email protected]> Cc: Yisheng Xie <[email protected]> Cc: "Michał Mirosław" <[email protected]> Cc: Peter Rosin <[email protected]> Cc: Mikulas Patocka <[email protected]> Cc: [email protected] Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
This commit is contained in:
parent
c428f35adf
commit
9e14670026
6 changed files with 23 additions and 30 deletions
|
|
@ -34,7 +34,6 @@ static int fb_notifier_callback(struct notifier_block *self,
|
|||
switch (event) {
|
||||
case FB_EVENT_BLANK:
|
||||
case FB_EVENT_MODE_CHANGE:
|
||||
case FB_EVENT_MODE_CHANGE_ALL:
|
||||
case FB_EARLY_EVENT_BLANK:
|
||||
case FB_R_EARLY_EVENT_BLANK:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -3009,6 +3009,15 @@ static void fbcon_set_all_vcs(struct fb_info *info)
|
|||
fbcon_modechanged(info);
|
||||
}
|
||||
|
||||
|
||||
void fbcon_update_vcs(struct fb_info *info, bool all)
|
||||
{
|
||||
if (all)
|
||||
fbcon_set_all_vcs(info);
|
||||
else
|
||||
fbcon_modechanged(info);
|
||||
}
|
||||
|
||||
int fbcon_mode_deleted(struct fb_info *info,
|
||||
struct fb_videomode *mode)
|
||||
{
|
||||
|
|
@ -3318,12 +3327,6 @@ static int fbcon_event_notify(struct notifier_block *self,
|
|||
int idx, ret = 0;
|
||||
|
||||
switch(action) {
|
||||
case FB_EVENT_MODE_CHANGE:
|
||||
fbcon_modechanged(info);
|
||||
break;
|
||||
case FB_EVENT_MODE_CHANGE_ALL:
|
||||
fbcon_set_all_vcs(info);
|
||||
break;
|
||||
case FB_EVENT_SET_CONSOLE_MAP:
|
||||
/* called with console lock held */
|
||||
con2fb = event->data;
|
||||
|
|
|
|||
|
|
@ -957,6 +957,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
u32 activate;
|
||||
struct fb_var_screeninfo old_var;
|
||||
struct fb_videomode mode;
|
||||
struct fb_event event;
|
||||
|
||||
if (var->activate & FB_ACTIVATE_INV_MODE) {
|
||||
struct fb_videomode mode1, mode2;
|
||||
|
|
@ -1039,19 +1040,17 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
!list_empty(&info->modelist))
|
||||
ret = fb_add_videomode(&mode, &info->modelist);
|
||||
|
||||
if (!ret && (flags & FBINFO_MISC_USEREVENT)) {
|
||||
struct fb_event event;
|
||||
int evnt = (activate & FB_ACTIVATE_ALL) ?
|
||||
FB_EVENT_MODE_CHANGE_ALL :
|
||||
FB_EVENT_MODE_CHANGE;
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
info->flags &= ~FBINFO_MISC_USEREVENT;
|
||||
event.info = info;
|
||||
event.data = &mode;
|
||||
fb_notifier_call_chain(evnt, &event);
|
||||
}
|
||||
event.info = info;
|
||||
event.data = &mode;
|
||||
fb_notifier_call_chain(FB_EVENT_MODE_CHANGE, &event);
|
||||
|
||||
return ret;
|
||||
if (flags & FBINFO_MISC_USEREVENT)
|
||||
fbcon_update_vcs(info, activate & FB_ACTIVATE_ALL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fb_set_var);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/ctype.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/fbcon.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
|
@ -1757,8 +1758,6 @@ static void sh_mobile_fb_reconfig(struct fb_info *info)
|
|||
struct sh_mobile_lcdc_chan *ch = info->par;
|
||||
struct fb_var_screeninfo var;
|
||||
struct fb_videomode mode;
|
||||
struct fb_event event;
|
||||
int evnt = FB_EVENT_MODE_CHANGE_ALL;
|
||||
|
||||
if (ch->use_count > 1 || (ch->use_count == 1 && !info->fbcon_par))
|
||||
/* More framebuffer users are active */
|
||||
|
|
@ -1780,14 +1779,7 @@ static void sh_mobile_fb_reconfig(struct fb_info *info)
|
|||
/* Couldn't reconfigure, hopefully, can continue as before */
|
||||
return;
|
||||
|
||||
/*
|
||||
* fb_set_var() calls the notifier change internally, only if
|
||||
* FBINFO_MISC_USEREVENT flag is set. Since we do not want to fake a
|
||||
* user event, we have to call the chain ourselves.
|
||||
*/
|
||||
event.info = info;
|
||||
event.data = &ch->display.mode;
|
||||
fb_notifier_call_chain(evnt, &event);
|
||||
fbcon_update_vcs(info, true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue