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
Kirill Smelkov
linux
Commits
2cc7138f
Commit
2cc7138f
authored
Oct 23, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bart.bkbits.net/ide-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
2b273dd6
10ffb49a
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
12 additions
and
1174 deletions
+12
-1174
drivers/ide/pci/aec62xx.c
drivers/ide/pci/aec62xx.c
+2
-108
drivers/ide/pci/aec62xx.h
drivers/ide/pci/aec62xx.h
+0
-2
drivers/ide/pci/atiixp.c
drivers/ide/pci/atiixp.c
+0
-118
drivers/ide/pci/cs5520.c
drivers/ide/pci/cs5520.c
+5
-69
drivers/ide/pci/cs5530.c
drivers/ide/pci/cs5530.c
+0
-58
drivers/ide/pci/hpt366.c
drivers/ide/pci/hpt366.c
+1
-71
drivers/ide/pci/hpt366.h
drivers/ide/pci/hpt366.h
+0
-2
drivers/ide/pci/pdc202xx_new.c
drivers/ide/pci/pdc202xx_new.c
+0
-64
drivers/ide/pci/pdc202xx_new.h
drivers/ide/pci/pdc202xx_new.h
+0
-2
drivers/ide/pci/pdc202xx_old.c
drivers/ide/pci/pdc202xx_old.c
+3
-127
drivers/ide/pci/pdc202xx_old.h
drivers/ide/pci/pdc202xx_old.h
+0
-37
drivers/ide/pci/piix.c
drivers/ide/pci/piix.c
+0
-167
drivers/ide/pci/piix.h
drivers/ide/pci/piix.h
+0
-4
drivers/ide/pci/sc1200.c
drivers/ide/pci/sc1200.c
+0
-65
drivers/ide/pci/serverworks.c
drivers/ide/pci/serverworks.c
+0
-168
drivers/ide/pci/serverworks.h
drivers/ide/pci/serverworks.h
+0
-2
drivers/ide/pci/slc90e66.c
drivers/ide/pci/slc90e66.c
+1
-110
No files found.
drivers/ide/pci/aec62xx.c
View file @
2cc7138f
...
...
@@ -18,52 +18,7 @@
#include "aec62xx.h"
#if defined(DISPLAY_AEC62XX_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
aec62xx_proc
=
0
;
#define AEC_MAX_DEVS 5
static
struct
pci_dev
*
aec_devs
[
AEC_MAX_DEVS
];
static
int
n_aec_devs
;
static
int
aec62xx_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
char
*
chipset_nums
[]
=
{
"error"
,
"error"
,
"error"
,
"error"
,
"error"
,
"error"
,
"850UF"
,
"860"
,
"860R"
,
"865"
,
"865R"
,
"error"
};
int
len
;
int
i
;
for
(
i
=
0
;
i
<
n_aec_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
aec_devs
[
i
];
unsigned
long
iobase
=
pci_resource_start
(
dev
,
4
);
u8
c0
=
0
,
c1
=
0
,
art
=
0
;
c0
=
inb
(
iobase
+
0x02
);
c1
=
inb
(
iobase
+
0x0a
);
p
+=
sprintf
(
p
,
"
\n
Controller: %d
\n
"
,
i
);
p
+=
sprintf
(
p
,
"Chipset: AEC%s
\n
"
,
chipset_nums
[
dev
->
device
]);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
(
void
)
pci_read_config_byte
(
dev
,
0x4a
,
&
art
);
p
+=
sprintf
(
p
,
" %sabled "
,
(
art
&
0x02
)
?
" en"
:
"dis"
);
p
+=
sprintf
(
p
,
" %sabled
\n
"
,
(
art
&
0x04
)
?
" en"
:
"dis"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,(
c0
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
" %s %s
\n
"
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,(
c1
&
0x40
)
?
"yes"
:
"no "
);
#if 0
if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) {
(void) pci_read_config_byte(dev, 0x54, &art);
p += sprintf(p, "DMA Mode: %s(%s)",
...
...
@@ -79,59 +34,7 @@ static int aec62xx_get_info (char *buffer, char **addr, off_t offset, int count)
(c1&0x40)?((art&0xc0)?"UDMA":" DMA"):" PIO",
(art&0x80)?"2":(art&0x40)?"1":"0");
} else {
/*
* case PCI_DEVICE_ID_ARTOP_ATP860:
* case PCI_DEVICE_ID_ARTOP_ATP860R:
* case PCI_DEVICE_ID_ARTOP_ATP865:
* case PCI_DEVICE_ID_ARTOP_ATP865R:
*/
(
void
)
pci_read_config_byte
(
dev
,
0x44
,
&
art
);
p
+=
sprintf
(
p
,
"DMA Mode: %s(%s)"
,
(
c0
&
0x20
)
?
((
art
&
0x07
)
?
"UDMA"
:
" DMA"
)
:
" PIO"
,
((
art
&
0x07
)
==
0x07
)
?
"6"
:
((
art
&
0x06
)
==
0x06
)
?
"5"
:
((
art
&
0x05
)
==
0x05
)
?
"4"
:
((
art
&
0x04
)
==
0x04
)
?
"3"
:
((
art
&
0x03
)
==
0x03
)
?
"2"
:
((
art
&
0x02
)
==
0x02
)
?
"1"
:
((
art
&
0x01
)
==
0x01
)
?
"0"
:
"?"
);
p
+=
sprintf
(
p
,
" %s(%s)"
,
(
c0
&
0x40
)
?
((
art
&
0x70
)
?
"UDMA"
:
" DMA"
)
:
" PIO"
,
((
art
&
0x70
)
==
0x70
)
?
"6"
:
((
art
&
0x60
)
==
0x60
)
?
"5"
:
((
art
&
0x50
)
==
0x50
)
?
"4"
:
((
art
&
0x40
)
==
0x40
)
?
"3"
:
((
art
&
0x30
)
==
0x30
)
?
"2"
:
((
art
&
0x20
)
==
0x20
)
?
"1"
:
((
art
&
0x10
)
==
0x10
)
?
"0"
:
"?"
);
(
void
)
pci_read_config_byte
(
dev
,
0x45
,
&
art
);
p
+=
sprintf
(
p
,
" %s(%s)"
,
(
c1
&
0x20
)
?
((
art
&
0x07
)
?
"UDMA"
:
" DMA"
)
:
" PIO"
,
((
art
&
0x07
)
==
0x07
)
?
"6"
:
((
art
&
0x06
)
==
0x06
)
?
"5"
:
((
art
&
0x05
)
==
0x05
)
?
"4"
:
((
art
&
0x04
)
==
0x04
)
?
"3"
:
((
art
&
0x03
)
==
0x03
)
?
"2"
:
((
art
&
0x02
)
==
0x02
)
?
"1"
:
((
art
&
0x01
)
==
0x01
)
?
"0"
:
"?"
);
p
+=
sprintf
(
p
,
" %s(%s)
\n
"
,
(
c1
&
0x40
)
?
((
art
&
0x70
)
?
"UDMA"
:
" DMA"
)
:
" PIO"
,
((
art
&
0x70
)
==
0x70
)
?
"6"
:
((
art
&
0x60
)
==
0x60
)
?
"5"
:
((
art
&
0x50
)
==
0x50
)
?
"4"
:
((
art
&
0x40
)
==
0x40
)
?
"3"
:
((
art
&
0x30
)
==
0x30
)
?
"2"
:
((
art
&
0x20
)
==
0x20
)
?
"1"
:
((
art
&
0x10
)
==
0x10
)
?
"0"
:
"?"
);
}
}
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_AEC62xx_TIMINGS) && defined(CONFIG_PROC_FS) */
#endif
/*
* TO DO: active tuning and correction of cards without a bios.
...
...
@@ -375,15 +278,6 @@ static unsigned int __devinit init_chipset_aec62xx(struct pci_dev *dev, const ch
printk
(
KERN_INFO
"%s: ROM enabled at 0x%08lx
\n
"
,
name
,
dev
->
resource
[
PCI_ROM_RESOURCE
].
start
);
}
#if defined(DISPLAY_AEC62XX_TIMINGS) && defined(CONFIG_PROC_FS)
aec_devs
[
n_aec_devs
++
]
=
dev
;
if
(
!
aec62xx_proc
)
{
aec62xx_proc
=
1
;
ide_pci_create_host_proc
(
"aec62xx"
,
aec62xx_get_info
);
}
#endif
/* DISPLAY_AEC62XX_TIMINGS && CONFIG_PROC_FS */
if
(
bus_speed
<=
33
)
pci_set_drvdata
(
dev
,
(
void
*
)
aec6xxx_33_base
);
else
...
...
drivers/ide/pci/aec62xx.h
View file @
2cc7138f
...
...
@@ -5,8 +5,6 @@
#include <linux/pci.h>
#include <linux/ide.h>
#define DISPLAY_AEC62XX_TIMINGS
struct
chipset_bus_clock_list_entry
{
byte
xfer_speed
;
byte
chipset_settings
;
...
...
drivers/ide/pci/atiixp.c
View file @
2cc7138f
...
...
@@ -47,102 +47,6 @@ static atiixp_ide_timing mdma_timing[] = {
static
int
save_mdma_mode
[
4
];
#define DISPLAY_ATIIXP_TIMINGS
#if defined(DISPLAY_ATIIXP_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
atiixp_proc
;
static
struct
pci_dev
*
bmide_dev
;
/**
* atiixp_get_info - fill in /proc for ATIIXP IDE
* @buffer: buffer to fill
* @addr: address of user start in buffer
* @offset: offset into 'file'
* @count: buffer count
*
* Output summary data on the tuning.
*/
static
int
atiixp_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
struct
pci_dev
*
dev
=
bmide_dev
;
unsigned
long
bibma
=
pci_resource_start
(
dev
,
4
);
u32
mdma_timing
=
0
;
u16
udma_mode
=
0
,
pio_mode
=
0
;
u8
c0
,
c1
,
udma_control
=
0
;
p
+=
sprintf
(
p
,
"
\n
ATI "
);
p
+=
sprintf
(
p
,
"ATIIXP Ultra100 IDE Chipset.
\n
"
);
pci_read_config_byte
(
dev
,
ATIIXP_IDE_UDMA_CONTROL
,
&
udma_control
);
pci_read_config_word
(
dev
,
ATIIXP_IDE_UDMA_MODE
,
&
udma_mode
);
pci_read_config_word
(
dev
,
ATIIXP_IDE_PIO_MODE
,
&
pio_mode
);
pci_read_config_dword
(
dev
,
ATIIXP_IDE_MDMA_TIMING
,
&
mdma_timing
);
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb
(
bibma
+
0x02
);
c1
=
inb
(
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled "
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s "
" %s %s
\n
"
,
(
udma_control
&
0x01
)
?
"yes"
:
"no "
,
(
udma_control
&
0x02
)
?
"yes"
:
"no "
,
(
udma_control
&
0x04
)
?
"yes"
:
"no "
,
(
udma_control
&
0x08
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA mode: %c %c "
" %c %c
\n
"
,
(
udma_control
&
0x01
)
?
((
udma_mode
&
0x07
)
+
48
)
:
'X'
,
(
udma_control
&
0x02
)
?
(((
udma_mode
>>
4
)
&
0x07
)
+
48
)
:
'X'
,
(
udma_control
&
0x04
)
?
(((
udma_mode
>>
8
)
&
0x07
)
+
48
)
:
'X'
,
(
udma_control
&
0x08
)
?
(((
udma_mode
>>
12
)
&
0x07
)
+
48
)
:
'X'
);
p
+=
sprintf
(
p
,
"MDMA mode: %c %c "
" %c %c
\n
"
,
(
save_mdma_mode
[
0
]
&&
(
c0
&
0x20
))
?
((
save_mdma_mode
[
0
]
&
0xf
)
+
48
)
:
'X'
,
(
save_mdma_mode
[
1
]
&&
(
c0
&
0x40
))
?
((
save_mdma_mode
[
1
]
&
0xf
)
+
48
)
:
'X'
,
(
save_mdma_mode
[
2
]
&&
(
c1
&
0x20
))
?
((
save_mdma_mode
[
2
]
&
0xf
)
+
48
)
:
'X'
,
(
save_mdma_mode
[
3
]
&&
(
c1
&
0x40
))
?
((
save_mdma_mode
[
3
]
&
0xf
)
+
48
)
:
'X'
);
p
+=
sprintf
(
p
,
"PIO mode: %c %c "
" %c %c
\n
"
,
(
c0
&
0x20
)
?
'X'
:
((
pio_mode
&
0x07
)
+
48
),
(
c0
&
0x40
)
?
'X'
:
(((
pio_mode
>>
4
)
&
0x07
)
+
48
),
(
c1
&
0x20
)
?
'X'
:
(((
pio_mode
>>
8
)
&
0x07
)
+
48
),
(
c1
&
0x40
)
?
'X'
:
(((
pio_mode
>>
12
)
&
0x07
)
+
48
));
return
p
-
buffer
;
/* => must be less than 4k! */
}
#endif
/* defined(DISPLAY_ATIIXP_TIMINGS) && defined(CONFIG_PROC_FS) */
/**
* atiixp_ratemask - compute rate mask for ATIIXP IDE
* @drive: IDE drive to compute for
...
...
@@ -396,27 +300,6 @@ static int atiixp_dma_check(ide_drive_t *drive)
return
0
;
}
/**
* init_chipset_atiixp - set up the ATIIXP chipset
* @dev: PCI device to set up
* @name: Name of the device
*
* Initialize the PCI device as required. For the ATIIXP this turns
* out to be nice and simple
*/
static
unsigned
int
__devinit
init_chipset_atiixp
(
struct
pci_dev
*
dev
,
const
char
*
name
)
{
#if defined(DISPLAY_ATIIXP_TIMINGS) && defined(CONFIG_PROC_FS)
if
(
!
atiixp_proc
)
{
atiixp_proc
=
1
;
bmide_dev
=
dev
;
ide_pci_create_host_proc
(
"atiixp"
,
atiixp_get_info
);
}
#endif
/* DISPLAY_ATIIXP_TIMINGS && CONFIG_PROC_FS */
return
0
;
}
/**
* init_hwif_atiixp - fill in the hwif for the ATIIXP
* @hwif: IDE interface
...
...
@@ -459,7 +342,6 @@ static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
static
ide_pci_device_t
atiixp_pci_info
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"ATIIXP"
,
.
init_chipset
=
init_chipset_atiixp
,
.
init_hwif
=
init_hwif_atiixp
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
...
...
drivers/ide/pci/cs5520.c
View file @
2cc7138f
...
...
@@ -51,57 +51,6 @@
#include <asm/io.h>
#include <asm/irq.h>
#define DISPLAY_CS5520_TIMINGS
#if defined(DISPLAY_CS5520_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
cs5520_proc
=
0
;
static
struct
pci_dev
*
bmide_dev
;
static
int
cs5520_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
unsigned
long
bmiba
=
pci_resource_start
(
bmide_dev
,
2
);
int
len
;
u8
c0
=
0
,
c1
=
0
;
u16
reg16
;
u32
reg32
;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb
(
bmiba
+
0x02
);
c1
=
inb
(
bmiba
+
0x0a
);
p
+=
sprintf
(
p
,
"
\n
Cyrix CS55x0 IDE
\n
"
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled "
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"
\n\n
Timings:
\n
"
);
pci_read_config_word
(
bmide_dev
,
0x62
,
&
reg16
);
p
+=
sprintf
(
p
,
"8bit CAT/CRT : %04x
\n
"
,
reg16
);
pci_read_config_dword
(
bmide_dev
,
0x64
,
&
reg32
);
p
+=
sprintf
(
p
,
"16bit Primary : %08x
\n
"
,
reg32
);
pci_read_config_dword
(
bmide_dev
,
0x68
,
&
reg32
);
p
+=
sprintf
(
p
,
"16bit Secondary: %08x
\n
"
,
reg32
);
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
struct
pio_clocks
{
int
address
;
...
...
@@ -144,12 +93,14 @@ static int cs5520_tune_chipset(ide_drive_t *drive, u8 xferspeed)
printk
(
"PIO clocking = %d
\n
"
,
pio
);
/* FIXME: if DMA = 1 do we need to set the DMA bit here ? */
/* 8bit command timing for channel */
/* 8bit
CAT/CRT - 8bit
command timing for channel */
pci_write_config_byte
(
pdev
,
0x62
+
controller
,
(
cs5520_pio_clocks
[
pio
].
recovery
<<
4
)
|
(
cs5520_pio_clocks
[
pio
].
assert
));
/* 0x64 - 16bit Primary, 0x68 - 16bit Secondary */
/* FIXME: should these use address ? */
/* Data read timing */
pci_write_config_byte
(
pdev
,
0x64
+
4
*
controller
+
(
drive
->
dn
&
1
),
...
...
@@ -188,19 +139,6 @@ static int cs5520_config_drive_xfer_rate(ide_drive_t *drive)
/* Then tell the core to use DMA operations */
return
hwif
->
ide_dma_on
(
drive
);
}
static
unsigned
int
__devinit
init_chipset_cs5520
(
struct
pci_dev
*
dev
,
const
char
*
name
)
{
#if defined(DISPLAY_CS5520_TIMINGS) && defined(CONFIG_PROC_FS)
if
(
!
cs5520_proc
)
{
cs5520_proc
=
1
;
bmide_dev
=
dev
;
ide_pci_create_host_proc
(
"cs5520"
,
cs5520_get_info
);
}
#endif
/* DISPLAY_CS5520_TIMINGS && CONFIG_PROC_FS */
return
0
;
}
/*
* We provide a callback for our nonstandard DMA location
...
...
@@ -255,7 +193,6 @@ static void __devinit init_hwif_cs5520(ide_hwif_t *hwif)
#define DECLARE_CS_DEV(name_str) \
{ \
.name = name_str, \
.init_chipset = init_chipset_cs5520, \
.init_setup_dma = cs5520_init_setup_dma, \
.init_hwif = init_hwif_cs5520, \
.channels = 2, \
...
...
@@ -294,7 +231,6 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic
printk
(
KERN_WARNING
"cs5520: No suitable DMA available.
\n
"
);
return
-
ENODEV
;
}
init_chipset_cs5520
(
dev
,
d
->
name
);
index
.
all
=
0xf0f0
;
...
...
drivers/ide/pci/cs5530.c
View file @
2cc7138f
...
...
@@ -31,56 +31,6 @@
#include <asm/io.h>
#include <asm/irq.h>
#define DISPLAY_CS5530_TIMINGS
#if defined(DISPLAY_CS5530_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
cs5530_proc
=
0
;
static
struct
pci_dev
*
bmide_dev
;
static
int
cs5530_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
unsigned
long
bibma
=
pci_resource_start
(
bmide_dev
,
4
);
u8
c0
=
0
,
c1
=
0
;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb_p
((
u16
)
bibma
+
0x02
);
c1
=
inb_p
((
u16
)
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
"
\n
"
"Cyrix 5530 Chipset.
\n
"
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled "
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA
\n
"
);
p
+=
sprintf
(
p
,
"DMA
\n
"
);
p
+=
sprintf
(
p
,
"PIO
\n
"
);
return
p
-
buffer
;
}
#endif
/* DISPLAY_CS5530_TIMINGS && CONFIG_PROC_FS */
/**
* cs5530_xfer_set_mode - set a new transfer mode at the drive
* @drive: drive to tune
...
...
@@ -272,14 +222,6 @@ static unsigned int __init init_chipset_cs5530 (struct pci_dev *dev, const char
struct
pci_dev
*
master_0
=
NULL
,
*
cs5530_0
=
NULL
;
unsigned
long
flags
;
#if defined(DISPLAY_CS5530_TIMINGS) && defined(CONFIG_PROC_FS)
if
(
!
cs5530_proc
)
{
cs5530_proc
=
1
;
bmide_dev
=
dev
;
ide_pci_create_host_proc
(
"cs5530"
,
cs5530_get_info
);
}
#endif
/* DISPLAY_CS5530_TIMINGS && CONFIG_PROC_FS */
dev
=
NULL
;
while
((
dev
=
pci_find_device
(
PCI_VENDOR_ID_CYRIX
,
PCI_ANY_ID
,
dev
))
!=
NULL
)
{
switch
(
dev
->
device
)
{
...
...
drivers/ide/pci/hpt366.c
View file @
2cc7138f
...
...
@@ -72,49 +72,6 @@
#include "hpt366.h"
#if defined(DISPLAY_HPT366_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
#endif
/* defined(DISPLAY_HPT366_TIMINGS) && defined(CONFIG_PROC_FS) */
static
unsigned
int
hpt_revision
(
struct
pci_dev
*
dev
);
static
unsigned
int
hpt_minimum_revision
(
struct
pci_dev
*
dev
,
int
revision
);
#if defined(DISPLAY_HPT366_TIMINGS) && defined(CONFIG_PROC_FS)
static
u8
hpt366_proc
=
0
;
static
struct
pci_dev
*
hpt_devs
[
HPT366_MAX_DEVS
];
static
int
n_hpt_devs
;
static
int
hpt366_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
char
*
chipset_nums
[]
=
{
"366"
,
"366"
,
"368"
,
"370"
,
"370A"
,
"372"
,
"302"
,
"371"
,
"374"
};
int
i
,
len
;
p
+=
sprintf
(
p
,
"
\n
"
"HighPoint HPT366/368/370/372/374
\n
"
);
for
(
i
=
0
;
i
<
n_hpt_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
hpt_devs
[
i
];
unsigned
long
iobase
=
dev
->
resource
[
4
].
start
;
u32
class_rev
=
hpt_revision
(
dev
);
u8
c0
,
c1
;
p
+=
sprintf
(
p
,
"
\n
Controller: %d
\n
"
,
i
);
p
+=
sprintf
(
p
,
"Chipset: HPT%s
\n
"
,
chipset_nums
[
class_rev
]);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"--------------- Secondary Channel "
"--------------
\n
"
);
/* get the bus master status registers */
c0
=
inb
(
iobase
+
0x2
);
c1
=
inb
(
iobase
+
0xa
);
p
+=
sprintf
(
p
,
"Enabled: %s"
" %s
\n
"
,
(
c0
&
0x80
)
?
"no"
:
"yes"
,
(
c1
&
0x80
)
?
"no"
:
"yes"
);
#if 0
if (hpt_minimum_revision(dev, 3)) {
u8 cbl;
...
...
@@ -128,16 +85,6 @@ static int hpt366_get_info (char *buffer, char **addr, off_t offset, int count)
(cbl & 0x01) ? 33 : 66);
p += sprintf(p, "\n");
}
#endif
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"------- drive0 ---------- drive1 -------
\n
"
);
p
+=
sprintf
(
p
,
"DMA capable: %s %s"
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
{
u8 c2, c3;
/* older revs don't have these registers mapped
...
...
@@ -159,15 +106,7 @@ static int hpt366_get_info (char *buffer, char **addr, off_t offset, int count)
(c3 & 0x80) ? "PIO " : "off ");
}
}
p
+=
sprintf
(
p
,
"
\n
"
);
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_HPT366_TIMINGS) && defined(CONFIG_PROC_FS) */
#endif
static
u32
hpt_revision
(
struct
pci_dev
*
dev
)
{
...
...
@@ -1105,15 +1044,6 @@ static unsigned int __devinit init_chipset_hpt366(struct pci_dev *dev, const cha
}
if
(
ret
)
return
ret
;
#if defined(DISPLAY_HPT366_TIMINGS) && defined(CONFIG_PROC_FS)
hpt_devs
[
n_hpt_devs
++
]
=
dev
;
if
(
!
hpt366_proc
)
{
hpt366_proc
=
1
;
ide_pci_create_host_proc
(
"hpt366"
,
hpt366_get_info
);
}
#endif
/* DISPLAY_HPT366_TIMINGS && CONFIG_PROC_FS */
return
dev
->
irq
;
}
...
...
drivers/ide/pci/hpt366.h
View file @
2cc7138f
...
...
@@ -5,8 +5,6 @@
#include <linux/pci.h>
#include <linux/ide.h>
#define DISPLAY_HPT366_TIMINGS
/* various tuning parameters */
#define HPT_RESET_STATE_ENGINE
#undef HPT_DELAY_INTERRUPT
...
...
drivers/ide/pci/pdc202xx_new.c
View file @
2cc7138f
...
...
@@ -41,61 +41,6 @@
#define PDC202_DEBUG_CABLE 0
#if defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
pdcnew_proc
=
0
;
#define PDC202_MAX_DEVS 5
static
struct
pci_dev
*
pdc202_devs
[
PDC202_MAX_DEVS
];
static
int
n_pdc202_devs
;
static
char
*
pdcnew_info
(
char
*
buf
,
struct
pci_dev
*
dev
)
{
char
*
p
=
buf
;
p
+=
sprintf
(
p
,
"
\n
"
);
switch
(
dev
->
device
)
{
case
PCI_DEVICE_ID_PROMISE_20277
:
p
+=
sprintf
(
p
,
"SBFastTrak 133 Lite"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20276
:
p
+=
sprintf
(
p
,
"MBFastTrak 133 Lite"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20275
:
p
+=
sprintf
(
p
,
"MBUltra133"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20271
:
p
+=
sprintf
(
p
,
"FastTrak TX2000"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20270
:
p
+=
sprintf
(
p
,
"FastTrak LP/TX2/TX4"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20269
:
p
+=
sprintf
(
p
,
"Ultra133 TX2"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20268
:
p
+=
sprintf
(
p
,
"Ultra100 TX2"
);
break
;
default:
p
+=
sprintf
(
p
,
"Ultra series"
);
break
;
break
;
}
p
+=
sprintf
(
p
,
" Chipset.
\n
"
);
return
(
char
*
)
p
;
}
static
int
pdcnew_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
int
i
,
len
;
for
(
i
=
0
;
i
<
n_pdc202_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
pdc202_devs
[
i
];
p
=
pdcnew_info
(
buffer
,
dev
);
}
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS) */
static
u8
pdcnew_ratemask
(
ide_drive_t
*
drive
)
{
u8
mode
;
...
...
@@ -417,15 +362,6 @@ static unsigned int __devinit init_chipset_pdcnew(struct pci_dev *dev, const cha
apple_kiwi_init
(
dev
);
#endif
#if defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS)
pdc202_devs
[
n_pdc202_devs
++
]
=
dev
;
if
(
!
pdcnew_proc
)
{
pdcnew_proc
=
1
;
ide_pci_create_host_proc
(
"pdcnew"
,
pdcnew_get_info
);
}
#endif
/* DISPLAY_PDC202XX_TIMINGS && CONFIG_PROC_FS */
return
dev
->
irq
;
}
...
...
drivers/ide/pci/pdc202xx_new.h
View file @
2cc7138f
...
...
@@ -43,8 +43,6 @@ const static char *pdc_quirk_drives[] = {
set_2regs(0x13,(c)); \
} while(0)
#define DISPLAY_PDC202XX_TIMINGS
static
void
init_setup_pdcnew
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
void
init_setup_pdc20270
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
void
init_setup_pdc20276
(
struct
pci_dev
*
dev
,
ide_pci_device_t
*
d
);
...
...
drivers/ide/pci/pdc202xx_old.c
View file @
2cc7138f
...
...
@@ -50,68 +50,14 @@
#define PDC202_DEBUG_CABLE 0
#if defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
pdc202xx_proc
=
0
;
#define PDC202_MAX_DEVS 5
static
struct
pci_dev
*
pdc202_devs
[
PDC202_MAX_DEVS
];
static
int
n_pdc202_devs
;
static
char
*
pdc202xx_info
(
char
*
buf
,
struct
pci_dev
*
dev
)
{
char
*
p
=
buf
;
#if 0
unsigned long bibma = pci_resource_start(dev, 4);
u32
reg60h
=
0
,
reg64h
=
0
,
reg68h
=
0
,
reg6ch
=
0
;
u16
reg50h
=
0
,
pmask
=
(
1
<<
10
),
smask
=
(
1
<<
11
);
u8 hi = 0, lo = 0;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
u8
c0
=
inb_p
((
u16
)
bibma
+
0x02
);
u8
c1
=
inb_p
((
u16
)
bibma
+
0x0a
);
u8
sc11
=
inb_p
((
u16
)
bibma
+
0x11
);
u8
sc1a
=
inb_p
((
u16
)
bibma
+
0x1a
);
u8
sc1b
=
inb_p
((
u16
)
bibma
+
0x1b
);
u8 sc1c = inb_p((u16)bibma + 0x1c);
u8
sc1d
=
inb_p
((
u16
)
bibma
+
0x1d
);
u8 sc1e = inb_p((u16)bibma + 0x1e);
u8 sc1f = inb_p((u16)bibma + 0x1f);
pci_read_config_word
(
dev
,
0x50
,
&
reg50h
);
pci_read_config_dword
(
dev
,
0x60
,
&
reg60h
);
pci_read_config_dword
(
dev
,
0x64
,
&
reg64h
);
pci_read_config_dword
(
dev
,
0x68
,
&
reg68h
);
pci_read_config_dword
(
dev
,
0x6c
,
&
reg6ch
);
p
+=
sprintf
(
p
,
"
\n
"
);
switch
(
dev
->
device
)
{
case
PCI_DEVICE_ID_PROMISE_20267
:
p
+=
sprintf
(
p
,
"Ultra100"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20265
:
p
+=
sprintf
(
p
,
"Ultra100 on M/B"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20263
:
p
+=
sprintf
(
p
,
"FastTrak 66"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20262
:
p
+=
sprintf
(
p
,
"Ultra66"
);
break
;
case
PCI_DEVICE_ID_PROMISE_20246
:
p
+=
sprintf
(
p
,
"Ultra33"
);
reg50h
|=
0x0c00
;
break
;
default:
p
+=
sprintf
(
p
,
"Ultra Series"
);
break
;
}
p
+=
sprintf
(
p
,
" Chipset.
\n
"
);
p
+=
sprintf
(
p
,
"------------------------------- General Status "
"---------------------------------
\n
"
);
p
+=
sprintf
(
p
,
"Burst Mode : %sabled
\n
"
,
(
sc1f
&
0x01
)
?
"en"
:
"dis"
);
p += sprintf(p, "Host Mode : %s\n",
(sc1f & 0x08) ? "Tri-Stated" : "Normal");
p += sprintf(p, "Bus Clocking : %s\n",
...
...
@@ -126,70 +72,7 @@ static char * pdc202xx_info (char *buf, struct pci_dev *dev)
SPLIT_BYTE(sc1e, hi, lo);
p += sprintf(p, "Status Polling Period : %d\n", hi);
p += sprintf(p, "Interrupt Check Status Polling Delay : %d\n", lo);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %s %s
\n
"
,
(
c0
&
0x80
)
?
"disabled"
:
"enabled "
,
(
c1
&
0x80
)
?
"disabled"
:
"enabled "
);
p
+=
sprintf
(
p
,
"66 Clocking %s %s
\n
"
,
(
sc11
&
0x02
)
?
"enabled "
:
"disabled"
,
(
sc11
&
0x08
)
?
"enabled "
:
"disabled"
);
p
+=
sprintf
(
p
,
" Mode %s Mode %s
\n
"
,
(
sc1a
&
0x01
)
?
"MASTER"
:
"PCI "
,
(
sc1b
&
0x01
)
?
"MASTER"
:
"PCI "
);
p
+=
sprintf
(
p
,
" %s %s
\n
"
,
(
sc1d
&
0x08
)
?
"Error "
:
((
sc1d
&
0x05
)
==
0x05
)
?
"Not My INTR "
:
(
sc1d
&
0x04
)
?
"Interrupting"
:
(
sc1d
&
0x02
)
?
"FIFO Full "
:
(
sc1d
&
0x01
)
?
"FIFO Empty "
:
"????????????"
,
(
sc1d
&
0x80
)
?
"Error "
:
((
sc1d
&
0x50
)
==
0x50
)
?
"Not My INTR "
:
(
sc1d
&
0x40
)
?
"Interrupting"
:
(
sc1d
&
0x20
)
?
"FIFO Full "
:
(
sc1d
&
0x10
)
?
"FIFO Empty "
:
"????????????"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"DMA Mode: %s %s "
" %s %s
\n
"
,
pdc202xx_ultra_verbose
(
reg60h
,
(
reg50h
&
pmask
)),
pdc202xx_ultra_verbose
(
reg64h
,
(
reg50h
&
pmask
)),
pdc202xx_ultra_verbose
(
reg68h
,
(
reg50h
&
smask
)),
pdc202xx_ultra_verbose
(
reg6ch
,
(
reg50h
&
smask
)));
p
+=
sprintf
(
p
,
"PIO Mode: %s %s "
" %s %s
\n
"
,
pdc202xx_pio_verbose
(
reg60h
),
pdc202xx_pio_verbose
(
reg64h
),
pdc202xx_pio_verbose
(
reg68h
),
pdc202xx_pio_verbose
(
reg6ch
));
#if 0
p += sprintf(p, "--------------- Can ATAPI DMA ---------------\n");
#endif
return
(
char
*
)
p
;
}
static
int
pdc202xx_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
int
i
,
len
;
for
(
i
=
0
;
i
<
n_pdc202_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
pdc202_devs
[
i
];
p
=
pdc202xx_info
(
buffer
,
dev
);
}
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS) */
static
u8
pdc202xx_ratemask
(
ide_drive_t
*
drive
)
{
...
...
@@ -546,11 +429,13 @@ static int pdc202xx_old_ide_dma_test_irq(ide_drive_t *drive)
u8
sc1d
=
hwif
->
INB
((
high_16
+
0x001d
));
if
(
hwif
->
channel
)
{
/* bit7: Error, bit6: Interrupting, bit5: FIFO Full, bit4: FIFO Empty */
if
((
sc1d
&
0x50
)
==
0x50
)
goto
somebody_else
;
else
if
((
sc1d
&
0x40
)
==
0x40
)
return
(
dma_stat
&
4
)
==
4
;
}
else
{
/* bit3: Error, bit2: Interrupting, bit1: FIFO Full, bit0: FIFO Empty */
if
((
sc1d
&
0x05
)
==
0x05
)
goto
somebody_else
;
else
if
((
sc1d
&
0x04
)
==
0x04
)
...
...
@@ -668,15 +553,6 @@ static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev, const c
name
,
dev
->
resource
[
PCI_ROM_RESOURCE
].
start
);
}
#if defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS)
pdc202_devs
[
n_pdc202_devs
++
]
=
dev
;
if
(
!
pdc202xx_proc
)
{
pdc202xx_proc
=
1
;
ide_pci_create_host_proc
(
"pdc202xx"
,
pdc202xx_get_info
);
}
#endif
/* DISPLAY_PDC202XX_TIMINGS && CONFIG_PROC_FS */
/*
* software reset - this is required because the bios
* will set UDMA timing on if the hdd supports it. The
...
...
drivers/ide/pci/pdc202xx_old.h
View file @
2cc7138f
...
...
@@ -23,41 +23,6 @@ static const char *pdc_quirk_drives[] = {
NULL
};
static
inline
u8
*
pdc202xx_pio_verbose
(
u32
drive_pci
)
{
if
((
drive_pci
&
0x000ff000
)
==
0x000ff000
)
return
(
"NOTSET"
);
if
((
drive_pci
&
0x00000401
)
==
0x00000401
)
return
(
"PIO 4"
);
if
((
drive_pci
&
0x00000602
)
==
0x00000602
)
return
(
"PIO 3"
);
if
((
drive_pci
&
0x00000803
)
==
0x00000803
)
return
(
"PIO 2"
);
if
((
drive_pci
&
0x00000C05
)
==
0x00000C05
)
return
(
"PIO 1"
);
if
((
drive_pci
&
0x00001309
)
==
0x00001309
)
return
(
"PIO 0"
);
return
(
"PIO ?"
);
}
static
inline
u8
*
pdc202xx_dma_verbose
(
u32
drive_pci
)
{
if
((
drive_pci
&
0x00036000
)
==
0x00036000
)
return
(
"MWDMA 2"
);
if
((
drive_pci
&
0x00046000
)
==
0x00046000
)
return
(
"MWDMA 1"
);
if
((
drive_pci
&
0x00056000
)
==
0x00056000
)
return
(
"MWDMA 0"
);
if
((
drive_pci
&
0x00056000
)
==
0x00056000
)
return
(
"SWDMA 2"
);
if
((
drive_pci
&
0x00068000
)
==
0x00068000
)
return
(
"SWDMA 1"
);
if
((
drive_pci
&
0x000BC000
)
==
0x000BC000
)
return
(
"SWDMA 0"
);
return
(
"PIO---"
);
}
static
inline
u8
*
pdc202xx_ultra_verbose
(
u32
drive_pci
,
u16
slow_cable
)
{
if
((
drive_pci
&
0x000ff000
)
==
0x000ff000
)
return
(
"NOTSET"
);
if
((
drive_pci
&
0x00012000
)
==
0x00012000
)
return
((
slow_cable
)
?
"UDMA 2"
:
"UDMA 4"
);
if
((
drive_pci
&
0x00024000
)
==
0x00024000
)
return
((
slow_cable
)
?
"UDMA 1"
:
"UDMA 3"
);
if
((
drive_pci
&
0x00036000
)
==
0x00036000
)
return
(
"UDMA 0"
);
return
(
pdc202xx_dma_verbose
(
drive_pci
));
}
/* A Register */
#define SYNC_ERRDY_EN 0xC0
...
...
@@ -98,8 +63,6 @@ static inline u8 *pdc202xx_ultra_verbose (u32 drive_pci, u16 slow_cable)
#define MC1 0x02
/* DMA"C" timing */
#define MC0 0x01
/* DMA"C" timing */
#define DISPLAY_PDC202XX_TIMINGS
static
void
init_setup_pdc202ata4
(
struct
pci_dev
*
dev
,
ide_pci_device_t
*
d
);
static
void
init_setup_pdc20265
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
void
init_setup_pdc202xx
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
...
...
drivers/ide/pci/piix.c
View file @
2cc7138f
...
...
@@ -106,165 +106,6 @@
#include "piix.h"
static
int
no_piix_dma
;
#if defined(DISPLAY_PIIX_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
piix_proc
=
0
;
#define PIIX_MAX_DEVS 5
static
struct
pci_dev
*
piix_devs
[
PIIX_MAX_DEVS
];
static
int
n_piix_devs
;
/**
* piix_get_info - fill in /proc for PIIX ide
* @buffer: buffer to fill
* @addr: address of user start in buffer
* @offset: offset into 'file'
* @count: buffer count
*
* Walks the PIIX devices and outputs summary data on the tuning and
* anything else that will help with debugging
*/
static
int
piix_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
int
i
;
for
(
i
=
0
;
i
<
n_piix_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
piix_devs
[
i
];
unsigned
long
bibma
=
pci_resource_start
(
dev
,
4
);
u16
reg40
=
0
,
psitre
=
0
,
reg42
=
0
,
ssitre
=
0
;
u8
c0
=
0
,
c1
=
0
,
reg54
=
0
,
reg55
=
0
;
u8
reg44
=
0
,
reg48
=
0
,
reg4a
=
0
,
reg4b
=
0
;
p
+=
sprintf
(
p
,
"
\n
Controller: %d
\n
"
,
i
);
p
+=
sprintf
(
p
,
"
\n
Intel "
);
switch
(
dev
->
device
)
{
case
PCI_DEVICE_ID_INTEL_82801EB_1
:
p
+=
sprintf
(
p
,
"PIIX4 SATA 150 "
);
break
;
case
PCI_DEVICE_ID_INTEL_82801BA_8
:
case
PCI_DEVICE_ID_INTEL_82801BA_9
:
case
PCI_DEVICE_ID_INTEL_82801CA_10
:
case
PCI_DEVICE_ID_INTEL_82801CA_11
:
case
PCI_DEVICE_ID_INTEL_82801DB_10
:
case
PCI_DEVICE_ID_INTEL_82801DB_11
:
case
PCI_DEVICE_ID_INTEL_82801EB_11
:
case
PCI_DEVICE_ID_INTEL_82801E_11
:
case
PCI_DEVICE_ID_INTEL_ESB_2
:
case
PCI_DEVICE_ID_INTEL_ICH6_19
:
p
+=
sprintf
(
p
,
"PIIX4 Ultra 100 "
);
break
;
case
PCI_DEVICE_ID_INTEL_82372FB_1
:
case
PCI_DEVICE_ID_INTEL_82801AA_1
:
p
+=
sprintf
(
p
,
"PIIX4 Ultra 66 "
);
break
;
case
PCI_DEVICE_ID_INTEL_82451NX
:
case
PCI_DEVICE_ID_INTEL_82801AB_1
:
case
PCI_DEVICE_ID_INTEL_82443MX_1
:
case
PCI_DEVICE_ID_INTEL_82371AB
:
p
+=
sprintf
(
p
,
"PIIX4 Ultra 33 "
);
break
;
case
PCI_DEVICE_ID_INTEL_82371SB_1
:
p
+=
sprintf
(
p
,
"PIIX3 "
);
break
;
case
PCI_DEVICE_ID_INTEL_82371MX
:
p
+=
sprintf
(
p
,
"MPIIX "
);
break
;
case
PCI_DEVICE_ID_INTEL_82371FB_1
:
case
PCI_DEVICE_ID_INTEL_82371FB_0
:
default:
p
+=
sprintf
(
p
,
"PIIX "
);
break
;
}
p
+=
sprintf
(
p
,
"Chipset.
\n
"
);
if
(
dev
->
device
==
PCI_DEVICE_ID_INTEL_82371MX
)
continue
;
pci_read_config_word
(
dev
,
0x40
,
&
reg40
);
pci_read_config_word
(
dev
,
0x42
,
&
reg42
);
pci_read_config_byte
(
dev
,
0x44
,
&
reg44
);
pci_read_config_byte
(
dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
dev
,
0x4a
,
&
reg4a
);
pci_read_config_byte
(
dev
,
0x4b
,
&
reg4b
);
pci_read_config_byte
(
dev
,
0x54
,
&
reg54
);
pci_read_config_byte
(
dev
,
0x55
,
&
reg55
);
psitre
=
(
reg40
&
0x4000
)
?
1
:
0
;
ssitre
=
(
reg42
&
0x4000
)
?
1
:
0
;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb
(
bibma
+
0x02
);
c1
=
inb
(
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled "
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s "
" %s %s
\n
"
,
(
reg48
&
0x01
)
?
"yes"
:
"no "
,
(
reg48
&
0x02
)
?
"yes"
:
"no "
,
(
reg48
&
0x04
)
?
"yes"
:
"no "
,
(
reg48
&
0x08
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s "
" %s %s
\n
"
,
((
reg54
&
0x11
)
&&
(
reg55
&
0x10
)
&&
(
reg4a
&
0x01
))
?
"5"
:
((
reg54
&
0x11
)
&&
(
reg4a
&
0x02
))
?
"4"
:
((
reg54
&
0x11
)
&&
(
reg4a
&
0x01
))
?
"3"
:
(
reg4a
&
0x02
)
?
"2"
:
(
reg4a
&
0x01
)
?
"1"
:
(
reg4a
&
0x00
)
?
"0"
:
"X"
,
((
reg54
&
0x22
)
&&
(
reg55
&
0x20
)
&&
(
reg4a
&
0x10
))
?
"5"
:
((
reg54
&
0x22
)
&&
(
reg4a
&
0x20
))
?
"4"
:
((
reg54
&
0x22
)
&&
(
reg4a
&
0x10
))
?
"3"
:
(
reg4a
&
0x20
)
?
"2"
:
(
reg4a
&
0x10
)
?
"1"
:
(
reg4a
&
0x00
)
?
"0"
:
"X"
,
((
reg54
&
0x44
)
&&
(
reg55
&
0x40
)
&&
(
reg4b
&
0x03
))
?
"5"
:
((
reg54
&
0x44
)
&&
(
reg4b
&
0x02
))
?
"4"
:
((
reg54
&
0x44
)
&&
(
reg4b
&
0x01
))
?
"3"
:
(
reg4b
&
0x02
)
?
"2"
:
(
reg4b
&
0x01
)
?
"1"
:
(
reg4b
&
0x00
)
?
"0"
:
"X"
,
((
reg54
&
0x88
)
&&
(
reg55
&
0x80
)
&&
(
reg4b
&
0x30
))
?
"5"
:
((
reg54
&
0x88
)
&&
(
reg4b
&
0x20
))
?
"4"
:
((
reg54
&
0x88
)
&&
(
reg4b
&
0x10
))
?
"3"
:
(
reg4b
&
0x20
)
?
"2"
:
(
reg4b
&
0x10
)
?
"1"
:
(
reg4b
&
0x00
)
?
"0"
:
"X"
);
p
+=
sprintf
(
p
,
"UDMA
\n
"
);
p
+=
sprintf
(
p
,
"DMA
\n
"
);
p
+=
sprintf
(
p
,
"PIO
\n
"
);
/*
* FIXME.... Add configuration junk data....blah blah......
*/
}
return
p
-
buffer
;
/* => must be less than 4k! */
}
#endif
/* defined(DISPLAY_PIIX_TIMINGS) && defined(CONFIG_PROC_FS) */
/**
* piix_ratemask - compute rate mask for PIIX IDE
...
...
@@ -627,14 +468,6 @@ static unsigned int __devinit init_chipset_piix (struct pci_dev *dev, const char
break
;
}
#if defined(DISPLAY_PIIX_TIMINGS) && defined(CONFIG_PROC_FS)
piix_devs
[
n_piix_devs
++
]
=
dev
;
if
(
!
piix_proc
)
{
piix_proc
=
1
;
ide_pci_create_host_proc
(
"piix"
,
piix_get_info
);
}
#endif
/* DISPLAY_PIIX_TIMINGS && CONFIG_PROC_FS */
return
0
;
}
...
...
drivers/ide/pci/piix.h
View file @
2cc7138f
...
...
@@ -5,10 +5,6 @@
#include <linux/pci.h>
#include <linux/ide.h>
#define PIIX_DEBUG_DRIVE_INFO 0
#define DISPLAY_PIIX_TIMINGS
static
void
init_setup_piix
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
__devinit
init_chipset_piix
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_piix
(
ide_hwif_t
*
);
...
...
drivers/ide/pci/sc1200.c
View file @
2cc7138f
...
...
@@ -67,55 +67,6 @@ static unsigned short sc1200_get_pci_clock (void)
return
pci_clock
;
}
#define DISPLAY_SC1200_TIMINGS
#if defined(DISPLAY_SC1200_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
int
sc1200_get_info
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
(
*
sc1200_display_info
)(
char
*
,
char
**
,
off_t
,
int
);
/* ide-proc.c */
extern
char
*
ide_media_verbose
(
ide_drive_t
*
);
static
u8
sc1200_proc
=
0
;
static
struct
pci_dev
*
bmide_dev
;
static
int
sc1200_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
unsigned
long
bibma
=
pci_resource_start
(
bmide_dev
,
4
);
int
len
;
u8
c0
=
0
,
c1
=
0
;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb_p
(
bibma
+
0x02
);
c1
=
inb_p
(
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
"
\n
National SCx200 Chipset.
\n
"
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel ---------------- Secondary Channel -------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA
\n
"
);
p
+=
sprintf
(
p
,
"DMA
\n
"
);
p
+=
sprintf
(
p
,
"PIO
\n
"
);
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* DISPLAY_SC1200_TIMINGS && CONFIG_PROC_FS */
extern
char
*
ide_xfer_verbose
(
byte
xfer_rate
);
/*
...
...
@@ -504,21 +455,6 @@ printk("%s: SC1200: resume\n", hwif->name);
return
0
;
}
/*
* Initialize the sc1200 bridge for reliable IDE DMA operation.
*/
static
unsigned
int
__init
init_chipset_sc1200
(
struct
pci_dev
*
dev
,
const
char
*
name
)
{
#if defined(DISPLAY_SC1200_TIMINGS) && defined(CONFIG_PROC_FS)
if
(
!
bmide_dev
)
{
sc1200_proc
=
1
;
bmide_dev
=
dev
;
ide_pci_create_host_proc
(
"sc1200"
,
sc1200_get_info
);
}
#endif
/* DISPLAY_SC1200_TIMINGS && CONFIG_PROC_FS */
return
0
;
}
/*
* This gets invoked by the IDE driver once for each channel,
* and performs channel-specific pre-initialization before drive probing.
...
...
@@ -545,7 +481,6 @@ static void __init init_hwif_sc1200 (ide_hwif_t *hwif)
static
ide_pci_device_t
sc1200_chipset
__devinitdata
=
{
.
name
=
"SC1200"
,
.
init_chipset
=
init_chipset_sc1200
,
.
init_hwif
=
init_hwif_sc1200
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
...
...
drivers/ide/pci/serverworks.c
View file @
2cc7138f
...
...
@@ -44,164 +44,6 @@
static
u8
svwks_revision
=
0
;
static
struct
pci_dev
*
isa_dev
;
#if defined(DISPLAY_SVWKS_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
svwks_proc
=
0
;
#define SVWKS_MAX_DEVS 2
static
struct
pci_dev
*
svwks_devs
[
SVWKS_MAX_DEVS
];
static
int
n_svwks_devs
;
static
int
svwks_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
int
i
,
len
;
p
+=
sprintf
(
p
,
"
\n
"
"ServerWorks OSB4/CSB5/CSB6
\n
"
);
for
(
i
=
0
;
i
<
n_svwks_devs
;
i
++
)
{
struct
pci_dev
*
dev
=
svwks_devs
[
i
];
unsigned
long
bibma
=
pci_resource_start
(
dev
,
4
);
u32
reg40
,
reg44
;
u16
reg48
,
reg56
;
u8
reg54
,
c0
=
0
,
c1
=
0
;
pci_read_config_dword
(
dev
,
0x40
,
&
reg40
);
pci_read_config_dword
(
dev
,
0x44
,
&
reg44
);
pci_read_config_word
(
dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
dev
,
0x54
,
&
reg54
);
pci_read_config_word
(
dev
,
0x56
,
&
reg56
);
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb_p
(
bibma
+
0x02
);
c1
=
inb_p
(
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
"
\n
ServerWorks "
);
switch
(
dev
->
device
)
{
case
PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2
:
case
PCI_DEVICE_ID_SERVERWORKS_CSB6IDE
:
p
+=
sprintf
(
p
,
"CSB6 "
);
break
;
case
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
:
p
+=
sprintf
(
p
,
"CSB5 "
);
break
;
case
PCI_DEVICE_ID_SERVERWORKS_OSB4IDE
:
p
+=
sprintf
(
p
,
"OSB4 "
);
break
;
default:
p
+=
sprintf
(
p
,
"%04x "
,
dev
->
device
);
break
;
}
p
+=
sprintf
(
p
,
"Chipset (rev %02x)
\n
"
,
svwks_revision
);
p
+=
sprintf
(
p
,
"------------------------------- "
"General Status "
"---------------------------------
\n
"
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled"
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s"
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s"
" %s %s
\n
"
,
(
reg54
&
0x01
)
?
"yes"
:
"no "
,
(
reg54
&
0x02
)
?
"yes"
:
"no "
,
(
reg54
&
0x04
)
?
"yes"
:
"no "
,
(
reg54
&
0x08
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s"
" %s %s
\n
"
,
((
reg56
&
0x0005
)
==
0x0005
)
?
"5"
:
((
reg56
&
0x0004
)
==
0x0004
)
?
"4"
:
((
reg56
&
0x0003
)
==
0x0003
)
?
"3"
:
((
reg56
&
0x0002
)
==
0x0002
)
?
"2"
:
((
reg56
&
0x0001
)
==
0x0001
)
?
"1"
:
((
reg56
&
0x000F
))
?
"?"
:
"0"
,
((
reg56
&
0x0050
)
==
0x0050
)
?
"5"
:
((
reg56
&
0x0040
)
==
0x0040
)
?
"4"
:
((
reg56
&
0x0030
)
==
0x0030
)
?
"3"
:
((
reg56
&
0x0020
)
==
0x0020
)
?
"2"
:
((
reg56
&
0x0010
)
==
0x0010
)
?
"1"
:
((
reg56
&
0x00F0
))
?
"?"
:
"0"
,
((
reg56
&
0x0500
)
==
0x0500
)
?
"5"
:
((
reg56
&
0x0400
)
==
0x0400
)
?
"4"
:
((
reg56
&
0x0300
)
==
0x0300
)
?
"3"
:
((
reg56
&
0x0200
)
==
0x0200
)
?
"2"
:
((
reg56
&
0x0100
)
==
0x0100
)
?
"1"
:
((
reg56
&
0x0F00
))
?
"?"
:
"0"
,
((
reg56
&
0x5000
)
==
0x5000
)
?
"5"
:
((
reg56
&
0x4000
)
==
0x4000
)
?
"4"
:
((
reg56
&
0x3000
)
==
0x3000
)
?
"3"
:
((
reg56
&
0x2000
)
==
0x2000
)
?
"2"
:
((
reg56
&
0x1000
)
==
0x1000
)
?
"1"
:
((
reg56
&
0xF000
))
?
"?"
:
"0"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s"
" %s %s
\n
"
,
((
reg44
&
0x00002000
)
==
0x00002000
)
?
"2"
:
((
reg44
&
0x00002100
)
==
0x00002100
)
?
"1"
:
((
reg44
&
0x00007700
)
==
0x00007700
)
?
"0"
:
((
reg44
&
0x0000FF00
)
==
0x0000FF00
)
?
"X"
:
"?"
,
((
reg44
&
0x00000020
)
==
0x00000020
)
?
"2"
:
((
reg44
&
0x00000021
)
==
0x00000021
)
?
"1"
:
((
reg44
&
0x00000077
)
==
0x00000077
)
?
"0"
:
((
reg44
&
0x000000FF
)
==
0x000000FF
)
?
"X"
:
"?"
,
((
reg44
&
0x20000000
)
==
0x20000000
)
?
"2"
:
((
reg44
&
0x21000000
)
==
0x21000000
)
?
"1"
:
((
reg44
&
0x77000000
)
==
0x77000000
)
?
"0"
:
((
reg44
&
0xFF000000
)
==
0xFF000000
)
?
"X"
:
"?"
,
((
reg44
&
0x00200000
)
==
0x00200000
)
?
"2"
:
((
reg44
&
0x00210000
)
==
0x00210000
)
?
"1"
:
((
reg44
&
0x00770000
)
==
0x00770000
)
?
"0"
:
((
reg44
&
0x00FF0000
)
==
0x00FF0000
)
?
"X"
:
"?"
);
p
+=
sprintf
(
p
,
"PIO enabled: %s %s"
" %s %s
\n
"
,
((
reg40
&
0x00002000
)
==
0x00002000
)
?
"4"
:
((
reg40
&
0x00002200
)
==
0x00002200
)
?
"3"
:
((
reg40
&
0x00003400
)
==
0x00003400
)
?
"2"
:
((
reg40
&
0x00004700
)
==
0x00004700
)
?
"1"
:
((
reg40
&
0x00005D00
)
==
0x00005D00
)
?
"0"
:
"?"
,
((
reg40
&
0x00000020
)
==
0x00000020
)
?
"4"
:
((
reg40
&
0x00000022
)
==
0x00000022
)
?
"3"
:
((
reg40
&
0x00000034
)
==
0x00000034
)
?
"2"
:
((
reg40
&
0x00000047
)
==
0x00000047
)
?
"1"
:
((
reg40
&
0x0000005D
)
==
0x0000005D
)
?
"0"
:
"?"
,
((
reg40
&
0x20000000
)
==
0x20000000
)
?
"4"
:
((
reg40
&
0x22000000
)
==
0x22000000
)
?
"3"
:
((
reg40
&
0x34000000
)
==
0x34000000
)
?
"2"
:
((
reg40
&
0x47000000
)
==
0x47000000
)
?
"1"
:
((
reg40
&
0x5D000000
)
==
0x5D000000
)
?
"0"
:
"?"
,
((
reg40
&
0x00200000
)
==
0x00200000
)
?
"4"
:
((
reg40
&
0x00220000
)
==
0x00220000
)
?
"3"
:
((
reg40
&
0x00340000
)
==
0x00340000
)
?
"2"
:
((
reg40
&
0x00470000
)
==
0x00470000
)
?
"1"
:
((
reg40
&
0x005D0000
)
==
0x005D0000
)
?
"0"
:
"?"
);
}
p
+=
sprintf
(
p
,
"
\n
"
);
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_SVWKS_TIMINGS) && defined(CONFIG_PROC_FS) */
static
int
check_in_drive_lists
(
ide_drive_t
*
drive
,
const
char
**
list
)
{
while
(
*
list
)
...
...
@@ -617,16 +459,6 @@ static unsigned int __init init_chipset_svwks (struct pci_dev *dev, const char *
pci_write_config_byte
(
dev
,
0x5A
,
btr
);
}
#if defined(DISPLAY_SVWKS_TIMINGS) && defined(CONFIG_PROC_FS)
svwks_devs
[
n_svwks_devs
++
]
=
dev
;
if
(
!
svwks_proc
)
{
svwks_proc
=
1
;
ide_pci_create_host_proc
(
"svwks"
,
svwks_get_info
);
}
#endif
/* DISPLAY_SVWKS_TIMINGS && CONFIG_PROC_FS */
return
(
dev
->
irq
)
?
dev
->
irq
:
0
;
}
...
...
drivers/ide/pci/serverworks.h
View file @
2cc7138f
...
...
@@ -21,8 +21,6 @@ const char *svwks_bad_ata100[] = {
NULL
};
#define DISPLAY_SVWKS_TIMINGS 1
static
void
init_setup_svwks
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
void
init_setup_csb6
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
init_chipset_svwks
(
struct
pci_dev
*
,
const
char
*
);
...
...
drivers/ide/pci/slc90e66.c
View file @
2cc7138f
...
...
@@ -21,103 +21,6 @@
#include <asm/io.h>
#define DISPLAY_SLC90E66_TIMINGS
#if defined(DISPLAY_SLC90E66_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static
u8
slc90e66_proc
=
0
;
static
struct
pci_dev
*
bmide_dev
;
static
int
slc90e66_get_info
(
char
*
buffer
,
char
**
addr
,
off_t
offset
,
int
count
)
{
char
*
p
=
buffer
;
int
len
;
unsigned
long
bibma
=
pci_resource_start
(
bmide_dev
,
4
);
u16
reg40
=
0
,
psitre
=
0
,
reg42
=
0
,
ssitre
=
0
;
u8
c0
=
0
,
c1
=
0
;
u8
reg44
=
0
,
reg47
=
0
,
reg48
=
0
,
reg4a
=
0
,
reg4b
=
0
;
pci_read_config_word
(
bmide_dev
,
0x40
,
&
reg40
);
pci_read_config_word
(
bmide_dev
,
0x42
,
&
reg42
);
pci_read_config_byte
(
bmide_dev
,
0x44
,
&
reg44
);
pci_read_config_byte
(
bmide_dev
,
0x47
,
&
reg47
);
pci_read_config_byte
(
bmide_dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
bmide_dev
,
0x4a
,
&
reg4a
);
pci_read_config_byte
(
bmide_dev
,
0x4b
,
&
reg4b
);
psitre
=
(
reg40
&
0x4000
)
?
1
:
0
;
ssitre
=
(
reg42
&
0x4000
)
?
1
:
0
;
/*
* at that point bibma+0x2 et bibma+0xa are byte registers
* to investigate:
*/
c0
=
inb_p
(
bibma
+
0x02
);
c1
=
inb_p
(
bibma
+
0x0a
);
p
+=
sprintf
(
p
,
" SLC90E66 Chipset.
\n
"
);
p
+=
sprintf
(
p
,
"--------------- Primary Channel "
"---------------- Secondary Channel "
"-------------
\n
"
);
p
+=
sprintf
(
p
,
" %sabled "
" %sabled
\n
"
,
(
c0
&
0x80
)
?
"dis"
:
" en"
,
(
c1
&
0x80
)
?
"dis"
:
" en"
);
p
+=
sprintf
(
p
,
"--------------- drive0 --------- drive1 "
"-------- drive0 ---------- drive1 ------
\n
"
);
p
+=
sprintf
(
p
,
"DMA enabled: %s %s "
" %s %s
\n
"
,
(
c0
&
0x20
)
?
"yes"
:
"no "
,
(
c0
&
0x40
)
?
"yes"
:
"no "
,
(
c1
&
0x20
)
?
"yes"
:
"no "
,
(
c1
&
0x40
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s "
" %s %s
\n
"
,
(
reg48
&
0x01
)
?
"yes"
:
"no "
,
(
reg48
&
0x02
)
?
"yes"
:
"no "
,
(
reg48
&
0x04
)
?
"yes"
:
"no "
,
(
reg48
&
0x08
)
?
"yes"
:
"no "
);
p
+=
sprintf
(
p
,
"UDMA enabled: %s %s "
" %s %s
\n
"
,
((
reg4a
&
0x04
)
==
0x04
)
?
"4"
:
((
reg4a
&
0x03
)
==
0x03
)
?
"3"
:
(
reg4a
&
0x02
)
?
"2"
:
(
reg4a
&
0x01
)
?
"1"
:
(
reg4a
&
0x00
)
?
"0"
:
"X"
,
((
reg4a
&
0x40
)
==
0x40
)
?
"4"
:
((
reg4a
&
0x30
)
==
0x30
)
?
"3"
:
(
reg4a
&
0x20
)
?
"2"
:
(
reg4a
&
0x10
)
?
"1"
:
(
reg4a
&
0x00
)
?
"0"
:
"X"
,
((
reg4b
&
0x04
)
==
0x04
)
?
"4"
:
((
reg4b
&
0x03
)
==
0x03
)
?
"3"
:
(
reg4b
&
0x02
)
?
"2"
:
(
reg4b
&
0x01
)
?
"1"
:
(
reg4b
&
0x00
)
?
"0"
:
"X"
,
((
reg4b
&
0x40
)
==
0x40
)
?
"4"
:
((
reg4b
&
0x30
)
==
0x30
)
?
"3"
:
(
reg4b
&
0x20
)
?
"2"
:
(
reg4b
&
0x10
)
?
"1"
:
(
reg4b
&
0x00
)
?
"0"
:
"X"
);
p
+=
sprintf
(
p
,
"UDMA
\n
"
);
p
+=
sprintf
(
p
,
"DMA
\n
"
);
p
+=
sprintf
(
p
,
"PIO
\n
"
);
/*
* FIXME.... Add configuration junk data....blah blah......
*/
/* p - buffer must be less than 4k! */
len
=
(
p
-
buffer
)
-
offset
;
*
addr
=
buffer
+
offset
;
return
len
>
count
?
count
:
len
;
}
#endif
/* defined(DISPLAY_SLC90E66_TIMINGS) && defined(CONFIG_PROC_FS) */
static
u8
slc90e66_ratemask
(
ide_drive_t
*
drive
)
{
u8
mode
=
2
;
...
...
@@ -236,6 +139,7 @@ static int slc90e66_tune_chipset (ide_drive_t *drive, u8 xferspeed)
if
(
speed
>=
XFER_UDMA_0
)
{
if
(
!
(
reg48
&
u_flag
))
pci_write_config_word
(
dev
,
0x48
,
reg48
|
u_flag
);
/* FIXME: (reg4a & a_speed) ? */
if
((
reg4a
&
u_speed
)
!=
u_speed
)
{
pci_write_config_word
(
dev
,
0x4a
,
reg4a
&
~
a_speed
);
pci_read_config_word
(
dev
,
0x4a
,
&
reg4a
);
...
...
@@ -313,18 +217,6 @@ static int slc90e66_config_drive_xfer_rate (ide_drive_t *drive)
}
#endif
/* CONFIG_BLK_DEV_IDEDMA */
static
unsigned
int
__init
init_chipset_slc90e66
(
struct
pci_dev
*
dev
,
const
char
*
name
)
{
#if defined(DISPLAY_SLC90E66_TIMINGS) && defined(CONFIG_PROC_FS)
if
(
!
slc90e66_proc
)
{
slc90e66_proc
=
1
;
bmide_dev
=
dev
;
ide_pci_create_host_proc
(
"slc90e66"
,
slc90e66_get_info
);
}
#endif
/* DISPLAY_SLC90E66_TIMINGS && CONFIG_PROC_FS */
return
0
;
}
static
void
__init
init_hwif_slc90e66
(
ide_hwif_t
*
hwif
)
{
u8
reg47
=
0
;
...
...
@@ -366,7 +258,6 @@ static void __init init_hwif_slc90e66 (ide_hwif_t *hwif)
static
ide_pci_device_t
slc90e66_chipset
__devinitdata
=
{
.
name
=
"SLC90E66"
,
.
init_chipset
=
init_chipset_slc90e66
,
.
init_hwif
=
init_hwif_slc90e66
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
...
...
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