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
80b8bedf
Commit
80b8bedf
authored
Feb 05, 2005
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
1581782e
7778727a
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
1131 additions
and
1396 deletions
+1131
-1396
drivers/ide/ide-lib.c
drivers/ide/ide-lib.c
+2
-1
drivers/ide/ide-probe.c
drivers/ide/ide-probe.c
+2
-1
drivers/ide/pci/aec62xx.c
drivers/ide/pci/aec62xx.c
+101
-3
drivers/ide/pci/aec62xx.h
drivers/ide/pci/aec62xx.h
+0
-122
drivers/ide/pci/cmd64x.c
drivers/ide/pci/cmd64x.c
+83
-1
drivers/ide/pci/cmd64x.h
drivers/ide/pci/cmd64x.h
+0
-95
drivers/ide/pci/cy82c693.c
drivers/ide/pci/cy82c693.c
+70
-1
drivers/ide/pci/cy82c693.h
drivers/ide/pci/cy82c693.h
+0
-83
drivers/ide/pci/generic.c
drivers/ide/pci/generic.c
+83
-7
drivers/ide/pci/generic.h
drivers/ide/pci/generic.h
+0
-120
drivers/ide/pci/hpt366.c
drivers/ide/pci/hpt366.c
+434
-1
drivers/ide/pci/hpt366.h
drivers/ide/pci/hpt366.h
+0
-483
drivers/ide/pci/it8172.c
drivers/ide/pci/it8172.c
+12
-2
drivers/ide/pci/it8172.h
drivers/ide/pci/it8172.h
+0
-31
drivers/ide/pci/opti621.c
drivers/ide/pci/opti621.c
+18
-2
drivers/ide/pci/opti621.h
drivers/ide/pci/opti621.h
+0
-28
drivers/ide/pci/pdc202xx_new.c
drivers/ide/pci/pdc202xx_new.c
+104
-2
drivers/ide/pci/pdc202xx_new.h
drivers/ide/pci/pdc202xx_new.h
+0
-118
drivers/ide/pci/pdc202xx_old.c
drivers/ide/pci/pdc202xx_old.c
+126
-3
drivers/ide/pci/pdc202xx_old.h
drivers/ide/pci/pdc202xx_old.h
+0
-144
drivers/ide/pci/piix.c
drivers/ide/pci/piix.c
+46
-2
drivers/ide/pci/piix.h
drivers/ide/pci/piix.h
+0
-62
drivers/ide/pci/serverworks.c
drivers/ide/pci/serverworks.c
+50
-1
drivers/ide/pci/serverworks.h
drivers/ide/pci/serverworks.h
+0
-69
include/linux/ide.h
include/linux/ide.h
+0
-14
No files found.
drivers/ide/ide-lib.c
View file @
80b8bedf
...
...
@@ -570,6 +570,7 @@ static u8 ide_dump_atapi_status(ide_drive_t *drive, const char *msg, u8 stat)
atapi_error_t
error
;
status
.
all
=
stat
;
error
.
all
=
0
;
local_irq_set
(
flags
);
printk
(
"%s: %s: status=0x%02x { "
,
drive
->
name
,
msg
,
stat
);
if
(
status
.
b
.
bsy
)
...
...
@@ -584,7 +585,7 @@ static u8 ide_dump_atapi_status(ide_drive_t *drive, const char *msg, u8 stat)
if
(
status
.
b
.
check
)
printk
(
"Error "
);
}
printk
(
"}
\n
"
);
if
(
(
status
.
all
&
(
status
.
b
.
bsy
|
status
.
b
.
check
))
==
status
.
b
.
check
)
{
if
(
status
.
b
.
check
&&
!
status
.
b
.
bsy
)
{
error
.
all
=
HWIF
(
drive
)
->
INB
(
IDE_ERROR_REG
);
printk
(
"%s: %s: error=0x%02x { "
,
drive
->
name
,
msg
,
error
.
all
);
if
(
error
.
b
.
ili
)
printk
(
"IllegalLengthIndication "
);
...
...
drivers/ide/ide-probe.c
View file @
80b8bedf
...
...
@@ -1248,8 +1248,9 @@ static int hwif_init(ide_hwif_t *hwif)
{
int
old_irq
,
unit
;
/* Return success if no device is connected */
if
(
!
hwif
->
present
)
return
0
;
return
1
;
if
(
!
hwif
->
irq
)
{
if
(
!
(
hwif
->
irq
=
ide_default_irq
(
hwif
->
io_ports
[
IDE_DATA_OFFSET
])))
...
...
drivers/ide/pci/aec62xx.c
View file @
80b8bedf
...
...
@@ -16,7 +16,54 @@
#include <asm/io.h>
#include "aec62xx.h"
struct
chipset_bus_clock_list_entry
{
u8
xfer_speed
;
u8
chipset_settings
;
u8
ultra_settings
;
};
static
struct
chipset_bus_clock_list_entry
aec6xxx_33_base
[]
=
{
{
XFER_UDMA_6
,
0x31
,
0x07
},
{
XFER_UDMA_5
,
0x31
,
0x06
},
{
XFER_UDMA_4
,
0x31
,
0x05
},
{
XFER_UDMA_3
,
0x31
,
0x04
},
{
XFER_UDMA_2
,
0x31
,
0x03
},
{
XFER_UDMA_1
,
0x31
,
0x02
},
{
XFER_UDMA_0
,
0x31
,
0x01
},
{
XFER_MW_DMA_2
,
0x31
,
0x00
},
{
XFER_MW_DMA_1
,
0x31
,
0x00
},
{
XFER_MW_DMA_0
,
0x0a
,
0x00
},
{
XFER_PIO_4
,
0x31
,
0x00
},
{
XFER_PIO_3
,
0x33
,
0x00
},
{
XFER_PIO_2
,
0x08
,
0x00
},
{
XFER_PIO_1
,
0x0a
,
0x00
},
{
XFER_PIO_0
,
0x00
,
0x00
},
{
0
,
0x00
,
0x00
}
};
static
struct
chipset_bus_clock_list_entry
aec6xxx_34_base
[]
=
{
{
XFER_UDMA_6
,
0x41
,
0x06
},
{
XFER_UDMA_5
,
0x41
,
0x05
},
{
XFER_UDMA_4
,
0x41
,
0x04
},
{
XFER_UDMA_3
,
0x41
,
0x03
},
{
XFER_UDMA_2
,
0x41
,
0x02
},
{
XFER_UDMA_1
,
0x41
,
0x01
},
{
XFER_UDMA_0
,
0x41
,
0x01
},
{
XFER_MW_DMA_2
,
0x41
,
0x00
},
{
XFER_MW_DMA_1
,
0x42
,
0x00
},
{
XFER_MW_DMA_0
,
0x7a
,
0x00
},
{
XFER_PIO_4
,
0x41
,
0x00
},
{
XFER_PIO_3
,
0x43
,
0x00
},
{
XFER_PIO_2
,
0x78
,
0x00
},
{
XFER_PIO_1
,
0x7a
,
0x00
},
{
XFER_PIO_0
,
0x70
,
0x00
},
{
0
,
0x00
,
0x00
}
};
#define BUSCLOCK(D) \
((struct chipset_bus_clock_list_entry *) pci_get_drvdata((D)))
#if 0
if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) {
...
...
@@ -101,8 +148,7 @@ static int aec6210_tune_chipset (ide_drive_t *drive, u8 xferspeed)
/* 0x40|(2*drive->dn): Active, 0x41|(2*drive->dn): Recovery */
pci_read_config_word
(
dev
,
0x40
|
(
2
*
drive
->
dn
),
&
d_conf
);
tmp0
=
pci_bus_clock_list
(
speed
,
BUSCLOCK
(
dev
));
SPLIT_BYTE
(
tmp0
,
tmp1
,
tmp2
);
MAKE_WORD
(
d_conf
,
tmp1
,
tmp2
);
d_conf
=
((
tmp0
&
0xf0
)
<<
4
)
|
(
tmp0
&
0xf
);
pci_write_config_word
(
dev
,
0x40
|
(
2
*
drive
->
dn
),
d_conf
);
tmp1
=
0x00
;
...
...
@@ -343,6 +389,58 @@ static int __devinit init_setup_aec6x80(struct pci_dev *dev, ide_pci_device_t *d
return
ide_setup_pci_device
(
dev
,
d
);
}
static
ide_pci_device_t
aec62xx_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"AEC6210"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
OFF_BOARD
,
},{
/* 1 */
.
name
=
"AEC6260"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"AEC6260R"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
NEVER_BOARD
,
},{
/* 3 */
.
name
=
"AEC6X80"
,
.
init_setup
=
init_setup_aec6x80
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"AEC6X80R"
,
.
init_setup
=
init_setup_aec6x80
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
OFF_BOARD
,
}
};
/**
* aec62xx_init_one - called when a AEC is found
* @dev: the aec62xx device
...
...
drivers/ide/pci/aec62xx.h
deleted
100644 → 0
View file @
1581782e
#ifndef AEC62XX_H
#define AEC62XX_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
struct
chipset_bus_clock_list_entry
{
byte
xfer_speed
;
byte
chipset_settings
;
byte
ultra_settings
;
};
static
struct
chipset_bus_clock_list_entry
aec6xxx_33_base
[]
=
{
{
XFER_UDMA_6
,
0x31
,
0x07
},
{
XFER_UDMA_5
,
0x31
,
0x06
},
{
XFER_UDMA_4
,
0x31
,
0x05
},
{
XFER_UDMA_3
,
0x31
,
0x04
},
{
XFER_UDMA_2
,
0x31
,
0x03
},
{
XFER_UDMA_1
,
0x31
,
0x02
},
{
XFER_UDMA_0
,
0x31
,
0x01
},
{
XFER_MW_DMA_2
,
0x31
,
0x00
},
{
XFER_MW_DMA_1
,
0x31
,
0x00
},
{
XFER_MW_DMA_0
,
0x0a
,
0x00
},
{
XFER_PIO_4
,
0x31
,
0x00
},
{
XFER_PIO_3
,
0x33
,
0x00
},
{
XFER_PIO_2
,
0x08
,
0x00
},
{
XFER_PIO_1
,
0x0a
,
0x00
},
{
XFER_PIO_0
,
0x00
,
0x00
},
{
0
,
0x00
,
0x00
}
};
static
struct
chipset_bus_clock_list_entry
aec6xxx_34_base
[]
=
{
{
XFER_UDMA_6
,
0x41
,
0x06
},
{
XFER_UDMA_5
,
0x41
,
0x05
},
{
XFER_UDMA_4
,
0x41
,
0x04
},
{
XFER_UDMA_3
,
0x41
,
0x03
},
{
XFER_UDMA_2
,
0x41
,
0x02
},
{
XFER_UDMA_1
,
0x41
,
0x01
},
{
XFER_UDMA_0
,
0x41
,
0x01
},
{
XFER_MW_DMA_2
,
0x41
,
0x00
},
{
XFER_MW_DMA_1
,
0x42
,
0x00
},
{
XFER_MW_DMA_0
,
0x7a
,
0x00
},
{
XFER_PIO_4
,
0x41
,
0x00
},
{
XFER_PIO_3
,
0x43
,
0x00
},
{
XFER_PIO_2
,
0x78
,
0x00
},
{
XFER_PIO_1
,
0x7a
,
0x00
},
{
XFER_PIO_0
,
0x70
,
0x00
},
{
0
,
0x00
,
0x00
}
};
#ifndef SPLIT_BYTE
#define SPLIT_BYTE(B,H,L) ((H)=(B>>4), (L)=(B-((B>>4)<<4)))
#endif
#ifndef MAKE_WORD
#define MAKE_WORD(W,HB,LB) ((W)=((HB<<8)+LB))
#endif
#define BUSCLOCK(D) \
((struct chipset_bus_clock_list_entry *) pci_get_drvdata((D)))
static
int
init_setup_aec6x80
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_aec62xx
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
init_chipset_aec62xx
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_aec62xx
(
ide_hwif_t
*
);
static
void
init_dma_aec62xx
(
ide_hwif_t
*
,
unsigned
long
);
static
ide_pci_device_t
aec62xx_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"AEC6210"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
OFF_BOARD
,
},{
/* 1 */
.
name
=
"AEC6260"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"AEC6260R"
,
.
init_setup
=
init_setup_aec62xx
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
NEVER_BOARD
,
},{
/* 3 */
.
name
=
"AEC6X80"
,
.
init_setup
=
init_setup_aec6x80
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"AEC6X80R"
,
.
init_setup
=
init_setup_aec6x80
,
.
init_chipset
=
init_chipset_aec62xx
,
.
init_hwif
=
init_hwif_aec62xx
,
.
init_dma
=
init_dma_aec62xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x4a
,
0x02
,
0x02
},
{
0x4a
,
0x04
,
0x04
}},
.
bootable
=
OFF_BOARD
,
}
};
#endif
/* AEC62XX_H */
drivers/ide/pci/cmd64x.c
View file @
80b8bedf
...
...
@@ -25,7 +25,56 @@
#include <asm/io.h>
#include "cmd64x.h"
#define DISPLAY_CMD64X_TIMINGS
#define CMD_DEBUG 0
#if CMD_DEBUG
#define cmdprintk(x...) printk(x)
#else
#define cmdprintk(x...)
#endif
/*
* CMD64x specific registers definition.
*/
#define CFR 0x50
#define CFR_INTR_CH0 0x02
#define CNTRL 0x51
#define CNTRL_DIS_RA0 0x40
#define CNTRL_DIS_RA1 0x80
#define CNTRL_ENA_2ND 0x08
#define CMDTIM 0x52
#define ARTTIM0 0x53
#define DRWTIM0 0x54
#define ARTTIM1 0x55
#define DRWTIM1 0x56
#define ARTTIM23 0x57
#define ARTTIM23_DIS_RA2 0x04
#define ARTTIM23_DIS_RA3 0x08
#define ARTTIM23_INTR_CH1 0x10
#define ARTTIM2 0x57
#define ARTTIM3 0x57
#define DRWTIM23 0x58
#define DRWTIM2 0x58
#define BRST 0x59
#define DRWTIM3 0x5b
#define BMIDECR0 0x70
#define MRDMODE 0x71
#define MRDMODE_INTR_CH0 0x04
#define MRDMODE_INTR_CH1 0x08
#define MRDMODE_BLK_CH0 0x10
#define MRDMODE_BLK_CH1 0x20
#define BMIDESR0 0x72
#define UDIDETCR0 0x73
#define DTPR0 0x74
#define BMIDECR1 0x78
#define BMIDECSR 0x79
#define BMIDESR1 0x7A
#define UDIDETCR1 0x7B
#define DTPR1 0x7C
#if defined(DISPLAY_CMD64X_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
...
...
@@ -707,6 +756,39 @@ static void __devinit init_hwif_cmd64x(ide_hwif_t *hwif)
hwif
->
drives
[
1
].
autodma
=
hwif
->
autodma
;
}
static
ide_pci_device_t
cmd64x_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"CMD643"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"CMD646"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x00
,
0x00
,
0x00
},
{
0x51
,
0x80
,
0x80
}},
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"CMD648"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 3 */
.
name
=
"CMD649"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
static
int
__devinit
cmd64x_init_one
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
return
ide_setup_pci_device
(
dev
,
&
cmd64x_chipsets
[
id
->
driver_data
]);
...
...
drivers/ide/pci/cmd64x.h
deleted
100644 → 0
View file @
1581782e
#ifndef CMD64X_H
#define CMD64X_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
#define DISPLAY_CMD64X_TIMINGS
#define CMD_DEBUG 0
#if CMD_DEBUG
#define cmdprintk(x...) printk(x)
#else
#define cmdprintk(x...)
#endif
/*
* CMD64x specific registers definition.
*/
#define CFR 0x50
#define CFR_INTR_CH0 0x02
#define CNTRL 0x51
#define CNTRL_DIS_RA0 0x40
#define CNTRL_DIS_RA1 0x80
#define CNTRL_ENA_2ND 0x08
#define CMDTIM 0x52
#define ARTTIM0 0x53
#define DRWTIM0 0x54
#define ARTTIM1 0x55
#define DRWTIM1 0x56
#define ARTTIM23 0x57
#define ARTTIM23_DIS_RA2 0x04
#define ARTTIM23_DIS_RA3 0x08
#define ARTTIM23_INTR_CH1 0x10
#define ARTTIM2 0x57
#define ARTTIM3 0x57
#define DRWTIM23 0x58
#define DRWTIM2 0x58
#define BRST 0x59
#define DRWTIM3 0x5b
#define BMIDECR0 0x70
#define MRDMODE 0x71
#define MRDMODE_INTR_CH0 0x04
#define MRDMODE_INTR_CH1 0x08
#define MRDMODE_BLK_CH0 0x10
#define MRDMODE_BLK_CH1 0x20
#define BMIDESR0 0x72
#define UDIDETCR0 0x73
#define DTPR0 0x74
#define BMIDECR1 0x78
#define BMIDECSR 0x79
#define BMIDESR1 0x7A
#define UDIDETCR1 0x7B
#define DTPR1 0x7C
static
unsigned
int
init_chipset_cmd64x
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_cmd64x
(
ide_hwif_t
*
);
static
ide_pci_device_t
cmd64x_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"CMD643"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"CMD646"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x00
,
0x00
,
0x00
},
{
0x51
,
0x80
,
0x80
}},
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"CMD648"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
.
name
=
"CMD649"
,
.
init_chipset
=
init_chipset_cmd64x
,
.
init_hwif
=
init_hwif_cmd64x
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
#endif
/* CMD64X_H */
drivers/ide/pci/cy82c693.c
View file @
80b8bedf
...
...
@@ -54,7 +54,64 @@
#include <asm/io.h>
#include "cy82c693.h"
/* the current version */
#define CY82_VERSION "CY82C693U driver v0.34 99-13-12 Andreas S. Krebs (akrebs@altavista.net)"
/*
* The following are used to debug the driver.
*/
#define CY82C693_DEBUG_LOGS 0
#define CY82C693_DEBUG_INFO 0
/* define CY82C693_SETDMA_CLOCK to set DMA Controller Clock Speed to ATCLK */
#undef CY82C693_SETDMA_CLOCK
/*
* NOTE: the value for busmaster timeout is tricky and I got it by
* trial and error! By using a to low value will cause DMA timeouts
* and drop IDE performance, and by using a to high value will cause
* audio playback to scatter.
* If you know a better value or how to calc it, please let me know.
*/
/* twice the value written in cy82c693ub datasheet */
#define BUSMASTER_TIMEOUT 0x50
/*
* the value above was tested on my machine and it seems to work okay
*/
/* here are the offset definitions for the registers */
#define CY82_IDE_CMDREG 0x04
#define CY82_IDE_ADDRSETUP 0x48
#define CY82_IDE_MASTER_IOR 0x4C
#define CY82_IDE_MASTER_IOW 0x4D
#define CY82_IDE_SLAVE_IOR 0x4E
#define CY82_IDE_SLAVE_IOW 0x4F
#define CY82_IDE_MASTER_8BIT 0x50
#define CY82_IDE_SLAVE_8BIT 0x51
#define CY82_INDEX_PORT 0x22
#define CY82_DATA_PORT 0x23
#define CY82_INDEX_CTRLREG1 0x01
#define CY82_INDEX_CHANNEL0 0x30
#define CY82_INDEX_CHANNEL1 0x31
#define CY82_INDEX_TIMEOUT 0x32
/* the max PIO mode - from datasheet */
#define CY82C693_MAX_PIO 4
/* the min and max PCI bus speed in MHz - from datasheet */
#define CY82C963_MIN_BUS_SPEED 25
#define CY82C963_MAX_BUS_SPEED 33
/* the struct for the PIO mode timings */
typedef
struct
pio_clocks_s
{
u8
address_time
;
/* Address setup (clocks) */
u8
time_16r
;
/* clocks for 16bit IOR (0xF0=Active/data, 0x0F=Recovery) */
u8
time_16w
;
/* clocks for 16bit IOW (0xF0=Active/data, 0x0F=Recovery) */
u8
time_8
;
/* clocks for 8bit (0xF0=Active/data, 0x0F=Recovery) */
}
pio_clocks_t
;
/*
* calc clocks using bus_speed
...
...
@@ -422,6 +479,18 @@ void __init init_iops_cy82c693(ide_hwif_t *hwif)
}
}
static
ide_pci_device_t
cy82c693_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"CY82C693"
,
.
init_chipset
=
init_chipset_cy82c693
,
.
init_iops
=
init_iops_cy82c693
,
.
init_hwif
=
init_hwif_cy82c693
,
.
channels
=
1
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
static
int
__devinit
cy82c693_init_one
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
ide_pci_device_t
*
d
=
&
cy82c693_chipsets
[
id
->
driver_data
];
...
...
drivers/ide/pci/cy82c693.h
deleted
100644 → 0
View file @
1581782e
#ifndef CY82C693_H
#define CY82C693_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
/* the current version */
#define CY82_VERSION "CY82C693U driver v0.34 99-13-12 Andreas S. Krebs (akrebs@altavista.net)"
/*
* The following are used to debug the driver.
*/
#define CY82C693_DEBUG_LOGS 0
#define CY82C693_DEBUG_INFO 0
/* define CY82C693_SETDMA_CLOCK to set DMA Controller Clock Speed to ATCLK */
#undef CY82C693_SETDMA_CLOCK
/*
* NOTE: the value for busmaster timeout is tricky and I got it by
* trial and error! By using a to low value will cause DMA timeouts
* and drop IDE performance, and by using a to high value will cause
* audio playback to scatter.
* If you know a better value or how to calc it, please let me know.
*/
/* twice the value written in cy82c693ub datasheet */
#define BUSMASTER_TIMEOUT 0x50
/*
* the value above was tested on my machine and it seems to work okay
*/
/* here are the offset definitions for the registers */
#define CY82_IDE_CMDREG 0x04
#define CY82_IDE_ADDRSETUP 0x48
#define CY82_IDE_MASTER_IOR 0x4C
#define CY82_IDE_MASTER_IOW 0x4D
#define CY82_IDE_SLAVE_IOR 0x4E
#define CY82_IDE_SLAVE_IOW 0x4F
#define CY82_IDE_MASTER_8BIT 0x50
#define CY82_IDE_SLAVE_8BIT 0x51
#define CY82_INDEX_PORT 0x22
#define CY82_DATA_PORT 0x23
#define CY82_INDEX_CTRLREG1 0x01
#define CY82_INDEX_CHANNEL0 0x30
#define CY82_INDEX_CHANNEL1 0x31
#define CY82_INDEX_TIMEOUT 0x32
/* the max PIO mode - from datasheet */
#define CY82C693_MAX_PIO 4
/* the min and max PCI bus speed in MHz - from datasheet */
#define CY82C963_MIN_BUS_SPEED 25
#define CY82C963_MAX_BUS_SPEED 33
/* the struct for the PIO mode timings */
typedef
struct
pio_clocks_s
{
u8
address_time
;
/* Address setup (clocks) */
u8
time_16r
;
/* clocks for 16bit IOR (0xF0=Active/data, 0x0F=Recovery) */
u8
time_16w
;
/* clocks for 16bit IOW (0xF0=Active/data, 0x0F=Recovery) */
u8
time_8
;
/* clocks for 8bit (0xF0=Active/data, 0x0F=Recovery) */
}
pio_clocks_t
;
static
unsigned
int
init_chipset_cy82c693
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_cy82c693
(
ide_hwif_t
*
);
static
void
init_iops_cy82c693
(
ide_hwif_t
*
);
static
ide_pci_device_t
cy82c693_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"CY82C693"
,
.
init_chipset
=
init_chipset_cy82c693
,
.
init_iops
=
init_iops_cy82c693
,
.
init_hwif
=
init_hwif_cy82c693
,
.
channels
=
1
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
#endif
/* CY82C693_H */
drivers/ide/pci/generic.c
View file @
80b8bedf
...
...
@@ -39,13 +39,6 @@
#include <asm/io.h>
#include "generic.h"
static
unsigned
int
__devinit
init_chipset_generic
(
struct
pci_dev
*
dev
,
const
char
*
name
)
{
return
0
;
}
static
void
__devinit
init_hwif_generic
(
ide_hwif_t
*
hwif
)
{
switch
(
hwif
->
pci_dev
->
device
)
{
...
...
@@ -83,6 +76,89 @@ static void __devinit init_hwif_generic (ide_hwif_t *hwif)
return 0;
#endif
static
ide_pci_device_t
generic_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"NS87410"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x43
,
0x08
,
0x08
},
{
0x47
,
0x08
,
0x08
}},
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"SAMURAI"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"HT6565"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 3 */
.
name
=
"UM8673F"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 4 */
.
name
=
"UM8886A"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 5 */
.
name
=
"UM8886BF"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 6 */
.
name
=
"HINT_IDE"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 7 */
.
name
=
"VIA_IDE"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 8 */
.
name
=
"OPTI621V"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 9 */
.
name
=
"VIA8237SATA"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 10 */
.
name
=
"Piccolo0102"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 11 */
.
name
=
"Piccolo0103"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 12 */
.
name
=
"Piccolo0105"
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
/**
* generic_init_one - called when a PIIX is found
* @dev: the generic device
...
...
drivers/ide/pci/generic.h
deleted
100644 → 0
View file @
1581782e
#ifndef IDE_GENERIC_H
#define IDE_GENERIC_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
static
unsigned
int
init_chipset_generic
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_generic
(
ide_hwif_t
*
);
static
ide_pci_device_t
generic_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"NS87410"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x43
,
0x08
,
0x08
},
{
0x47
,
0x08
,
0x08
}},
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"SAMURAI"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"HT6565"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 3 */
.
name
=
"UM8673F"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 4 */
.
name
=
"UM8886A"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 5 */
.
name
=
"UM8886BF"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 6 */
.
name
=
"HINT_IDE"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 7 */
.
name
=
"VIA_IDE"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 8 */
.
name
=
"OPTI621V"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 9 */
.
name
=
"VIA8237SATA"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 10 */
.
name
=
"Piccolo0102"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 11 */
.
name
=
"Piccolo0103"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 12 */
.
name
=
"Piccolo0105"
,
.
init_chipset
=
init_chipset_generic
,
.
init_hwif
=
init_hwif_generic
,
.
channels
=
2
,
.
autodma
=
NOAUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
#if 0
static ide_pci_device_t unknown_chipset[] __devinitdata = {
{ /* 0 */
.name = "PCI_IDE",
.init_chipset = init_chipset_generic,
.init_hwif = init_hwif_generic,
.channels = 2,
.autodma = AUTODMA,
.bootable = ON_BOARD,
}
};
#endif
#endif
/* IDE_GENERIC_H */
drivers/ide/pci/hpt366.c
View file @
80b8bedf
...
...
@@ -70,8 +70,383 @@
#include <asm/io.h>
#include <asm/irq.h>
#include "hpt366.h"
/* various tuning parameters */
#define HPT_RESET_STATE_ENGINE
#undef HPT_DELAY_INTERRUPT
#undef HPT_SERIALIZE_IO
static
const
char
*
quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
static
const
char
*
bad_ata100_5
[]
=
{
"IBM-DTLA-307075"
,
"IBM-DTLA-307060"
,
"IBM-DTLA-307045"
,
"IBM-DTLA-307030"
,
"IBM-DTLA-307020"
,
"IBM-DTLA-307015"
,
"IBM-DTLA-305040"
,
"IBM-DTLA-305030"
,
"IBM-DTLA-305020"
,
"IC35L010AVER07-0"
,
"IC35L020AVER07-0"
,
"IC35L030AVER07-0"
,
"IC35L040AVER07-0"
,
"IC35L060AVER07-0"
,
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata66_4
[]
=
{
"IBM-DTLA-307075"
,
"IBM-DTLA-307060"
,
"IBM-DTLA-307045"
,
"IBM-DTLA-307030"
,
"IBM-DTLA-307020"
,
"IBM-DTLA-307015"
,
"IBM-DTLA-305040"
,
"IBM-DTLA-305030"
,
"IBM-DTLA-305020"
,
"IC35L010AVER07-0"
,
"IC35L020AVER07-0"
,
"IC35L030AVER07-0"
,
"IC35L040AVER07-0"
,
"IC35L060AVER07-0"
,
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata66_3
[]
=
{
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata33
[]
=
{
"Maxtor 92720U8"
,
"Maxtor 92040U6"
,
"Maxtor 91360U4"
,
"Maxtor 91020U3"
,
"Maxtor 90845U3"
,
"Maxtor 90650U2"
,
"Maxtor 91360D8"
,
"Maxtor 91190D7"
,
"Maxtor 91020D6"
,
"Maxtor 90845D5"
,
"Maxtor 90680D4"
,
"Maxtor 90510D3"
,
"Maxtor 90340D2"
,
"Maxtor 91152D8"
,
"Maxtor 91008D7"
,
"Maxtor 90845D6"
,
"Maxtor 90840D6"
,
"Maxtor 90720D5"
,
"Maxtor 90648D5"
,
"Maxtor 90576D4"
,
"Maxtor 90510D4"
,
"Maxtor 90432D3"
,
"Maxtor 90288D2"
,
"Maxtor 90256D2"
,
"Maxtor 91000D8"
,
"Maxtor 90910D8"
,
"Maxtor 90875D7"
,
"Maxtor 90840D7"
,
"Maxtor 90750D6"
,
"Maxtor 90625D5"
,
"Maxtor 90500D4"
,
"Maxtor 91728D8"
,
"Maxtor 91512D7"
,
"Maxtor 91303D6"
,
"Maxtor 91080D5"
,
"Maxtor 90845D4"
,
"Maxtor 90680D4"
,
"Maxtor 90648D3"
,
"Maxtor 90432D2"
,
NULL
};
struct
chipset_bus_clock_list_entry
{
u8
xfer_speed
;
unsigned
int
chipset_settings
;
};
/* key for bus clock timings
* bit
* 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
* 4:8 data_low_time. active time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
* 9:12 cmd_high_time. inactive time of DIOW_/DIOR_ during task file
* register access.
* 13:17 cmd_low_time. active time of DIOW_/DIOR_ during task file
* register access.
* 18:21 udma_cycle_time. clock freq and clock cycles for UDMA xfer.
* during task file register access.
* 22:24 pre_high_time. time to initialize 1st cycle for PIO and MW DMA
* xfer.
* 25:27 cmd_pre_high_time. time to initialize 1st PIO cycle for task
* register access.
* 28 UDMA enable
* 29 DMA enable
* 30 PIO_MST enable. if set, the chip is in bus master mode during
* PIO.
* 31 FIFO enable.
*/
static
struct
chipset_bus_clock_list_entry
forty_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x900fd943
},
{
XFER_UDMA_3
,
0x900ad943
},
{
XFER_UDMA_2
,
0x900bd943
},
{
XFER_UDMA_1
,
0x9008d943
},
{
XFER_UDMA_0
,
0x9008d943
},
{
XFER_MW_DMA_2
,
0xa008d943
},
{
XFER_MW_DMA_1
,
0xa010d955
},
{
XFER_MW_DMA_0
,
0xa010d9fc
},
{
XFER_PIO_4
,
0xc008d963
},
{
XFER_PIO_3
,
0xc010d974
},
{
XFER_PIO_2
,
0xc010d997
},
{
XFER_PIO_1
,
0xc010d9c7
},
{
XFER_PIO_0
,
0xc018d9d9
},
{
0
,
0x0120d9d9
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x90c9a731
},
{
XFER_UDMA_3
,
0x90cfa731
},
{
XFER_UDMA_2
,
0x90caa731
},
{
XFER_UDMA_1
,
0x90cba731
},
{
XFER_UDMA_0
,
0x90c8a731
},
{
XFER_MW_DMA_2
,
0xa0c8a731
},
{
XFER_MW_DMA_1
,
0xa0c8a732
},
/* 0xa0c8a733 */
{
XFER_MW_DMA_0
,
0xa0c8a797
},
{
XFER_PIO_4
,
0xc0c8a731
},
{
XFER_PIO_3
,
0xc0c8a742
},
{
XFER_PIO_2
,
0xc0d0a753
},
{
XFER_PIO_1
,
0xc0d0a7a3
},
/* 0xc0d0a793 */
{
XFER_PIO_0
,
0xc0d0a7aa
},
/* 0xc0d0a7a7 */
{
0
,
0x0120a7a7
}
};
static
struct
chipset_bus_clock_list_entry
twenty_five_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x90c98521
},
{
XFER_UDMA_3
,
0x90cf8521
},
{
XFER_UDMA_2
,
0x90cf8521
},
{
XFER_UDMA_1
,
0x90cb8521
},
{
XFER_UDMA_0
,
0x90cb8521
},
{
XFER_MW_DMA_2
,
0xa0ca8521
},
{
XFER_MW_DMA_1
,
0xa0ca8532
},
{
XFER_MW_DMA_0
,
0xa0ca8575
},
{
XFER_PIO_4
,
0xc0ca8521
},
{
XFER_PIO_3
,
0xc0ca8532
},
{
XFER_PIO_2
,
0xc0ca8542
},
{
XFER_PIO_1
,
0xc0d08572
},
{
XFER_PIO_0
,
0xc0d08585
},
{
0
,
0x01208585
}
};
/* from highpoint documentation. these are old values */
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt370
[]
=
{
/* { XFER_UDMA_5, 0x1A85F442, 0x16454e31 }, */
{
XFER_UDMA_5
,
0x16454e31
},
{
XFER_UDMA_4
,
0x16454e31
},
{
XFER_UDMA_3
,
0x166d4e31
},
{
XFER_UDMA_2
,
0x16494e31
},
{
XFER_UDMA_1
,
0x164d4e31
},
{
XFER_UDMA_0
,
0x16514e31
},
{
XFER_MW_DMA_2
,
0x26514e21
},
{
XFER_MW_DMA_1
,
0x26514e33
},
{
XFER_MW_DMA_0
,
0x26514e97
},
{
XFER_PIO_4
,
0x06514e21
},
{
XFER_PIO_3
,
0x06514e22
},
{
XFER_PIO_2
,
0x06514e33
},
{
XFER_PIO_1
,
0x06914e43
},
{
XFER_PIO_0
,
0x06914e57
},
{
0
,
0x06514e57
}
};
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt370
[]
=
{
{
XFER_UDMA_5
,
0x14846231
},
{
XFER_UDMA_4
,
0x14886231
},
{
XFER_UDMA_3
,
0x148c6231
},
{
XFER_UDMA_2
,
0x148c6231
},
{
XFER_UDMA_1
,
0x14906231
},
{
XFER_UDMA_0
,
0x14986231
},
{
XFER_MW_DMA_2
,
0x26514e21
},
{
XFER_MW_DMA_1
,
0x26514e33
},
{
XFER_MW_DMA_0
,
0x26514e97
},
{
XFER_PIO_4
,
0x06514e21
},
{
XFER_PIO_3
,
0x06514e22
},
{
XFER_PIO_2
,
0x06514e33
},
{
XFER_PIO_1
,
0x06914e43
},
{
XFER_PIO_0
,
0x06914e57
},
{
0
,
0x06514e57
}
};
/* these are the current (4 sep 2001) timings from highpoint */
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x12446231
},
{
XFER_UDMA_4
,
0x12446231
},
{
XFER_UDMA_3
,
0x126c6231
},
{
XFER_UDMA_2
,
0x12486231
},
{
XFER_UDMA_1
,
0x124c6233
},
{
XFER_UDMA_0
,
0x12506297
},
{
XFER_MW_DMA_2
,
0x22406c31
},
{
XFER_MW_DMA_1
,
0x22406c33
},
{
XFER_MW_DMA_0
,
0x22406c97
},
{
XFER_PIO_4
,
0x06414e31
},
{
XFER_PIO_3
,
0x06414e42
},
{
XFER_PIO_2
,
0x06414e53
},
{
XFER_PIO_1
,
0x06814e93
},
{
XFER_PIO_0
,
0x06814ea7
},
{
0
,
0x06814ea7
}
};
/* 2x 33MHz timings */
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x1488e673
},
{
XFER_UDMA_4
,
0x1488e673
},
{
XFER_UDMA_3
,
0x1498e673
},
{
XFER_UDMA_2
,
0x1490e673
},
{
XFER_UDMA_1
,
0x1498e677
},
{
XFER_UDMA_0
,
0x14a0e73f
},
{
XFER_MW_DMA_2
,
0x2480fa73
},
{
XFER_MW_DMA_1
,
0x2480fa77
},
{
XFER_MW_DMA_0
,
0x2480fb3f
},
{
XFER_PIO_4
,
0x0c82be73
},
{
XFER_PIO_3
,
0x0c82be95
},
{
XFER_PIO_2
,
0x0c82beb7
},
{
XFER_PIO_1
,
0x0d02bf37
},
{
XFER_PIO_0
,
0x0d02bf5f
},
{
0
,
0x0d02bf5f
}
};
static
struct
chipset_bus_clock_list_entry
fifty_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x0ac1f48a
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt372
[]
=
{
{
XFER_UDMA_6
,
0x1c81dc62
},
{
XFER_UDMA_5
,
0x1c6ddc62
},
{
XFER_UDMA_4
,
0x1c8ddc62
},
{
XFER_UDMA_3
,
0x1c8edc62
},
/* checkme */
{
XFER_UDMA_2
,
0x1c91dc62
},
{
XFER_UDMA_1
,
0x1c9adc62
},
/* checkme */
{
XFER_UDMA_0
,
0x1c82dc62
},
/* checkme */
{
XFER_MW_DMA_2
,
0x2c829262
},
{
XFER_MW_DMA_1
,
0x2c829266
},
/* checkme */
{
XFER_MW_DMA_0
,
0x2c82922e
},
/* checkme */
{
XFER_PIO_4
,
0x0c829c62
},
{
XFER_PIO_3
,
0x0c829c84
},
{
XFER_PIO_2
,
0x0c829ca6
},
{
XFER_PIO_1
,
0x0d029d26
},
{
XFER_PIO_0
,
0x0d029d5e
},
{
0
,
0x0d029d5e
}
};
static
struct
chipset_bus_clock_list_entry
fifty_base_hpt372
[]
=
{
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x0a81f443
}
};
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt372
[]
=
{
{
XFER_UDMA_6
,
0x1c869c62
},
{
XFER_UDMA_5
,
0x1cae9c62
},
{
XFER_UDMA_4
,
0x1c8a9c62
},
{
XFER_UDMA_3
,
0x1c8e9c62
},
{
XFER_UDMA_2
,
0x1c929c62
},
{
XFER_UDMA_1
,
0x1c9a9c62
},
{
XFER_UDMA_0
,
0x1c829c62
},
{
XFER_MW_DMA_2
,
0x2c829c62
},
{
XFER_MW_DMA_1
,
0x2c829c66
},
{
XFER_MW_DMA_0
,
0x2c829d2e
},
{
XFER_PIO_4
,
0x0c829c62
},
{
XFER_PIO_3
,
0x0c829c84
},
{
XFER_PIO_2
,
0x0c829ca6
},
{
XFER_PIO_1
,
0x0d029d26
},
{
XFER_PIO_0
,
0x0d029d5e
},
{
0
,
0x0d029d26
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt374
[]
=
{
{
XFER_UDMA_6
,
0x12808242
},
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x06814e93
}
};
/* FIXME: 50MHz timings for HPT374 */
#if 0
static struct chipset_bus_clock_list_entry sixty_six_base_hpt374[] = {
{ XFER_UDMA_6, 0x12406231 }, /* checkme */
{ XFER_UDMA_5, 0x12446231 }, /* 0x14846231 */
{ XFER_UDMA_4, 0x16814ea7 }, /* 0x14886231 */
{ XFER_UDMA_3, 0x16814ea7 }, /* 0x148c6231 */
{ XFER_UDMA_2, 0x16814ea7 }, /* 0x148c6231 */
{ XFER_UDMA_1, 0x16814ea7 }, /* 0x14906231 */
{ XFER_UDMA_0, 0x16814ea7 }, /* 0x14986231 */
{ XFER_MW_DMA_2, 0x16814ea7 }, /* 0x26514e21 */
{ XFER_MW_DMA_1, 0x16814ea7 }, /* 0x26514e97 */
{ XFER_MW_DMA_0, 0x16814ea7 }, /* 0x26514e97 */
{ XFER_PIO_4, 0x06814ea7 }, /* 0x06514e21 */
{ XFER_PIO_3, 0x06814ea7 }, /* 0x06514e22 */
{ XFER_PIO_2, 0x06814ea7 }, /* 0x06514e33 */
{ XFER_PIO_1, 0x06814ea7 }, /* 0x06914e43 */
{ XFER_PIO_0, 0x06814ea7 }, /* 0x06914e57 */
{ 0, 0x06814ea7 }
};
#endif
#define HPT366_DEBUG_DRIVE_INFO 0
#define HPT374_ALLOW_ATA133_6 0
#define HPT371_ALLOW_ATA133_6 0
#define HPT302_ALLOW_ATA133_6 0
#define HPT372_ALLOW_ATA133_6 1
#define HPT370_ALLOW_ATA100_5 1
#define HPT366_ALLOW_ATA66_4 1
#define HPT366_ALLOW_ATA66_3 1
#define HPT366_MAX_DEVS 8
#define F_LOW_PCI_33 0x23
#define F_LOW_PCI_40 0x29
#define F_LOW_PCI_50 0x2d
#define F_LOW_PCI_66 0x42
/* FIXME: compare with driver's code before removing */
#if 0
if (hpt_minimum_revision(dev, 3)) {
u8 cbl;
...
...
@@ -1273,6 +1648,64 @@ static int __devinit init_setup_hpt366(struct pci_dev *dev, ide_pci_device_t *d)
return
ide_setup_pci_device
(
dev
,
d
);
}
static
ide_pci_device_t
hpt366_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"HPT366"
,
.
init_setup
=
init_setup_hpt366
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
.
extra
=
240
},{
/* 1 */
.
name
=
"HPT372A"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"HPT302"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 3 */
.
name
=
"HPT371"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"HPT374"
,
.
init_setup
=
init_setup_hpt374
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
/* 4 */
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 5 */
.
name
=
"HPT372N"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
/* 4 */
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
}
};
/**
* hpt366_init_one - called when an HPT366 is found
...
...
drivers/ide/pci/hpt366.h
deleted
100644 → 0
View file @
1581782e
#ifndef HPT366_H
#define HPT366_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
/* various tuning parameters */
#define HPT_RESET_STATE_ENGINE
#undef HPT_DELAY_INTERRUPT
#undef HPT_SERIALIZE_IO
static
const
char
*
quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
static
const
char
*
bad_ata100_5
[]
=
{
"IBM-DTLA-307075"
,
"IBM-DTLA-307060"
,
"IBM-DTLA-307045"
,
"IBM-DTLA-307030"
,
"IBM-DTLA-307020"
,
"IBM-DTLA-307015"
,
"IBM-DTLA-305040"
,
"IBM-DTLA-305030"
,
"IBM-DTLA-305020"
,
"IC35L010AVER07-0"
,
"IC35L020AVER07-0"
,
"IC35L030AVER07-0"
,
"IC35L040AVER07-0"
,
"IC35L060AVER07-0"
,
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata66_4
[]
=
{
"IBM-DTLA-307075"
,
"IBM-DTLA-307060"
,
"IBM-DTLA-307045"
,
"IBM-DTLA-307030"
,
"IBM-DTLA-307020"
,
"IBM-DTLA-307015"
,
"IBM-DTLA-305040"
,
"IBM-DTLA-305030"
,
"IBM-DTLA-305020"
,
"IC35L010AVER07-0"
,
"IC35L020AVER07-0"
,
"IC35L030AVER07-0"
,
"IC35L040AVER07-0"
,
"IC35L060AVER07-0"
,
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata66_3
[]
=
{
"WDC AC310200R"
,
NULL
};
static
const
char
*
bad_ata33
[]
=
{
"Maxtor 92720U8"
,
"Maxtor 92040U6"
,
"Maxtor 91360U4"
,
"Maxtor 91020U3"
,
"Maxtor 90845U3"
,
"Maxtor 90650U2"
,
"Maxtor 91360D8"
,
"Maxtor 91190D7"
,
"Maxtor 91020D6"
,
"Maxtor 90845D5"
,
"Maxtor 90680D4"
,
"Maxtor 90510D3"
,
"Maxtor 90340D2"
,
"Maxtor 91152D8"
,
"Maxtor 91008D7"
,
"Maxtor 90845D6"
,
"Maxtor 90840D6"
,
"Maxtor 90720D5"
,
"Maxtor 90648D5"
,
"Maxtor 90576D4"
,
"Maxtor 90510D4"
,
"Maxtor 90432D3"
,
"Maxtor 90288D2"
,
"Maxtor 90256D2"
,
"Maxtor 91000D8"
,
"Maxtor 90910D8"
,
"Maxtor 90875D7"
,
"Maxtor 90840D7"
,
"Maxtor 90750D6"
,
"Maxtor 90625D5"
,
"Maxtor 90500D4"
,
"Maxtor 91728D8"
,
"Maxtor 91512D7"
,
"Maxtor 91303D6"
,
"Maxtor 91080D5"
,
"Maxtor 90845D4"
,
"Maxtor 90680D4"
,
"Maxtor 90648D3"
,
"Maxtor 90432D2"
,
NULL
};
struct
chipset_bus_clock_list_entry
{
byte
xfer_speed
;
unsigned
int
chipset_settings
;
};
/* key for bus clock timings
* bit
* 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
* 4:8 data_low_time. active time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
* 9:12 cmd_high_time. inactive time of DIOW_/DIOR_ during task file
* register access.
* 13:17 cmd_low_time. active time of DIOW_/DIOR_ during task file
* register access.
* 18:21 udma_cycle_time. clock freq and clock cycles for UDMA xfer.
* during task file register access.
* 22:24 pre_high_time. time to initialize 1st cycle for PIO and MW DMA
* xfer.
* 25:27 cmd_pre_high_time. time to initialize 1st PIO cycle for task
* register access.
* 28 UDMA enable
* 29 DMA enable
* 30 PIO_MST enable. if set, the chip is in bus master mode during
* PIO.
* 31 FIFO enable.
*/
static
struct
chipset_bus_clock_list_entry
forty_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x900fd943
},
{
XFER_UDMA_3
,
0x900ad943
},
{
XFER_UDMA_2
,
0x900bd943
},
{
XFER_UDMA_1
,
0x9008d943
},
{
XFER_UDMA_0
,
0x9008d943
},
{
XFER_MW_DMA_2
,
0xa008d943
},
{
XFER_MW_DMA_1
,
0xa010d955
},
{
XFER_MW_DMA_0
,
0xa010d9fc
},
{
XFER_PIO_4
,
0xc008d963
},
{
XFER_PIO_3
,
0xc010d974
},
{
XFER_PIO_2
,
0xc010d997
},
{
XFER_PIO_1
,
0xc010d9c7
},
{
XFER_PIO_0
,
0xc018d9d9
},
{
0
,
0x0120d9d9
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x90c9a731
},
{
XFER_UDMA_3
,
0x90cfa731
},
{
XFER_UDMA_2
,
0x90caa731
},
{
XFER_UDMA_1
,
0x90cba731
},
{
XFER_UDMA_0
,
0x90c8a731
},
{
XFER_MW_DMA_2
,
0xa0c8a731
},
{
XFER_MW_DMA_1
,
0xa0c8a732
},
/* 0xa0c8a733 */
{
XFER_MW_DMA_0
,
0xa0c8a797
},
{
XFER_PIO_4
,
0xc0c8a731
},
{
XFER_PIO_3
,
0xc0c8a742
},
{
XFER_PIO_2
,
0xc0d0a753
},
{
XFER_PIO_1
,
0xc0d0a7a3
},
/* 0xc0d0a793 */
{
XFER_PIO_0
,
0xc0d0a7aa
},
/* 0xc0d0a7a7 */
{
0
,
0x0120a7a7
}
};
static
struct
chipset_bus_clock_list_entry
twenty_five_base_hpt366
[]
=
{
{
XFER_UDMA_4
,
0x90c98521
},
{
XFER_UDMA_3
,
0x90cf8521
},
{
XFER_UDMA_2
,
0x90cf8521
},
{
XFER_UDMA_1
,
0x90cb8521
},
{
XFER_UDMA_0
,
0x90cb8521
},
{
XFER_MW_DMA_2
,
0xa0ca8521
},
{
XFER_MW_DMA_1
,
0xa0ca8532
},
{
XFER_MW_DMA_0
,
0xa0ca8575
},
{
XFER_PIO_4
,
0xc0ca8521
},
{
XFER_PIO_3
,
0xc0ca8532
},
{
XFER_PIO_2
,
0xc0ca8542
},
{
XFER_PIO_1
,
0xc0d08572
},
{
XFER_PIO_0
,
0xc0d08585
},
{
0
,
0x01208585
}
};
/* from highpoint documentation. these are old values */
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt370
[]
=
{
/* { XFER_UDMA_5, 0x1A85F442, 0x16454e31 }, */
{
XFER_UDMA_5
,
0x16454e31
},
{
XFER_UDMA_4
,
0x16454e31
},
{
XFER_UDMA_3
,
0x166d4e31
},
{
XFER_UDMA_2
,
0x16494e31
},
{
XFER_UDMA_1
,
0x164d4e31
},
{
XFER_UDMA_0
,
0x16514e31
},
{
XFER_MW_DMA_2
,
0x26514e21
},
{
XFER_MW_DMA_1
,
0x26514e33
},
{
XFER_MW_DMA_0
,
0x26514e97
},
{
XFER_PIO_4
,
0x06514e21
},
{
XFER_PIO_3
,
0x06514e22
},
{
XFER_PIO_2
,
0x06514e33
},
{
XFER_PIO_1
,
0x06914e43
},
{
XFER_PIO_0
,
0x06914e57
},
{
0
,
0x06514e57
}
};
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt370
[]
=
{
{
XFER_UDMA_5
,
0x14846231
},
{
XFER_UDMA_4
,
0x14886231
},
{
XFER_UDMA_3
,
0x148c6231
},
{
XFER_UDMA_2
,
0x148c6231
},
{
XFER_UDMA_1
,
0x14906231
},
{
XFER_UDMA_0
,
0x14986231
},
{
XFER_MW_DMA_2
,
0x26514e21
},
{
XFER_MW_DMA_1
,
0x26514e33
},
{
XFER_MW_DMA_0
,
0x26514e97
},
{
XFER_PIO_4
,
0x06514e21
},
{
XFER_PIO_3
,
0x06514e22
},
{
XFER_PIO_2
,
0x06514e33
},
{
XFER_PIO_1
,
0x06914e43
},
{
XFER_PIO_0
,
0x06914e57
},
{
0
,
0x06514e57
}
};
/* these are the current (4 sep 2001) timings from highpoint */
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x12446231
},
{
XFER_UDMA_4
,
0x12446231
},
{
XFER_UDMA_3
,
0x126c6231
},
{
XFER_UDMA_2
,
0x12486231
},
{
XFER_UDMA_1
,
0x124c6233
},
{
XFER_UDMA_0
,
0x12506297
},
{
XFER_MW_DMA_2
,
0x22406c31
},
{
XFER_MW_DMA_1
,
0x22406c33
},
{
XFER_MW_DMA_0
,
0x22406c97
},
{
XFER_PIO_4
,
0x06414e31
},
{
XFER_PIO_3
,
0x06414e42
},
{
XFER_PIO_2
,
0x06414e53
},
{
XFER_PIO_1
,
0x06814e93
},
{
XFER_PIO_0
,
0x06814ea7
},
{
0
,
0x06814ea7
}
};
/* 2x 33MHz timings */
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x1488e673
},
{
XFER_UDMA_4
,
0x1488e673
},
{
XFER_UDMA_3
,
0x1498e673
},
{
XFER_UDMA_2
,
0x1490e673
},
{
XFER_UDMA_1
,
0x1498e677
},
{
XFER_UDMA_0
,
0x14a0e73f
},
{
XFER_MW_DMA_2
,
0x2480fa73
},
{
XFER_MW_DMA_1
,
0x2480fa77
},
{
XFER_MW_DMA_0
,
0x2480fb3f
},
{
XFER_PIO_4
,
0x0c82be73
},
{
XFER_PIO_3
,
0x0c82be95
},
{
XFER_PIO_2
,
0x0c82beb7
},
{
XFER_PIO_1
,
0x0d02bf37
},
{
XFER_PIO_0
,
0x0d02bf5f
},
{
0
,
0x0d02bf5f
}
};
static
struct
chipset_bus_clock_list_entry
fifty_base_hpt370a
[]
=
{
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x0ac1f48a
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt372
[]
=
{
{
XFER_UDMA_6
,
0x1c81dc62
},
{
XFER_UDMA_5
,
0x1c6ddc62
},
{
XFER_UDMA_4
,
0x1c8ddc62
},
{
XFER_UDMA_3
,
0x1c8edc62
},
/* checkme */
{
XFER_UDMA_2
,
0x1c91dc62
},
{
XFER_UDMA_1
,
0x1c9adc62
},
/* checkme */
{
XFER_UDMA_0
,
0x1c82dc62
},
/* checkme */
{
XFER_MW_DMA_2
,
0x2c829262
},
{
XFER_MW_DMA_1
,
0x2c829266
},
/* checkme */
{
XFER_MW_DMA_0
,
0x2c82922e
},
/* checkme */
{
XFER_PIO_4
,
0x0c829c62
},
{
XFER_PIO_3
,
0x0c829c84
},
{
XFER_PIO_2
,
0x0c829ca6
},
{
XFER_PIO_1
,
0x0d029d26
},
{
XFER_PIO_0
,
0x0d029d5e
},
{
0
,
0x0d029d5e
}
};
static
struct
chipset_bus_clock_list_entry
fifty_base_hpt372
[]
=
{
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x0a81f443
}
};
static
struct
chipset_bus_clock_list_entry
sixty_six_base_hpt372
[]
=
{
{
XFER_UDMA_6
,
0x1c869c62
},
{
XFER_UDMA_5
,
0x1cae9c62
},
{
XFER_UDMA_4
,
0x1c8a9c62
},
{
XFER_UDMA_3
,
0x1c8e9c62
},
{
XFER_UDMA_2
,
0x1c929c62
},
{
XFER_UDMA_1
,
0x1c9a9c62
},
{
XFER_UDMA_0
,
0x1c829c62
},
{
XFER_MW_DMA_2
,
0x2c829c62
},
{
XFER_MW_DMA_1
,
0x2c829c66
},
{
XFER_MW_DMA_0
,
0x2c829d2e
},
{
XFER_PIO_4
,
0x0c829c62
},
{
XFER_PIO_3
,
0x0c829c84
},
{
XFER_PIO_2
,
0x0c829ca6
},
{
XFER_PIO_1
,
0x0d029d26
},
{
XFER_PIO_0
,
0x0d029d5e
},
{
0
,
0x0d029d26
}
};
static
struct
chipset_bus_clock_list_entry
thirty_three_base_hpt374
[]
=
{
{
XFER_UDMA_6
,
0x12808242
},
{
XFER_UDMA_5
,
0x12848242
},
{
XFER_UDMA_4
,
0x12ac8242
},
{
XFER_UDMA_3
,
0x128c8242
},
{
XFER_UDMA_2
,
0x120c8242
},
{
XFER_UDMA_1
,
0x12148254
},
{
XFER_UDMA_0
,
0x121882ea
},
{
XFER_MW_DMA_2
,
0x22808242
},
{
XFER_MW_DMA_1
,
0x22808254
},
{
XFER_MW_DMA_0
,
0x228082ea
},
{
XFER_PIO_4
,
0x0a81f442
},
{
XFER_PIO_3
,
0x0a81f443
},
{
XFER_PIO_2
,
0x0a81f454
},
{
XFER_PIO_1
,
0x0ac1f465
},
{
XFER_PIO_0
,
0x0ac1f48a
},
{
0
,
0x06814e93
}
};
#if 0
static struct chipset_bus_clock_list_entry fifty_base_hpt374[] = {
{ XFER_UDMA_6, },
{ XFER_UDMA_5, },
{ XFER_UDMA_4, },
{ XFER_UDMA_3, },
{ XFER_UDMA_2, },
{ XFER_UDMA_1, },
{ XFER_UDMA_0, },
{ XFER_MW_DMA_2, },
{ XFER_MW_DMA_1, },
{ XFER_MW_DMA_0, },
{ XFER_PIO_4, },
{ XFER_PIO_3, },
{ XFER_PIO_2, },
{ XFER_PIO_1, },
{ XFER_PIO_0, },
{ 0, }
};
#endif
#if 0
static struct chipset_bus_clock_list_entry sixty_six_base_hpt374[] = {
{ XFER_UDMA_6, 0x12406231 }, /* checkme */
{ XFER_UDMA_5, 0x12446231 },
0x14846231
{ XFER_UDMA_4, 0x16814ea7 },
0x14886231
{ XFER_UDMA_3, 0x16814ea7 },
0x148c6231
{ XFER_UDMA_2, 0x16814ea7 },
0x148c6231
{ XFER_UDMA_1, 0x16814ea7 },
0x14906231
{ XFER_UDMA_0, 0x16814ea7 },
0x14986231
{ XFER_MW_DMA_2, 0x16814ea7 },
0x26514e21
{ XFER_MW_DMA_1, 0x16814ea7 },
0x26514e97
{ XFER_MW_DMA_0, 0x16814ea7 },
0x26514e97
{ XFER_PIO_4, 0x06814ea7 },
0x06514e21
{ XFER_PIO_3, 0x06814ea7 },
0x06514e22
{ XFER_PIO_2, 0x06814ea7 },
0x06514e33
{ XFER_PIO_1, 0x06814ea7 },
0x06914e43
{ XFER_PIO_0, 0x06814ea7 },
0x06914e57
{ 0, 0x06814ea7 }
};
#endif
#define HPT366_DEBUG_DRIVE_INFO 0
#define HPT374_ALLOW_ATA133_6 0
#define HPT371_ALLOW_ATA133_6 0
#define HPT302_ALLOW_ATA133_6 0
#define HPT372_ALLOW_ATA133_6 1
#define HPT370_ALLOW_ATA100_5 1
#define HPT366_ALLOW_ATA66_4 1
#define HPT366_ALLOW_ATA66_3 1
#define HPT366_MAX_DEVS 8
#define F_LOW_PCI_33 0x23
#define F_LOW_PCI_40 0x29
#define F_LOW_PCI_50 0x2d
#define F_LOW_PCI_66 0x42
static
int
init_setup_hpt366
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_hpt37x
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_hpt374
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
init_chipset_hpt366
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_hpt366
(
ide_hwif_t
*
);
static
void
init_dma_hpt366
(
ide_hwif_t
*
,
unsigned
long
);
static
ide_pci_device_t
hpt366_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"HPT366"
,
.
init_setup
=
init_setup_hpt366
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
.
extra
=
240
},{
/* 1 */
.
name
=
"HPT372A"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"HPT302"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 3 */
.
name
=
"HPT371"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"HPT374"
,
.
init_setup
=
init_setup_hpt374
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
/* 4 */
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 5 */
.
name
=
"HPT372N"
,
.
init_setup
=
init_setup_hpt37x
,
.
init_chipset
=
init_chipset_hpt366
,
.
init_hwif
=
init_hwif_hpt366
,
.
init_dma
=
init_dma_hpt366
,
.
channels
=
2
,
/* 4 */
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
}
};
#endif
/* HPT366_H */
drivers/ide/pci/it8172.c
View file @
80b8bedf
...
...
@@ -42,8 +42,6 @@
#include <asm/io.h>
#include <asm/it8172/it8172_int.h>
#include "it8172.h"
/*
* Prototypes
*/
...
...
@@ -266,6 +264,18 @@ static void __init init_hwif_it8172 (ide_hwif_t *hwif)
hwif
->
drives
[
1
].
autodma
=
hwif
->
autodma
;
}
static
ide_pci_device_t
it8172_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"IT8172G"
,
.
init_chipset
=
init_chipset_it8172
,
.
init_hwif
=
init_hwif_it8172
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x00
,
0x00
,
0x00
},
{
0x40
,
0x00
,
0x01
}},
.
bootable
=
ON_BOARD
,
}
};
static
int
__devinit
it8172_init_one
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
if
((
!
(
PCI_FUNC
(
dev
->
devfn
)
&
1
)
||
...
...
drivers/ide/pci/it8172.h
deleted
100644 → 0
View file @
1581782e
#ifndef ITE8172G_H
#define ITE8172G_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
static
u8
it8172_ratemask
(
ide_drive_t
*
drive
);
static
void
it8172_tune_drive
(
ide_drive_t
*
drive
,
u8
pio
);
static
u8
it8172_dma_2_pio
(
u8
xfer_rate
);
static
int
it8172_tune_chipset
(
ide_drive_t
*
drive
,
u8
xferspeed
);
#ifdef CONFIG_BLK_DEV_IDEDMA
static
int
it8172_config_chipset_for_dma
(
ide_drive_t
*
drive
);
#endif
static
unsigned
int
init_chipset_it8172
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_it8172
(
ide_hwif_t
*
);
static
ide_pci_device_t
it8172_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"IT8172G"
,
.
init_chipset
=
init_chipset_it8172
,
.
init_hwif
=
init_hwif_it8172
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x00
,
0x00
,
0x00
},
{
0x40
,
0x00
,
0x01
}},
.
bootable
=
ON_BOARD
,
}
};
#endif
/* ITE8172G_H */
drivers/ide/pci/opti621.c
View file @
80b8bedf
...
...
@@ -104,8 +104,6 @@
#include <asm/io.h>
#include "opti621.h"
#define OPTI621_MAX_PIO 3
/* In fact, I do not have any PIO 4 drive
* (address: 25 ns, data: 70 ns, recovery: 35 ns),
...
...
@@ -348,6 +346,24 @@ static void __init init_hwif_opti621 (ide_hwif_t *hwif)
hwif
->
drives
[
1
].
autodma
=
hwif
->
autodma
;
}
static
ide_pci_device_t
opti621_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"OPTI621"
,
.
init_hwif
=
init_hwif_opti621
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x45
,
0x80
,
0x00
},
{
0x40
,
0x08
,
0x00
}},
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"OPTI621X"
,
.
init_hwif
=
init_hwif_opti621
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x45
,
0x80
,
0x00
},
{
0x40
,
0x08
,
0x00
}},
.
bootable
=
ON_BOARD
,
}
};
static
int
__devinit
opti621_init_one
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
return
ide_setup_pci_device
(
dev
,
&
opti621_chipsets
[
id
->
driver_data
]);
...
...
drivers/ide/pci/opti621.h
deleted
100644 → 0
View file @
1581782e
#ifndef OPTI621_H
#define OPTI621_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
static
void
init_hwif_opti621
(
ide_hwif_t
*
);
static
ide_pci_device_t
opti621_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"OPTI621"
,
.
init_hwif
=
init_hwif_opti621
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x45
,
0x80
,
0x00
},
{
0x40
,
0x08
,
0x00
}},
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"OPTI621X"
,
.
init_hwif
=
init_hwif_opti621
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
enablebits
=
{{
0x45
,
0x80
,
0x00
},
{
0x40
,
0x08
,
0x00
}},
.
bootable
=
ON_BOARD
,
}
};
#endif
/* OPTI621_H */
drivers/ide/pci/pdc202xx_new.c
View file @
80b8bedf
...
...
@@ -37,10 +37,46 @@
#include <asm/pci-bridge.h>
#endif
#include "pdc202xx_new.h"
#define PDC202_DEBUG_CABLE 0
const
static
char
*
pdc_quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP KA9.1"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP KX13.6"
,
"QUANTUM FIREBALLP KX20.5"
,
"QUANTUM FIREBALLP KX27.3"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
#define set_2regs(a, b) \
do { \
hwif->OUTB((a + adj), indexreg); \
hwif->OUTB(b, datareg); \
} while(0)
#define set_ultra(a, b, c) \
do { \
set_2regs(0x10,(a)); \
set_2regs(0x11,(b)); \
set_2regs(0x12,(c)); \
} while(0)
#define set_ata2(a, b) \
do { \
set_2regs(0x0e,(a)); \
set_2regs(0x0f,(b)); \
} while(0)
#define set_pio(a, b, c) \
do { \
set_2regs(0x0c,(a)); \
set_2regs(0x0d,(b)); \
set_2regs(0x13,(c)); \
} while(0)
static
u8
pdcnew_ratemask
(
ide_drive_t
*
drive
)
{
u8
mode
;
...
...
@@ -360,6 +396,72 @@ static int __devinit init_setup_pdc20276(struct pci_dev *dev,
return
ide_setup_pci_device
(
dev
,
d
);
}
static
ide_pci_device_t
pdcnew_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"PDC20268"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 1 */
.
name
=
"PDC20269"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"PDC20270"
,
.
init_setup
=
init_setup_pdc20270
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
},{
/* 3 */
.
name
=
"PDC20271"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"PDC20275"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 5 */
.
name
=
"PDC20276"
,
.
init_setup
=
init_setup_pdc20276
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
},{
/* 6 */
.
name
=
"PDC20277"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
}
};
/**
* pdc202new_init_one - called when a pdc202xx is found
* @dev: the pdc202new device
...
...
drivers/ide/pci/pdc202xx_new.h
deleted
100644 → 0
View file @
1581782e
#ifndef PDC202XX_H
#define PDC202XX_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
const
static
char
*
pdc_quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP KA9.1"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP KX13.6"
,
"QUANTUM FIREBALLP KX20.5"
,
"QUANTUM FIREBALLP KX27.3"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
#define set_2regs(a, b) \
do { \
hwif->OUTB((a + adj), indexreg); \
hwif->OUTB(b, datareg); \
} while(0)
#define set_ultra(a, b, c) \
do { \
set_2regs(0x10,(a)); \
set_2regs(0x11,(b)); \
set_2regs(0x12,(c)); \
} while(0)
#define set_ata2(a, b) \
do { \
set_2regs(0x0e,(a)); \
set_2regs(0x0f,(b)); \
} while(0)
#define set_pio(a, b, c) \
do { \
set_2regs(0x0c,(a)); \
set_2regs(0x0d,(b)); \
set_2regs(0x13,(c)); \
} while(0)
static
int
init_setup_pdcnew
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_pdc20270
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_pdc20276
(
struct
pci_dev
*
dev
,
ide_pci_device_t
*
d
);
static
unsigned
int
init_chipset_pdcnew
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_pdc202new
(
ide_hwif_t
*
);
static
ide_pci_device_t
pdcnew_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"PDC20268"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 1 */
.
name
=
"PDC20269"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 2 */
.
name
=
"PDC20270"
,
.
init_setup
=
init_setup_pdc20270
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
},{
/* 3 */
.
name
=
"PDC20271"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 4 */
.
name
=
"PDC20275"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
},{
/* 5 */
.
name
=
"PDC20276"
,
.
init_setup
=
init_setup_pdc20276
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
},{
/* 6 */
.
name
=
"PDC20277"
,
.
init_setup
=
init_setup_pdcnew
,
.
init_chipset
=
init_chipset_pdcnew
,
.
init_hwif
=
init_hwif_pdc202new
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
OFF_BOARD
,
}
};
#endif
/* PDC202XX_H */
drivers/ide/pci/pdc202xx_old.c
View file @
80b8bedf
...
...
@@ -46,9 +46,60 @@
#include <asm/io.h>
#include <asm/irq.h>
#include "pdc202xx_old.h"
#define PDC202_DEBUG_CABLE 0
#define PDC202XX_DEBUG_DRIVE_INFO 0
static
const
char
*
pdc_quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP KA9.1"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP KX13.6"
,
"QUANTUM FIREBALLP KX20.5"
,
"QUANTUM FIREBALLP KX27.3"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
/* A Register */
#define SYNC_ERRDY_EN 0xC0
#define SYNC_IN 0x80
/* control bit, different for master vs. slave drives */
#define ERRDY_EN 0x40
/* control bit, different for master vs. slave drives */
#define IORDY_EN 0x20
/* PIO: IOREADY */
#define PREFETCH_EN 0x10
/* PIO: PREFETCH */
#define PA3 0x08
/* PIO"A" timing */
#define PA2 0x04
/* PIO"A" timing */
#define PA1 0x02
/* PIO"A" timing */
#define PA0 0x01
/* PIO"A" timing */
/* B Register */
#define MB2 0x80
/* DMA"B" timing */
#define MB1 0x40
/* DMA"B" timing */
#define MB0 0x20
/* DMA"B" timing */
#define PB4 0x10
/* PIO_FORCE 1:0 */
#define PB3 0x08
/* PIO"B" timing */
/* PIO flow Control mode */
#define PB2 0x04
/* PIO"B" timing */
/* PIO 4 */
#define PB1 0x02
/* PIO"B" timing */
/* PIO 3 half */
#define PB0 0x01
/* PIO"B" timing */
/* PIO 3 other half */
/* C Register */
#define IORDYp_NO_SPEED 0x4F
#define SPEED_DIS 0x0F
#define PDC202_DEBUG_CABLE 0
#define DMARQp 0x80
#define IORDYp 0x40
#define DMAR_EN 0x20
#define DMAW_EN 0x10
#define MC3 0x08
/* DMA"C" timing */
#define MC2 0x04
/* DMA"C" timing */
#define MC1 0x02
/* DMA"C" timing */
#define MC0 0x01
/* DMA"C" timing */
#if 0
unsigned long bibma = pci_resource_start(dev, 4);
...
...
@@ -69,7 +120,8 @@
((sc1c & 0x02) == 0x02) ? "8" :
((sc1c & 0x01) == 0x01) ? "6" :
((sc1c & 0x00) == 0x00) ? "4" : "??");
SPLIT_BYTE(sc1e, hi, lo);
hi = sc1e >> 4;
lo = sc1e & 0xf;
p += sprintf(p, "Status Polling Period : %d\n", hi);
p += sprintf(p, "Interrupt Check Status Polling Delay : %d\n", lo);
#endif
...
...
@@ -725,6 +777,77 @@ static int __devinit init_setup_pdc202xx(struct pci_dev *dev,
return
ide_setup_pci_device
(
dev
,
d
);
}
static
ide_pci_device_t
pdc202xx_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"PDC20246"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
16
,
},{
/* 1 */
.
name
=
"PDC20262"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
.
flags
=
IDEPCI_FLAG_FORCE_PDC
,
},{
/* 2 */
.
name
=
"PDC20263"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
},{
/* 3 */
.
name
=
"PDC20265"
,
.
init_setup
=
init_setup_pdc20265
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
.
flags
=
IDEPCI_FLAG_FORCE_PDC
,
},{
/* 4 */
.
name
=
"PDC20267"
,
.
init_setup
=
init_setup_pdc202xx
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
}
};
/**
* pdc202xx_init_one - called when a PDC202xx is found
* @dev: the pdc202xx device
...
...
drivers/ide/pci/pdc202xx_old.h
deleted
100644 → 0
View file @
1581782e
#ifndef PDC202XX_H
#define PDC202XX_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
#ifndef SPLIT_BYTE
#define SPLIT_BYTE(B,H,L) ((H)=(B>>4), (L)=(B-((B>>4)<<4)))
#endif
#define PDC202XX_DEBUG_DRIVE_INFO 0
static
const
char
*
pdc_quirk_drives
[]
=
{
"QUANTUM FIREBALLlct08 08"
,
"QUANTUM FIREBALLP KA6.4"
,
"QUANTUM FIREBALLP KA9.1"
,
"QUANTUM FIREBALLP LM20.4"
,
"QUANTUM FIREBALLP KX13.6"
,
"QUANTUM FIREBALLP KX20.5"
,
"QUANTUM FIREBALLP KX27.3"
,
"QUANTUM FIREBALLP LM20.5"
,
NULL
};
/* A Register */
#define SYNC_ERRDY_EN 0xC0
#define SYNC_IN 0x80
/* control bit, different for master vs. slave drives */
#define ERRDY_EN 0x40
/* control bit, different for master vs. slave drives */
#define IORDY_EN 0x20
/* PIO: IOREADY */
#define PREFETCH_EN 0x10
/* PIO: PREFETCH */
#define PA3 0x08
/* PIO"A" timing */
#define PA2 0x04
/* PIO"A" timing */
#define PA1 0x02
/* PIO"A" timing */
#define PA0 0x01
/* PIO"A" timing */
/* B Register */
#define MB2 0x80
/* DMA"B" timing */
#define MB1 0x40
/* DMA"B" timing */
#define MB0 0x20
/* DMA"B" timing */
#define PB4 0x10
/* PIO_FORCE 1:0 */
#define PB3 0x08
/* PIO"B" timing */
/* PIO flow Control mode */
#define PB2 0x04
/* PIO"B" timing */
/* PIO 4 */
#define PB1 0x02
/* PIO"B" timing */
/* PIO 3 half */
#define PB0 0x01
/* PIO"B" timing */
/* PIO 3 other half */
/* C Register */
#define IORDYp_NO_SPEED 0x4F
#define SPEED_DIS 0x0F
#define DMARQp 0x80
#define IORDYp 0x40
#define DMAR_EN 0x20
#define DMAW_EN 0x10
#define MC3 0x08
/* DMA"C" timing */
#define MC2 0x04
/* DMA"C" timing */
#define MC1 0x02
/* DMA"C" timing */
#define MC0 0x01
/* DMA"C" timing */
static
int
init_setup_pdc202ata4
(
struct
pci_dev
*
dev
,
ide_pci_device_t
*
d
);
static
int
init_setup_pdc20265
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_pdc202xx
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
init_chipset_pdc202xx
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_pdc202xx
(
ide_hwif_t
*
);
static
void
init_dma_pdc202xx
(
ide_hwif_t
*
,
unsigned
long
);
static
ide_pci_device_t
pdc202xx_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"PDC20246"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
16
,
},{
/* 1 */
.
name
=
"PDC20262"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
.
flags
=
IDEPCI_FLAG_FORCE_PDC
,
},{
/* 2 */
.
name
=
"PDC20263"
,
.
init_setup
=
init_setup_pdc202ata4
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
},{
/* 3 */
.
name
=
"PDC20265"
,
.
init_setup
=
init_setup_pdc20265
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
.
flags
=
IDEPCI_FLAG_FORCE_PDC
,
},{
/* 4 */
.
name
=
"PDC20267"
,
.
init_setup
=
init_setup_pdc202xx
,
.
init_chipset
=
init_chipset_pdc202xx
,
.
init_hwif
=
init_hwif_pdc202xx
,
.
init_dma
=
init_dma_pdc202xx
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
#ifndef CONFIG_PDC202XX_FORCE
.
enablebits
=
{{
0x50
,
0x02
,
0x02
},
{
0x50
,
0x04
,
0x04
}},
#endif
.
bootable
=
OFF_BOARD
,
.
extra
=
48
,
}
};
#endif
/* PDC202XX_H */
drivers/ide/pci/piix.c
View file @
80b8bedf
...
...
@@ -103,8 +103,6 @@
#include <asm/io.h>
#include "piix.h"
static
int
no_piix_dma
;
/**
...
...
@@ -530,6 +528,52 @@ static void __devinit init_hwif_piix(ide_hwif_t *hwif)
hwif
->
drives
[
0
].
autodma
=
hwif
->
autodma
;
}
#define DECLARE_PIIX_DEV(name_str) \
{ \
.name = name_str, \
.init_chipset = init_chipset_piix, \
.init_hwif = init_hwif_piix, \
.channels = 2, \
.autodma = AUTODMA, \
.enablebits = {{0x41,0x80,0x80}, {0x43,0x80,0x80}}, \
.bootable = ON_BOARD, \
}
static
ide_pci_device_t
piix_pci_info
[]
__devinitdata
=
{
/* 0 */
DECLARE_PIIX_DEV
(
"PIIXa"
),
/* 1 */
DECLARE_PIIX_DEV
(
"PIIXb"
),
{
/* 2 */
.
name
=
"MPIIX"
,
.
init_hwif
=
init_hwif_piix
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
enablebits
=
{{
0x6D
,
0x80
,
0x80
},
{
0x6F
,
0x80
,
0x80
}},
.
bootable
=
ON_BOARD
,
},
/* 3 */
DECLARE_PIIX_DEV
(
"PIIX3"
),
/* 4 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 5 */
DECLARE_PIIX_DEV
(
"ICH0"
),
/* 6 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 7 */
DECLARE_PIIX_DEV
(
"ICH"
),
/* 8 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 9 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 10 */
DECLARE_PIIX_DEV
(
"ICH2"
),
/* 11 */
DECLARE_PIIX_DEV
(
"ICH2M"
),
/* 12 */
DECLARE_PIIX_DEV
(
"ICH3M"
),
/* 13 */
DECLARE_PIIX_DEV
(
"ICH3"
),
/* 14 */
DECLARE_PIIX_DEV
(
"ICH4"
),
/* 15 */
DECLARE_PIIX_DEV
(
"ICH5"
),
/* 16 */
DECLARE_PIIX_DEV
(
"C-ICH"
),
/* 17 */
DECLARE_PIIX_DEV
(
"ICH4"
),
/* 18 */
DECLARE_PIIX_DEV
(
"ICH5-SATA"
),
/* 19 */
DECLARE_PIIX_DEV
(
"ICH5"
),
/* 20 */
DECLARE_PIIX_DEV
(
"ICH6"
),
/* 21 */
DECLARE_PIIX_DEV
(
"ICH7"
),
/* 22 */
DECLARE_PIIX_DEV
(
"ICH4"
),
};
/**
* piix_init_one - called when a PIIX is found
* @dev: the piix device
...
...
drivers/ide/pci/piix.h
deleted
100644 → 0
View file @
1581782e
#ifndef PIIX_H
#define PIIX_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
static
unsigned
int
__devinit
init_chipset_piix
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_piix
(
ide_hwif_t
*
);
#define DECLARE_PIIX_DEV(name_str) \
{ \
.name = name_str, \
.init_chipset = init_chipset_piix, \
.init_hwif = init_hwif_piix, \
.channels = 2, \
.autodma = AUTODMA, \
.enablebits = {{0x41,0x80,0x80}, {0x43,0x80,0x80}}, \
.bootable = ON_BOARD, \
}
/*
* Table of the various PIIX capability blocks
*
*/
static
ide_pci_device_t
piix_pci_info
[]
__devinitdata
=
{
/* 0 */
DECLARE_PIIX_DEV
(
"PIIXa"
),
/* 1 */
DECLARE_PIIX_DEV
(
"PIIXb"
),
{
/* 2 */
.
name
=
"MPIIX"
,
.
init_hwif
=
init_hwif_piix
,
.
channels
=
2
,
.
autodma
=
NODMA
,
.
enablebits
=
{{
0x6D
,
0x80
,
0x80
},
{
0x6F
,
0x80
,
0x80
}},
.
bootable
=
ON_BOARD
,
},
/* 3 */
DECLARE_PIIX_DEV
(
"PIIX3"
),
/* 4 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 5 */
DECLARE_PIIX_DEV
(
"ICH0"
),
/* 6 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 7 */
DECLARE_PIIX_DEV
(
"ICH"
),
/* 8 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 9 */
DECLARE_PIIX_DEV
(
"PIIX4"
),
/* 10 */
DECLARE_PIIX_DEV
(
"ICH2"
),
/* 11 */
DECLARE_PIIX_DEV
(
"ICH2M"
),
/* 12 */
DECLARE_PIIX_DEV
(
"ICH3M"
),
/* 13 */
DECLARE_PIIX_DEV
(
"ICH3"
),
/* 14 */
DECLARE_PIIX_DEV
(
"ICH4"
),
/* 15 */
DECLARE_PIIX_DEV
(
"ICH5"
),
/* 16 */
DECLARE_PIIX_DEV
(
"C-ICH"
),
/* 17 */
DECLARE_PIIX_DEV
(
"ICH4"
),
/* 18 */
DECLARE_PIIX_DEV
(
"ICH5-SATA"
),
/* 19 */
DECLARE_PIIX_DEV
(
"ICH5"
),
/* 20 */
DECLARE_PIIX_DEV
(
"ICH6"
),
/* 21 */
DECLARE_PIIX_DEV
(
"ICH7"
),
/* 22 */
DECLARE_PIIX_DEV
(
"ICH4"
),
};
#endif
/* PIIX_H */
drivers/ide/pci/serverworks.c
View file @
80b8bedf
...
...
@@ -39,7 +39,18 @@
#include <asm/io.h>
#include "serverworks.h"
#define SVWKS_CSB5_REVISION_NEW 0x92
/* min PCI_REVISION_ID for UDMA5 (A2.0) */
#define SVWKS_CSB6_REVISION 0xa0
/* min PCI_REVISION_ID for UDMA4 (A1.0) */
/* Seagate Barracuda ATA IV Family drives in UDMA mode 5
* can overrun their FIFOs when used with the CSB5 */
static
const
char
*
svwks_bad_ata100
[]
=
{
"ST320011A"
,
"ST340016A"
,
"ST360021A"
,
"ST380021A"
,
NULL
};
static
u8
svwks_revision
=
0
;
static
struct
pci_dev
*
isa_dev
;
...
...
@@ -582,6 +593,44 @@ static int __init init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d)
return
ide_setup_pci_device
(
dev
,
d
);
}
static
ide_pci_device_t
serverworks_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"SvrWks OSB4"
,
.
init_setup
=
init_setup_svwks
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"SvrWks CSB5"
,
.
init_setup
=
init_setup_svwks
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"SvrWks CSB6"
,
.
init_setup
=
init_setup_csb6
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 3 */
.
name
=
"SvrWks CSB6"
,
.
init_setup
=
init_setup_csb6
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
1
,
/* 2 */
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
/**
* svwks_init_one - called when a OSB/CSB is found
...
...
drivers/ide/pci/serverworks.h
deleted
100644 → 0
View file @
1581782e
#ifndef SERVERWORKS_H
#define SERVERWORKS_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
#undef SVWKS_DEBUG_DRIVE_INFO
#define SVWKS_CSB5_REVISION_NEW 0x92
/* min PCI_REVISION_ID for UDMA5 (A2.0) */
#define SVWKS_CSB6_REVISION 0xa0
/* min PCI_REVISION_ID for UDMA4 (A1.0) */
/* Seagate Barracuda ATA IV Family drives in UDMA mode 5
* can overrun their FIFOs when used with the CSB5 */
static
const
char
*
svwks_bad_ata100
[]
=
{
"ST320011A"
,
"ST340016A"
,
"ST360021A"
,
"ST380021A"
,
NULL
};
static
int
init_setup_svwks
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
int
init_setup_csb6
(
struct
pci_dev
*
,
ide_pci_device_t
*
);
static
unsigned
int
init_chipset_svwks
(
struct
pci_dev
*
,
const
char
*
);
static
void
init_hwif_svwks
(
ide_hwif_t
*
);
static
void
init_dma_svwks
(
ide_hwif_t
*
,
unsigned
long
);
static
ide_pci_device_t
serverworks_chipsets
[]
__devinitdata
=
{
{
/* 0 */
.
name
=
"SvrWks OSB4"
,
.
init_setup
=
init_setup_svwks
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 1 */
.
name
=
"SvrWks CSB5"
,
.
init_setup
=
init_setup_svwks
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 2 */
.
name
=
"SvrWks CSB6"
,
.
init_setup
=
init_setup_csb6
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
2
,
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
},{
/* 3 */
.
name
=
"SvrWks CSB6"
,
.
init_setup
=
init_setup_csb6
,
.
init_chipset
=
init_chipset_svwks
,
.
init_hwif
=
init_hwif_svwks
,
.
init_dma
=
init_dma_svwks
,
.
channels
=
1
,
/* 2 */
.
autodma
=
AUTODMA
,
.
bootable
=
ON_BOARD
,
}
};
#endif
/* SERVERWORKS_H */
include/linux/ide.h
View file @
80b8bedf
...
...
@@ -1275,20 +1275,6 @@ typedef struct ide_task_s {
void
*
special
;
/* valid_t generally */
}
ide_task_t
;
typedef
struct
pkt_task_s
{
/*
* struct hd_drive_task_hdr pktf;
* task_struct_t pktf;
* u8 pkcdb[12];
*/
task_ioreg_t
tfRegister
[
8
];
int
data_phase
;
int
command_type
;
ide_handler_t
*
handler
;
struct
request
*
rq
;
/* copy of request */
void
*
special
;
}
pkt_task_t
;
extern
u32
ide_read_24
(
ide_drive_t
*
);
extern
void
SELECT_DRIVE
(
ide_drive_t
*
);
...
...
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