Lines Matching defs:pao
145 static u16 hpi6000_dsp_block_write32(struct hpi_adapter_obj *pao,
147 static u16 hpi6000_dsp_block_read32(struct hpi_adapter_obj *pao,
150 static short hpi6000_adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
152 static short hpi6000_check_PCI2040_error_flag(struct hpi_adapter_obj *pao,
157 static short hpi6000_update_control_cache(struct hpi_adapter_obj *pao,
159 static short hpi6000_message_response_sequence(struct hpi_adapter_obj *pao,
162 static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
165 static short hpi6000_wait_dsp_ack(struct hpi_adapter_obj *pao, u16 dsp_index,
168 static short hpi6000_send_host_command(struct hpi_adapter_obj *pao,
173 static short hpi6000_send_data(struct hpi_adapter_obj *pao, u16 dsp_index,
176 static short hpi6000_get_data(struct hpi_adapter_obj *pao, u16 dsp_index,
192 static void adapter_delete(struct hpi_adapter_obj *pao,
195 static void adapter_get_asserts(struct hpi_adapter_obj *pao,
198 static short create_adapter_obj(struct hpi_adapter_obj *pao,
201 static void delete_adapter_obj(struct hpi_adapter_obj *pao);
220 static void control_message(struct hpi_adapter_obj *pao,
223 struct hpi_hw_obj *phw = pao->priv;
227 if (pao->has_control_cache) {
229 err = hpi6000_update_control_cache(pao, phm);
245 hw_message(pao, phm, phr);
248 hw_message(pao, phm, phr);
254 hw_message(pao, phm, phr);
259 static void adapter_message(struct hpi_adapter_obj *pao,
264 adapter_get_asserts(pao, phm, phr);
268 adapter_delete(pao, phm, phr);
272 hw_message(pao, phm, phr);
277 static void outstream_message(struct hpi_adapter_obj *pao,
291 hw_message(pao, phm, phr);
296 static void instream_message(struct hpi_adapter_obj *pao,
311 hw_message(pao, phm, phr);
323 struct hpi_adapter_obj *pao = NULL;
326 pao = hpi_find_adapter(phm->adapter_index);
327 if (!pao) {
336 if (pao->dsp_crashed >= 10) {
360 adapter_message(pao, phm, phr);
364 control_message(pao, phm, phr);
368 outstream_message(pao, phm, phr);
372 instream_message(pao, phm, phr);
376 hw_message(pao, phm, phr);
400 struct hpi_adapter_obj *pao;
433 pao = hpi_find_adapter(ao.index);
434 if (!pao) {
442 struct hpi_hw_obj *phw = pao->priv;
443 phw->ado[dsp_index].pa_parent_adapter = pao;
451 static void adapter_delete(struct hpi_adapter_obj *pao,
454 delete_adapter_obj(pao);
455 hpi_delete_adapter(pao);
460 static short create_adapter_obj(struct hpi_adapter_obj *pao,
467 struct hpi_hw_obj *phw = pao->priv;
472 phw->dw2040_HPICSR = pao->pci.ap_mem_base[0];
473 phw->dw2040_HPIDSP = pao->pci.ap_mem_base[1];
499 phw->ado[dsp_index].pa_parent_adapter = pao;
503 pao->has_control_cache = 0;
510 boot_error = hpi6000_adapter_boot_load_dsp(pao, pos_error_code);
539 error = hpi6000_message_response_sequence(pao, 0, &hm, &hr0);
545 error = hpi6000_message_response_sequence(pao, 1, &hm,
550 pao->type = hr0.u.ax.info.adapter_type;
551 pao->index = hr0.u.ax.info.adapter_index;
572 pao->has_control_cache = 1;
575 HPI_DEBUG_LOG(DEBUG, "get adapter info ASI%04X index %d\n", pao->type,
576 pao->index);
579 phw->p_cache->adap_idx = pao->index;
581 return hpi_add_adapter(pao);
584 static void delete_adapter_obj(struct hpi_adapter_obj *pao)
586 struct hpi_hw_obj *phw = pao->priv;
588 if (pao->has_control_cache)
600 static void adapter_get_asserts(struct hpi_adapter_obj *pao,
618 hw_message(pao, phm, phr); /*get DSP asserts */
626 static short hpi6000_adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
629 struct hpi_hw_obj *phw = pao->priv;
649 switch (pao->pci.pci_dev->subsystem_device) {
936 error = hpi_dsp_code_open(boot_load_family, pao->pci.pci_dev,
964 error = hpi6000_dsp_block_write32(pao, (u16)dsp_index,
1046 && hpi6000_check_PCI2040_error_flag(pao,
1089 if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev->
1095 if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev->
1207 static u16 hpi6000_dsp_block_write32(struct hpi_adapter_obj *pao,
1210 struct hpi_hw_obj *phw = pao->priv;
1229 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE)
1245 static u16 hpi6000_dsp_block_read32(struct hpi_adapter_obj *pao,
1248 struct hpi_hw_obj *phw = pao->priv;
1268 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
1285 static short hpi6000_message_response_sequence(struct hpi_adapter_obj *pao,
1288 struct hpi_hw_obj *phw = pao->priv;
1297 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
1299 pao->dsp_crashed++;
1302 pao->dsp_crashed = 0;
1312 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
1323 if (hpi6000_dsp_block_write32(pao, dsp_index, address, p_data,
1327 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_GET_RESP))
1331 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_RESP);
1342 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
1355 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout);
1364 if (hpi6000_dsp_block_read32(pao, dsp_index, address, p_data,
1369 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
1404 static short hpi6000_send_data(struct hpi_adapter_obj *pao, u16 dsp_index,
1407 struct hpi_hw_obj *phw = pao->priv;
1420 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
1424 if (hpi6000_send_host_command(pao, dsp_index,
1430 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_SEND_DATA);
1440 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ));
1456 if (hpi6000_dsp_block_write32(pao, dsp_index,
1465 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
1477 static short hpi6000_get_data(struct hpi_adapter_obj *pao, u16 dsp_index,
1480 struct hpi_hw_obj *phw = pao->priv;
1491 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
1495 if (hpi6000_send_host_command(pao, dsp_index,
1500 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_DATA);
1509 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ));
1518 if (hpi6000_dsp_block_read32(pao, dsp_index,
1527 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
1541 static short hpi6000_send_host_command(struct hpi_adapter_obj *pao,
1544 struct hpi_hw_obj *phw = pao->priv;
1553 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE) && --timeout);
1565 static short hpi6000_check_PCI2040_error_flag(struct hpi_adapter_obj *pao,
1570 struct hpi_hw_obj *phw = pao->priv;
1587 static short hpi6000_wait_dsp_ack(struct hpi_adapter_obj *pao, u16 dsp_index,
1590 struct hpi_hw_obj *phw = pao->priv;
1614 && !hpi6000_check_PCI2040_error_flag(pao, H6READ))
1629 static short hpi6000_update_control_cache(struct hpi_adapter_obj *pao,
1633 struct hpi_hw_obj *phw = pao->priv;
1639 hpios_dsplock_lock(pao);
1646 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout);
1667 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
1680 if (hpi6000_dsp_block_read32(pao, dsp_index, address,
1691 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE)
1702 hpios_dsplock_unlock(pao);
1707 static u16 get_dsp_index(struct hpi_adapter_obj *pao, struct hpi_message *phm)
1728 static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
1733 struct hpi_hw_obj *phw = pao->priv;
1739 dsp_index = get_dsp_index(pao, phm);
1748 add_index = get_dsp_index(pao, &hm);
1756 hpios_dsplock_lock(pao);
1757 error = hpi6000_message_response_sequence(pao, dsp_index, phm, phr);
1768 error = hpi6000_send_data(pao, dsp_index, phm, phr);
1772 error = hpi6000_get_data(pao, dsp_index, phm, phr);
1779 error = hpi6000_message_response_sequence(pao,
1799 hpios_dsplock_unlock(pao);