[PATCH]: staging: media: css2400: fix checkpatch error

2017-03-28 Thread Haim Daniel
 >From 41d35b455f8eb139912909639e914469ef5e06fb Mon Sep 17 00:00:00 2001
From: Haim Daniel 
Date: Tue, 28 Mar 2017 19:27:57 +0300
Subject: [PATCH] [media] staging: css2400: fix checkpatch error

isp_capture_defs.h:

enclose macro with complex values in parentheses.

Signed-off-by: Haim Daniel 
---
 .../pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
index aa413df..78cbbf6 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
@@ -19,7 +19,7 @@
 #define _ISP_CAPTURE_BITS_PER_ELEM32  /* only for data, not SOP */		   
 #define _ISP_CAPTURE_BYTES_PER_ELEM   (_ISP_CAPTURE_BITS_PER_ELEM/8	)   
 #define _ISP_CAPTURE_BYTES_PER_WORD   32		/* 256/8 */	
-#define _ISP_CAPTURE_ELEM_PER_WORD_ISP_CAPTURE_BYTES_PER_WORD / _ISP_CAPTURE_BYTES_PER_ELEM		   
+#define _ISP_CAPTURE_ELEM_PER_WORD(_ISP_CAPTURE_BYTES_PER_WORD / _ISP_CAPTURE_BYTES_PER_ELEM) 
 
 //#define CAPT_RCV_ACK  1
 //#define CAPT_WRT_ACK  2   
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2]: staging: vc04_services: fix checkpatch error

2017-03-28 Thread Haim Daniel
 >From c840c64e0e662eee04b7d0403040be81eaa34c25 Mon Sep 17 00:00:00 2001
From: Haim Daniel 
Date: Wed, 29 Mar 2017 08:43:46 +0300
Subject: [PATCH] staging: vc04_services: add parenthesis to macros

vchi_cfg.h:

fix checkpatch ERROR: Macros with complex values should be enclosed in parenthesis
---
 drivers/staging/vc04_services/interface/vchi/vchi_cfg.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/vc04_services/interface/vchi/vchi_cfg.h b/drivers/staging/vc04_services/interface/vchi/vchi_cfg.h
index 26bc2d3..b6f42b8 100644
--- a/drivers/staging/vc04_services/interface/vchi/vchi_cfg.h
+++ b/drivers/staging/vc04_services/interface/vchi/vchi_cfg.h
@@ -173,7 +173,7 @@
  * under the carpet. */
 #if VCHI_RX_MSG_QUEUE_SIZE < (VCHI_MAX_MSG_SIZE/16 + 1) * VCHI_NUM_READ_SLOTS
 #  undef VCHI_RX_MSG_QUEUE_SIZE
-#  define VCHI_RX_MSG_QUEUE_SIZE (VCHI_MAX_MSG_SIZE/16 + 1) * VCHI_NUM_READ_SLOTS
+#  define VCHI_RX_MSG_QUEUE_SIZE ((VCHI_MAX_MSG_SIZE/16 + 1) * VCHI_NUM_READ_SLOTS)
 #endif
 
 /* How many bulk transmits can we have pending. Once exhausted, vchi_bulk_queue_transmit
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2] [media] staging: css2400: fix checkpatch error

2017-03-29 Thread Haim Daniel
isp_capture_defs.h:

fix checkpatch ERROR: 
Macros with complex values should be enclosed in parentheses

Signed-off-by: Haim Daniel 
---
 .../pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
index aa413df..78cbbf6 100644
--- 
a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
+++ 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
@@ -19,7 +19,7 @@
 #define _ISP_CAPTURE_BITS_PER_ELEM32  /* only for data, not 
SOP */
 #define _ISP_CAPTURE_BYTES_PER_ELEM   
(_ISP_CAPTURE_BITS_PER_ELEM/8)  
 #define _ISP_CAPTURE_BYTES_PER_WORD   32   /* 256/8 */ 
-#define _ISP_CAPTURE_ELEM_PER_WORD_ISP_CAPTURE_BYTES_PER_WORD 
/ _ISP_CAPTURE_BYTES_PER_ELEM   
+#define _ISP_CAPTURE_ELEM_PER_WORD(_ISP_CAPTURE_BYTES_PER_WORD 
/ _ISP_CAPTURE_BYTES_PER_ELEM) 
 
 //#define CAPT_RCV_ACK  1
 //#define CAPT_WRT_ACK  2   
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v3] [media] staging: css2400: fix checkpatch error

2017-03-29 Thread Haim Daniel
isp_capture_defs.h: clean up ERROR: Macros with complex values should be 
enclosed in parentheses

Signed-off-by: Haim Daniel 
---
 .../pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
index aa413df..117c7a2 100644
--- 
a/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
+++ 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/css_2401_csi2p_system/hrt/isp_capture_defs.h
@@ -19,7 +19,7 @@
 #define _ISP_CAPTURE_BITS_PER_ELEM32  /* only for data, not 
SOP */
 #define _ISP_CAPTURE_BYTES_PER_ELEM   
(_ISP_CAPTURE_BITS_PER_ELEM/8)  
 #define _ISP_CAPTURE_BYTES_PER_WORD   32   /* 256/8 */ 
-#define _ISP_CAPTURE_ELEM_PER_WORD_ISP_CAPTURE_BYTES_PER_WORD 
/ _ISP_CAPTURE_BYTES_PER_ELEM   
+#define _ISP_CAPTURE_ELEM_PER_WORD(_ISP_CAPTURE_BYTES_PER_WORD 
/ _ISP_CAPTURE_BYTES_PER_ELEM)
 
 //#define CAPT_RCV_ACK  1
 //#define CAPT_WRT_ACK  2   
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] drivers/staging: refactor dgnc tty registration.

2017-05-14 Thread Haim Daniel
-remove duplicate tty allocation code for serial and printer drivers.
-fix sparse warning: too long initializer-string for array of char.

Signed-off-by: Haim Daniel 
---
 drivers/staging/dgnc/dgnc_driver.h |  13 
 drivers/staging/dgnc/dgnc_tty.c| 137 ++---
 2 files changed, 50 insertions(+), 100 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_driver.h 
b/drivers/staging/dgnc/dgnc_driver.h
index 980410f..764d6fe 100644
--- a/drivers/staging/dgnc/dgnc_driver.h
+++ b/drivers/staging/dgnc/dgnc_driver.h
@@ -52,19 +52,6 @@
 
 #define dgnc_jiffies_from_ms(a) (((a) * HZ) / 1000)
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.  This is the same structure that is defined
- * as the default in tty_io.c with the same settings overridden as in serial.c
- *
- * In short, this should match the internal serial ports' defaults.
- */
-#defineDEFAULT_IFLAGS  (ICRNL | IXON)
-#defineDEFAULT_OFLAGS  (OPOST | ONLCR)
-#defineDEFAULT_CFLAGS  (B9600 | CS8 | CREAD | HUPCL | CLOCAL)
-#defineDEFAULT_LFLAGS  (ISIG | ICANON | ECHO | ECHOE | ECHOK | \
-   ECHOCTL | ECHOKE | IEXTEN)
-
 #ifndef _POSIX_VDISABLE
 #define   _POSIX_VDISABLE '\0'
 #endif
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 9e98781..87af304 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -51,22 +51,6 @@
.digi_term ="ansi"  /* default terminal type */
 };
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.
- *
- * This defines a raw port at 9600 baud, 8 data bits, no parity,
- * 1 stop bit.
- */
-static const struct ktermios default_termios = {
-   .c_iflag =  (DEFAULT_IFLAGS),
-   .c_oflag =  (DEFAULT_OFLAGS),
-   .c_cflag =  (DEFAULT_CFLAGS),
-   .c_lflag =  (DEFAULT_LFLAGS),
-   .c_cc = INIT_C_CC,
-   .c_line =   0,
-};
-
 static int dgnc_tty_open(struct tty_struct *tty, struct file *file);
 static void dgnc_tty_close(struct tty_struct *tty, struct file *file);
 static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file,
@@ -129,6 +113,41 @@ static void dgnc_tty_set_termios(struct tty_struct *tty,
 
 /* TTY Initialization/Cleanup Functions */
 
+static struct tty_driver *__dgnc_tty_register(char *serial_name, uint maxports,
+ int major, int minor)
+{
+   int rc;
+   struct tty_driver *drv = tty_alloc_driver(maxports,
+ TTY_DRIVER_REAL_RAW |
+ TTY_DRIVER_DYNAMIC_DEV |
+ TTY_DRIVER_HARDWARE_BREAK);
+   if (IS_ERR(drv))
+   return drv;
+
+   drv->name = serial_name;
+   drv->name_base = 0;
+   drv->major = major;
+   drv->minor_start = minor;
+   drv->type = TTY_DRIVER_TYPE_SERIAL;
+   drv->subtype = SERIAL_TYPE_NORMAL;
+   drv->init_termios = tty_std_termios;
+   drv->init_termios.c_cflag = (B9600 | CS8 | CREAD | HUPCL | CLOCAL);
+   drv->init_termios.c_ispeed = 9600;
+   drv->init_termios.c_ospeed = 9600;
+   drv->driver_name = DRVSTR;
+   /*
+* Entry points for driver.  Called by the kernel from
+* tty_io.c and n_tty.c.
+*/
+   tty_set_operations(drv, &dgnc_tty_ops);
+   rc = tty_register_driver(drv);
+   if (rc < 0) {
+   put_tty_driver(drv);
+   return ERR_PTR(rc);
+   }
+   return drv;
+}
+
 /**
  * dgnc_tty_register() - Init the tty subsystem for this board.
  */
@@ -136,87 +155,31 @@ int dgnc_tty_register(struct dgnc_board *brd)
 {
int rc;
 
-   brd->serial_driver = tty_alloc_driver(brd->maxports,
- TTY_DRIVER_REAL_RAW |
- TTY_DRIVER_DYNAMIC_DEV |
- TTY_DRIVER_HARDWARE_BREAK);
-   if (IS_ERR(brd->serial_driver))
-   return PTR_ERR(brd->serial_driver);
-
snprintf(brd->serial_name, MAXTTYNAMELEN, "tty_dgnc_%d_",
 brd->boardnum);
 
-   brd->serial_driver->name = brd->serial_name;
-   brd->serial_driver->name_base = 0;
-   brd->serial_driver->major = 0;
-   brd->serial_driver->minor_start = 0;
-   brd->serial_driver->type = TTY_DRIVER_TYPE_SERIAL;
-   brd->serial_driver->subtype = SERIAL_TYPE_NORMAL;
-   brd->serial_driver->init_termios = default_termios;
-   brd->serial_driver->driver_name = DRVSTR;
-
-   /*
-* Entry points for driver.  Called by the kernel from
-* tty_io.c and n_tty.c.
-

[PATCH v2] drivers/staging: refactor dgnc tty registration.

2017-05-15 Thread Haim Daniel
-remove duplicate tty allocation code for serial and printer drivers.
-fix sparse warning: too long initializer-string for array of char.

Signed-off-by: Haim Daniel 
---
 drivers/staging/dgnc/dgnc_driver.h |  13 
 drivers/staging/dgnc/dgnc_tty.c| 150 +++--
 2 files changed, 59 insertions(+), 104 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_driver.h 
b/drivers/staging/dgnc/dgnc_driver.h
index 980410f..764d6fe 100644
--- a/drivers/staging/dgnc/dgnc_driver.h
+++ b/drivers/staging/dgnc/dgnc_driver.h
@@ -52,19 +52,6 @@
 
 #define dgnc_jiffies_from_ms(a) (((a) * HZ) / 1000)
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.  This is the same structure that is defined
- * as the default in tty_io.c with the same settings overridden as in serial.c
- *
- * In short, this should match the internal serial ports' defaults.
- */
-#defineDEFAULT_IFLAGS  (ICRNL | IXON)
-#defineDEFAULT_OFLAGS  (OPOST | ONLCR)
-#defineDEFAULT_CFLAGS  (B9600 | CS8 | CREAD | HUPCL | CLOCAL)
-#defineDEFAULT_LFLAGS  (ISIG | ICANON | ECHO | ECHOE | ECHOK | \
-   ECHOCTL | ECHOKE | IEXTEN)
-
 #ifndef _POSIX_VDISABLE
 #define   _POSIX_VDISABLE '\0'
 #endif
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 9e98781..189a731 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -51,22 +51,6 @@
.digi_term ="ansi"  /* default terminal type */
 };
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.
- *
- * This defines a raw port at 9600 baud, 8 data bits, no parity,
- * 1 stop bit.
- */
-static const struct ktermios default_termios = {
-   .c_iflag =  (DEFAULT_IFLAGS),
-   .c_oflag =  (DEFAULT_OFLAGS),
-   .c_cflag =  (DEFAULT_CFLAGS),
-   .c_lflag =  (DEFAULT_LFLAGS),
-   .c_cc = INIT_C_CC,
-   .c_line =   0,
-};
-
 static int dgnc_tty_open(struct tty_struct *tty, struct file *file);
 static void dgnc_tty_close(struct tty_struct *tty, struct file *file);
 static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file,
@@ -129,6 +113,49 @@ static void dgnc_tty_set_termios(struct tty_struct *tty,
 
 /* TTY Initialization/Cleanup Functions */
 
+static struct tty_driver *_dgnc_tty_register(char *serial_name, uint maxports,
+int major, int minor)
+{
+   int rc;
+   struct tty_driver *drv;
+
+   drv = tty_alloc_driver(maxports,
+  TTY_DRIVER_REAL_RAW |
+  TTY_DRIVER_DYNAMIC_DEV |
+  TTY_DRIVER_HARDWARE_BREAK);
+   if (IS_ERR(drv))
+   return drv;
+
+   drv->name = serial_name;
+   drv->name_base = 0;
+   drv->major = major;
+   drv->minor_start = minor;
+   drv->type = TTY_DRIVER_TYPE_SERIAL;
+   drv->subtype = SERIAL_TYPE_NORMAL;
+   drv->init_termios = tty_std_termios;
+   drv->init_termios.c_cflag = (B9600 | CS8 | CREAD | HUPCL | CLOCAL);
+   drv->init_termios.c_ispeed = 9600;
+   drv->init_termios.c_ospeed = 9600;
+   drv->driver_name = DRVSTR;
+   /*
+* Entry points for driver.  Called by the kernel from
+* tty_io.c and n_tty.c.
+*/
+   tty_set_operations(drv, &dgnc_tty_ops);
+   rc = tty_register_driver(drv);
+   if (rc < 0) {
+   put_tty_driver(drv);
+   return ERR_PTR(rc);
+   }
+   return drv;
+}
+
+static void _dgnc_tty_unregister(struct tty_driver *drv)
+{
+   tty_unregister_driver(drv);
+   put_tty_driver(drv);
+}
+
 /**
  * dgnc_tty_register() - Init the tty subsystem for this board.
  */
@@ -136,95 +163,36 @@ int dgnc_tty_register(struct dgnc_board *brd)
 {
int rc;
 
-   brd->serial_driver = tty_alloc_driver(brd->maxports,
- TTY_DRIVER_REAL_RAW |
- TTY_DRIVER_DYNAMIC_DEV |
- TTY_DRIVER_HARDWARE_BREAK);
-   if (IS_ERR(brd->serial_driver))
-   return PTR_ERR(brd->serial_driver);
-
snprintf(brd->serial_name, MAXTTYNAMELEN, "tty_dgnc_%d_",
 brd->boardnum);
 
-   brd->serial_driver->name = brd->serial_name;
-   brd->serial_driver->name_base = 0;
-   brd->serial_driver->major = 0;
-   brd->serial_driver->minor_start = 0;
-   brd->serial_driver->type = TTY_DRIVER_TYPE_SERIAL;
-   brd->serial_driver->subtype = SERIAL_TYPE_NORMAL;
-   brd->serial_driver->init_termios = default_termios;
-   brd->serial_driver->driver_name = DRVSTR;
-
-   /*
-

[PATCH v3] drivers/staging: refactor dgnc tty registration.

2017-05-15 Thread Haim Daniel
-remove duplicate tty allocation code for serial and printer drivers.
-fix sparse warning: too long initializer-string for array of char.

Signed-off-by: Haim Daniel 
---
 drivers/staging/dgnc/dgnc_driver.h |  13 
 drivers/staging/dgnc/dgnc_tty.c| 150 +++--
 2 files changed, 59 insertions(+), 104 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_driver.h 
b/drivers/staging/dgnc/dgnc_driver.h
index 980410f..764d6fe 100644
--- a/drivers/staging/dgnc/dgnc_driver.h
+++ b/drivers/staging/dgnc/dgnc_driver.h
@@ -52,19 +52,6 @@
 
 #define dgnc_jiffies_from_ms(a) (((a) * HZ) / 1000)
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.  This is the same structure that is defined
- * as the default in tty_io.c with the same settings overridden as in serial.c
- *
- * In short, this should match the internal serial ports' defaults.
- */
-#defineDEFAULT_IFLAGS  (ICRNL | IXON)
-#defineDEFAULT_OFLAGS  (OPOST | ONLCR)
-#defineDEFAULT_CFLAGS  (B9600 | CS8 | CREAD | HUPCL | CLOCAL)
-#defineDEFAULT_LFLAGS  (ISIG | ICANON | ECHO | ECHOE | ECHOK | \
-   ECHOCTL | ECHOKE | IEXTEN)
-
 #ifndef _POSIX_VDISABLE
 #define   _POSIX_VDISABLE '\0'
 #endif
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 9e98781..d3736da 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -51,22 +51,6 @@
.digi_term ="ansi"  /* default terminal type */
 };
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.
- *
- * This defines a raw port at 9600 baud, 8 data bits, no parity,
- * 1 stop bit.
- */
-static const struct ktermios default_termios = {
-   .c_iflag =  (DEFAULT_IFLAGS),
-   .c_oflag =  (DEFAULT_OFLAGS),
-   .c_cflag =  (DEFAULT_CFLAGS),
-   .c_lflag =  (DEFAULT_LFLAGS),
-   .c_cc = INIT_C_CC,
-   .c_line =   0,
-};
-
 static int dgnc_tty_open(struct tty_struct *tty, struct file *file);
 static void dgnc_tty_close(struct tty_struct *tty, struct file *file);
 static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file,
@@ -129,6 +113,49 @@ static void dgnc_tty_set_termios(struct tty_struct *tty,
 
 /* TTY Initialization/Cleanup Functions */
 
+static struct tty_driver *dgnc_tty_create(char *serial_name, uint maxports,
+ int major, int minor)
+{
+   int rc;
+   struct tty_driver *drv;
+
+   drv = tty_alloc_driver(maxports,
+  TTY_DRIVER_REAL_RAW |
+  TTY_DRIVER_DYNAMIC_DEV |
+  TTY_DRIVER_HARDWARE_BREAK);
+   if (IS_ERR(drv))
+   return drv;
+
+   drv->name = serial_name;
+   drv->name_base = 0;
+   drv->major = major;
+   drv->minor_start = minor;
+   drv->type = TTY_DRIVER_TYPE_SERIAL;
+   drv->subtype = SERIAL_TYPE_NORMAL;
+   drv->init_termios = tty_std_termios;
+   drv->init_termios.c_cflag = (B9600 | CS8 | CREAD | HUPCL | CLOCAL);
+   drv->init_termios.c_ispeed = 9600;
+   drv->init_termios.c_ospeed = 9600;
+   drv->driver_name = DRVSTR;
+   /*
+* Entry points for driver.  Called by the kernel from
+* tty_io.c and n_tty.c.
+*/
+   tty_set_operations(drv, &dgnc_tty_ops);
+   rc = tty_register_driver(drv);
+   if (rc < 0) {
+   put_tty_driver(drv);
+   return ERR_PTR(rc);
+   }
+   return drv;
+}
+
+static void dgnc_tty_free(struct tty_driver *drv)
+{
+   tty_unregister_driver(drv);
+   put_tty_driver(drv);
+}
+
 /**
  * dgnc_tty_register() - Init the tty subsystem for this board.
  */
@@ -136,95 +163,36 @@ int dgnc_tty_register(struct dgnc_board *brd)
 {
int rc;
 
-   brd->serial_driver = tty_alloc_driver(brd->maxports,
- TTY_DRIVER_REAL_RAW |
- TTY_DRIVER_DYNAMIC_DEV |
- TTY_DRIVER_HARDWARE_BREAK);
-   if (IS_ERR(brd->serial_driver))
-   return PTR_ERR(brd->serial_driver);
-
snprintf(brd->serial_name, MAXTTYNAMELEN, "tty_dgnc_%d_",
 brd->boardnum);
 
-   brd->serial_driver->name = brd->serial_name;
-   brd->serial_driver->name_base = 0;
-   brd->serial_driver->major = 0;
-   brd->serial_driver->minor_start = 0;
-   brd->serial_driver->type = TTY_DRIVER_TYPE_SERIAL;
-   brd->serial_driver->subtype = SERIAL_TYPE_NORMAL;
-   brd->serial_driver->init_termios = default_termios;
-   brd->serial_driver->driver_name = DRVSTR;
-
-   /*
-* Entry points 

Re: [PATCH v3] drivers/staging: refactor dgnc tty registration.

2017-05-15 Thread Haim Daniel

me@haim-toshiba1 ~ $ dpkg -l sparse
Desired=Unknown/Install/Remove/Purge/Hold
| 
Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name  Version   Architecture  Description
+++-=-=-=-
ii  sparse0.4.5~rc1-1   amd64 semantic parser of 
source files


me@haim-toshiba1 linux (next-20170512) $ make clean M=drivers/staging 
/dgnc/; make C=1 M=drivers/staging/dgnc/


drivers/staging/dgnc/dgnc_tty.c:66:25: warning: too long 
initializer-string for array of char


On 05/15/2017 03:52 PM, Dan Carpenter wrote:

On Mon, May 15, 2017 at 03:30:50PM +0300, Haim Daniel wrote:

-remove duplicate tty allocation code for serial and printer drivers.
-fix sparse warning: too long initializer-string for array of char.


I think my version of Sparse is too old.  I don't get a warning.  Please
cut and paste the exact warning.



Signed-off-by: Haim Daniel 
---
 drivers/staging/dgnc/dgnc_driver.h |  13 
 drivers/staging/dgnc/dgnc_tty.c| 150 +++--
 2 files changed, 59 insertions(+), 104 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_driver.h 
b/drivers/staging/dgnc/dgnc_driver.h
index 980410f..764d6fe 100644
--- a/drivers/staging/dgnc/dgnc_driver.h
+++ b/drivers/staging/dgnc/dgnc_driver.h
@@ -52,19 +52,6 @@

 #define dgnc_jiffies_from_ms(a) (((a) * HZ) / 1000)

-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.  This is the same structure that is defined
- * as the default in tty_io.c with the same settings overridden as in serial.c
- *
- * In short, this should match the internal serial ports' defaults.
- */
-#defineDEFAULT_IFLAGS  (ICRNL | IXON)
-#defineDEFAULT_OFLAGS  (OPOST | ONLCR)
-#defineDEFAULT_CFLAGS  (B9600 | CS8 | CREAD | HUPCL | CLOCAL)
-#defineDEFAULT_LFLAGS  (ISIG | ICANON | ECHO | ECHOE | ECHOK | \
-   ECHOCTL | ECHOKE | IEXTEN)
-
 #ifndef _POSIX_VDISABLE
 #define   _POSIX_VDISABLE '\0'
 #endif
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 9e98781..d3736da 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -51,22 +51,6 @@
.digi_term ="ansi"/* default terminal type */
 };

-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.
- *
- * This defines a raw port at 9600 baud, 8 data bits, no parity,
- * 1 stop bit.
- */
-static const struct ktermios default_termios = {
-   .c_iflag =  (DEFAULT_IFLAGS),
-   .c_oflag =  (DEFAULT_OFLAGS),
-   .c_cflag =  (DEFAULT_CFLAGS),
-   .c_lflag =  (DEFAULT_LFLAGS),
-   .c_cc = INIT_C_CC,


We don't need INIT_C_CC?
No, the idea was reusing the tty_std_termios, and setting only the 
relevant params.





-   .c_line =   0,
-};
-
 static int dgnc_tty_open(struct tty_struct *tty, struct file *file);
 static void dgnc_tty_close(struct tty_struct *tty, struct file *file);
 static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file,
@@ -129,6 +113,49 @@ static void dgnc_tty_set_termios(struct tty_struct *tty,

 /* TTY Initialization/Cleanup Functions */

+static struct tty_driver *dgnc_tty_create(char *serial_name, uint maxports,
+ int major, int minor)
+{
+   int rc;
+   struct tty_driver *drv;
+
+   drv = tty_alloc_driver(maxports,
+  TTY_DRIVER_REAL_RAW |
+  TTY_DRIVER_DYNAMIC_DEV |
+  TTY_DRIVER_HARDWARE_BREAK);
+   if (IS_ERR(drv))
+   return drv;
+
+   drv->name = serial_name;
+   drv->name_base = 0;
+   drv->major = major;
+   drv->minor_start = minor;
+   drv->type = TTY_DRIVER_TYPE_SERIAL;
+   drv->subtype = SERIAL_TYPE_NORMAL;
+   drv->init_termios = tty_std_termios;
+   drv->init_termios.c_cflag = (B9600 | CS8 | CREAD | HUPCL | CLOCAL);
+   drv->init_termios.c_ispeed = 9600;
+   drv->init_termios.c_ospeed = 9600;


Setting c_ispeed and c_ospeed is almost certainly correct, but they're
not mentioned in the changelog.

Ack, will do.

Btw, the overwhelming vast majority of staging drivers are sent without
testing.  But it looks like maybe you are testing yours?  Please mention
that in the changelog because it makes us feel warm inside.
I only unit tested a fraction of the code, will mention it in the 
changelog, for the sake of that fuzzy feeling :)



Otherwise it looks fine to me.  Sorry for making you redo it so many
times instead of reviewing thouroughly all at once.  I shouldn't have
been so lazy.

np.


I still feel a bit bad a

[PATCH v4] drivers/staging: refactor dgnc tty registration.

2017-05-15 Thread Haim Daniel
-remove duplicate tty allocation code for serial and printer drivers.
-add missing tty c_ispeed and c_ospeed initialization to 9600.
-fix sparse warning: too long initializer-string for array of char.

This patch was only unit tested due to lack of the actual hardware.

Signed-off-by: Haim Daniel 
---
 drivers/staging/dgnc/dgnc_driver.h |  13 
 drivers/staging/dgnc/dgnc_tty.c| 150 +++--
 2 files changed, 59 insertions(+), 104 deletions(-)

diff --git a/drivers/staging/dgnc/dgnc_driver.h 
b/drivers/staging/dgnc/dgnc_driver.h
index 980410f..764d6fe 100644
--- a/drivers/staging/dgnc/dgnc_driver.h
+++ b/drivers/staging/dgnc/dgnc_driver.h
@@ -52,19 +52,6 @@
 
 #define dgnc_jiffies_from_ms(a) (((a) * HZ) / 1000)
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.  This is the same structure that is defined
- * as the default in tty_io.c with the same settings overridden as in serial.c
- *
- * In short, this should match the internal serial ports' defaults.
- */
-#defineDEFAULT_IFLAGS  (ICRNL | IXON)
-#defineDEFAULT_OFLAGS  (OPOST | ONLCR)
-#defineDEFAULT_CFLAGS  (B9600 | CS8 | CREAD | HUPCL | CLOCAL)
-#defineDEFAULT_LFLAGS  (ISIG | ICANON | ECHO | ECHOE | ECHOK | \
-   ECHOCTL | ECHOKE | IEXTEN)
-
 #ifndef _POSIX_VDISABLE
 #define   _POSIX_VDISABLE '\0'
 #endif
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 9e98781..d3736da 100644
--- a/drivers/staging/dgnc/dgnc_tty.c
+++ b/drivers/staging/dgnc/dgnc_tty.c
@@ -51,22 +51,6 @@
.digi_term ="ansi"  /* default terminal type */
 };
 
-/*
- * Define a local default termios struct. All ports will be created
- * with this termios initially.
- *
- * This defines a raw port at 9600 baud, 8 data bits, no parity,
- * 1 stop bit.
- */
-static const struct ktermios default_termios = {
-   .c_iflag =  (DEFAULT_IFLAGS),
-   .c_oflag =  (DEFAULT_OFLAGS),
-   .c_cflag =  (DEFAULT_CFLAGS),
-   .c_lflag =  (DEFAULT_LFLAGS),
-   .c_cc = INIT_C_CC,
-   .c_line =   0,
-};
-
 static int dgnc_tty_open(struct tty_struct *tty, struct file *file);
 static void dgnc_tty_close(struct tty_struct *tty, struct file *file);
 static int dgnc_block_til_ready(struct tty_struct *tty, struct file *file,
@@ -129,6 +113,49 @@ static void dgnc_tty_set_termios(struct tty_struct *tty,
 
 /* TTY Initialization/Cleanup Functions */
 
+static struct tty_driver *dgnc_tty_create(char *serial_name, uint maxports,
+ int major, int minor)
+{
+   int rc;
+   struct tty_driver *drv;
+
+   drv = tty_alloc_driver(maxports,
+  TTY_DRIVER_REAL_RAW |
+  TTY_DRIVER_DYNAMIC_DEV |
+  TTY_DRIVER_HARDWARE_BREAK);
+   if (IS_ERR(drv))
+   return drv;
+
+   drv->name = serial_name;
+   drv->name_base = 0;
+   drv->major = major;
+   drv->minor_start = minor;
+   drv->type = TTY_DRIVER_TYPE_SERIAL;
+   drv->subtype = SERIAL_TYPE_NORMAL;
+   drv->init_termios = tty_std_termios;
+   drv->init_termios.c_cflag = (B9600 | CS8 | CREAD | HUPCL | CLOCAL);
+   drv->init_termios.c_ispeed = 9600;
+   drv->init_termios.c_ospeed = 9600;
+   drv->driver_name = DRVSTR;
+   /*
+* Entry points for driver.  Called by the kernel from
+* tty_io.c and n_tty.c.
+*/
+   tty_set_operations(drv, &dgnc_tty_ops);
+   rc = tty_register_driver(drv);
+   if (rc < 0) {
+   put_tty_driver(drv);
+   return ERR_PTR(rc);
+   }
+   return drv;
+}
+
+static void dgnc_tty_free(struct tty_driver *drv)
+{
+   tty_unregister_driver(drv);
+   put_tty_driver(drv);
+}
+
 /**
  * dgnc_tty_register() - Init the tty subsystem for this board.
  */
@@ -136,95 +163,36 @@ int dgnc_tty_register(struct dgnc_board *brd)
 {
int rc;
 
-   brd->serial_driver = tty_alloc_driver(brd->maxports,
- TTY_DRIVER_REAL_RAW |
- TTY_DRIVER_DYNAMIC_DEV |
- TTY_DRIVER_HARDWARE_BREAK);
-   if (IS_ERR(brd->serial_driver))
-   return PTR_ERR(brd->serial_driver);
-
snprintf(brd->serial_name, MAXTTYNAMELEN, "tty_dgnc_%d_",
 brd->boardnum);
 
-   brd->serial_driver->name = brd->serial_name;
-   brd->serial_driver->name_base = 0;
-   brd->serial_driver->major = 0;
-   brd->serial_driver->minor_start = 0;
-   brd->serial_driver->type = TTY_DRIVER_TYPE_SERIAL;
-   brd->serial_driver->subtype = SERIAL_TYPE_NORMAL;
-   brd->serial_driver->ini