Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
650004d2
Commit
650004d2
authored
Mar 04, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-serial
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
992b0b1c
13cf3d87
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
0 deletions
+35
-0
drivers/serial/8250.c
drivers/serial/8250.c
+35
-0
No files found.
drivers/serial/8250.c
View file @
650004d2
...
...
@@ -642,6 +642,7 @@ static int broken_efr(struct uart_8250_port *up)
static
void
autoconfig_16550a
(
struct
uart_8250_port
*
up
)
{
unsigned
char
status1
,
status2
;
unsigned
int
iersave
;
up
->
port
.
type
=
PORT_16550A
;
up
->
capabilities
|=
UART_CAP_FIFO
;
...
...
@@ -736,6 +737,40 @@ static void autoconfig_16550a(struct uart_8250_port *up)
up
->
capabilities
|=
UART_CAP_AFE
|
UART_CAP_SLEEP
;
return
;
}
/*
* Try writing and reading the UART_IER_UUE bit (b6).
* If it works, this is probably one of the Xscale platform's
* internal UARTs.
* We're going to explicitly set the UUE bit to 0 before
* trying to write and read a 1 just to make sure it's not
* already a 1 and maybe locked there before we even start start.
*/
iersave
=
serial_in
(
up
,
UART_IER
);
serial_outp
(
up
,
UART_IER
,
iersave
&
~
UART_IER_UUE
);
if
(
!
(
serial_in
(
up
,
UART_IER
)
&
UART_IER_UUE
))
{
/*
* OK it's in a known zero state, try writing and reading
* without disturbing the current state of the other bits.
*/
serial_outp
(
up
,
UART_IER
,
iersave
|
UART_IER_UUE
);
if
(
serial_in
(
up
,
UART_IER
)
&
UART_IER_UUE
)
{
/*
* It's an Xscale.
* We'll leave the UART_IER_UUE bit set to 1 (enabled).
*/
DEBUG_AUTOCONF
(
"Xscale "
);
up
->
port
.
type
=
PORT_XSCALE
;
return
;
}
}
else
{
/*
* If we got here we couldn't force the IER_UUE bit to 0.
* Log it and continue.
*/
DEBUG_AUTOCONF
(
"Couldn't force IER_UUE to 0 "
);
}
serial_outp
(
up
,
UART_IER
,
iersave
);
}
/*
...
...
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