ide: remove dead/obsolete ->busproc method
->busproc method is used by HDIO_SET_BUSSTATE ioctl but it has no chance of working as intended (in 2.4.x days) because to issue an ioctl there is a device node needed and: - for BUSSTATE_TRISTATE+OFF it is too late (devices are already gone) - for BUSSTATE_TRISTATE+ON it is too early (devices are not registered yet) Just remove ->busproc method for now (it was only implemented by hpt366, siimage and tc86c001 host drivers). Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
2dde7861af
commit
50672e5d74
@ -414,7 +414,6 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif)
|
||||
hwif->resetproc = tmp_hwif->resetproc;
|
||||
hwif->maskproc = tmp_hwif->maskproc;
|
||||
hwif->quirkproc = tmp_hwif->quirkproc;
|
||||
hwif->busproc = tmp_hwif->busproc;
|
||||
|
||||
hwif->ata_input_data = tmp_hwif->ata_input_data;
|
||||
hwif->ata_output_data = tmp_hwif->ata_output_data;
|
||||
@ -1071,8 +1070,6 @@ int generic_ide_ioctl(ide_drive_t *drive, struct file *file, struct block_device
|
||||
case HDIO_SET_BUSSTATE:
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EACCES;
|
||||
if (HWIF(drive)->busproc)
|
||||
return HWIF(drive)->busproc(drive, (int)arg);
|
||||
return -EOPNOTSUPP;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -929,64 +929,6 @@ static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq)
|
||||
hpt3xxn_set_clock(HWIF(drive), rq_data_dir(rq) ? 0x23 : 0x21);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set/get power state for a drive.
|
||||
* NOTE: affects both drives on each channel.
|
||||
*
|
||||
* When we turn the power back on, we need to re-initialize things.
|
||||
*/
|
||||
#define TRISTATE_BIT 0x8000
|
||||
|
||||
static int hpt3xx_busproc(ide_drive_t *drive, int state)
|
||||
{
|
||||
ide_hwif_t *hwif = HWIF(drive);
|
||||
struct pci_dev *dev = to_pci_dev(hwif->dev);
|
||||
u8 mcr_addr = hwif->select_data + 2;
|
||||
u8 resetmask = hwif->channel ? 0x80 : 0x40;
|
||||
u8 bsr2 = 0;
|
||||
u16 mcr = 0;
|
||||
|
||||
hwif->bus_state = state;
|
||||
|
||||
/* Grab the status. */
|
||||
pci_read_config_word(dev, mcr_addr, &mcr);
|
||||
pci_read_config_byte(dev, 0x59, &bsr2);
|
||||
|
||||
/*
|
||||
* Set the state. We don't set it if we don't need to do so.
|
||||
* Make sure that the drive knows that it has failed if it's off.
|
||||
*/
|
||||
switch (state) {
|
||||
case BUSSTATE_ON:
|
||||
if (!(bsr2 & resetmask))
|
||||
return 0;
|
||||
hwif->drives[0].failures = hwif->drives[1].failures = 0;
|
||||
|
||||
pci_write_config_byte(dev, 0x59, bsr2 & ~resetmask);
|
||||
pci_write_config_word(dev, mcr_addr, mcr & ~TRISTATE_BIT);
|
||||
return 0;
|
||||
case BUSSTATE_OFF:
|
||||
if ((bsr2 & resetmask) && !(mcr & TRISTATE_BIT))
|
||||
return 0;
|
||||
mcr &= ~TRISTATE_BIT;
|
||||
break;
|
||||
case BUSSTATE_TRISTATE:
|
||||
if ((bsr2 & resetmask) && (mcr & TRISTATE_BIT))
|
||||
return 0;
|
||||
mcr |= TRISTATE_BIT;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
hwif->drives[0].failures = hwif->drives[0].max_failures + 1;
|
||||
hwif->drives[1].failures = hwif->drives[1].max_failures + 1;
|
||||
|
||||
pci_write_config_word(dev, mcr_addr, mcr);
|
||||
pci_write_config_byte(dev, 0x59, bsr2 | resetmask);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* hpt37x_calibrate_dpll - calibrate the DPLL
|
||||
* @dev: PCI device
|
||||
@ -1334,7 +1276,6 @@ static void __devinit init_hwif_hpt366(ide_hwif_t *hwif)
|
||||
|
||||
hwif->quirkproc = &hpt3xx_quirkproc;
|
||||
hwif->maskproc = &hpt3xx_maskproc;
|
||||
hwif->busproc = &hpt3xx_busproc;
|
||||
|
||||
hwif->udma_filter = &hpt3xx_udma_filter;
|
||||
hwif->mdma_filter = &hpt3xx_mdma_filter;
|
||||
|
@ -562,7 +562,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
|
||||
clear interrupts */
|
||||
hwif->maskproc = &sgiioc4_maskproc; /* Mask on/off NIEN register */
|
||||
hwif->quirkproc = NULL;
|
||||
hwif->busproc = NULL;
|
||||
|
||||
hwif->INB = &sgiioc4_INB;
|
||||
|
||||
|
@ -369,48 +369,6 @@ static int siimage_mmio_ide_dma_test_irq (ide_drive_t *drive)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* sil_sata_busproc - bus isolation IOCTL
|
||||
* @drive: drive to isolate/restore
|
||||
* @state: bus state to set
|
||||
*
|
||||
* Used by the SII3112 to handle bus isolation. As this is a
|
||||
* SATA controller the work required is quite limited, we
|
||||
* just have to clean up the statistics
|
||||
*/
|
||||
|
||||
static int sil_sata_busproc(ide_drive_t * drive, int state)
|
||||
{
|
||||
ide_hwif_t *hwif = HWIF(drive);
|
||||
struct pci_dev *dev = to_pci_dev(hwif->dev);
|
||||
u32 stat_config = 0;
|
||||
unsigned long addr = siimage_selreg(hwif, 0);
|
||||
|
||||
if (hwif->mmio)
|
||||
stat_config = readl((void __iomem *)addr);
|
||||
else
|
||||
pci_read_config_dword(dev, addr, &stat_config);
|
||||
|
||||
switch (state) {
|
||||
case BUSSTATE_ON:
|
||||
hwif->drives[0].failures = 0;
|
||||
hwif->drives[1].failures = 0;
|
||||
break;
|
||||
case BUSSTATE_OFF:
|
||||
hwif->drives[0].failures = hwif->drives[0].max_failures + 1;
|
||||
hwif->drives[1].failures = hwif->drives[1].max_failures + 1;
|
||||
break;
|
||||
case BUSSTATE_TRISTATE:
|
||||
hwif->drives[0].failures = hwif->drives[0].max_failures + 1;
|
||||
hwif->drives[1].failures = hwif->drives[1].max_failures + 1;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
hwif->bus_state = state;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* sil_sata_reset_poll - wait for SATA reset
|
||||
* @drive: drive we are resetting
|
||||
@ -818,7 +776,6 @@ static void __devinit init_hwif_siimage(ide_hwif_t *hwif)
|
||||
if (sata) {
|
||||
static int first = 1;
|
||||
|
||||
hwif->busproc = &sil_sata_busproc;
|
||||
hwif->reset_poll = &sil_sata_reset_poll;
|
||||
hwif->pre_reset = &sil_sata_pre_reset;
|
||||
hwif->udma_filter = &sil_sata_udma_filter;
|
||||
|
@ -126,40 +126,6 @@ static void tc86c001_dma_start(ide_drive_t *drive)
|
||||
ide_dma_start(drive);
|
||||
}
|
||||
|
||||
static int tc86c001_busproc(ide_drive_t *drive, int state)
|
||||
{
|
||||
ide_hwif_t *hwif = HWIF(drive);
|
||||
unsigned long sc_base = hwif->config_data;
|
||||
u16 scr1;
|
||||
|
||||
/* System Control 1 Register bit 11 (ATA Hard Reset) read */
|
||||
scr1 = inw(sc_base + 0x00);
|
||||
|
||||
switch (state) {
|
||||
case BUSSTATE_ON:
|
||||
if (!(scr1 & 0x0800))
|
||||
return 0;
|
||||
scr1 &= ~0x0800;
|
||||
|
||||
hwif->drives[0].failures = hwif->drives[1].failures = 0;
|
||||
break;
|
||||
case BUSSTATE_OFF:
|
||||
if (scr1 & 0x0800)
|
||||
return 0;
|
||||
scr1 |= 0x0800;
|
||||
|
||||
hwif->drives[0].failures = hwif->drives[0].max_failures + 1;
|
||||
hwif->drives[1].failures = hwif->drives[1].max_failures + 1;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* System Control 1 Register bit 11 (ATA Hard Reset) write */
|
||||
outw(scr1, sc_base + 0x00);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 __devinit tc86c001_cable_detect(ide_hwif_t *hwif)
|
||||
{
|
||||
struct pci_dev *dev = to_pci_dev(hwif->dev);
|
||||
@ -194,8 +160,6 @@ static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif)
|
||||
hwif->set_pio_mode = &tc86c001_set_pio_mode;
|
||||
hwif->set_dma_mode = &tc86c001_set_mode;
|
||||
|
||||
hwif->busproc = &tc86c001_busproc;
|
||||
|
||||
hwif->cable_detect = tc86c001_cable_detect;
|
||||
|
||||
if (!hwif->dma_base)
|
||||
|
@ -502,8 +502,6 @@ typedef struct hwif_s {
|
||||
void (*maskproc)(ide_drive_t *, int);
|
||||
/* check host's drive quirk list */
|
||||
void (*quirkproc)(ide_drive_t *);
|
||||
/* driver soft-power interface */
|
||||
int (*busproc)(ide_drive_t *, int);
|
||||
#endif
|
||||
u8 (*mdma_filter)(ide_drive_t *);
|
||||
u8 (*udma_filter)(ide_drive_t *);
|
||||
|
Loading…
Reference in New Issue
Block a user