ide: move ide_rate_filter() calls to the upper layer (take 2)
* Move ide_rate_filter() calls from host drivers to IDE core. * Make ide_rate_filter() static. * Make 'speed' argument of ->speedproc const. v2: * Fix it8213_tune_chipset() comment. There should be no functionality changes caused by this patch. Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
3160d5416f
commit
f212ff28f0
@ -248,15 +248,10 @@ static void icside_build_sglist(ide_drive_t *drive, struct request *rq)
|
|||||||
* MW1 80 50 50 150 C
|
* MW1 80 50 50 150 C
|
||||||
* MW2 70 25 25 120 C
|
* MW2 70 25 25 120 C
|
||||||
*/
|
*/
|
||||||
static int icside_set_speed(ide_drive_t *drive, u8 xfer_mode)
|
static int icside_set_speed(ide_drive_t *drive, const u8 xfer_mode)
|
||||||
{
|
{
|
||||||
int on = 0, cycle_time = 0, use_dma_info = 0;
|
int on = 0, cycle_time = 0, use_dma_info = 0;
|
||||||
|
|
||||||
/*
|
|
||||||
* Limit the transfer speed to MW_DMA_2.
|
|
||||||
*/
|
|
||||||
xfer_mode = ide_rate_filter(drive, xfer_mode);
|
|
||||||
|
|
||||||
switch (xfer_mode) {
|
switch (xfer_mode) {
|
||||||
case XFER_MW_DMA_2:
|
case XFER_MW_DMA_2:
|
||||||
cycle_time = 250;
|
cycle_time = 250;
|
||||||
|
@ -722,12 +722,10 @@ static void tune_cris_ide(ide_drive_t *drive, u8 pio)
|
|||||||
(void)ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
(void)ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int speed_cris_ide(ide_drive_t *drive, u8 speed)
|
static int speed_cris_ide(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
int cyc = 0, dvs = 0, strobe = 0, hold = 0;
|
int cyc = 0, dvs = 0, strobe = 0, hold = 0;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
|
if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
|
||||||
tune_cris_ide(drive, speed - XFER_PIO_0);
|
tune_cris_ide(drive, speed - XFER_PIO_0);
|
||||||
return ide_config_drive_speed(drive, speed);
|
return ide_config_drive_speed(drive, speed);
|
||||||
|
@ -79,7 +79,7 @@ EXPORT_SYMBOL(ide_xfer_verbose);
|
|||||||
* TODO: check device PIO capabilities
|
* TODO: check device PIO capabilities
|
||||||
*/
|
*/
|
||||||
|
|
||||||
u8 ide_rate_filter(ide_drive_t *drive, u8 speed)
|
static u8 ide_rate_filter(ide_drive_t *drive, u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = drive->hwif;
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
u8 mode = ide_find_dma_mode(drive, speed);
|
u8 mode = ide_find_dma_mode(drive, speed);
|
||||||
@ -96,8 +96,6 @@ u8 ide_rate_filter(ide_drive_t *drive, u8 speed)
|
|||||||
return min(speed, mode);
|
return min(speed, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(ide_rate_filter);
|
|
||||||
|
|
||||||
int ide_use_fast_pio(ide_drive_t *drive)
|
int ide_use_fast_pio(ide_drive_t *drive)
|
||||||
{
|
{
|
||||||
struct hd_driveid *id = drive->id;
|
struct hd_driveid *id = drive->id;
|
||||||
@ -364,13 +362,14 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
|
|||||||
|
|
||||||
int ide_set_xfer_rate(ide_drive_t *drive, u8 rate)
|
int ide_set_xfer_rate(ide_drive_t *drive, u8 rate)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_BLK_DEV_IDEDMA
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
rate = min(rate, (u8) XFER_PIO_4);
|
|
||||||
#endif
|
if (hwif->speedproc == NULL)
|
||||||
if(HWIF(drive)->speedproc)
|
|
||||||
return HWIF(drive)->speedproc(drive, rate);
|
|
||||||
else
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
rate = ide_rate_filter(drive, rate);
|
||||||
|
|
||||||
|
return hwif->speedproc(drive, rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ide_dump_opcode(ide_drive_t *drive)
|
static void ide_dump_opcode(ide_drive_t *drive)
|
||||||
|
@ -175,13 +175,11 @@ static void auide_tune_drive(ide_drive_t *drive, byte pio)
|
|||||||
ide_config_drive_speed(drive, speed);
|
ide_config_drive_speed(drive, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
|
static int auide_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
int mem_sttime;
|
int mem_sttime;
|
||||||
int mem_stcfg;
|
int mem_stcfg;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
mem_sttime = 0;
|
mem_sttime = 0;
|
||||||
mem_stcfg = au_readl(MEM_STCFG2);
|
mem_stcfg = au_readl(MEM_STCFG2);
|
||||||
|
|
||||||
|
@ -87,12 +87,11 @@ static u8 pci_bus_clock_list_ultra (u8 speed, struct chipset_bus_clock_list_entr
|
|||||||
return chipset_table->ultra_settings;
|
return chipset_table->ultra_settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aec6210_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int aec6210_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u16 d_conf = 0;
|
u16 d_conf = 0;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 ultra = 0, ultra_conf = 0;
|
u8 ultra = 0, ultra_conf = 0;
|
||||||
u8 tmp0 = 0, tmp1 = 0, tmp2 = 0;
|
u8 tmp0 = 0, tmp1 = 0, tmp2 = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -115,11 +114,10 @@ static int aec6210_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
|||||||
return(ide_config_drive_speed(drive, speed));
|
return(ide_config_drive_speed(drive, speed));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aec6260_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int aec6260_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 unit = (drive->select.b.unit & 0x01);
|
u8 unit = (drive->select.b.unit & 0x01);
|
||||||
u8 tmp1 = 0, tmp2 = 0;
|
u8 tmp1 = 0, tmp2 = 0;
|
||||||
u8 ultra = 0, drive_conf = 0, ultra_conf = 0;
|
u8 ultra = 0, drive_conf = 0, ultra_conf = 0;
|
||||||
|
@ -409,17 +409,16 @@ static u8 ali_udma_filter(ide_drive_t *drive)
|
|||||||
/**
|
/**
|
||||||
* ali15x3_tune_chipset - set up chipset/drive for new speed
|
* ali15x3_tune_chipset - set up chipset/drive for new speed
|
||||||
* @drive: drive to configure for
|
* @drive: drive to configure for
|
||||||
* @xferspeed: desired speed
|
* @speed: desired speed
|
||||||
*
|
*
|
||||||
* Configure the hardware for the desired IDE transfer mode.
|
* Configure the hardware for the desired IDE transfer mode.
|
||||||
* We also do the needed drive configuration through helpers
|
* We also do the needed drive configuration through helpers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int ali15x3_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int ali15x3_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 speed1 = speed;
|
u8 speed1 = speed;
|
||||||
u8 unit = (drive->select.b.unit & 0x01);
|
u8 unit = (drive->select.b.unit & 0x01);
|
||||||
u8 tmpbyte = 0x00;
|
u8 tmpbyte = 0x00;
|
||||||
|
@ -234,14 +234,12 @@ static void amd_set_speed(struct pci_dev *dev, unsigned char dn, struct ide_timi
|
|||||||
* by upper layers.
|
* by upper layers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int amd_set_drive(ide_drive_t *drive, u8 speed)
|
static int amd_set_drive(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1);
|
ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1);
|
||||||
struct ide_timing t, p;
|
struct ide_timing t, p;
|
||||||
int T, UT;
|
int T, UT;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
if (speed != XFER_PIO_SLOW)
|
if (speed != XFER_PIO_SLOW)
|
||||||
ide_config_drive_speed(drive, speed);
|
ide_config_drive_speed(drive, speed);
|
||||||
|
|
||||||
|
@ -163,23 +163,21 @@ static void atiixp_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* atiixp_tune_chipset - tune a ATIIXP interface
|
* atiixp_tune_chipset - tune a ATIIXP interface
|
||||||
* @drive: IDE drive to tune
|
* @drive: IDE drive to tune
|
||||||
* @xferspeed: speed to configure
|
* @speed: speed to configure
|
||||||
*
|
*
|
||||||
* Set a ATIIXP interface channel to the desired speeds. This involves
|
* Set a ATIIXP interface channel to the desired speeds. This involves
|
||||||
* requires the right timing data into the ATIIXP configuration space
|
* requires the right timing data into the ATIIXP configuration space
|
||||||
* then setting the drive parameters appropriately
|
* then setting the drive parameters appropriately
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int atiixp_speedproc(ide_drive_t *drive, u8 xferspeed)
|
static int atiixp_speedproc(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev = drive->hwif->pci_dev;
|
struct pci_dev *dev = drive->hwif->pci_dev;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
|
int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
|
||||||
u32 tmp32;
|
u32 tmp32;
|
||||||
u16 tmp16;
|
u16 tmp16;
|
||||||
u8 speed, pio;
|
u8 pio;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
|
if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
|
||||||
atiixp_tune_pio(drive, speed - XFER_PIO_0);
|
atiixp_tune_pio(drive, speed - XFER_PIO_0);
|
||||||
|
@ -288,15 +288,13 @@ static void cmd64x_tune_drive (ide_drive_t *drive, u8 pio)
|
|||||||
(void) ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
(void) ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cmd64x_tune_chipset (ide_drive_t *drive, u8 speed)
|
static int cmd64x_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 unit = drive->dn & 0x01;
|
u8 unit = drive->dn & 0x01;
|
||||||
u8 regU = 0, pciU = hwif->channel ? UDIDETCR1 : UDIDETCR0;
|
u8 regU = 0, pciU = hwif->channel ? UDIDETCR1 : UDIDETCR0;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
if (speed >= XFER_SW_DMA_0) {
|
if (speed >= XFER_SW_DMA_0) {
|
||||||
(void) pci_read_config_byte(dev, pciU, ®U);
|
(void) pci_read_config_byte(dev, pciU, ®U);
|
||||||
regU &= ~(unit ? 0xCA : 0x35);
|
regU &= ~(unit ? 0xCA : 0x35);
|
||||||
|
@ -66,16 +66,15 @@ static struct pio_clocks cs5520_pio_clocks[]={
|
|||||||
{1, 2, 1}
|
{1, 2, 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
static int cs5520_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
static int cs5520_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *pdev = hwif->pci_dev;
|
struct pci_dev *pdev = hwif->pci_dev;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
int pio = speed;
|
int pio = speed;
|
||||||
u8 reg;
|
u8 reg;
|
||||||
int controller = drive->dn > 1 ? 1 : 0;
|
int controller = drive->dn > 1 ? 1 : 0;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
switch(speed)
|
switch(speed)
|
||||||
{
|
{
|
||||||
case XFER_PIO_4:
|
case XFER_PIO_4:
|
||||||
|
@ -143,13 +143,11 @@ static int cs5530_config_dma(ide_drive_t *drive)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cs5530_tune_chipset(ide_drive_t *drive, u8 mode)
|
static int cs5530_tune_chipset(ide_drive_t *drive, const u8 mode)
|
||||||
{
|
{
|
||||||
unsigned long basereg;
|
unsigned long basereg;
|
||||||
unsigned int reg, timings = 0;
|
unsigned int reg, timings = 0;
|
||||||
|
|
||||||
mode = ide_rate_filter(drive, mode);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tell the drive to switch to the new mode; abort on failure.
|
* Tell the drive to switch to the new mode; abort on failure.
|
||||||
*/
|
*/
|
||||||
|
@ -75,7 +75,7 @@ static unsigned int cs5535_udma_timings[5] =
|
|||||||
*
|
*
|
||||||
* cs5535_set_speed() configures the chipset to a new speed.
|
* cs5535_set_speed() configures the chipset to a new speed.
|
||||||
*/
|
*/
|
||||||
static void cs5535_set_speed(ide_drive_t *drive, u8 speed)
|
static void cs5535_set_speed(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
|
|
||||||
u32 reg = 0, dummy;
|
u32 reg = 0, dummy;
|
||||||
@ -141,7 +141,6 @@ static void cs5535_set_speed(ide_drive_t *drive, u8 speed)
|
|||||||
*/
|
*/
|
||||||
static int cs5535_set_drive(ide_drive_t *drive, u8 speed)
|
static int cs5535_set_drive(ide_drive_t *drive, u8 speed)
|
||||||
{
|
{
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
ide_config_drive_speed(drive, speed);
|
ide_config_drive_speed(drive, speed);
|
||||||
cs5535_set_speed(drive, speed);
|
cs5535_set_speed(drive, speed);
|
||||||
|
|
||||||
|
@ -43,10 +43,9 @@
|
|||||||
|
|
||||||
#define HPT343_DEBUG_DRIVE_INFO 0
|
#define HPT343_DEBUG_DRIVE_INFO 0
|
||||||
|
|
||||||
static int hpt34x_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int hpt34x_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev = HWIF(drive)->pci_dev;
|
struct pci_dev *dev = HWIF(drive)->pci_dev;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u32 reg1= 0, tmp1 = 0, reg2 = 0, tmp2 = 0;
|
u32 reg1= 0, tmp1 = 0, reg2 = 0, tmp2 = 0;
|
||||||
u8 hi_speed, lo_speed;
|
u8 hi_speed, lo_speed;
|
||||||
|
|
||||||
|
@ -600,12 +600,11 @@ static u32 get_speed_setting(u8 speed, struct hpt_info *info)
|
|||||||
return (*info->settings)[i];
|
return (*info->settings)[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hpt36x_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
static int hpt36x_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
struct hpt_info *info = pci_get_drvdata(dev);
|
struct hpt_info *info = pci_get_drvdata(dev);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 itr_addr = drive->dn ? 0x44 : 0x40;
|
u8 itr_addr = drive->dn ? 0x44 : 0x40;
|
||||||
u32 old_itr = 0;
|
u32 old_itr = 0;
|
||||||
u32 itr_mask, new_itr;
|
u32 itr_mask, new_itr;
|
||||||
@ -628,12 +627,11 @@ static int hpt36x_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
|||||||
return ide_config_drive_speed(drive, speed);
|
return ide_config_drive_speed(drive, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hpt37x_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
static int hpt37x_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
struct hpt_info *info = pci_get_drvdata(dev);
|
struct hpt_info *info = pci_get_drvdata(dev);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 itr_addr = 0x40 + (drive->dn * 4);
|
u8 itr_addr = 0x40 + (drive->dn * 4);
|
||||||
u32 old_itr = 0;
|
u32 old_itr = 0;
|
||||||
u32 itr_mask, new_itr;
|
u32 itr_mask, new_itr;
|
||||||
|
@ -115,20 +115,16 @@ static void it8213_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* it8213_tune_chipset - set controller timings
|
* it8213_tune_chipset - set controller timings
|
||||||
* @drive: Drive to set up
|
* @drive: Drive to set up
|
||||||
* @xferspeed: speed we want to achieve
|
* @speed: speed we want to achieve
|
||||||
*
|
*
|
||||||
* Tune the ITE chipset for the desired mode. If we can't achieve
|
* Tune the ITE chipset for the desired mode.
|
||||||
* the desired mode then tune for a lower one, but ultimately
|
|
||||||
* make the thing work.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int it8213_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int it8213_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
|
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 maslave = 0x40;
|
u8 maslave = 0x40;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
int a_speed = 3 << (drive->dn * 4);
|
int a_speed = 3 << (drive->dn * 4);
|
||||||
int u_flag = 1 << drive->dn;
|
int u_flag = 1 << drive->dn;
|
||||||
int v_flag = 0x01 << drive->dn;
|
int v_flag = 0x01 << drive->dn;
|
||||||
|
@ -405,23 +405,19 @@ static int it821x_dma_end(ide_drive_t *drive)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* it821x_tune_chipset - set controller timings
|
* it821x_tune_chipset - set controller timings
|
||||||
* @drive: Drive to set up
|
* @drive: Drive to set up
|
||||||
* @xferspeed: speed we want to achieve
|
* @speed: speed we want to achieve
|
||||||
*
|
*
|
||||||
* Tune the ITE chipset for the desired mode. If we can't achieve
|
* Tune the ITE chipset for the desired mode.
|
||||||
* the desired mode then tune for a lower one, but ultimately
|
|
||||||
* make the thing work.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int it821x_tune_chipset (ide_drive_t *drive, byte xferspeed)
|
static int it821x_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
|
|
||||||
ide_hwif_t *hwif = drive->hwif;
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
struct it821x_dev *itdev = ide_get_hwifdata(hwif);
|
struct it821x_dev *itdev = ide_get_hwifdata(hwif);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
case XFER_PIO_4:
|
case XFER_PIO_4:
|
||||||
|
@ -92,17 +92,14 @@ static void jmicron_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* jmicron_tune_chipset - set controller timings
|
* jmicron_tune_chipset - set controller timings
|
||||||
* @drive: Drive to set up
|
* @drive: Drive to set up
|
||||||
* @xferspeed: speed we want to achieve
|
* @speed: speed we want to achieve
|
||||||
*
|
*
|
||||||
* As the JMicron snoops for timings all we actually need to do is
|
* As the JMicron snoops for timings all we actually need to do is
|
||||||
* make sure we don't set an invalid mode. We do need to honour
|
* set the transfer mode on the device.
|
||||||
* the cable detect here.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int jmicron_tune_chipset (ide_drive_t *drive, byte xferspeed)
|
static int jmicron_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
return ide_config_drive_speed(drive, speed);
|
return ide_config_drive_speed(drive, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,14 +146,12 @@ static struct udma_timing {
|
|||||||
{ 0x1a, 0x01, 0xcb }, /* UDMA mode 6 */
|
{ 0x1a, 0x01, 0xcb }, /* UDMA mode 6 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pdcnew_tune_chipset(ide_drive_t *drive, u8 speed)
|
static int pdcnew_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
u8 adj = (drive->dn & 1) ? 0x08 : 0x00;
|
u8 adj = (drive->dn & 1) ? 0x08 : 0x00;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Issue SETFEATURES_XFER to the drive first. PDC202xx hardware will
|
* Issue SETFEATURES_XFER to the drive first. PDC202xx hardware will
|
||||||
* automatically set the timing registers based on 100 MHz PLL output.
|
* automatically set the timing registers based on 100 MHz PLL output.
|
||||||
|
@ -63,12 +63,11 @@ static const char *pdc_quirk_drives[] = {
|
|||||||
|
|
||||||
static void pdc_old_disable_66MHz_clock(ide_hwif_t *);
|
static void pdc_old_disable_66MHz_clock(ide_hwif_t *);
|
||||||
|
|
||||||
static int pdc202xx_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int pdc202xx_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 drive_pci = 0x60 + (drive->dn << 2);
|
u8 drive_pci = 0x60 + (drive->dn << 2);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
u8 AP = 0, BP = 0, CP = 0;
|
u8 AP = 0, BP = 0, CP = 0;
|
||||||
u8 TA = 0, TB = 0, TC = 0;
|
u8 TA = 0, TB = 0, TC = 0;
|
||||||
|
@ -221,19 +221,18 @@ static void piix_tune_drive (ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* piix_tune_chipset - tune a PIIX interface
|
* piix_tune_chipset - tune a PIIX interface
|
||||||
* @drive: IDE drive to tune
|
* @drive: IDE drive to tune
|
||||||
* @xferspeed: speed to configure
|
* @speed: speed to configure
|
||||||
*
|
*
|
||||||
* Set a PIIX interface channel to the desired speeds. This involves
|
* Set a PIIX interface channel to the desired speeds. This involves
|
||||||
* requires the right timing data into the PIIX configuration space
|
* requires the right timing data into the PIIX configuration space
|
||||||
* then setting the drive parameters appropriately
|
* then setting the drive parameters appropriately
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int piix_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int piix_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 maslave = hwif->channel ? 0x42 : 0x40;
|
u8 maslave = hwif->channel ? 0x42 : 0x40;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
int a_speed = 3 << (drive->dn * 4);
|
int a_speed = 3 << (drive->dn * 4);
|
||||||
int u_flag = 1 << drive->dn;
|
int u_flag = 1 << drive->dn;
|
||||||
int v_flag = 0x01 << drive->dn;
|
int v_flag = 0x01 << drive->dn;
|
||||||
|
@ -138,7 +138,7 @@ out:
|
|||||||
return mask;
|
return mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sc1200_tune_chipset(ide_drive_t *drive, u8 mode)
|
static int sc1200_tune_chipset(ide_drive_t *drive, const u8 mode)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
int unit = drive->select.b.unit;
|
int unit = drive->select.b.unit;
|
||||||
@ -146,8 +146,6 @@ static int sc1200_tune_chipset(ide_drive_t *drive, u8 mode)
|
|||||||
unsigned short pci_clock;
|
unsigned short pci_clock;
|
||||||
unsigned int basereg = hwif->channel ? 0x50 : 0x40;
|
unsigned int basereg = hwif->channel ? 0x50 : 0x40;
|
||||||
|
|
||||||
mode = ide_rate_filter(drive, mode);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tell the drive to switch to the new mode; abort on failure.
|
* Tell the drive to switch to the new mode; abort on failure.
|
||||||
*/
|
*/
|
||||||
|
@ -231,16 +231,15 @@ static void scc_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* scc_tune_chipset - tune a drive DMA mode
|
* scc_tune_chipset - tune a drive DMA mode
|
||||||
* @drive: Drive to set up
|
* @drive: Drive to set up
|
||||||
* @xferspeed: speed we want to achieve
|
* @speed: speed we want to achieve
|
||||||
*
|
*
|
||||||
* Load the timing settings for this device mode into the
|
* Load the timing settings for this device mode into the
|
||||||
* controller.
|
* controller.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int scc_tune_chipset(ide_drive_t *drive, byte xferspeed)
|
static int scc_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
struct scc_ports *ports = ide_get_hwifdata(hwif);
|
struct scc_ports *ports = ide_get_hwifdata(hwif);
|
||||||
unsigned long ctl_base = ports->ctl;
|
unsigned long ctl_base = ports->ctl;
|
||||||
unsigned long cckctrl_port = ctl_base + 0xff0;
|
unsigned long cckctrl_port = ctl_base + 0xff0;
|
||||||
|
@ -145,7 +145,7 @@ static void svwks_tune_pio(ide_drive_t *drive, const u8 pio)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int svwks_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int svwks_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
static const u8 udma_modes[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
|
static const u8 udma_modes[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
|
||||||
static const u8 dma_modes[] = { 0x77, 0x21, 0x20 };
|
static const u8 dma_modes[] = { 0x77, 0x21, 0x20 };
|
||||||
@ -153,7 +153,6 @@ static int svwks_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
|||||||
|
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
u8 unit = (drive->select.b.unit & 0x01);
|
u8 unit = (drive->select.b.unit & 0x01);
|
||||||
|
|
||||||
u8 ultra_enable = 0, ultra_timing = 0, dma_timing = 0;
|
u8 ultra_enable = 0, ultra_timing = 0, dma_timing = 0;
|
||||||
|
@ -229,14 +229,12 @@ static void sil_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
/**
|
/**
|
||||||
* siimage_tune_chipset - set controller timings
|
* siimage_tune_chipset - set controller timings
|
||||||
* @drive: Drive to set up
|
* @drive: Drive to set up
|
||||||
* @xferspeed: speed we want to achieve
|
* @speed: speed we want to achieve
|
||||||
*
|
*
|
||||||
* Tune the SII chipset for the desired mode. If we can't achieve
|
* Tune the SII chipset for the desired mode.
|
||||||
* the desired mode then tune for a lower one, but ultimately
|
|
||||||
* make the thing work.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int siimage_tune_chipset (ide_drive_t *drive, byte xferspeed)
|
static int siimage_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
u8 ultra6[] = { 0x0F, 0x0B, 0x07, 0x05, 0x03, 0x02, 0x01 };
|
u8 ultra6[] = { 0x0F, 0x0B, 0x07, 0x05, 0x03, 0x02, 0x01 };
|
||||||
u8 ultra5[] = { 0x0C, 0x07, 0x05, 0x04, 0x02, 0x01 };
|
u8 ultra5[] = { 0x0C, 0x07, 0x05, 0x04, 0x02, 0x01 };
|
||||||
@ -245,7 +243,6 @@ static int siimage_tune_chipset (ide_drive_t *drive, byte xferspeed)
|
|||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
u16 ultra = 0, multi = 0;
|
u16 ultra = 0, multi = 0;
|
||||||
u8 mode = 0, unit = drive->select.b.unit;
|
u8 mode = 0, unit = drive->select.b.unit;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
unsigned long base = (unsigned long)hwif->hwif_data;
|
unsigned long base = (unsigned long)hwif->hwif_data;
|
||||||
u8 scsc = 0, addr_mask = ((hwif->channel) ?
|
u8 scsc = 0, addr_mask = ((hwif->channel) ?
|
||||||
((hwif->mmio) ? 0xF4 : 0x84) :
|
((hwif->mmio) ? 0xF4 : 0x84) :
|
||||||
|
@ -531,15 +531,12 @@ static void sis5513_tuneproc(ide_drive_t *drive, u8 pio)
|
|||||||
(void)sis5513_tune_drive(drive, pio);
|
(void)sis5513_tune_drive(drive, pio);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sis5513_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int sis5513_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
|
|
||||||
u8 drive_pci, reg, speed;
|
|
||||||
u32 regdw;
|
u32 regdw;
|
||||||
|
u8 drive_pci, reg;
|
||||||
speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
/* See config_art_rwp_pio for drive pci config registers */
|
/* See config_art_rwp_pio for drive pci config registers */
|
||||||
drive_pci = 0x40;
|
drive_pci = 0x40;
|
||||||
|
@ -113,7 +113,7 @@ static u8 sl82c105_tune_pio(ide_drive_t *drive, u8 pio)
|
|||||||
/*
|
/*
|
||||||
* Configure the drive and chipset for a new transfer speed.
|
* Configure the drive and chipset for a new transfer speed.
|
||||||
*/
|
*/
|
||||||
static int sl82c105_tune_chipset(ide_drive_t *drive, u8 speed)
|
static int sl82c105_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
static u16 mwdma_timings[] = {0x0707, 0x0201, 0x0200};
|
static u16 mwdma_timings[] = {0x0707, 0x0201, 0x0200};
|
||||||
u16 drv_ctrl;
|
u16 drv_ctrl;
|
||||||
@ -121,8 +121,6 @@ static int sl82c105_tune_chipset(ide_drive_t *drive, u8 speed)
|
|||||||
DBG(("sl82c105_tune_chipset(drive:%s, speed:%s)\n",
|
DBG(("sl82c105_tune_chipset(drive:%s, speed:%s)\n",
|
||||||
drive->name, ide_xfer_verbose(speed)));
|
drive->name, ide_xfer_verbose(speed)));
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
case XFER_MW_DMA_2:
|
case XFER_MW_DMA_2:
|
||||||
case XFER_MW_DMA_1:
|
case XFER_MW_DMA_1:
|
||||||
|
@ -102,12 +102,11 @@ static void slc90e66_tune_drive (ide_drive_t *drive, u8 pio)
|
|||||||
(void) ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
(void) ide_config_drive_speed(drive, XFER_PIO_0 + pio);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int slc90e66_tune_chipset (ide_drive_t *drive, u8 xferspeed)
|
static int slc90e66_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
u8 maslave = hwif->channel ? 0x42 : 0x40;
|
u8 maslave = hwif->channel ? 0x42 : 0x40;
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
int sitre = 0, a_speed = 7 << (drive->dn * 4);
|
int sitre = 0, a_speed = 7 << (drive->dn * 4);
|
||||||
int u_speed = 0, u_flag = 1 << drive->dn;
|
int u_speed = 0, u_flag = 1 << drive->dn;
|
||||||
u16 reg4042, reg44, reg48, reg4a;
|
u16 reg4042, reg44, reg48, reg4a;
|
||||||
|
@ -13,14 +13,12 @@
|
|||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
|
|
||||||
static int tc86c001_tune_chipset(ide_drive_t *drive, u8 speed)
|
static int tc86c001_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
unsigned long scr_port = hwif->config_data + (drive->dn ? 0x02 : 0x00);
|
unsigned long scr_port = hwif->config_data + (drive->dn ? 0x02 : 0x00);
|
||||||
u16 mode, scr = hwif->INW(scr_port);
|
u16 mode, scr = hwif->INW(scr_port);
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
case XFER_UDMA_4: mode = 0x00c0; break;
|
case XFER_UDMA_4: mode = 0x00c0; break;
|
||||||
case XFER_UDMA_3: mode = 0x00b0; break;
|
case XFER_UDMA_3: mode = 0x00b0; break;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
static int triflex_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
static int triflex_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
struct pci_dev *dev = hwif->pci_dev;
|
struct pci_dev *dev = hwif->pci_dev;
|
||||||
@ -48,7 +48,6 @@ static int triflex_tune_chipset(ide_drive_t *drive, u8 xferspeed)
|
|||||||
u16 timing = 0;
|
u16 timing = 0;
|
||||||
u32 triflex_timings = 0;
|
u32 triflex_timings = 0;
|
||||||
u8 unit = (drive->select.b.unit & 0x01);
|
u8 unit = (drive->select.b.unit & 0x01);
|
||||||
u8 speed = ide_rate_filter(drive, xferspeed);
|
|
||||||
|
|
||||||
pci_read_config_dword(dev, channel_offset, &triflex_timings);
|
pci_read_config_dword(dev, channel_offset, &triflex_timings);
|
||||||
|
|
||||||
|
@ -158,15 +158,13 @@ static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing)
|
|||||||
* by upper layers.
|
* by upper layers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int via_set_drive(ide_drive_t *drive, u8 speed)
|
static int via_set_drive(ide_drive_t *drive, const u8 speed)
|
||||||
{
|
{
|
||||||
ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1);
|
ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1);
|
||||||
struct via82cxxx_dev *vdev = pci_get_drvdata(drive->hwif->pci_dev);
|
struct via82cxxx_dev *vdev = pci_get_drvdata(drive->hwif->pci_dev);
|
||||||
struct ide_timing t, p;
|
struct ide_timing t, p;
|
||||||
unsigned int T, UT;
|
unsigned int T, UT;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
if (speed != XFER_PIO_SLOW)
|
if (speed != XFER_PIO_SLOW)
|
||||||
ide_config_drive_speed(drive, speed);
|
ide_config_drive_speed(drive, speed);
|
||||||
|
|
||||||
|
@ -411,7 +411,6 @@ kauai_lookup_timing(struct kauai_timing* table, int cycle_time)
|
|||||||
|
|
||||||
static void pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif);
|
static void pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif);
|
||||||
static int pmac_ide_build_dmatable(ide_drive_t *drive, struct request *rq);
|
static int pmac_ide_build_dmatable(ide_drive_t *drive, struct request *rq);
|
||||||
static int pmac_ide_tune_chipset(ide_drive_t *drive, u8 speed);
|
|
||||||
static void pmac_ide_tuneproc(ide_drive_t *drive, u8 pio);
|
static void pmac_ide_tuneproc(ide_drive_t *drive, u8 pio);
|
||||||
static void pmac_ide_selectproc(ide_drive_t *drive);
|
static void pmac_ide_selectproc(ide_drive_t *drive);
|
||||||
static void pmac_ide_kauai_selectproc(ide_drive_t *drive);
|
static void pmac_ide_kauai_selectproc(ide_drive_t *drive);
|
||||||
@ -920,16 +919,13 @@ set_timings_mdma(ide_drive_t *drive, int intf_type, u32 *timings, u32 *timings2,
|
|||||||
* our dedicated function is more precise as it uses the drive provided
|
* our dedicated function is more precise as it uses the drive provided
|
||||||
* cycle time value. We should probably fix this one to deal with that too...
|
* cycle time value. We should probably fix this one to deal with that too...
|
||||||
*/
|
*/
|
||||||
static int
|
static int pmac_ide_tune_chipset(ide_drive_t *drive, const u8 speed)
|
||||||
pmac_ide_tune_chipset (ide_drive_t *drive, byte speed)
|
|
||||||
{
|
{
|
||||||
int unit = (drive->select.b.unit & 0x01);
|
int unit = (drive->select.b.unit & 0x01);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
|
pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
|
||||||
u32 *timings, *timings2;
|
u32 *timings, *timings2;
|
||||||
|
|
||||||
speed = ide_rate_filter(drive, speed);
|
|
||||||
|
|
||||||
if (pmif == NULL)
|
if (pmif == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -705,7 +705,7 @@ typedef struct hwif_s {
|
|||||||
/* routine to tune PIO mode for drives */
|
/* routine to tune PIO mode for drives */
|
||||||
void (*tuneproc)(ide_drive_t *, u8);
|
void (*tuneproc)(ide_drive_t *, u8);
|
||||||
/* routine to retune DMA modes for drives */
|
/* routine to retune DMA modes for drives */
|
||||||
int (*speedproc)(ide_drive_t *, u8);
|
int (*speedproc)(ide_drive_t *, const u8);
|
||||||
/* tweaks hardware to select drive */
|
/* tweaks hardware to select drive */
|
||||||
void (*selectproc)(ide_drive_t *);
|
void (*selectproc)(ide_drive_t *);
|
||||||
/* chipset polling based on hba specifics */
|
/* chipset polling based on hba specifics */
|
||||||
@ -1378,7 +1378,6 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ide-lib.c */
|
/* ide-lib.c */
|
||||||
u8 ide_rate_filter(ide_drive_t *, u8);
|
|
||||||
extern char *ide_xfer_verbose(u8 xfer_rate);
|
extern char *ide_xfer_verbose(u8 xfer_rate);
|
||||||
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
|
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
|
||||||
extern int ide_set_xfer_rate(ide_drive_t *drive, u8 rate);
|
extern int ide_set_xfer_rate(ide_drive_t *drive, u8 rate);
|
||||||
|
Loading…
Reference in New Issue
Block a user