public inbox for linux-fbdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Scot Doyle <lkml14@scotdoyle.com>
To: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
	linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 2/2] fbcon: expose cursor blink interval via sysfs
Date: Mon, 26 Jan 2015 20:41:53 +0000	[thread overview]
Message-ID: <alpine.DEB.2.11.1501262040380.2052@localhost.localdomain> (raw)
In-Reply-To: <alpine.DEB.2.11.1501262034380.1945@localhost.localdomain>

The fbcon cursor, when set to blink, is hardcoded to toggle display state
five times per second. Expose this setting via
/sys/class/graphics/fbcon/cursor_blink_ms

Values written to the interface set the approximate time interval in
milliseconds between cursor toggles, from 1 to 32767. Since the interval
is stored internally as a number of jiffies, the millisecond value read
from the interface may not exactly match the entered value.

An outstanding blink timer is reset after a new value is entered.

If the cursor blink is disabled, either via the 'cursor_blink' boolean
setting or some other mechanism, the 'cursor_blink_ms' setting may still
be modified. The new value will be used if the blink is reactivated.

Signed-off-by: Scot Doyle <lkml14@scotdoyle.com>
---
 drivers/video/console/fbcon.c | 79 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 7a2030b..19620d2 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -3495,11 +3495,90 @@ err:
 	return count;
 }
 
+static ssize_t show_cursor_blink_ms(struct device *device,
+				    struct device_attribute *attr, char *buf)
+{
+	struct fb_info *info;
+	struct fbcon_ops *ops;
+	int idx, ms = -1;
+
+	if (fbcon_has_exited) {
+		pr_err("%s: framebuffer console exited", __func__);
+		return 0;
+	}
+
+	console_lock();
+	idx = con2fb_map[fg_console];
+
+	if (idx = -1 || registered_fb[idx] = NULL) {
+		pr_err("%s: no console to framebuffer mapping", __func__);
+		goto err;
+	}
+
+	info = registered_fb[idx];
+
+	if ((ops = info->fbcon_par) = NULL) {
+		pr_err("%s: framebuffer has no device info", __func__);
+		goto err;
+	}
+
+	ms = jiffies_to_msecs(ops->blink_jiffies);
+
+err:
+	console_unlock();
+	return snprintf(buf, PAGE_SIZE, "%d\n", ms);
+}
+
+static ssize_t store_cursor_blink_ms(struct device *device,
+				     struct device_attribute *attr,
+				     const char *buf, size_t count)
+{
+	struct fb_info *info;
+	struct fbcon_ops *ops;
+	int idx;
+	short ms;
+
+	if (fbcon_has_exited) {
+		pr_err("%s: framebuffer console exited", __func__);
+		return count;
+	}
+
+	console_lock();
+	idx = con2fb_map[fg_console];
+
+	if (idx = -1 || registered_fb[idx] = NULL) {
+		pr_err("%s: no console to framebuffer mapping", __func__);
+		goto err;
+	}
+
+	info = registered_fb[idx];
+
+	if ((ops = info->fbcon_par) = NULL) {
+		pr_err("%s: framebuffer has no device info", __func__);
+		goto err;
+	}
+
+	if (!kstrtos16(buf, 0, &ms)) {
+		ops->blink_jiffies = max_t(int, msecs_to_jiffies(ms), 1);
+		if (info->queue.func = fb_flashcursor &&
+		    ops->flags & FBCON_FLAGS_CURSOR_TIMER) {
+			fbcon_del_cursor_timer(info);
+			fbcon_add_cursor_timer(info);
+		}
+	}
+
+err:
+	console_unlock();
+	return count;
+}
+
 static struct device_attribute device_attrs[] = {
 	__ATTR(rotate, S_IRUGO|S_IWUSR, show_rotate, store_rotate),
 	__ATTR(rotate_all, S_IWUSR, NULL, store_rotate_all),
 	__ATTR(cursor_blink, S_IRUGO|S_IWUSR, show_cursor_blink,
 	       store_cursor_blink),
+	__ATTR(cursor_blink_ms, S_IRUGO|S_IWUSR, show_cursor_blink_ms,
+	       store_cursor_blink_ms),
 };
 
 static int fbcon_init_device(void)
-- 
2.1.4


  parent reply	other threads:[~2015-01-26 20:41 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-26 20:37 [PATCH v3 0/2] fbcon: user-defined cursor blink interval Scot Doyle
2015-01-26 20:40 ` [PATCH v3 1/2] fbcon: store cursor blink interval in fbcon_ops Scot Doyle
2015-01-26 20:41 ` Scot Doyle [this message]
2015-01-26 20:54   ` [PATCH v3 2/2] fbcon: expose cursor blink interval via sysfs Richard Weinberger
2015-02-25  9:49   ` Pavel Machek
2015-02-25 23:32     ` [PATCH " Scot Doyle
2015-02-26 22:02       ` Pavel Machek
2015-02-27 19:10         ` [PATCH 0/2] add cursor blink interval terminal escape sequence Scot Doyle
2015-02-27 19:13           ` [PATCH 1/2] vt: add cursor blink interval " Scot Doyle
2015-03-14 17:48             ` Scot Doyle
2015-03-25 11:19             ` Greg Kroah-Hartman
     [not found]               ` <20150325111949.GA24230-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2015-03-26 13:51                 ` [PATCH v2 0/3] add cursor blink interval terminal " Scot Doyle
2015-03-26 13:54                   ` [PATCH v2 1/3] vt: add cursor blink interval " Scot Doyle
2015-03-28  0:35                     ` Mike Frysinger
2015-03-28  7:50                       ` Pavel Machek
2015-03-26 13:56                   ` [PATCH v2 2/3] fbcon: use the cursor blink interval provided by vt Scot Doyle
2015-05-19 21:15                     ` Kevin Hilman
     [not found]                       ` <CAMAWPa-6ZbE5cDkEZq0XpYa2pHcnf3qweSSVHAXhfhUAUCbKcA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-19 21:40                         ` Thierry Reding
2015-05-19 21:45                           ` Kevin Hilman
     [not found]                             ` <CAMAWPa88E2pfViKLXjxWHuT4ZkVhzYt_BsXGePzc-70ZrEmJFA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-19 21:52                               ` Thierry Reding
2015-05-19 23:41                                 ` Greg Kroah-Hartman
     [not found]                                   ` <20150519234112.GA25218-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2015-05-20 12:36                                     ` Thierry Reding
     [not found]                                       ` <20150520123615.GA24016-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-05-21  4:26                                         ` Greg Kroah-Hartman
     [not found]                                           ` <20150521042638.GB22632-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2015-05-21  8:00                                             ` Thierry Reding
2015-05-22  2:00                                               ` Greg Kroah-Hartman
2015-05-22 10:00                                                 ` Thierry Reding
2015-05-22 10:33                                                   ` Arnd Bergmann
2015-05-22 11:49                                                     ` Thierry Reding
2015-05-22 13:07                                                       ` Silvan Jegen
2015-05-22 13:24                                                       ` Arnd Bergmann
2015-05-22 14:41                                                         ` Thierry Reding
2015-05-22 14:32                                                       ` Greg Kroah-Hartman
     [not found]                                                         ` <20150522143205.GA6508-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2015-05-22 14:44                                                           ` Thierry Reding
2015-05-20  0:36                                 ` Scot Doyle
2015-03-26 13:57                   ` [PATCH v2 3/3] console_codes.4: Add CSI sequence for cursor blink interval Scot Doyle
2015-03-28  7:51                     ` Pavel Machek
2015-07-05 17:41                     ` Scot Doyle
2015-07-21 16:55                       ` Michael Kerrisk (man-pages)
     [not found]                         ` <CAKgNAkgqTckfydFTDFsoqB1b_fAEiDZGYP=7b-bhN8d4Mp-bsg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-21 18:45                           ` Scot Doyle
2015-03-28  7:54                   ` [PATCH v2 0/3] add cursor blink interval terminal escape sequence Pavel Machek
2015-05-10 13:32                     ` Greg Kroah-Hartman
2015-02-27 19:15           ` [PATCH 2/2] fbcon: use the cursor blink interval provided by vt Scot Doyle
2015-05-27  5:57             ` Andrey Wagin
     [not found]               ` <CANaxB-zX4GkExeCzwgYZVDVZE47DHOCnRiYe86difk4fRMK=9A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-27  7:52                 ` Scot Doyle
2015-05-27 11:07                   ` Andrey Wagin
2015-03-02 11:15           ` [PATCH 0/2] add cursor blink interval terminal escape sequence Tomi Valkeinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.11.1501262040380.2052@localhost.localdomain \
    --to=lkml14@scotdoyle.com \
    --cc=geert@linux-m68k.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=plagnioj@jcrosoft.com \
    --cc=tomi.valkeinen@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox