{
        int i, iswrite, count = 0;
        ide_hwif_t *hwif = HWIF(drive);
-
        struct request *rq = HWGROUP(drive)->rq;
-
-       _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data;
+       _auide_hwif *ahwif = &auide_hwif;
        struct scatterlist *sg;
 
        iswrite = (rq_data_dir(rq) == WRITE);
 
 static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
 {
-       _auide_hwif *auide = (_auide_hwif *)hwif->hwif_data;
+       _auide_hwif *auide = &auide_hwif;
        dbdev_tab_t source_dev_tab, target_dev_tab;
        u32 dev_id, tsize, devwidth, flags;
 
 #else
 static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
 {
-       _auide_hwif *auide = (_auide_hwif *)hwif->hwif_data;
+       _auide_hwif *auide = &auide_hwif;
        dbdev_tab_t source_dev_tab;
        int flags;
 
        hwif->input_data  = au1xxx_input_data;
        hwif->output_data = au1xxx_output_data;
 #endif
-       hwif->select_data               = 0;    /* no chipset-specific code */
-       hwif->config_data               = 0;    /* no chipset-specific code */
 
        auide_hwif.hwif                 = hwif;
-       hwif->hwif_data                 = &auide_hwif;
 
        idx[0] = hwif->index;