Lines Matching refs:ctlr
96 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_attach() local
102 ctlr->dev = dev; in mvs_attach()
108 ctlr->channels = mvs_ids[i].ports; in mvs_attach()
109 ctlr->quirks = mvs_ids[i].quirks; in mvs_attach()
110 ctlr->ccc = 0; in mvs_attach()
112 device_get_unit(dev), "ccc", &ctlr->ccc); in mvs_attach()
113 ctlr->cccc = 8; in mvs_attach()
115 device_get_unit(dev), "cccc", &ctlr->cccc); in mvs_attach()
116 if (ctlr->ccc == 0 || ctlr->cccc == 0) { in mvs_attach()
117 ctlr->ccc = 0; in mvs_attach()
118 ctlr->cccc = 0; in mvs_attach()
120 if (ctlr->ccc > 100000) in mvs_attach()
121 ctlr->ccc = 100000; in mvs_attach()
124 ((ctlr->quirks & MVS_Q_GENI) ? "I" : in mvs_attach()
125 ((ctlr->quirks & MVS_Q_GENII) ? "II" : "IIe")), in mvs_attach()
126 ctlr->channels, in mvs_attach()
127 ((ctlr->quirks & MVS_Q_GENI) ? "1.5" : "3"), in mvs_attach()
128 ((ctlr->quirks & MVS_Q_GENI) ? in mvs_attach()
130 ((ctlr->quirks & MVS_Q_GENIIE) ? in mvs_attach()
132 mtx_init(&ctlr->mtx, "MVS controller lock", NULL, MTX_DEF); in mvs_attach()
134 ctlr->r_rid = 0; in mvs_attach()
135 if (!(ctlr->r_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, in mvs_attach()
136 &ctlr->r_rid, RF_ACTIVE))) in mvs_attach()
138 if (ATA_INL(ctlr->r_mem, PORT_BASE(0) + SATA_PHYCFG_OFS) != 0) in mvs_attach()
139 ctlr->quirks |= MVS_Q_SOC65; in mvs_attach()
141 ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); in mvs_attach()
142 ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); in mvs_attach()
143 ctlr->sc_iomem.rm_type = RMAN_ARRAY; in mvs_attach()
144 ctlr->sc_iomem.rm_descr = "I/O memory addresses"; in mvs_attach()
145 if ((error = rman_init(&ctlr->sc_iomem)) != 0) { in mvs_attach()
146 bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); in mvs_attach()
149 if ((error = rman_manage_region(&ctlr->sc_iomem, in mvs_attach()
150 rman_get_start(ctlr->r_mem), rman_get_end(ctlr->r_mem))) != 0) { in mvs_attach()
151 bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); in mvs_attach()
152 rman_fini(&ctlr->sc_iomem); in mvs_attach()
158 bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); in mvs_attach()
159 rman_fini(&ctlr->sc_iomem); in mvs_attach()
163 for (unit = 0; unit < ctlr->channels; unit++) { in mvs_attach()
177 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_detach() local
186 if (ctlr->irq.r_irq) { in mvs_detach()
187 bus_teardown_intr(dev, ctlr->irq.r_irq, in mvs_detach()
188 ctlr->irq.handle); in mvs_detach()
190 ctlr->irq.r_irq_rid, ctlr->irq.r_irq); in mvs_detach()
193 rman_fini(&ctlr->sc_iomem); in mvs_detach()
194 if (ctlr->r_mem) in mvs_detach()
195 bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); in mvs_detach()
196 mtx_destroy(&ctlr->mtx); in mvs_detach()
203 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_ctlr_setup() local
204 int ccc = ctlr->ccc, cccc = ctlr->cccc; in mvs_ctlr_setup()
207 ATA_OUTL(ctlr->r_mem, CHIP_SOC_MIM, 0x00000000); in mvs_ctlr_setup()
209 ATA_OUTL(ctlr->r_mem, HC_IC, 0x00000000); in mvs_ctlr_setup()
211 ATA_OUTL(ctlr->r_mem, CHIP_SOC_MIC, 0); in mvs_ctlr_setup()
216 ctlr->ccc, ctlr->cccc); in mvs_ctlr_setup()
219 ATA_OUTL(ctlr->r_mem, HC_ICT, cccc); in mvs_ctlr_setup()
220 ATA_OUTL(ctlr->r_mem, HC_ITT, ccc); in mvs_ctlr_setup()
222 ctlr->gmim = ((ccc ? IC_HC0_COAL_DONE : in mvs_ctlr_setup()
223 (IC_DONE_HC0 & CHIP_SOC_HC0_MASK(ctlr->channels))) | in mvs_ctlr_setup()
224 (IC_ERR_HC0 & CHIP_SOC_HC0_MASK(ctlr->channels))); in mvs_ctlr_setup()
225 ATA_OUTL(ctlr->r_mem, CHIP_SOC_MIM, ctlr->gmim | ctlr->pmim); in mvs_ctlr_setup()
232 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_edma() local
236 if (ctlr->ccc == 0) in mvs_edma()
239 mtx_lock(&ctlr->mtx); in mvs_edma()
241 ctlr->pmim |= bit; in mvs_edma()
243 ctlr->pmim &= ~bit; in mvs_edma()
244 ATA_OUTL(ctlr->r_mem, CHIP_SOC_MIM, ctlr->gmim | ctlr->pmim); in mvs_edma()
245 mtx_unlock(&ctlr->mtx); in mvs_edma()
251 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_suspend() local
255 ATA_OUTL(ctlr->r_mem, CHIP_SOC_MIM, 0x00000000); in mvs_suspend()
270 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_setup_interrupt() local
273 ctlr->irq.r_irq_rid = 0; in mvs_setup_interrupt()
274 if (!(ctlr->irq.r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, in mvs_setup_interrupt()
275 &ctlr->irq.r_irq_rid, RF_SHAREABLE | RF_ACTIVE))) { in mvs_setup_interrupt()
279 if ((bus_setup_intr(dev, ctlr->irq.r_irq, ATA_INTR_FLAGS, NULL, in mvs_setup_interrupt()
280 mvs_intr, ctlr, &ctlr->irq.handle))) { in mvs_setup_interrupt()
283 ctlr->irq.r_irq_rid, ctlr->irq.r_irq); in mvs_setup_interrupt()
284 ctlr->irq.r_irq = NULL; in mvs_setup_interrupt()
296 struct mvs_controller *ctlr = data; in mvs_intr() local
302 ic = ATA_INL(ctlr->r_mem, CHIP_SOC_MIC); in mvs_intr()
310 for (chan_num = 0; chan_num < ctlr->channels; chan_num++) { in mvs_intr()
317 ATA_OUTL(ctlr->r_mem, HC_IC, ~aic); in mvs_intr()
320 for (p = 0; p < ctlr->channels; p++) { in mvs_intr()
323 (function = ctlr->interrupt[p].function)) { in mvs_intr()
324 arg.arg = ctlr->interrupt[p].argument; in mvs_intr()
335 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_alloc_resource() local
343 st = rman_get_start(ctlr->r_mem); in mvs_alloc_resource()
344 res = rman_reserve_resource(&ctlr->sc_iomem, st + offset, in mvs_alloc_resource()
349 bsh = rman_get_bushandle(ctlr->r_mem); in mvs_alloc_resource()
350 bst = rman_get_bustag(ctlr->r_mem); in mvs_alloc_resource()
358 res = ctlr->irq.r_irq; in mvs_alloc_resource()
385 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_setup_intr() local
392 ctlr->interrupt[unit].function = function; in mvs_setup_intr()
393 ctlr->interrupt[unit].argument = argument; in mvs_setup_intr()
401 struct mvs_controller *ctlr = device_get_softc(dev); in mvs_teardown_intr() local
404 ctlr->interrupt[unit].function = NULL; in mvs_teardown_intr()
405 ctlr->interrupt[unit].argument = NULL; in mvs_teardown_intr()