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
81059697
Commit
81059697
authored
Jul 29, 2002
by
Russell King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SERIAL] Add HP Diva PCI serial port support.
parent
6a3c9612
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
79 additions
and
5 deletions
+79
-5
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+70
-1
include/linux/pci_ids.h
include/linux/pci_ids.h
+9
-4
No files found.
drivers/serial/8250_pci.c
View file @
81059697
...
...
@@ -137,7 +137,29 @@ get_pci_port(struct pci_dev *dev, struct pci_board *board,
offset
=
8
*
(
idx
-
2
);
}
}
/* HP's Diva chip puts the 4th/5th serial port further out, and
* some serial ports are supposed to be hidden on certain models.
*/
if
(
dev
->
vendor
==
PCI_VENDOR_ID_HP
&&
dev
->
device
==
PCI_DEVICE_ID_HP_DIVA
)
{
switch
(
dev
->
subsystem_device
)
{
case
PCI_DEVICE_ID_HP_DIVA_MAESTRO
:
if
(
idx
==
3
)
idx
++
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_EVEREST
:
if
(
idx
>
0
)
idx
++
;
if
(
idx
>
2
)
idx
++
;
break
;
}
if
(
idx
>
2
)
{
offset
=
0x18
;
}
}
port
=
pci_resource_start
(
dev
,
base_idx
)
+
offset
;
if
((
board
->
flags
&
SPCI_FL_BASE_TABLE
)
==
0
)
...
...
@@ -379,6 +401,41 @@ pci_timedia_fn(struct pci_dev *dev, struct pci_board *board, int enable)
return
0
;
}
/*
* HP's Remote Management Console. The Diva chip came in several
* different versions. N-class, L2000 and A500 have two Diva chips, each
* with 3 UARTs (the third UART on the second chip is unused). Superdome
* and Keystone have one Diva chip with 3 UARTs. Some later machines have
* one Diva chip, but it has been expanded to 5 UARTs.
*/
static
int
__devinit
pci_hp_diva
(
struct
pci_dev
*
dev
,
struct
pci_board
*
board
,
int
enable
)
{
if
(
!
enable
)
return
0
;
switch
(
dev
->
subsystem_device
)
{
case
PCI_DEVICE_ID_HP_DIVA_TOSCA1
:
case
PCI_DEVICE_ID_HP_DIVA_HALFDOME
:
case
PCI_DEVICE_ID_HP_DIVA_KEYSTONE
:
case
PCI_DEVICE_ID_HP_DIVA_EVEREST
:
board
->
num_ports
=
3
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_TOSCA2
:
board
->
num_ports
=
2
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_MAESTRO
:
board
->
num_ports
=
4
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_POWERBAR
:
board
->
num_ports
=
1
;
break
;
}
return
0
;
}
static
int
__devinit
pci_xircom_fn
(
struct
pci_dev
*
dev
,
struct
pci_board
*
board
,
int
enable
)
{
...
...
@@ -423,6 +480,7 @@ enum pci_board_num_t {
pbn_b1_4_1382400
,
pbn_b1_8_1382400
,
pbn_b2_1_115200
,
pbn_b2_8_115200
,
pbn_b2_4_460800
,
pbn_b2_8_460800
,
...
...
@@ -443,6 +501,7 @@ enum pci_board_num_t {
pbn_timedia
,
pbn_intel_i960
,
pbn_sgi_ioc3
,
pbn_hp_diva
,
pbn_nec_nile4
,
pbn_dci_pccom4
,
...
...
@@ -501,6 +560,7 @@ static struct pci_board pci_boards[] __devinitdata = {
{
SPCI_FL_BASE1
,
4
,
1382400
},
/* pbn_b1_4_1382400 */
{
SPCI_FL_BASE1
,
8
,
1382400
},
/* pbn_b1_8_1382400 */
{
SPCI_FL_BASE2
,
1
,
115200
},
/* pbn_b2_1_115200 */
{
SPCI_FL_BASE2
,
8
,
115200
},
/* pbn_b2_8_115200 */
{
SPCI_FL_BASE2
,
4
,
460800
},
/* pbn_b2_4_460800 */
{
SPCI_FL_BASE2
,
8
,
460800
},
/* pbn_b2_8_460800 */
...
...
@@ -531,6 +591,7 @@ static struct pci_board pci_boards[] __devinitdata = {
8
<<
2
,
2
,
pci_inteli960ni_fn
,
0x10000
},
{
SPCI_FL_BASE0
|
SPCI_FL_IRQRESOURCE
,
/* pbn_sgi_ioc3 */
1
,
458333
,
0
,
0
,
0
,
0x20178
},
{
SPCI_FL_BASE0
,
5
,
115200
,
8
,
0
,
pci_hp_diva
,
0
},
/* pbn_hp_diva */
/*
* NEC Vrc-5074 (Nile 4) builtin UART.
...
...
@@ -1078,6 +1139,14 @@ static struct pci_device_id serial_pci_tbl[] __devinitdata = {
0xFF00
,
0
,
0
,
0
,
pbn_sgi_ioc3
},
/* HP Diva card */
{
PCI_VENDOR_ID_HP
,
PCI_DEVICE_ID_HP_DIVA
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
pbn_hp_diva
},
{
PCI_VENDOR_ID_HP
,
PCI_DEVICE_ID_HP_DIVA_AUX
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
pbn_b2_1_115200
},
/*
* NEC Vrc-5074 (Nile 4) builtin UART.
*/
...
...
include/linux/pci_ids.h
View file @
81059697
...
...
@@ -506,13 +506,18 @@
#define PCI_DEVICE_ID_HP_TACHLITE 0x1029
#define PCI_DEVICE_ID_HP_J2585A 0x1030
#define PCI_DEVICE_ID_HP_J2585B 0x1031
#define PCI_DEVICE_ID_HP_SAS 0x1048
#define PCI_DEVICE_ID_HP_DIVA1 0x1049
#define PCI_DEVICE_ID_HP_DIVA2 0x104A
#define PCI_DEVICE_ID_HP_SP2_0 0x104B
#define PCI_DEVICE_ID_HP_DIVA 0x1048
#define PCI_DEVICE_ID_HP_DIVA_TOSCA1 0x1049
#define PCI_DEVICE_ID_HP_DIVA_TOSCA2 0x104A
#define PCI_DEVICE_ID_HP_DIVA_MAESTRO 0x104B
#define PCI_DEVICE_ID_HP_DIVA_HALFDOME 0x1223
#define PCI_DEVICE_ID_HP_DIVA_KEYSTONE 0x1226
#define PCI_DEVICE_ID_HP_DIVA_POWERBAR 0x1227
#define PCI_DEVICE_ID_HP_ZX1_SBA 0x1229
#define PCI_DEVICE_ID_HP_ZX1_IOC 0x122a
#define PCI_DEVICE_ID_HP_ZX1_LBA 0x122e
#define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282
#define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290
#define PCI_VENDOR_ID_PCTECH 0x1042
#define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000
...
...
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