View | Details | Raw Unified | Return to bug 82261
Collapse All | Expand All

(-)ata-chipset.c (+31 lines)
Lines 74-79 Link Here
74
static void ata_acard_86X_setmode(device_t dev, int mode);
74
static void ata_acard_86X_setmode(device_t dev, int mode);
75
static int ata_ali_chipinit(device_t dev);
75
static int ata_ali_chipinit(device_t dev);
76
static int ata_ali_allocate(device_t dev);
76
static int ata_ali_allocate(device_t dev);
77
static void ata_ali_reset(device_t dev);
77
static void ata_ali_setmode(device_t dev, int mode);
78
static void ata_ali_setmode(device_t dev, int mode);
78
static int ata_amd_chipinit(device_t dev);
79
static int ata_amd_chipinit(device_t dev);
79
static int ata_cyrix_chipinit(device_t dev);
80
static int ata_cyrix_chipinit(device_t dev);
Lines 853-858 Link Here
853
    device_set_desc_copy(dev, buffer);
854
    device_set_desc_copy(dev, buffer);
854
    ctlr->chip = idx;
855
    ctlr->chip = idx;
855
    ctlr->chipinit = ata_ali_chipinit;
856
    ctlr->chipinit = ata_ali_chipinit;
857
    ctlr->reset = ata_ali_reset;
856
    return 0;
858
    return 0;
857
}
859
}
858
860
Lines 937-942 Link Here
937
}
939
}
938
940
939
static void
941
static void
942
ata_ali_reset(device_t dev)
943
{
944
    device_t parent = device_get_parent(dev);
945
    struct ata_pci_controller *ctlr = device_get_softc(parent);
946
    struct ata_channel *ch = device_get_softc(dev);
947
    device_t *children;
948
    int nchildren, i;
949
    u_int8_t ideic;
950
951
    ata_generic_reset(dev);
952
    if (ctlr->chip->cfg2 & ALINEW && ctlr->chip->chiprev < 0xc4) {
953
	if (!device_get_children(device_get_parent(parent), &children,
954
				 &nchildren)) {
955
	    for (i = 0; i < nchildren; i++) {
956
		if (pci_get_devid(children[i]) == 0x153310b9) {
957
		    ideic = pci_read_config(children[i], 0x58, 1);
958
		    pci_write_config(children[i], 0x58,
959
				     ideic & ~(0x04 << ch->unit), 1);
960
		    ata_udelay(1000);
961
		    pci_write_config(children[i], 0x58, ideic, 1);
962
		    break;
963
		}
964
	    }
965
	    free(children, M_TEMP);
966
	}
967
    }
968
}
969
970
static void
940
ata_ali_setmode(device_t dev, int mode)
971
ata_ali_setmode(device_t dev, int mode)
941
{
972
{
942
    device_t gparent = GRANDPARENT(dev);
973
    device_t gparent = GRANDPARENT(dev);

Return to bug 82261