Lines Matching refs:softs

35 int os_get_processor_config(pqisrc_softstate_t *softs)
38 softs->num_cpus_online = mp_ncpus;
47 int os_get_intr_config(pqisrc_softstate_t *softs)
53 dev = softs->os_specific.pqi_dev;
59 if (msi_count > softs->num_cpus_online)
60 msi_count = softs->num_cpus_online;
68 softs->intr_count = msi_count;
69 softs->intr_type = INTR_TYPE_MSIX;
70 softs->os_specific.msi_enabled = TRUE;
74 if (!softs->intr_type) {
81 softs->os_specific.msi_enabled = TRUE;
82 softs->intr_count = msi_count;
83 softs->intr_type = INTR_TYPE_MSI;
88 if (!softs->intr_type) {
90 softs->intr_type = INTR_TYPE_FIXED;
91 softs->intr_count = 1;
94 if(!softs->intr_type) {
119 pqisrc_softstate_t *softs = device_get_softc(intr_ctx->pqi_dev);
124 pqisrc_process_response_queue(softs, oq_id);
125 pqisrc_process_event_intr_src(softs, oq_id - 1);
136 pqisrc_softstate_t *softs = device_get_softc(intr_ctx->pqi_dev);
141 pqisrc_process_response_queue(softs, oq_id);
149 pqisrc_softstate_t *softs = device_get_softc(intr_ctx->pqi_dev);
154 pqisrc_process_event_intr_src(softs, oq_id);
162 int register_legacy_intr(pqisrc_softstate_t *softs)
169 dev = softs->os_specific.pqi_dev;
171 softs->os_specific.pqi_irq_rid[0] = 0;
172 softs->os_specific.pqi_irq[0] = bus_alloc_resource_any(dev, \
173 SYS_RES_IRQ, &softs->os_specific.pqi_irq_rid[0],
175 if (NULL == softs->os_specific.pqi_irq[0]) {
179 if ((softs->os_specific.msi_ctx = os_mem_alloc(softs,sizeof(pqi_intr_ctx_t))) == NULL) {
183 softs->os_specific.msi_ctx[0].pqi_dev = dev;
184 softs->os_specific.msi_ctx[0].oq_id = 0;
186 error = bus_setup_intr(dev, softs->os_specific.pqi_irq[0],
189 &softs->os_specific.msi_ctx[0],
190 &softs->os_specific.intrcookie[0]);
195 softs->os_specific.intr_registered[0] = TRUE;
205 int register_msix_intr(pqisrc_softstate_t *softs)
210 dev = softs->os_specific.pqi_dev;
211 int msix_count = softs->intr_count;
215 softs->os_specific.msi_ctx = os_mem_alloc(softs, sizeof(pqi_intr_ctx_t) * msix_count);
217 if (softs->share_opq_and_eventq) {
218 softs->os_specific.pqi_irq_rid[i] = i+1;
219 softs->os_specific.pqi_irq[i] = bus_alloc_resource_any(dev, \
221 &softs->os_specific.pqi_irq_rid[i],
223 if (NULL == softs->os_specific.pqi_irq[i]) {
229 softs->os_specific.msi_ctx[i].pqi_dev = dev;
230 softs->os_specific.msi_ctx[i].oq_id = i;
232 error = bus_setup_intr(dev,softs->os_specific.pqi_irq[i],
236 &softs->os_specific.msi_ctx[i],
237 &softs->os_specific.intrcookie[i]);
244 softs->os_specific.intr_registered[i] = TRUE;
248 softs->os_specific.pqi_irq_rid[i] = i+1;
249 softs->os_specific.pqi_irq[i] = bus_alloc_resource_any(dev, \
251 &softs->os_specific.pqi_irq_rid[i],
253 if (NULL == softs->os_specific.pqi_irq[i]) {
260 softs->os_specific.msi_ctx[i].pqi_dev = dev;
261 softs->os_specific.msi_ctx[i].oq_id = i;
264 error = bus_setup_intr(dev,softs->os_specific.pqi_irq[i],
268 &softs->os_specific.msi_ctx[i],
269 &softs->os_specific.intrcookie[i]);
275 softs->os_specific.intr_registered[i] = TRUE;
278 softs->os_specific.pqi_irq_rid[i] = i+1;
279 softs->os_specific.pqi_irq[i] = \
282 &softs->os_specific.pqi_irq_rid[i],
284 if (NULL == softs->os_specific.pqi_irq[i]) {
289 softs->os_specific.msi_ctx[i].pqi_dev = dev;
290 softs->os_specific.msi_ctx[i].oq_id = i;
292 softs->os_specific.pqi_irq[i],
296 &softs->os_specific.msi_ctx[i],
297 &softs->os_specific.intrcookie[i]);
303 softs->os_specific.intr_registered[i] = TRUE;
315 int os_setup_intr(pqisrc_softstate_t *softs)
321 if (softs->intr_type == INTR_TYPE_FIXED) {
322 error = register_legacy_intr(softs);
325 error = register_msix_intr(softs);
340 void deregister_pqi_intx(pqisrc_softstate_t *softs)
346 dev = softs->os_specific.pqi_dev;
347 if (softs->os_specific.pqi_irq[0] != NULL) {
348 if (softs->os_specific.intr_registered[0]) {
349 bus_teardown_intr(dev, softs->os_specific.pqi_irq[0],
350 softs->os_specific.intrcookie[0]);
351 softs->os_specific.intr_registered[0] = FALSE;
354 softs->os_specific.pqi_irq_rid[0],
355 softs->os_specific.pqi_irq[0]);
356 softs->os_specific.pqi_irq[0] = NULL;
357 os_mem_free(softs, (char*)softs->os_specific.msi_ctx, sizeof(pqi_intr_ctx_t));
366 void deregister_pqi_msix(pqisrc_softstate_t *softs)
369 dev = softs->os_specific.pqi_dev;
370 int msix_count = softs->intr_count;
375 os_mem_free(softs, (char*)softs->os_specific.msi_ctx, sizeof(pqi_intr_ctx_t) * msix_count);
376 softs->os_specific.msi_ctx = NULL;
379 if (softs->os_specific.pqi_irq[i] != NULL) {
380 if (softs->os_specific.intr_registered[i]) {
382 softs->os_specific.pqi_irq[i],
383 softs->os_specific.intrcookie[i]);
384 softs->os_specific.intr_registered[i] = FALSE;
387 softs->os_specific.pqi_irq_rid[i],
388 softs->os_specific.pqi_irq[i]);
389 softs->os_specific.pqi_irq[i] = NULL;
399 int os_destroy_intr(pqisrc_softstate_t *softs)
402 dev = softs->os_specific.pqi_dev;
406 if (softs->intr_type == INTR_TYPE_FIXED) {
407 deregister_pqi_intx(softs);
408 } else if (softs->intr_type == INTR_TYPE_MSIX) {
409 deregister_pqi_msix(softs);
411 if (softs->os_specific.msi_enabled) {
413 softs->os_specific.msi_enabled = FALSE;
424 void os_free_intr_config(pqisrc_softstate_t *softs)
427 dev = softs->os_specific.pqi_dev;
431 if (softs->os_specific.msi_enabled) {
433 softs->os_specific.msi_enabled = FALSE;