Lines Matching refs: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, in control_message() argument
223 struct hpi_hw_obj *phw = pao->priv; in control_message()
227 if (pao->has_control_cache) { in control_message()
229 err = hpi6000_update_control_cache(pao, phm); in control_message()
245 hw_message(pao, phm, phr); in control_message()
248 hw_message(pao, phm, phr); in control_message()
254 hw_message(pao, phm, phr); in control_message()
259 static void adapter_message(struct hpi_adapter_obj *pao, in adapter_message() argument
264 adapter_get_asserts(pao, phm, phr); in adapter_message()
268 adapter_delete(pao, phm, phr); in adapter_message()
272 hw_message(pao, phm, phr); in adapter_message()
277 static void outstream_message(struct hpi_adapter_obj *pao, in outstream_message() argument
291 hw_message(pao, phm, phr); in outstream_message()
296 static void instream_message(struct hpi_adapter_obj *pao, in instream_message() argument
311 hw_message(pao, phm, phr); in instream_message()
323 struct hpi_adapter_obj *pao = NULL; in HPI_6000() local
326 pao = hpi_find_adapter(phm->adapter_index); in HPI_6000()
327 if (!pao) { in HPI_6000()
336 if (pao->dsp_crashed >= 10) { in HPI_6000()
360 adapter_message(pao, phm, phr); in HPI_6000()
364 control_message(pao, phm, phr); in HPI_6000()
368 outstream_message(pao, phm, phr); in HPI_6000()
372 instream_message(pao, phm, phr); in HPI_6000()
376 hw_message(pao, phm, phr); in HPI_6000()
400 struct hpi_adapter_obj *pao; in subsys_create_adapter() local
433 pao = hpi_find_adapter(ao.index); in subsys_create_adapter()
434 if (!pao) { in subsys_create_adapter()
442 struct hpi_hw_obj *phw = pao->priv; in subsys_create_adapter()
443 phw->ado[dsp_index].pa_parent_adapter = pao; in subsys_create_adapter()
451 static void adapter_delete(struct hpi_adapter_obj *pao, in adapter_delete() argument
454 delete_adapter_obj(pao); in adapter_delete()
455 hpi_delete_adapter(pao); in adapter_delete()
460 static short create_adapter_obj(struct hpi_adapter_obj *pao, in create_adapter_obj() argument
467 struct hpi_hw_obj *phw = pao->priv; in create_adapter_obj()
472 phw->dw2040_HPICSR = pao->pci.ap_mem_base[0]; in create_adapter_obj()
473 phw->dw2040_HPIDSP = pao->pci.ap_mem_base[1]; in create_adapter_obj()
499 phw->ado[dsp_index].pa_parent_adapter = pao; in create_adapter_obj()
503 pao->has_control_cache = 0; in create_adapter_obj()
510 boot_error = hpi6000_adapter_boot_load_dsp(pao, pos_error_code); in create_adapter_obj()
539 error = hpi6000_message_response_sequence(pao, 0, &hm, &hr0); in create_adapter_obj()
545 error = hpi6000_message_response_sequence(pao, 1, &hm, in create_adapter_obj()
550 pao->type = hr0.u.ax.info.adapter_type; in create_adapter_obj()
551 pao->index = hr0.u.ax.info.adapter_index; in create_adapter_obj()
572 pao->has_control_cache = 1; in create_adapter_obj()
575 HPI_DEBUG_LOG(DEBUG, "get adapter info ASI%04X index %d\n", pao->type, in create_adapter_obj()
576 pao->index); in create_adapter_obj()
579 phw->p_cache->adap_idx = pao->index; in create_adapter_obj()
581 return hpi_add_adapter(pao); in create_adapter_obj()
584 static void delete_adapter_obj(struct hpi_adapter_obj *pao) in delete_adapter_obj() argument
586 struct hpi_hw_obj *phw = pao->priv; in delete_adapter_obj()
588 if (pao->has_control_cache) in delete_adapter_obj()
600 static void adapter_get_asserts(struct hpi_adapter_obj *pao, in adapter_get_asserts() argument
618 hw_message(pao, phm, phr); /*get DSP asserts */ in adapter_get_asserts()
626 static short hpi6000_adapter_boot_load_dsp(struct hpi_adapter_obj *pao, in hpi6000_adapter_boot_load_dsp() argument
629 struct hpi_hw_obj *phw = pao->priv; in hpi6000_adapter_boot_load_dsp()
649 switch (pao->pci.pci_dev->subsystem_device) { in hpi6000_adapter_boot_load_dsp()
936 error = hpi_dsp_code_open(boot_load_family, pao->pci.pci_dev, in hpi6000_adapter_boot_load_dsp()
964 error = hpi6000_dsp_block_write32(pao, (u16)dsp_index, in hpi6000_adapter_boot_load_dsp()
1046 && hpi6000_check_PCI2040_error_flag(pao, in hpi6000_adapter_boot_load_dsp()
1089 if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev-> in hpi6000_adapter_boot_load_dsp()
1095 if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev-> in hpi6000_adapter_boot_load_dsp()
1207 static u16 hpi6000_dsp_block_write32(struct hpi_adapter_obj *pao, in hpi6000_dsp_block_write32() argument
1210 struct hpi_hw_obj *phw = pao->priv; in hpi6000_dsp_block_write32()
1229 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE) in hpi6000_dsp_block_write32()
1245 static u16 hpi6000_dsp_block_read32(struct hpi_adapter_obj *pao, in hpi6000_dsp_block_read32() argument
1248 struct hpi_hw_obj *phw = pao->priv; in hpi6000_dsp_block_read32()
1267 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) in hpi6000_dsp_block_read32()
1283 static short hpi6000_message_response_sequence(struct hpi_adapter_obj *pao, in hpi6000_message_response_sequence() argument
1286 struct hpi_hw_obj *phw = pao->priv; in hpi6000_message_response_sequence()
1295 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE); in hpi6000_message_response_sequence()
1297 pao->dsp_crashed++; in hpi6000_message_response_sequence()
1300 pao->dsp_crashed = 0; in hpi6000_message_response_sequence()
1310 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) in hpi6000_message_response_sequence()
1321 if (hpi6000_dsp_block_write32(pao, dsp_index, address, p_data, in hpi6000_message_response_sequence()
1325 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_GET_RESP)) in hpi6000_message_response_sequence()
1329 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_RESP); in hpi6000_message_response_sequence()
1340 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) in hpi6000_message_response_sequence()
1353 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout); in hpi6000_message_response_sequence()
1362 if (hpi6000_dsp_block_read32(pao, dsp_index, address, p_data, in hpi6000_message_response_sequence()
1367 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE)) in hpi6000_message_response_sequence()
1402 static short hpi6000_send_data(struct hpi_adapter_obj *pao, u16 dsp_index, in hpi6000_send_data() argument
1405 struct hpi_hw_obj *phw = pao->priv; in hpi6000_send_data()
1418 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE); in hpi6000_send_data()
1422 if (hpi6000_send_host_command(pao, dsp_index, in hpi6000_send_data()
1428 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_SEND_DATA); in hpi6000_send_data()
1438 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)); in hpi6000_send_data()
1454 if (hpi6000_dsp_block_write32(pao, dsp_index, in hpi6000_send_data()
1463 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE)) in hpi6000_send_data()
1475 static short hpi6000_get_data(struct hpi_adapter_obj *pao, u16 dsp_index, in hpi6000_get_data() argument
1478 struct hpi_hw_obj *phw = pao->priv; in hpi6000_get_data()
1489 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE); in hpi6000_get_data()
1493 if (hpi6000_send_host_command(pao, dsp_index, in hpi6000_get_data()
1498 ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_DATA); in hpi6000_get_data()
1507 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ)); in hpi6000_get_data()
1516 if (hpi6000_dsp_block_read32(pao, dsp_index, in hpi6000_get_data()
1525 if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE)) in hpi6000_get_data()
1539 static short hpi6000_send_host_command(struct hpi_adapter_obj *pao, in hpi6000_send_host_command() argument
1542 struct hpi_hw_obj *phw = pao->priv; in hpi6000_send_host_command()
1551 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE) && --timeout); in hpi6000_send_host_command()
1563 static short hpi6000_check_PCI2040_error_flag(struct hpi_adapter_obj *pao, in hpi6000_check_PCI2040_error_flag() argument
1568 struct hpi_hw_obj *phw = pao->priv; in hpi6000_check_PCI2040_error_flag()
1585 static short hpi6000_wait_dsp_ack(struct hpi_adapter_obj *pao, u16 dsp_index, in hpi6000_wait_dsp_ack() argument
1588 struct hpi_hw_obj *phw = pao->priv; in hpi6000_wait_dsp_ack()
1612 && !hpi6000_check_PCI2040_error_flag(pao, H6READ)) in hpi6000_wait_dsp_ack()
1627 static short hpi6000_update_control_cache(struct hpi_adapter_obj *pao, in hpi6000_update_control_cache() argument
1631 struct hpi_hw_obj *phw = pao->priv; in hpi6000_update_control_cache()
1637 hpios_dsplock_lock(pao); in hpi6000_update_control_cache()
1644 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout); in hpi6000_update_control_cache()
1665 } while (hpi6000_check_PCI2040_error_flag(pao, H6READ) in hpi6000_update_control_cache()
1678 if (hpi6000_dsp_block_read32(pao, dsp_index, address, in hpi6000_update_control_cache()
1689 } while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE) in hpi6000_update_control_cache()
1700 hpios_dsplock_unlock(pao); in hpi6000_update_control_cache()
1705 static u16 get_dsp_index(struct hpi_adapter_obj *pao, struct hpi_message *phm) in get_dsp_index() argument
1726 static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm, in hw_message() argument
1731 struct hpi_hw_obj *phw = pao->priv; in hw_message()
1737 dsp_index = get_dsp_index(pao, phm); in hw_message()
1746 add_index = get_dsp_index(pao, &hm); in hw_message()
1754 hpios_dsplock_lock(pao); in hw_message()
1755 error = hpi6000_message_response_sequence(pao, dsp_index, phm, phr); in hw_message()
1766 error = hpi6000_send_data(pao, dsp_index, phm, phr); in hw_message()
1770 error = hpi6000_get_data(pao, dsp_index, phm, phr); in hw_message()
1777 error = hpi6000_message_response_sequence(pao, in hw_message()
1797 hpios_dsplock_unlock(pao); in hw_message()