Lines Matching +full:8 +full:- +full:ch

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 1998 - 2008 Søren Schmidt <sos@FreeBSD.org>
48 #include <dev/ata/ata-all.h>
49 #include <dev/ata/ata-pci.h>
94 if (!(ctlr->chip = ata_match_chip(dev, ids))) in ata_sii_probe()
98 ctlr->chipinit = ata_sii_chipinit; in ata_sii_probe()
110 switch (ctlr->chip->cfg1) { in ata_sii_chipinit()
112 ctlr->r_type2 = SYS_RES_MEMORY; in ata_sii_chipinit()
113 ctlr->r_rid2 = PCIR_BAR(5); in ata_sii_chipinit()
114 if (!(ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2, in ata_sii_chipinit()
115 &ctlr->r_rid2, RF_ACTIVE))){ in ata_sii_chipinit()
116 if (ctlr->chip->chipid != ATA_SII0680 || in ata_sii_chipinit()
121 if (ctlr->chip->cfg2 & SII_SETCLK) { in ata_sii_chipinit()
127 ctlr->chip->text); in ata_sii_chipinit()
131 if (ctlr->chip->cfg2 & SII_4CH) { in ata_sii_chipinit()
132 ATA_OUTL(ctlr->r_res2, 0x0200, 0x00000002); in ata_sii_chipinit()
133 ctlr->channels = 4; in ata_sii_chipinit()
143 if (ctlr->r_res2) { in ata_sii_chipinit()
144 ctlr->ch_attach = ata_sii_ch_attach; in ata_sii_chipinit()
145 ctlr->ch_detach = ata_sii_ch_detach; in ata_sii_chipinit()
148 if (ctlr->chip->max_dma >= ATA_SA150) { in ata_sii_chipinit()
149 ctlr->reset = ata_sii_reset; in ata_sii_chipinit()
150 ctlr->setmode = ata_sata_setmode; in ata_sii_chipinit()
151 ctlr->getrev = ata_sata_getrev; in ata_sii_chipinit()
154 ctlr->setmode = ata_sii_setmode; in ata_sii_chipinit()
160 ctlr->channels = 1; in ata_sii_chipinit()
166 ctlr->ch_attach = ata_cmd_ch_attach; in ata_sii_chipinit()
167 ctlr->ch_detach = ata_pci_ch_detach; in ata_sii_chipinit()
168 ctlr->setmode = ata_cmd_setmode; in ata_sii_chipinit()
178 struct ata_channel *ch = device_get_softc(dev); in ata_cmd_ch_attach() local
184 if (ctlr->chip->cfg2 & SII_INTR) in ata_cmd_ch_attach()
185 ch->hw.status = ata_cmd_status; in ata_cmd_ch_attach()
187 ch->flags |= ATA_NO_ATAPI_DMA; in ata_cmd_ch_attach()
195 struct ata_channel *ch = device_get_softc(dev); in ata_cmd_status() local
199 (ch->unit ? 0x08 : 0x04))) { in ata_cmd_status()
201 reg71 & ~(ch->unit ? 0x04 : 0x08), 1); in ata_cmd_status()
212 struct ata_channel *ch = device_get_softc(dev); in ata_cmd_setmode() local
213 int devno = (ch->unit << 1) + target; in ata_cmd_setmode()
215 int ureg = ch->unit ? 0x7b : 0x73; in ata_cmd_setmode()
223 mode = min(mode, ctlr->chip->max_dma); in ata_cmd_setmode()
245 struct ata_channel *ch = device_get_softc(dev); in ata_sii_ch_attach() local
246 int unit01 = (ch->unit & 1), unit10 = (ch->unit & 2); in ata_sii_ch_attach()
250 ch->r_io[i].res = ctlr->r_res2; in ata_sii_ch_attach()
251 ch->r_io[i].offset = 0x80 + i + (unit01 << 6) + (unit10 << 8); in ata_sii_ch_attach()
253 ch->r_io[ATA_CONTROL].res = ctlr->r_res2; in ata_sii_ch_attach()
254 ch->r_io[ATA_CONTROL].offset = 0x8a + (unit01 << 6) + (unit10 << 8); in ata_sii_ch_attach()
255 ch->r_io[ATA_IDX_ADDR].res = ctlr->r_res2; in ata_sii_ch_attach()
258 ch->r_io[ATA_BMCMD_PORT].res = ctlr->r_res2; in ata_sii_ch_attach()
259 ch->r_io[ATA_BMCMD_PORT].offset = 0x00 + (unit01 << 3) + (unit10 << 8); in ata_sii_ch_attach()
260 ch->r_io[ATA_BMSTAT_PORT].res = ctlr->r_res2; in ata_sii_ch_attach()
261 ch->r_io[ATA_BMSTAT_PORT].offset = 0x02 + (unit01 << 3) + (unit10 << 8); in ata_sii_ch_attach()
262 ch->r_io[ATA_BMDTP_PORT].res = ctlr->r_res2; in ata_sii_ch_attach()
263 ch->r_io[ATA_BMDTP_PORT].offset = 0x04 + (unit01 << 3) + (unit10 << 8); in ata_sii_ch_attach()
265 if (ctlr->chip->max_dma >= ATA_SA150) { in ata_sii_ch_attach()
266 ch->r_io[ATA_SSTATUS].res = ctlr->r_res2; in ata_sii_ch_attach()
267 ch->r_io[ATA_SSTATUS].offset = 0x104 + (unit01 << 7) + (unit10 << 8); in ata_sii_ch_attach()
268 ch->r_io[ATA_SERROR].res = ctlr->r_res2; in ata_sii_ch_attach()
269 ch->r_io[ATA_SERROR].offset = 0x108 + (unit01 << 7) + (unit10 << 8); in ata_sii_ch_attach()
270 ch->r_io[ATA_SCONTROL].res = ctlr->r_res2; in ata_sii_ch_attach()
271 ch->r_io[ATA_SCONTROL].offset = 0x100 + (unit01 << 7) + (unit10 << 8); in ata_sii_ch_attach()
272 ch->flags |= ATA_NO_SLAVE; in ata_sii_ch_attach()
273 ch->flags |= ATA_SATA; in ata_sii_ch_attach()
274 ch->flags |= ATA_KNOWN_PRESENCE; in ata_sii_ch_attach()
277 ATA_OUTL(ctlr->r_res2, 0x148 + (unit01 << 7) + (unit10 << 8),(1 << 16)); in ata_sii_ch_attach()
280 if (ctlr->chip->cfg2 & SII_BUG) { in ata_sii_ch_attach()
282 ch->dma.boundary = 8192; in ata_sii_ch_attach()
283 ch->dma.segsize = 15 * DEV_BSIZE; in ata_sii_ch_attach()
287 ch->hw.status = ata_sii_status; in ata_sii_ch_attach()
288 if (ctlr->chip->cfg2 & SII_SETCLK) in ata_sii_ch_attach()
289 ch->flags |= ATA_CHECKS_CABLE; in ata_sii_ch_attach()
308 struct ata_channel *ch = device_get_softc(dev); in ata_sii_status() local
309 int offset0 = ((ch->unit & 1) << 3) + ((ch->unit & 2) << 8); in ata_sii_status()
310 int offset1 = ((ch->unit & 1) << 6) + ((ch->unit & 2) << 8); in ata_sii_status()
313 if (ctlr->chip->max_dma >= ATA_SA150 && in ata_sii_status()
314 (ATA_INL(ctlr->r_res2, 0x10 + offset0) & 0x00000010)) in ata_sii_status()
315 ata_sata_phy_check_events(dev, -1); in ata_sii_status()
317 if (ATA_INL(ctlr->r_res2, 0xa0 + offset1) & 0x00000800) in ata_sii_status()
327 struct ata_channel *ch = device_get_softc(dev); in ata_sii_reset() local
328 int offset = ((ch->unit & 1) << 7) + ((ch->unit & 2) << 8); in ata_sii_reset()
332 val = ATA_INL(ctlr->r_res2, 0x14c + offset); in ata_sii_reset()
334 ATA_OUTL(ctlr->r_res2, 0x14c + offset, val & ~0x3); in ata_sii_reset()
336 if (ata_sata_phy_reset(dev, -1, 1)) in ata_sii_reset()
339 ch->devices = 0; in ata_sii_reset()
347 struct ata_channel *ch = device_get_softc(dev); in ata_sii_setmode() local
348 int rego = (ch->unit << 4) + (target << 1); in ata_sii_setmode()
349 int mreg = ch->unit ? 0x84 : 0x80; in ata_sii_setmode()
362 mode = min(mode, ctlr->chip->max_dma); in ata_sii_setmode()
364 if (ctlr->chip->cfg2 & SII_SETCLK) { in ata_sii_setmode()
367 (ch->unit ? 0x02 : 0x01))) { in ata_sii_setmode()