Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
U
USB Relay Box 1
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
USB Relay Box 1
Commits
bf8aea80
Commit
bf8aea80
authored
Apr 29, 2014
by
Matthieu Cattin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sw: Port cp210x modified driver to kernel 3.13.0-24-generic
-> to install a pts system with ubuntu 14.04
parent
2c2988f8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
55 deletions
+55
-55
cp210x.c
sw/cp210x-driver/cp210x.c
+55
-55
No files found.
sw/cp210x-driver/cp210x.c
View file @
bf8aea80
...
...
@@ -323,7 +323,7 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 requestType,
kfree
(
buf
);
if
(
result
!=
size
)
{
d
bg
(
"%s - Unable to send config request, "
d
ev_dbg
(
&
port
->
dev
,
"%s - Unable to send config request, "
"request=0x%x size=%d result=%d
\n
"
,
__func__
,
request
,
size
,
result
);
if
(
result
>
0
)
...
...
@@ -375,7 +375,7 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 requestType,
kfree
(
buf
);
if
(
result
!=
size
)
{
d
bg
(
"%s - Unable to send request, "
d
ev_dbg
(
&
port
->
dev
,
"%s - Unable to send request, "
"request=0x%x size=%d result=%d
\n
"
,
__func__
,
request
,
size
,
result
);
if
(
result
>
0
)
...
...
@@ -432,7 +432,7 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port)
{
int
result
;
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
result
=
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_IFC_ENABLE
,
UART_ENABLE
,
NULL
,
0
);
...
...
@@ -453,7 +453,7 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port)
static
void
cp210x_close
(
struct
usb_serial_port
*
port
)
{
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
usb_serial_generic_close
(
port
);
...
...
@@ -470,7 +470,7 @@ static int cp210x_ioctl(struct tty_struct *tty,
struct
usb_serial_port
*
port
=
tty
->
driver_data
;
struct
cp210x_port_private
*
port_priv
=
usb_get_serial_port_data
(
port
);
printk
(
"port %x priv %x cmd %x arg %x %x
\n
"
,
port
,
port_priv
,
cmd
,
arg
,
*
(
unsigned
char
*
)
arg
);
printk
(
"port %x priv %x cmd %x arg %x %x
\n
"
,
port
->
port_number
,
port_priv
->
bPartNumber
,
cmd
,
(
unsigned
int
)
arg
,
*
(
unsigned
char
*
)
arg
);
if
(
arg
==
0
)
return
-
EINVAL
;
...
...
@@ -542,7 +542,7 @@ static void cp210x_get_termios(struct tty_struct *tty,
if
(
tty
)
{
cp210x_get_termios_port
(
tty
->
driver_data
,
&
tty
->
termios
->
c_cflag
,
&
baud
);
&
tty
->
termios
.
c_cflag
,
&
baud
);
tty_encode_baud_rate
(
tty
,
baud
,
baud
);
}
...
...
@@ -564,12 +564,12 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
unsigned
int
baud
;
unsigned
int
bits
;
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
cp210x_get_config
(
port
,
REQTYPE_INTERFACE_TO_HOST
,
CP210X_GET_BAUDRATE
,
0
,
&
baud
,
4
);
d
bg
(
"%s - baud rate = %d"
,
__func__
,
baud
);
d
ev_dbg
(
&
port
->
dev
,
"%s - baud rate = %d"
,
__func__
,
baud
);
*
baudp
=
baud
;
cflag
=
*
cflagp
;
...
...
@@ -579,23 +579,23 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
cflag
&=
~
CSIZE
;
switch
(
bits
&
BITS_DATA_MASK
)
{
case
BITS_DATA_5
:
d
bg
(
"%s - data bits = 5"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 5"
,
__func__
);
cflag
|=
CS5
;
break
;
case
BITS_DATA_6
:
d
bg
(
"%s - data bits = 6"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 6"
,
__func__
);
cflag
|=
CS6
;
break
;
case
BITS_DATA_7
:
d
bg
(
"%s - data bits = 7"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 7"
,
__func__
);
cflag
|=
CS7
;
break
;
case
BITS_DATA_8
:
d
bg
(
"%s - data bits = 8"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 8"
,
__func__
);
cflag
|=
CS8
;
break
;
case
BITS_DATA_9
:
d
bg
(
"%s - data bits = 9 (not supported, using 8 data bits)"
,
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 9 (not supported, using 8 data bits)"
,
__func__
);
cflag
|=
CS8
;
bits
&=
~
BITS_DATA_MASK
;
...
...
@@ -604,7 +604,7 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
CP210X_SET_LINE_CTL
,
0
,
&
bits
,
2
);
break
;
default:
d
bg
(
"%s - Unknown number of data bits, using 8"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - Unknown number of data bits, using 8"
,
__func__
);
cflag
|=
CS8
;
bits
&=
~
BITS_DATA_MASK
;
bits
|=
BITS_DATA_8
;
...
...
@@ -615,29 +615,29 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
switch
(
bits
&
BITS_PARITY_MASK
)
{
case
BITS_PARITY_NONE
:
d
bg
(
"%s - parity = NONE"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = NONE"
,
__func__
);
cflag
&=
~
PARENB
;
break
;
case
BITS_PARITY_ODD
:
d
bg
(
"%s - parity = ODD"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = ODD"
,
__func__
);
cflag
|=
(
PARENB
|
PARODD
);
break
;
case
BITS_PARITY_EVEN
:
d
bg
(
"%s - parity = EVEN"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = EVEN"
,
__func__
);
cflag
&=
~
PARODD
;
cflag
|=
PARENB
;
break
;
case
BITS_PARITY_MARK
:
d
bg
(
"%s - parity = MARK"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = MARK"
,
__func__
);
cflag
|=
(
PARENB
|
PARODD
|
CMSPAR
);
break
;
case
BITS_PARITY_SPACE
:
d
bg
(
"%s - parity = SPACE"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = SPACE"
,
__func__
);
cflag
&=
~
PARODD
;
cflag
|=
(
PARENB
|
CMSPAR
);
break
;
default:
d
bg
(
"%s - Unknown parity mode, disabling parity"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - Unknown parity mode, disabling parity"
,
__func__
);
cflag
&=
~
PARENB
;
bits
&=
~
BITS_PARITY_MASK
;
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
...
...
@@ -648,21 +648,21 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
cflag
&=
~
CSTOPB
;
switch
(
bits
&
BITS_STOP_MASK
)
{
case
BITS_STOP_1
:
d
bg
(
"%s - stop bits = 1"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - stop bits = 1"
,
__func__
);
break
;
case
BITS_STOP_1_5
:
d
bg
(
"%s - stop bits = 1.5 (not supported, using 1 stop bit)"
,
d
ev_dbg
(
&
port
->
dev
,
"%s - stop bits = 1.5 (not supported, using 1 stop bit)"
,
__func__
);
bits
&=
~
BITS_STOP_MASK
;
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_LINE_CTL
,
0
,
&
bits
,
2
);
break
;
case
BITS_STOP_2
:
d
bg
(
"%s - stop bits = 2"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - stop bits = 2"
,
__func__
);
cflag
|=
CSTOPB
;
break
;
default:
d
bg
(
"%s - Unknown number of stop bits, using 1 stop bit"
,
d
ev_dbg
(
&
port
->
dev
,
"%s - Unknown number of stop bits, using 1 stop bit"
,
__func__
);
bits
&=
~
BITS_STOP_MASK
;
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
...
...
@@ -673,10 +673,10 @@ static void cp210x_get_termios_port(struct usb_serial_port *port,
cp210x_get_config
(
port
,
REQTYPE_INTERFACE_TO_HOST
,
CP210X_GET_FLOW
,
0
,
modem_ctl
,
16
);
if
(
modem_ctl
[
0
]
&
0x0008
)
{
d
bg
(
"%s - flow control = CRTSCTS"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - flow control = CRTSCTS"
,
__func__
);
cflag
|=
CRTSCTS
;
}
else
{
d
bg
(
"%s - flow control = NONE"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - flow control = NONE"
,
__func__
);
cflag
&=
~
CRTSCTS
;
}
...
...
@@ -714,7 +714,7 @@ static void cp210x_change_speed(struct tty_struct *tty,
{
u32
baud
;
baud
=
tty
->
termios
->
c_ospeed
;
baud
=
tty
->
termios
.
c_ospeed
;
/* This maps the requested rate to a rate valid on cp2102 or cp2103,
* or to an arbitrary rate in [1M,2M].
...
...
@@ -723,7 +723,7 @@ static void cp210x_change_speed(struct tty_struct *tty,
*/
baud
=
cp210x_quantise_baudrate
(
baud
);
d
bg
(
"%s - setting baud rate to %u"
,
__func__
,
baud
);
d
ev_dbg
(
&
port
->
dev
,
"%s - setting baud rate to %u"
,
__func__
,
baud
);
if
(
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_BAUDRATE
,
0
,
&
baud
,
sizeof
(
baud
)))
{
dev_warn
(
&
port
->
dev
,
"failed to set baud rate to %u
\n
"
,
baud
);
...
...
@@ -743,12 +743,12 @@ static void cp210x_set_termios(struct tty_struct *tty,
unsigned
int
bits
;
unsigned
int
modem_ctl
[
4
];
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
if
(
!
tty
)
return
;
cflag
=
tty
->
termios
->
c_cflag
;
cflag
=
tty
->
termios
.
c_cflag
;
old_cflag
=
old_termios
->
c_cflag
;
cp210x_change_speed
(
tty
,
port
,
old_termios
);
...
...
@@ -761,26 +761,26 @@ static void cp210x_set_termios(struct tty_struct *tty,
switch
(
cflag
&
CSIZE
)
{
case
CS5
:
bits
|=
BITS_DATA_5
;
d
bg
(
"%s - data bits = 5"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 5"
,
__func__
);
break
;
case
CS6
:
bits
|=
BITS_DATA_6
;
d
bg
(
"%s - data bits = 6"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 6"
,
__func__
);
break
;
case
CS7
:
bits
|=
BITS_DATA_7
;
d
bg
(
"%s - data bits = 7"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 7"
,
__func__
);
break
;
case
CS8
:
bits
|=
BITS_DATA_8
;
d
bg
(
"%s - data bits = 8"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - data bits = 8"
,
__func__
);
break
;
/*case CS9:
bits |= BITS_DATA_9;
d
bg(
"%s - data bits = 9", __func__);
d
ev_dbg(&port->dev,
"%s - data bits = 9", __func__);
break;*/
default:
d
bg
(
"cp210x driver does not "
d
ev_dbg
(
&
port
->
dev
,
"cp210x driver does not "
"support the number of bits requested,"
" using 8 bit mode
\n
"
);
bits
|=
BITS_DATA_8
;
...
...
@@ -788,7 +788,7 @@ static void cp210x_set_termios(struct tty_struct *tty,
}
if
(
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_LINE_CTL
,
0
,
&
bits
,
2
))
d
bg
(
"Number of data bits requested "
d
ev_dbg
(
&
port
->
dev
,
"Number of data bits requested "
"not supported by device
\n
"
);
}
...
...
@@ -801,24 +801,24 @@ static void cp210x_set_termios(struct tty_struct *tty,
if
(
cflag
&
CMSPAR
)
{
if
(
cflag
&
PARODD
)
{
bits
|=
BITS_PARITY_MARK
;
d
bg
(
"%s - parity = MARK"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = MARK"
,
__func__
);
}
else
{
bits
|=
BITS_PARITY_SPACE
;
d
bg
(
"%s - parity = SPACE"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = SPACE"
,
__func__
);
}
}
else
{
if
(
cflag
&
PARODD
)
{
bits
|=
BITS_PARITY_ODD
;
d
bg
(
"%s - parity = ODD"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = ODD"
,
__func__
);
}
else
{
bits
|=
BITS_PARITY_EVEN
;
d
bg
(
"%s - parity = EVEN"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - parity = EVEN"
,
__func__
);
}
}
}
if
(
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_LINE_CTL
,
0
,
&
bits
,
2
))
d
bg
(
"Parity mode not supported "
d
ev_dbg
(
&
port
->
dev
,
"Parity mode not supported "
"by device
\n
"
);
}
...
...
@@ -828,21 +828,21 @@ static void cp210x_set_termios(struct tty_struct *tty,
bits
&=
~
BITS_STOP_MASK
;
if
(
cflag
&
CSTOPB
)
{
bits
|=
BITS_STOP_2
;
d
bg
(
"%s - stop bits = 2"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - stop bits = 2"
,
__func__
);
}
else
{
bits
|=
BITS_STOP_1
;
d
bg
(
"%s - stop bits = 1"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - stop bits = 1"
,
__func__
);
}
if
(
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_LINE_CTL
,
0
,
&
bits
,
2
))
d
bg
(
"Number of stop bits requested "
d
ev_dbg
(
&
port
->
dev
,
"Number of stop bits requested "
"not supported by device
\n
"
);
}
if
((
cflag
&
CRTSCTS
)
!=
(
old_cflag
&
CRTSCTS
))
{
cp210x_get_config
(
port
,
REQTYPE_INTERFACE_TO_HOST
,
CP210X_GET_FLOW
,
0
,
modem_ctl
,
16
);
d
bg
(
"%s - read modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x"
,
d
ev_dbg
(
&
port
->
dev
,
"%s - read modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x"
,
__func__
,
modem_ctl
[
0
],
modem_ctl
[
1
],
modem_ctl
[
2
],
modem_ctl
[
3
]);
...
...
@@ -850,15 +850,15 @@ static void cp210x_set_termios(struct tty_struct *tty,
modem_ctl
[
0
]
&=
~
0x7B
;
modem_ctl
[
0
]
|=
0x09
;
modem_ctl
[
1
]
=
0x80
;
d
bg
(
"%s - flow control = CRTSCTS"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - flow control = CRTSCTS"
,
__func__
);
}
else
{
modem_ctl
[
0
]
&=
~
0x7B
;
modem_ctl
[
0
]
|=
0x01
;
modem_ctl
[
1
]
|=
0x40
;
d
bg
(
"%s - flow control = NONE"
,
__func__
);
d
ev_dbg
(
&
port
->
dev
,
"%s - flow control = NONE"
,
__func__
);
}
d
bg
(
"%s - write modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x"
,
d
ev_dbg
(
&
port
->
dev
,
"%s - write modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x"
,
__func__
,
modem_ctl
[
0
],
modem_ctl
[
1
],
modem_ctl
[
2
],
modem_ctl
[
3
]);
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
...
...
@@ -879,7 +879,7 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port,
{
unsigned
int
control
=
0
;
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
if
(
set
&
TIOCM_RTS
)
{
control
|=
CONTROL_RTS
;
...
...
@@ -898,7 +898,7 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port,
control
|=
CONTROL_WRITE_DTR
;
}
d
bg
(
"%s - control = 0x%.4x"
,
__func__
,
control
);
d
ev_dbg
(
&
port
->
dev
,
"%s - control = 0x%.4x"
,
__func__
,
control
);
return
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_MHS
,
0
,
&
control
,
2
);
...
...
@@ -918,7 +918,7 @@ static int cp210x_tiocmget (struct tty_struct *tty)
unsigned
int
control
;
int
result
;
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
cp210x_get_config
(
port
,
REQTYPE_INTERFACE_TO_HOST
,
CP210X_GET_MDMSTS
,
0
,
&
control
,
1
);
...
...
@@ -930,7 +930,7 @@ static int cp210x_tiocmget (struct tty_struct *tty)
|
((
control
&
CONTROL_RING
)
?
TIOCM_RI
:
0
)
|
((
control
&
CONTROL_DCD
)
?
TIOCM_CD
:
0
);
d
bg
(
"%s - control = 0x%.2x"
,
__func__
,
control
);
d
ev_dbg
(
&
port
->
dev
,
"%s - control = 0x%.2x"
,
__func__
,
control
);
return
result
;
}
...
...
@@ -940,12 +940,12 @@ static void cp210x_break_ctl (struct tty_struct *tty, int break_state)
struct
usb_serial_port
*
port
=
tty
->
driver_data
;
unsigned
int
state
;
d
bg
(
"%s - port %d"
,
__func__
,
port
->
number
);
d
ev_dbg
(
&
port
->
dev
,
"%s - port %d"
,
__func__
,
port
->
port_
number
);
if
(
break_state
==
0
)
state
=
BREAK_OFF
;
else
state
=
BREAK_ON
;
d
bg
(
"%s - turning break %s"
,
__func__
,
d
ev_dbg
(
&
port
->
dev
,
"%s - turning break %s"
,
__func__
,
state
==
BREAK_OFF
?
"off"
:
"on"
);
cp210x_set_config
(
port
,
REQTYPE_HOST_TO_INTERFACE
,
CP210X_SET_BREAK
,
0
,
&
state
,
2
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment