linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 2/2] fb: add events for early fb event support.
@ 2011-09-26 14:37 Inki Dae
  2011-09-27  4:48 ` Inki Dae
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Inki Dae @ 2011-09-26 14:37 UTC (permalink / raw)
  To: linux-fbdev

this patch adds FB_EARLY_EVENT_BLANK and FB_R_EARLY_EVENT_BLANK
event mode supports. first, fb_notifier_call_chain() is called with
FB_EARLY_EVENT_BLANK and fb_blank() of specific fb driver is called
and then fb_notifier_call_chain() is called with FB_EVENT_BLANK again
at fb_blank(). and if fb_blank() was failed then fb_nitifier_call_chain()
would be called with FB_R_EARLY_EVENT_BLANK to revert the previous effects.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/video/fbmem.c |   21 +++++++++++++++------
 include/linux/fb.h    |    4 ++++
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index ad93629..a2bd17b 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1032,20 +1032,29 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
 int
 fb_blank(struct fb_info *info, int blank)
 {	
- 	int ret = -EINVAL;
+	struct fb_event event;
+	int ret = -EINVAL, early_ret;
 
  	if (blank > FB_BLANK_POWERDOWN)
  		blank = FB_BLANK_POWERDOWN;
 
+	event.info = info;
+	event.data = &blank;
+
+	early_ret = fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);
+
 	if (info->fbops->fb_blank)
  		ret = info->fbops->fb_blank(blank, info);
 
- 	if (!ret) {
-		struct fb_event event;
-
-		event.info = info;
-		event.data = &blank;
+	if (!ret)
 		fb_notifier_call_chain(FB_EVENT_BLANK, &event);
+	else {
+		/*
+		 * if fb_blank is failed then revert effects of
+		 * the early blank event.
+		 */
+		if (early_ret < 0)
+			fb_notifier_call_chain(FB_R_EARLY_EVENT_BLANK, &event);
 	}
 
  	return ret;
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 1d6836c..29f53d5 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -549,6 +549,10 @@ struct fb_cursor_user {
 #define FB_EVENT_FB_UNBIND              0x0E
 /*      CONSOLE-SPECIFIC: remap all consoles to new fb - for vga switcheroo */
 #define FB_EVENT_REMAP_ALL_CONSOLE      0x0F
+/*      A hardware display blank early change occured */
+#define FB_EARLY_EVENT_BLANK		0x10
+/*      A hardware display blank revert early change occured */
+#define FB_R_EARLY_EVENT_BLANK		0x11
 
 struct fb_event {
 	struct fb_info *info;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: [PATCH v2 2/2] fb: add events for early fb event support.
  2011-09-26 14:37 [PATCH v2 2/2] fb: add events for early fb event support Inki Dae
@ 2011-09-27  4:48 ` Inki Dae
  2011-10-02  0:18 ` Florian Tobias Schandinat
  2011-10-04  0:16 ` Inki Dae
  2 siblings, 0 replies; 4+ messages in thread
From: Inki Dae @ 2011-09-27  4:48 UTC (permalink / raw)
  To: linux-fbdev


> -----Original Message-----
> From: Inki Dae [mailto:inki.dae@samsung.com]
> Sent: Monday, September 26, 2011 11:37 PM
> To: FlorianSchandinat@gmx.de; linux-fbdev@vger.kernel.org
> Cc: kyungmin.park@samsung.com; lars@metafoo.de; Inki Dae
> Subject: [PATCH v2 2/2] fb: add events for early fb event support.
> 
> this patch adds FB_EARLY_EVENT_BLANK and FB_R_EARLY_EVENT_BLANK
> event mode supports. first, fb_notifier_call_chain() is called with
> FB_EARLY_EVENT_BLANK and fb_blank() of specific fb driver is called
> and then fb_notifier_call_chain() is called with FB_EVENT_BLANK again
> at fb_blank(). and if fb_blank() was failed then fb_nitifier_call_chain()
> would be called with FB_R_EARLY_EVENT_BLANK to revert the previous
effects.
> 
> Signed-off-by: Inki Dae <inki.dae@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  drivers/video/fbmem.c |   21 +++++++++++++++------
>  include/linux/fb.h    |    4 ++++
>  2 files changed, 19 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> index ad93629..a2bd17b 100644
> --- a/drivers/video/fbmem.c
> +++ b/drivers/video/fbmem.c
> @@ -1032,20 +1032,29 @@ fb_set_var(struct fb_info *info, struct
> fb_var_screeninfo *var)
>  int
>  fb_blank(struct fb_info *info, int blank)
>  {
> - 	int ret = -EINVAL;
> +	struct fb_event event;
> +	int ret = -EINVAL, early_ret;
> 
>   	if (blank > FB_BLANK_POWERDOWN)
>   		blank = FB_BLANK_POWERDOWN;
> 
> +	event.info = info;
> +	event.data = &blank;
> +
> +	early_ret = fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);
> +
>  	if (info->fbops->fb_blank)
>   		ret = info->fbops->fb_blank(blank, info);
> 
> - 	if (!ret) {
> -		struct fb_event event;
> -
> -		event.info = info;
> -		event.data = &blank;
> +	if (!ret)
>  		fb_notifier_call_chain(FB_EVENT_BLANK, &event);
> +	else {
> +		/*
> +		 * if fb_blank is failed then revert effects of
> +		 * the early blank event.
> +		 */
> +		if (early_ret < 0)

Ah, this is condition wrong so I will fix it to "if (!early_ret)".

> +			fb_notifier_call_chain(FB_R_EARLY_EVENT_BLANK,
&event);
>  	}
>
>   	return ret;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index 1d6836c..29f53d5 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -549,6 +549,10 @@ struct fb_cursor_user {
>  #define FB_EVENT_FB_UNBIND              0x0E
>  /*      CONSOLE-SPECIFIC: remap all consoles to new fb - for vga
> switcheroo */
>  #define FB_EVENT_REMAP_ALL_CONSOLE      0x0F
> +/*      A hardware display blank early change occured */
> +#define FB_EARLY_EVENT_BLANK		0x10
> +/*      A hardware display blank revert early change occured */
> +#define FB_R_EARLY_EVENT_BLANK		0x11
> 
>  struct fb_event {
>  	struct fb_info *info;
> --
> 1.7.4.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 2/2] fb: add events for early fb event support.
  2011-09-26 14:37 [PATCH v2 2/2] fb: add events for early fb event support Inki Dae
  2011-09-27  4:48 ` Inki Dae
@ 2011-10-02  0:18 ` Florian Tobias Schandinat
  2011-10-04  0:16 ` Inki Dae
  2 siblings, 0 replies; 4+ messages in thread
From: Florian Tobias Schandinat @ 2011-10-02  0:18 UTC (permalink / raw)
  To: linux-fbdev

On 09/27/2011 04:48 AM, Inki Dae wrote:
> 
>> -----Original Message-----
>> From: Inki Dae [mailto:inki.dae@samsung.com]
>> Sent: Monday, September 26, 2011 11:37 PM
>> To: FlorianSchandinat@gmx.de; linux-fbdev@vger.kernel.org
>> Cc: kyungmin.park@samsung.com; lars@metafoo.de; Inki Dae
>> Subject: [PATCH v2 2/2] fb: add events for early fb event support.
>>
>> this patch adds FB_EARLY_EVENT_BLANK and FB_R_EARLY_EVENT_BLANK
>> event mode supports. first, fb_notifier_call_chain() is called with
>> FB_EARLY_EVENT_BLANK and fb_blank() of specific fb driver is called
>> and then fb_notifier_call_chain() is called with FB_EVENT_BLANK again
>> at fb_blank(). and if fb_blank() was failed then fb_nitifier_call_chain()
>> would be called with FB_R_EARLY_EVENT_BLANK to revert the previous
> effects.

Is my assumption correct that the framebuffer driver is independent of the
specific LCD driver and therefore they can be used independently (at least in
theory)? If the answer is yes and there is no direct dependance this looks like
the right solution. I could take this patch (or rather the fixed up version when
you send it) but I'm unsure how to progress with the LCD part, would be nice to
get Richard's Ack on it.


Best regards,

Florian Tobias Schandinat

>>
>> Signed-off-by: Inki Dae <inki.dae@samsung.com>
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> ---
>>  drivers/video/fbmem.c |   21 +++++++++++++++------
>>  include/linux/fb.h    |    4 ++++
>>  2 files changed, 19 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
>> index ad93629..a2bd17b 100644
>> --- a/drivers/video/fbmem.c
>> +++ b/drivers/video/fbmem.c
>> @@ -1032,20 +1032,29 @@ fb_set_var(struct fb_info *info, struct
>> fb_var_screeninfo *var)
>>  int
>>  fb_blank(struct fb_info *info, int blank)
>>  {
>> - 	int ret = -EINVAL;
>> +	struct fb_event event;
>> +	int ret = -EINVAL, early_ret;
>>
>>   	if (blank > FB_BLANK_POWERDOWN)
>>   		blank = FB_BLANK_POWERDOWN;
>>
>> +	event.info = info;
>> +	event.data = &blank;
>> +
>> +	early_ret = fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);
>> +
>>  	if (info->fbops->fb_blank)
>>   		ret = info->fbops->fb_blank(blank, info);
>>
>> - 	if (!ret) {
>> -		struct fb_event event;
>> -
>> -		event.info = info;
>> -		event.data = &blank;
>> +	if (!ret)
>>  		fb_notifier_call_chain(FB_EVENT_BLANK, &event);
>> +	else {
>> +		/*
>> +		 * if fb_blank is failed then revert effects of
>> +		 * the early blank event.
>> +		 */
>> +		if (early_ret < 0)
> 
> Ah, this is condition wrong so I will fix it to "if (!early_ret)".
> 
>> +			fb_notifier_call_chain(FB_R_EARLY_EVENT_BLANK,
> &event);
>>  	}
>>
>>   	return ret;
>> diff --git a/include/linux/fb.h b/include/linux/fb.h
>> index 1d6836c..29f53d5 100644
>> --- a/include/linux/fb.h
>> +++ b/include/linux/fb.h
>> @@ -549,6 +549,10 @@ struct fb_cursor_user {
>>  #define FB_EVENT_FB_UNBIND              0x0E
>>  /*      CONSOLE-SPECIFIC: remap all consoles to new fb - for vga
>> switcheroo */
>>  #define FB_EVENT_REMAP_ALL_CONSOLE      0x0F
>> +/*      A hardware display blank early change occured */
>> +#define FB_EARLY_EVENT_BLANK		0x10
>> +/*      A hardware display blank revert early change occured */
>> +#define FB_R_EARLY_EVENT_BLANK		0x11
>>
>>  struct fb_event {
>>  	struct fb_info *info;
>> --
>> 1.7.4.1
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH v2 2/2] fb: add events for early fb event support.
  2011-09-26 14:37 [PATCH v2 2/2] fb: add events for early fb event support Inki Dae
  2011-09-27  4:48 ` Inki Dae
  2011-10-02  0:18 ` Florian Tobias Schandinat
@ 2011-10-04  0:16 ` Inki Dae
  2 siblings, 0 replies; 4+ messages in thread
From: Inki Dae @ 2011-10-04  0:16 UTC (permalink / raw)
  To: linux-fbdev

> -----Original Message-----
> From: Florian Tobias Schandinat [mailto:FlorianSchandinat@gmx.de]
> Sent: Sunday, October 02, 2011 9:18 AM
> To: Inki Dae
> Cc: linux-fbdev@vger.kernel.org; kyungmin.park@samsung.com;
> lars@metafoo.de
> Subject: Re: [PATCH v2 2/2] fb: add events for early fb event support.
> 
> On 09/27/2011 04:48 AM, Inki Dae wrote:
> >
> >> -----Original Message-----
> >> From: Inki Dae [mailto:inki.dae@samsung.com]
> >> Sent: Monday, September 26, 2011 11:37 PM
> >> To: FlorianSchandinat@gmx.de; linux-fbdev@vger.kernel.org
> >> Cc: kyungmin.park@samsung.com; lars@metafoo.de; Inki Dae
> >> Subject: [PATCH v2 2/2] fb: add events for early fb event support.
> >>
> >> this patch adds FB_EARLY_EVENT_BLANK and FB_R_EARLY_EVENT_BLANK
> >> event mode supports. first, fb_notifier_call_chain() is called with
> >> FB_EARLY_EVENT_BLANK and fb_blank() of specific fb driver is called
> >> and then fb_notifier_call_chain() is called with FB_EVENT_BLANK again
> >> at fb_blank(). and if fb_blank() was failed then
> fb_nitifier_call_chain()
> >> would be called with FB_R_EARLY_EVENT_BLANK to revert the previous
> > effects.
> 
> Is my assumption correct that the framebuffer driver is independent of the
> specific LCD driver and therefore they can be used independently (at least
> in
> theory)?

Yes, right. they can be used independently.

 If the answer is yes and there is no direct dependance this looks
> like
> the right solution. I could take this patch (or rather the fixed up
> version when
> you send it) but I'm unsure how to progress with the LCD part, would be
> nice to
> get Richard's Ack on it.
> 
> 

Ok, get it. and I will re-send fixed patch soon. thank you.

> Best regards,
> 
> Florian Tobias Schandinat
> 
> >>
> >> Signed-off-by: Inki Dae <inki.dae@samsung.com>
> >> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> >> ---
> >>  drivers/video/fbmem.c |   21 +++++++++++++++------
> >>  include/linux/fb.h    |    4 ++++
> >>  2 files changed, 19 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> >> index ad93629..a2bd17b 100644
> >> --- a/drivers/video/fbmem.c
> >> +++ b/drivers/video/fbmem.c
> >> @@ -1032,20 +1032,29 @@ fb_set_var(struct fb_info *info, struct
> >> fb_var_screeninfo *var)
> >>  int
> >>  fb_blank(struct fb_info *info, int blank)
> >>  {
> >> - 	int ret = -EINVAL;
> >> +	struct fb_event event;
> >> +	int ret = -EINVAL, early_ret;
> >>
> >>   	if (blank > FB_BLANK_POWERDOWN)
> >>   		blank = FB_BLANK_POWERDOWN;
> >>
> >> +	event.info = info;
> >> +	event.data = &blank;
> >> +
> >> +	early_ret = fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event);
> >> +
> >>  	if (info->fbops->fb_blank)
> >>   		ret = info->fbops->fb_blank(blank, info);
> >>
> >> - 	if (!ret) {
> >> -		struct fb_event event;
> >> -
> >> -		event.info = info;
> >> -		event.data = &blank;
> >> +	if (!ret)
> >>  		fb_notifier_call_chain(FB_EVENT_BLANK, &event);
> >> +	else {
> >> +		/*
> >> +		 * if fb_blank is failed then revert effects of
> >> +		 * the early blank event.
> >> +		 */
> >> +		if (early_ret < 0)
> >
> > Ah, this is condition wrong so I will fix it to "if (!early_ret)".
> >
> >> +			fb_notifier_call_chain(FB_R_EARLY_EVENT_BLANK,
> > &event);
> >>  	}
> >>
> >>   	return ret;
> >> diff --git a/include/linux/fb.h b/include/linux/fb.h
> >> index 1d6836c..29f53d5 100644
> >> --- a/include/linux/fb.h
> >> +++ b/include/linux/fb.h
> >> @@ -549,6 +549,10 @@ struct fb_cursor_user {
> >>  #define FB_EVENT_FB_UNBIND              0x0E
> >>  /*      CONSOLE-SPECIFIC: remap all consoles to new fb - for vga
> >> switcheroo */
> >>  #define FB_EVENT_REMAP_ALL_CONSOLE      0x0F
> >> +/*      A hardware display blank early change occured */
> >> +#define FB_EARLY_EVENT_BLANK		0x10
> >> +/*      A hardware display blank revert early change occured */
> >> +#define FB_R_EARLY_EVENT_BLANK		0x11
> >>
> >>  struct fb_event {
> >>  	struct fb_info *info;
> >> --
> >> 1.7.4.1
> >


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-10-04  0:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-26 14:37 [PATCH v2 2/2] fb: add events for early fb event support Inki Dae
2011-09-27  4:48 ` Inki Dae
2011-10-02  0:18 ` Florian Tobias Schandinat
2011-10-04  0:16 ` Inki Dae

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).