Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1674284
| Path | csiph.com!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Okash Khawaja <okash.khawaja@gmail.com> |
| Newsgroups | linux.kernel |
| Subject | [patch v4 2/3] staging: speakup: check and convert dev name or ser to dev_t |
| Date | Sun, 25 Jun 2017 20:50:02 +0200 |
| Message-ID | <tWkLE-bZ-19@gated-at.bofh.it> (permalink) |
| References | <tWkLD-bZ-3@gated-at.bofh.it> <tWkLD-bZ-5@gated-at.bofh.it> |
| X-Original-To | Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jslaby@suse.com>, Samuel Thibault <samuel.thibault@ens-lyon.org>, Andy Shevchenko <andy.shevchenko@gmail.com>, linux-kernel@vger.kernel.org |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:user-agent:date:from:to:cc:subject:references :mime-version:content-disposition; bh=cVUmhz0MtBM9B4elS9ce4UzoXbnGyDmgcLYvvGNcBcg=; b=KDmmQdieyAOPpYe/OcOybgDzZJRjvEYUijMms0XNdsVzX6f2vrxp756rcwl7ibHEkm msOllpRVbtqkQiVWmOkZs5bdYSYHVLecYVthTbqaVpxe76yGZMq0O3eLYpNpnQT+5q74 X3sm2zMFudfFVdf1HRSbIEWa8PN6gaMoARjkav6yvqrjVCfTFoNhq46u60ndj2NJBhW5 W3ktsQI7rtGUB0KGo6gjfSs3iJo7azdFGcP1i021GQ/lFBRRr7GcgOmLmLSw/ioVZ4S4 avcXOb4Jv120dKa2gRWlrWOGE2x2R2tRLdxzoZ5qnfLLoEw45McT2dzMjw/Vw1fAUQXC aU/Q== |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:user-agent:date:from:to:cc:subject :references:mime-version:content-disposition; bh=cVUmhz0MtBM9B4elS9ce4UzoXbnGyDmgcLYvvGNcBcg=; b=WUREKoJDtcMW96IAMJMZQR86a9mMfqjDroDyNkPazF1OVP3PcTmkDgVe/h6+h2LcmO QNjJi5K0ddZ3CndSdNdXgZ4tfsATm+qrhkfFO18mA9kUS5q9x0Z5okTGyPaV5ZVHxjye sR2iH0TtRFsi+iAewtbwqDlxBhDQpllaYjlMPFWPdmi8qxKqku3pdtty76+ABb4sl5WV WMiRmnnw0wQPKVIOCpvfCRj1B3ZfcCkmj1xrNrnkH9bIn/h328Y8rKAvGnkWvj6ghxzT kGrQN8r0CQaUC4Of9LwYqup+LO/kRnM022CC0XbI3HHTpVcn293s5+EOoC45dI2fyPBi OhfA== |
| X-Gm-Message-State | AKS2vOwjf0Psxaho/Ulqu4MBlqiMrsFxqS1lhDa99AeGY1vztSIUMb8t lMhXAnUSLupwqg== |
| X-Received | by 10.223.151.44 with SMTP id r41mr11419394wrb.6.1498416342732; Sun, 25 Jun 2017 11:45:42 -0700 (PDT) |
| User-Agent | quilt/0.65 |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset=ISO-8859-15 |
| Content-Disposition | inline; filename=12_check_and_convert_dev_or_ser_to_number |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 99 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | William Hubbs <w.d.hubbs@gmail.com>, Chris Brannon <chris@the-brannons.com>, Kirk Reiser <kirk@reisers.ca>, speakup@linux-speakup.org, devel@driverdev.osuosl.org, Okash Khawaja <okash.khawaja@gmail.com> |
| X-Original-Date | Sun, 25 Jun 2017 19:40:01 +0100 |
| X-Original-Message-ID | <20170625184540.205820491@gmail.com> |
| X-Original-References | <20170625181353.GA10487@kroah.com> <20170625183959.270640619@gmail.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1674284 |
Show key headers only | View raw
This patch adds functionality to validate and convert either a device
name or 'ser' memmber of synth into dev_t. Subsequent patch in this set
will call it to convert user-specified device into device number. For
device name, this patch does some basic sanity checks on the string
passed in. It currently supports ttyS*, ttyUSB* and, for selected
synths, lp*.
The patch also introduces a string member variable named 'dev_name' to
struct spk_synth. 'dev_name' represents the device name - ttyUSB0 etc -
which needs conversion to dev_t.
Signed-off-by: Okash Khawaja <okash.khawaja@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
drivers/staging/speakup/spk_priv.h | 2 +
drivers/staging/speakup/spk_ttyio.c | 42 ++++++++++++++++++++++++++++++++++++
drivers/staging/speakup/spk_types.h | 1
3 files changed, 45 insertions(+)
--- a/drivers/staging/speakup/spk_priv.h
+++ b/drivers/staging/speakup/spk_priv.h
@@ -40,6 +40,8 @@
#define KT_SPKUP 15
#define SPK_SYNTH_TIMEOUT 100000 /* in micro-seconds */
+#define SYNTH_DEFAULT_DEV "ttyS0"
+#define SYNTH_DEFAULT_SER 0
const struct old_serial_port *spk_serial_init(int index);
void spk_stop_serial_interrupt(void);
--- a/drivers/staging/speakup/spk_ttyio.c
+++ b/drivers/staging/speakup/spk_ttyio.c
@@ -7,6 +7,11 @@
#include "spk_types.h"
#include "spk_priv.h"
+#define DEV_PREFIX_LP "lp"
+
+static const char * const lp_supported[] = { "acntsa", "bns", "dummy",
+ "txprt" };
+
struct spk_ldisc_data {
char buf;
struct semaphore sem;
@@ -16,6 +21,43 @@ struct spk_ldisc_data {
static struct spk_synth *spk_ttyio_synth;
static struct tty_struct *speakup_tty;
+int ser_to_dev(int ser, dev_t *dev_no)
+{
+ if (ser < 0 || ser > (255 - 64)) {
+ pr_err("speakup: Invalid ser param. Must be between 0 and 191 inclusive.\n");
+ return -EINVAL;
+ }
+
+ *dev_no = MKDEV(4, (64 + ser));
+ return 0;
+}
+
+static int get_dev_to_use(struct spk_synth *synth, dev_t *dev_no)
+{
+ /* use ser only when dev is not specified */
+ if (strcmp(synth->dev_name, SYNTH_DEFAULT_DEV) ||
+ synth->ser == SYNTH_DEFAULT_SER) {
+ /* for /dev/lp* check if synth is supported */
+ if (strncmp(synth->dev_name, DEV_PREFIX_LP,
+ strlen(DEV_PREFIX_LP)) == 0)
+ if (match_string(lp_supported, ARRAY_SIZE(lp_supported),
+ synth->name) < 0) {
+ int i;
+
+ pr_err("speakup: lp* is only supported on:");
+ for (i = 0; i < ARRAY_SIZE(lp_supported); i++)
+ pr_cont(" %s", lp_supported[i]);
+ pr_cont("\n");
+
+ return -ENOTSUPP;
+ }
+
+ return tty_dev_name_to_number(synth->dev_name, dev_no);
+ }
+
+ return ser_to_dev(synth->ser, dev_no);
+}
+
static int spk_ttyio_ldisc_open(struct tty_struct *tty)
{
struct spk_ldisc_data *ldisc_data;
--- a/drivers/staging/speakup/spk_types.h
+++ b/drivers/staging/speakup/spk_types.h
@@ -169,6 +169,7 @@ struct spk_synth {
int jiffies;
int full;
int ser;
+ char *dev_name;
short flags;
short startup;
const int checkval; /* for validating a proper synth module */
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[patch v4 0/3] staging: speakup: support more than ttyS* Okash Khawaja <okash.khawaja@gmail.com> - 2017-06-25 20:50 +0200 [patch v4 2/3] staging: speakup: check and convert dev name or ser to dev_t Okash Khawaja <okash.khawaja@gmail.com> - 2017-06-25 20:50 +0200
csiph-web