pao               145 sound/pci/asihpi/hpi6000.c static u16 hpi6000_dsp_block_write32(struct hpi_adapter_obj *pao,
pao               147 sound/pci/asihpi/hpi6000.c static u16 hpi6000_dsp_block_read32(struct hpi_adapter_obj *pao,
pao               150 sound/pci/asihpi/hpi6000.c static short hpi6000_adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
pao               152 sound/pci/asihpi/hpi6000.c static short hpi6000_check_PCI2040_error_flag(struct hpi_adapter_obj *pao,
pao               157 sound/pci/asihpi/hpi6000.c static short hpi6000_update_control_cache(struct hpi_adapter_obj *pao,
pao               159 sound/pci/asihpi/hpi6000.c static short hpi6000_message_response_sequence(struct hpi_adapter_obj *pao,
pao               162 sound/pci/asihpi/hpi6000.c static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
pao               165 sound/pci/asihpi/hpi6000.c static short hpi6000_wait_dsp_ack(struct hpi_adapter_obj *pao, u16 dsp_index,
pao               168 sound/pci/asihpi/hpi6000.c static short hpi6000_send_host_command(struct hpi_adapter_obj *pao,
pao               173 sound/pci/asihpi/hpi6000.c static short hpi6000_send_data(struct hpi_adapter_obj *pao, u16 dsp_index,
pao               176 sound/pci/asihpi/hpi6000.c static short hpi6000_get_data(struct hpi_adapter_obj *pao, u16 dsp_index,
pao               192 sound/pci/asihpi/hpi6000.c static void adapter_delete(struct hpi_adapter_obj *pao,
pao               195 sound/pci/asihpi/hpi6000.c static void adapter_get_asserts(struct hpi_adapter_obj *pao,
pao               198 sound/pci/asihpi/hpi6000.c static short create_adapter_obj(struct hpi_adapter_obj *pao,
pao               201 sound/pci/asihpi/hpi6000.c static void delete_adapter_obj(struct hpi_adapter_obj *pao);
pao               220 sound/pci/asihpi/hpi6000.c static void control_message(struct hpi_adapter_obj *pao,
pao               223 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao               227 sound/pci/asihpi/hpi6000.c 		if (pao->has_control_cache) {
pao               229 sound/pci/asihpi/hpi6000.c 			err = hpi6000_update_control_cache(pao, phm);
pao               245 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               248 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               254 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               259 sound/pci/asihpi/hpi6000.c static void adapter_message(struct hpi_adapter_obj *pao,
pao               264 sound/pci/asihpi/hpi6000.c 		adapter_get_asserts(pao, phm, phr);
pao               268 sound/pci/asihpi/hpi6000.c 		adapter_delete(pao, phm, phr);
pao               272 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               277 sound/pci/asihpi/hpi6000.c static void outstream_message(struct hpi_adapter_obj *pao,
pao               291 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               296 sound/pci/asihpi/hpi6000.c static void instream_message(struct hpi_adapter_obj *pao,
pao               311 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);
pao               323 sound/pci/asihpi/hpi6000.c 	struct hpi_adapter_obj *pao = NULL;
pao               326 sound/pci/asihpi/hpi6000.c 		pao = hpi_find_adapter(phm->adapter_index);
pao               327 sound/pci/asihpi/hpi6000.c 		if (!pao) {
pao               336 sound/pci/asihpi/hpi6000.c 		if (pao->dsp_crashed >= 10) {
pao               360 sound/pci/asihpi/hpi6000.c 			adapter_message(pao, phm, phr);
pao               364 sound/pci/asihpi/hpi6000.c 			control_message(pao, phm, phr);
pao               368 sound/pci/asihpi/hpi6000.c 			outstream_message(pao, phm, phr);
pao               372 sound/pci/asihpi/hpi6000.c 			instream_message(pao, phm, phr);
pao               376 sound/pci/asihpi/hpi6000.c 			hw_message(pao, phm, phr);
pao               400 sound/pci/asihpi/hpi6000.c 	struct hpi_adapter_obj *pao;
pao               433 sound/pci/asihpi/hpi6000.c 	pao = hpi_find_adapter(ao.index);
pao               434 sound/pci/asihpi/hpi6000.c 	if (!pao) {
pao               442 sound/pci/asihpi/hpi6000.c 		struct hpi_hw_obj *phw = pao->priv;
pao               443 sound/pci/asihpi/hpi6000.c 		phw->ado[dsp_index].pa_parent_adapter = pao;
pao               451 sound/pci/asihpi/hpi6000.c static void adapter_delete(struct hpi_adapter_obj *pao,
pao               454 sound/pci/asihpi/hpi6000.c 	delete_adapter_obj(pao);
pao               455 sound/pci/asihpi/hpi6000.c 	hpi_delete_adapter(pao);
pao               460 sound/pci/asihpi/hpi6000.c static short create_adapter_obj(struct hpi_adapter_obj *pao,
pao               467 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao               472 sound/pci/asihpi/hpi6000.c 	phw->dw2040_HPICSR = pao->pci.ap_mem_base[0];
pao               473 sound/pci/asihpi/hpi6000.c 	phw->dw2040_HPIDSP = pao->pci.ap_mem_base[1];
pao               499 sound/pci/asihpi/hpi6000.c 		phw->ado[dsp_index].pa_parent_adapter = pao;
pao               503 sound/pci/asihpi/hpi6000.c 	pao->has_control_cache = 0;
pao               510 sound/pci/asihpi/hpi6000.c 	boot_error = hpi6000_adapter_boot_load_dsp(pao, pos_error_code);
pao               539 sound/pci/asihpi/hpi6000.c 		error = hpi6000_message_response_sequence(pao, 0, &hm, &hr0);
pao               545 sound/pci/asihpi/hpi6000.c 			error = hpi6000_message_response_sequence(pao, 1, &hm,
pao               550 sound/pci/asihpi/hpi6000.c 		pao->type = hr0.u.ax.info.adapter_type;
pao               551 sound/pci/asihpi/hpi6000.c 		pao->index = hr0.u.ax.info.adapter_index;
pao               572 sound/pci/asihpi/hpi6000.c 			pao->has_control_cache = 1;
pao               575 sound/pci/asihpi/hpi6000.c 	HPI_DEBUG_LOG(DEBUG, "get adapter info ASI%04X index %d\n", pao->type,
pao               576 sound/pci/asihpi/hpi6000.c 		pao->index);
pao               579 sound/pci/asihpi/hpi6000.c 		phw->p_cache->adap_idx = pao->index;
pao               581 sound/pci/asihpi/hpi6000.c 	return hpi_add_adapter(pao);
pao               584 sound/pci/asihpi/hpi6000.c static void delete_adapter_obj(struct hpi_adapter_obj *pao)
pao               586 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao               588 sound/pci/asihpi/hpi6000.c 	if (pao->has_control_cache)
pao               600 sound/pci/asihpi/hpi6000.c static void adapter_get_asserts(struct hpi_adapter_obj *pao,
pao               618 sound/pci/asihpi/hpi6000.c 		hw_message(pao, phm, phr);	/*get DSP asserts */
pao               626 sound/pci/asihpi/hpi6000.c static short hpi6000_adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
pao               629 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao               649 sound/pci/asihpi/hpi6000.c 	switch (pao->pci.pci_dev->subsystem_device) {
pao               936 sound/pci/asihpi/hpi6000.c 		error = hpi_dsp_code_open(boot_load_family, pao->pci.pci_dev,
pao               964 sound/pci/asihpi/hpi6000.c 			error = hpi6000_dsp_block_write32(pao, (u16)dsp_index,
pao              1046 sound/pci/asihpi/hpi6000.c 				&& hpi6000_check_PCI2040_error_flag(pao,
pao              1089 sound/pci/asihpi/hpi6000.c 				if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev->
pao              1095 sound/pci/asihpi/hpi6000.c 				if (HPI_ADAPTER_FAMILY_ASI(pao->pci.pci_dev->
pao              1207 sound/pci/asihpi/hpi6000.c static u16 hpi6000_dsp_block_write32(struct hpi_adapter_obj *pao,
pao              1210 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1229 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE)
pao              1245 sound/pci/asihpi/hpi6000.c static u16 hpi6000_dsp_block_read32(struct hpi_adapter_obj *pao,
pao              1248 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1268 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
pao              1285 sound/pci/asihpi/hpi6000.c static short hpi6000_message_response_sequence(struct hpi_adapter_obj *pao,
pao              1288 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1297 sound/pci/asihpi/hpi6000.c 	ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
pao              1299 sound/pci/asihpi/hpi6000.c 		pao->dsp_crashed++;
pao              1302 sound/pci/asihpi/hpi6000.c 	pao->dsp_crashed = 0;
pao              1312 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
pao              1323 sound/pci/asihpi/hpi6000.c 	if (hpi6000_dsp_block_write32(pao, dsp_index, address, p_data,
pao              1327 sound/pci/asihpi/hpi6000.c 	if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_GET_RESP))
pao              1331 sound/pci/asihpi/hpi6000.c 	ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_RESP);
pao              1342 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
pao              1355 sound/pci/asihpi/hpi6000.c 	} while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout);
pao              1364 sound/pci/asihpi/hpi6000.c 	if (hpi6000_dsp_block_read32(pao, dsp_index, address, p_data,
pao              1369 sound/pci/asihpi/hpi6000.c 	if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
pao              1404 sound/pci/asihpi/hpi6000.c static short hpi6000_send_data(struct hpi_adapter_obj *pao, u16 dsp_index,
pao              1407 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1420 sound/pci/asihpi/hpi6000.c 		ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
pao              1424 sound/pci/asihpi/hpi6000.c 		if (hpi6000_send_host_command(pao, dsp_index,
pao              1430 sound/pci/asihpi/hpi6000.c 		ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_SEND_DATA);
pao              1440 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6READ));
pao              1456 sound/pci/asihpi/hpi6000.c 				if (hpi6000_dsp_block_write32(pao, dsp_index,
pao              1465 sound/pci/asihpi/hpi6000.c 		if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
pao              1477 sound/pci/asihpi/hpi6000.c static short hpi6000_get_data(struct hpi_adapter_obj *pao, u16 dsp_index,
pao              1480 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1491 sound/pci/asihpi/hpi6000.c 		ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_IDLE);
pao              1495 sound/pci/asihpi/hpi6000.c 		if (hpi6000_send_host_command(pao, dsp_index,
pao              1500 sound/pci/asihpi/hpi6000.c 		ack = hpi6000_wait_dsp_ack(pao, dsp_index, HPI_HIF_GET_DATA);
pao              1509 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6READ));
pao              1518 sound/pci/asihpi/hpi6000.c 				if (hpi6000_dsp_block_read32(pao, dsp_index,
pao              1527 sound/pci/asihpi/hpi6000.c 		if (hpi6000_send_host_command(pao, dsp_index, HPI_HIF_IDLE))
pao              1541 sound/pci/asihpi/hpi6000.c static short hpi6000_send_host_command(struct hpi_adapter_obj *pao,
pao              1544 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1553 sound/pci/asihpi/hpi6000.c 	} while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE) && --timeout);
pao              1565 sound/pci/asihpi/hpi6000.c static short hpi6000_check_PCI2040_error_flag(struct hpi_adapter_obj *pao,
pao              1570 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1587 sound/pci/asihpi/hpi6000.c static short hpi6000_wait_dsp_ack(struct hpi_adapter_obj *pao, u16 dsp_index,
pao              1590 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1614 sound/pci/asihpi/hpi6000.c 			&& !hpi6000_check_PCI2040_error_flag(pao, H6READ))
pao              1629 sound/pci/asihpi/hpi6000.c static short hpi6000_update_control_cache(struct hpi_adapter_obj *pao,
pao              1633 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1639 sound/pci/asihpi/hpi6000.c 	hpios_dsplock_lock(pao);
pao              1646 sound/pci/asihpi/hpi6000.c 	} while (hpi6000_check_PCI2040_error_flag(pao, H6READ) && --timeout);
pao              1667 sound/pci/asihpi/hpi6000.c 			} while (hpi6000_check_PCI2040_error_flag(pao, H6READ)
pao              1680 sound/pci/asihpi/hpi6000.c 		if (hpi6000_dsp_block_read32(pao, dsp_index, address,
pao              1691 sound/pci/asihpi/hpi6000.c 		} while (hpi6000_check_PCI2040_error_flag(pao, H6WRITE)
pao              1702 sound/pci/asihpi/hpi6000.c 	hpios_dsplock_unlock(pao);
pao              1707 sound/pci/asihpi/hpi6000.c static u16 get_dsp_index(struct hpi_adapter_obj *pao, struct hpi_message *phm)
pao              1728 sound/pci/asihpi/hpi6000.c static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
pao              1733 sound/pci/asihpi/hpi6000.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1739 sound/pci/asihpi/hpi6000.c 		dsp_index = get_dsp_index(pao, phm);
pao              1748 sound/pci/asihpi/hpi6000.c 			add_index = get_dsp_index(pao, &hm);
pao              1756 sound/pci/asihpi/hpi6000.c 	hpios_dsplock_lock(pao);
pao              1757 sound/pci/asihpi/hpi6000.c 	error = hpi6000_message_response_sequence(pao, dsp_index, phm, phr);
pao              1768 sound/pci/asihpi/hpi6000.c 		error = hpi6000_send_data(pao, dsp_index, phm, phr);
pao              1772 sound/pci/asihpi/hpi6000.c 		error = hpi6000_get_data(pao, dsp_index, phm, phr);
pao              1779 sound/pci/asihpi/hpi6000.c 				error = hpi6000_message_response_sequence(pao,
pao              1799 sound/pci/asihpi/hpi6000.c 	hpios_dsplock_unlock(pao);
pao               134 sound/pci/asihpi/hpi6205.c static u16 adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
pao               137 sound/pci/asihpi/hpi6205.c static u16 message_response_sequence(struct hpi_adapter_obj *pao,
pao               140 sound/pci/asihpi/hpi6205.c static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
pao               147 sound/pci/asihpi/hpi6205.c static void adapter_delete(struct hpi_adapter_obj *pao,
pao               150 sound/pci/asihpi/hpi6205.c static u16 create_adapter_obj(struct hpi_adapter_obj *pao,
pao               153 sound/pci/asihpi/hpi6205.c static void delete_adapter_obj(struct hpi_adapter_obj *pao);
pao               155 sound/pci/asihpi/hpi6205.c static int adapter_irq_query_and_clear(struct hpi_adapter_obj *pao,
pao               158 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_allocate(struct hpi_adapter_obj *pao,
pao               161 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_get_info(struct hpi_adapter_obj *pao,
pao               164 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_free(struct hpi_adapter_obj *pao,
pao               166 sound/pci/asihpi/hpi6205.c static void outstream_write(struct hpi_adapter_obj *pao,
pao               169 sound/pci/asihpi/hpi6205.c static void outstream_get_info(struct hpi_adapter_obj *pao,
pao               172 sound/pci/asihpi/hpi6205.c static void outstream_start(struct hpi_adapter_obj *pao,
pao               175 sound/pci/asihpi/hpi6205.c static void outstream_open(struct hpi_adapter_obj *pao,
pao               178 sound/pci/asihpi/hpi6205.c static void outstream_reset(struct hpi_adapter_obj *pao,
pao               181 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_allocate(struct hpi_adapter_obj *pao,
pao               184 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_get_info(struct hpi_adapter_obj *pao,
pao               187 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_free(struct hpi_adapter_obj *pao,
pao               190 sound/pci/asihpi/hpi6205.c static void instream_read(struct hpi_adapter_obj *pao,
pao               193 sound/pci/asihpi/hpi6205.c static void instream_get_info(struct hpi_adapter_obj *pao,
pao               196 sound/pci/asihpi/hpi6205.c static void instream_start(struct hpi_adapter_obj *pao,
pao               199 sound/pci/asihpi/hpi6205.c static u32 boot_loader_read_mem32(struct hpi_adapter_obj *pao, int dsp_index,
pao               202 sound/pci/asihpi/hpi6205.c static void boot_loader_write_mem32(struct hpi_adapter_obj *pao,
pao               205 sound/pci/asihpi/hpi6205.c static u16 boot_loader_config_emif(struct hpi_adapter_obj *pao,
pao               208 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_memory(struct hpi_adapter_obj *pao, int dsp_index,
pao               211 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_internal_memory(struct hpi_adapter_obj *pao,
pao               214 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_external_memory(struct hpi_adapter_obj *pao,
pao               217 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_pld(struct hpi_adapter_obj *pao, int dsp_index);
pao               221 sound/pci/asihpi/hpi6205.c static void subsys_message(struct hpi_adapter_obj *pao,
pao               234 sound/pci/asihpi/hpi6205.c static void control_message(struct hpi_adapter_obj *pao,
pao               238 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               243 sound/pci/asihpi/hpi6205.c 		if (pao->has_control_cache) {
pao               252 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               257 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               260 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               261 sound/pci/asihpi/hpi6205.c 		if (pao->has_control_cache)
pao               271 sound/pci/asihpi/hpi6205.c static void adapter_message(struct hpi_adapter_obj *pao,
pao               276 sound/pci/asihpi/hpi6205.c 		adapter_delete(pao, phm, phr);
pao               279 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               284 sound/pci/asihpi/hpi6205.c static void outstream_message(struct hpi_adapter_obj *pao,
pao               299 sound/pci/asihpi/hpi6205.c 		outstream_write(pao, phm, phr);
pao               302 sound/pci/asihpi/hpi6205.c 		outstream_get_info(pao, phm, phr);
pao               305 sound/pci/asihpi/hpi6205.c 		outstream_host_buffer_allocate(pao, phm, phr);
pao               308 sound/pci/asihpi/hpi6205.c 		outstream_host_buffer_get_info(pao, phm, phr);
pao               311 sound/pci/asihpi/hpi6205.c 		outstream_host_buffer_free(pao, phm, phr);
pao               314 sound/pci/asihpi/hpi6205.c 		outstream_start(pao, phm, phr);
pao               317 sound/pci/asihpi/hpi6205.c 		outstream_open(pao, phm, phr);
pao               320 sound/pci/asihpi/hpi6205.c 		outstream_reset(pao, phm, phr);
pao               323 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               328 sound/pci/asihpi/hpi6205.c static void instream_message(struct hpi_adapter_obj *pao,
pao               343 sound/pci/asihpi/hpi6205.c 		instream_read(pao, phm, phr);
pao               346 sound/pci/asihpi/hpi6205.c 		instream_get_info(pao, phm, phr);
pao               349 sound/pci/asihpi/hpi6205.c 		instream_host_buffer_allocate(pao, phm, phr);
pao               352 sound/pci/asihpi/hpi6205.c 		instream_host_buffer_get_info(pao, phm, phr);
pao               355 sound/pci/asihpi/hpi6205.c 		instream_host_buffer_free(pao, phm, phr);
pao               358 sound/pci/asihpi/hpi6205.c 		instream_start(pao, phm, phr);
pao               361 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               371 sound/pci/asihpi/hpi6205.c void _HPI_6205(struct hpi_adapter_obj *pao, struct hpi_message *phm,
pao               374 sound/pci/asihpi/hpi6205.c 	if (pao && (pao->dsp_crashed >= 10)
pao               393 sound/pci/asihpi/hpi6205.c 			subsys_message(pao, phm, phr);
pao               397 sound/pci/asihpi/hpi6205.c 			adapter_message(pao, phm, phr);
pao               401 sound/pci/asihpi/hpi6205.c 			control_message(pao, phm, phr);
pao               405 sound/pci/asihpi/hpi6205.c 			outstream_message(pao, phm, phr);
pao               409 sound/pci/asihpi/hpi6205.c 			instream_message(pao, phm, phr);
pao               413 sound/pci/asihpi/hpi6205.c 			hw_message(pao, phm, phr);
pao               426 sound/pci/asihpi/hpi6205.c 	struct hpi_adapter_obj *pao = NULL;
pao               430 sound/pci/asihpi/hpi6205.c 		pao = hpi_find_adapter(phm->adapter_index);
pao               437 sound/pci/asihpi/hpi6205.c 	if (pao)
pao               438 sound/pci/asihpi/hpi6205.c 		_HPI_6205(pao, phm, phr);
pao               491 sound/pci/asihpi/hpi6205.c static void adapter_delete(struct hpi_adapter_obj *pao,
pao               496 sound/pci/asihpi/hpi6205.c 	if (!pao) {
pao               500 sound/pci/asihpi/hpi6205.c 	phw = pao->priv;
pao               503 sound/pci/asihpi/hpi6205.c 	boot_loader_write_mem32(pao, 0, C6205_BAR0_TIMER1_CTL, 0);
pao               507 sound/pci/asihpi/hpi6205.c 	delete_adapter_obj(pao);
pao               508 sound/pci/asihpi/hpi6205.c 	hpi_delete_adapter(pao);
pao               515 sound/pci/asihpi/hpi6205.c static u16 create_adapter_obj(struct hpi_adapter_obj *pao,
pao               518 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               525 sound/pci/asihpi/hpi6205.c 	pao->dsp_crashed = 0;
pao               532 sound/pci/asihpi/hpi6205.c 		pao->pci.ap_mem_base[1] +
pao               533 sound/pci/asihpi/hpi6205.c 		C6205_BAR1_HSR / sizeof(*pao->pci.ap_mem_base[1]);
pao               535 sound/pci/asihpi/hpi6205.c 		pao->pci.ap_mem_base[1] +
pao               536 sound/pci/asihpi/hpi6205.c 		C6205_BAR1_HDCR / sizeof(*pao->pci.ap_mem_base[1]);
pao               538 sound/pci/asihpi/hpi6205.c 		pao->pci.ap_mem_base[1] +
pao               539 sound/pci/asihpi/hpi6205.c 		C6205_BAR1_DSPP / sizeof(*pao->pci.ap_mem_base[1]);
pao               541 sound/pci/asihpi/hpi6205.c 	pao->has_control_cache = 0;
pao               545 sound/pci/asihpi/hpi6205.c 			pao->pci.pci_dev))
pao               560 sound/pci/asihpi/hpi6205.c 	err = adapter_boot_load_dsp(pao, pos_error_code);
pao               589 sound/pci/asihpi/hpi6205.c 			pao->pci.pci_dev);
pao               615 sound/pci/asihpi/hpi6205.c 			pao->has_control_cache = 1;
pao               619 sound/pci/asihpi/hpi6205.c 			pao->has_control_cache = 0;
pao               639 sound/pci/asihpi/hpi6205.c 		err = message_response_sequence(pao, &hm, &hr);
pao               648 sound/pci/asihpi/hpi6205.c 		pao->type = hr.u.ax.info.adapter_type;
pao               649 sound/pci/asihpi/hpi6205.c 		pao->index = hr.u.ax.info.adapter_index;
pao               658 sound/pci/asihpi/hpi6205.c 		phw->p_cache->adap_idx = pao->index;
pao               662 sound/pci/asihpi/hpi6205.c 	pao->irq_query_and_clear = adapter_irq_query_and_clear;
pao               663 sound/pci/asihpi/hpi6205.c 	pao->instream_host_buffer_status =
pao               665 sound/pci/asihpi/hpi6205.c 	pao->outstream_host_buffer_status =
pao               668 sound/pci/asihpi/hpi6205.c 	return hpi_add_adapter(pao);
pao               675 sound/pci/asihpi/hpi6205.c static void delete_adapter_obj(struct hpi_adapter_obj *pao)
pao               677 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               708 sound/pci/asihpi/hpi6205.c static int adapter_irq_query_and_clear(struct hpi_adapter_obj *pao,
pao               711 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               729 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_allocate(struct hpi_adapter_obj *pao,
pao               734 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               766 sound/pci/asihpi/hpi6205.c 			pao->pci.pci_dev);
pao               819 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               831 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_get_info(struct hpi_adapter_obj *pao,
pao               834 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               860 sound/pci/asihpi/hpi6205.c static void outstream_host_buffer_free(struct hpi_adapter_obj *pao,
pao               863 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               870 sound/pci/asihpi/hpi6205.c 			hw_message(pao, phm, phr);
pao               892 sound/pci/asihpi/hpi6205.c static void outstream_write(struct hpi_adapter_obj *pao,
pao               895 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               902 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               957 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);	/* send the format to the DSP */
pao               966 sound/pci/asihpi/hpi6205.c static void outstream_get_info(struct hpi_adapter_obj *pao,
pao               969 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao               974 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao               992 sound/pci/asihpi/hpi6205.c static void outstream_start(struct hpi_adapter_obj *pao,
pao               995 sound/pci/asihpi/hpi6205.c 	hw_message(pao, phm, phr);
pao               998 sound/pci/asihpi/hpi6205.c static void outstream_reset(struct hpi_adapter_obj *pao,
pao              1001 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1003 sound/pci/asihpi/hpi6205.c 	hw_message(pao, phm, phr);
pao              1006 sound/pci/asihpi/hpi6205.c static void outstream_open(struct hpi_adapter_obj *pao,
pao              1009 sound/pci/asihpi/hpi6205.c 	outstream_reset(pao, phm, phr);
pao              1015 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_allocate(struct hpi_adapter_obj *pao,
pao              1020 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1048 sound/pci/asihpi/hpi6205.c 			pao->pci.pci_dev);
pao              1096 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao              1108 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_get_info(struct hpi_adapter_obj *pao,
pao              1111 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1137 sound/pci/asihpi/hpi6205.c static void instream_host_buffer_free(struct hpi_adapter_obj *pao,
pao              1140 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1147 sound/pci/asihpi/hpi6205.c 			hw_message(pao, phm, phr);
pao              1165 sound/pci/asihpi/hpi6205.c static void instream_start(struct hpi_adapter_obj *pao,
pao              1168 sound/pci/asihpi/hpi6205.c 	hw_message(pao, phm, phr);
pao              1176 sound/pci/asihpi/hpi6205.c static void instream_read(struct hpi_adapter_obj *pao,
pao              1179 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1188 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao              1227 sound/pci/asihpi/hpi6205.c static void instream_get_info(struct hpi_adapter_obj *pao,
pao              1230 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1234 sound/pci/asihpi/hpi6205.c 		hw_message(pao, phm, phr);
pao              1256 sound/pci/asihpi/hpi6205.c static u16 adapter_boot_load_dsp(struct hpi_adapter_obj *pao,
pao              1259 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1268 sound/pci/asihpi/hpi6205.c 	boot_code_id[1] = pao->pci.pci_dev->subsystem_device;
pao              1341 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, 0x018C0024, 0x00002202);
pao              1344 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, C6205_BAR0_TIMER1_CTL, 0);
pao              1346 sound/pci/asihpi/hpi6205.c 		if (0 != (boot_loader_read_mem32(pao, 0,
pao              1352 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, C6205_BAR0_TIMER1_CTL, 4);
pao              1353 sound/pci/asihpi/hpi6205.c 		if (4 != (boot_loader_read_mem32(pao, 0,
pao              1364 sound/pci/asihpi/hpi6205.c 		err = boot_loader_config_emif(pao, dsp);
pao              1368 sound/pci/asihpi/hpi6205.c 		err = boot_loader_test_internal_memory(pao, dsp);
pao              1372 sound/pci/asihpi/hpi6205.c 		err = boot_loader_test_external_memory(pao, dsp);
pao              1376 sound/pci/asihpi/hpi6205.c 		err = boot_loader_test_pld(pao, dsp);
pao              1381 sound/pci/asihpi/hpi6205.c 		err = hpi_dsp_code_open(boot_code_id[dsp], pao->pci.pci_dev,
pao              1409 sound/pci/asihpi/hpi6205.c 				boot_loader_write_mem32(pao, dsp, address,
pao              1414 sound/pci/asihpi/hpi6205.c 					boot_loader_read_mem32(pao, dsp,
pao              1444 sound/pci/asihpi/hpi6205.c 				data = boot_loader_read_mem32(pao, dsp,
pao              1484 sound/pci/asihpi/hpi6205.c 			boot_loader_write_mem32(pao, 0,
pao              1488 sound/pci/asihpi/hpi6205.c 				boot_loader_read_mem32(pao, 0,
pao              1512 sound/pci/asihpi/hpi6205.c static u32 boot_loader_read_mem32(struct hpi_adapter_obj *pao, int dsp_index,
pao              1515 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1523 sound/pci/asihpi/hpi6205.c 			p_data = pao->pci.ap_mem_base[1] +
pao              1525 sound/pci/asihpi/hpi6205.c 				sizeof(*pao->pci.ap_mem_base[1]);
pao              1538 sound/pci/asihpi/hpi6205.c 			p_data = pao->pci.ap_mem_base[0] +
pao              1545 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIAL_ADDR, address);
pao              1546 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIAH_ADDR, address >> 16);
pao              1547 sound/pci/asihpi/hpi6205.c 		lsb = boot_loader_read_mem32(pao, 0, HPIDL_ADDR);
pao              1548 sound/pci/asihpi/hpi6205.c 		data = boot_loader_read_mem32(pao, 0, HPIDH_ADDR);
pao              1554 sound/pci/asihpi/hpi6205.c static void boot_loader_write_mem32(struct hpi_adapter_obj *pao,
pao              1557 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              1566 sound/pci/asihpi/hpi6205.c 			p_data = pao->pci.ap_mem_base[1] +
pao              1568 sound/pci/asihpi/hpi6205.c 				sizeof(*pao->pci.ap_mem_base[1]);
pao              1580 sound/pci/asihpi/hpi6205.c 			p_data = pao->pci.ap_mem_base[0] +
pao              1586 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIAL_ADDR, address);
pao              1587 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIAH_ADDR, address >> 16);
pao              1590 sound/pci/asihpi/hpi6205.c 		boot_loader_read_mem32(pao, 0, 0);
pao              1592 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIDL_ADDR, data);
pao              1593 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPIDH_ADDR, data >> 16);
pao              1596 sound/pci/asihpi/hpi6205.c 		boot_loader_read_mem32(pao, 0, 0);
pao              1600 sound/pci/asihpi/hpi6205.c static u16 boot_loader_config_emif(struct hpi_adapter_obj *pao, int dsp_index)
pao              1615 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800000, 0x3779);
pao              1626 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800008, setting);
pao              1627 sound/pci/asihpi/hpi6205.c 		if (setting != boot_loader_read_mem32(pao, dsp_index,
pao              1639 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800004, setting);
pao              1640 sound/pci/asihpi/hpi6205.c 		if (setting != boot_loader_read_mem32(pao, dsp_index,
pao              1651 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800010, setting);
pao              1652 sound/pci/asihpi/hpi6205.c 		if (setting != boot_loader_read_mem32(pao, dsp_index,
pao              1662 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800014, setting);
pao              1663 sound/pci/asihpi/hpi6205.c 		if (setting != boot_loader_read_mem32(pao, dsp_index,
pao              1669 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01800018,
pao              1674 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x0180001C,
pao              1683 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPICL_ADDR, write_data);
pao              1684 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, HPICH_ADDR, write_data);
pao              1687 sound/pci/asihpi/hpi6205.c 			0xFFF7 & boot_loader_read_mem32(pao, 0, HPICL_ADDR);
pao              1696 sound/pci/asihpi/hpi6205.c 			boot_loader_write_mem32(pao, 0, HPIAL_ADDR,
pao              1698 sound/pci/asihpi/hpi6205.c 			boot_loader_write_mem32(pao, 0, HPIAH_ADDR,
pao              1701 sound/pci/asihpi/hpi6205.c 				0xFFFF & boot_loader_read_mem32(pao, 0,
pao              1705 sound/pci/asihpi/hpi6205.c 					boot_loader_read_mem32(pao, 0,
pao              1724 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01B7C100, 0x0000);
pao              1727 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01B7C120, 0x8002);
pao              1729 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01B7C11C, 0x8001);
pao              1731 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01B7C118, 0x8000);
pao              1736 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, (0x018C0024L), 0x00002A0A);
pao              1738 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, 0x01B7C100, 0x0001);
pao              1741 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, (0x018C0024L), 0x00002A02);
pao              1745 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, 0, 0x01800004,	/* CE1 */
pao              1754 sound/pci/asihpi/hpi6205.c 		if ((boot_loader_read_mem32(pao, dsp_index, 0x01B7C100) & 0xF)
pao              1760 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, C6713_EMIF_GCTL,
pao              1774 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, C6713_EMIF_CE0,
pao              1796 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, C6713_EMIF_SDRAMEXT,
pao              1816 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, C6713_EMIF_SDRAMCTL,
pao              1822 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index,
pao              1833 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_memory(struct hpi_adapter_obj *pao, int dsp_index,
pao              1850 sound/pci/asihpi/hpi6205.c 			boot_loader_write_mem32(pao, dsp_index, test_addr,
pao              1852 sound/pci/asihpi/hpi6205.c 			data = boot_loader_read_mem32(pao, dsp_index,
pao              1871 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, test_addr, test_data);
pao              1872 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, test_addr + 4, 0);
pao              1873 sound/pci/asihpi/hpi6205.c 		data = boot_loader_read_mem32(pao, dsp_index, test_addr);
pao              1882 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, test_addr, 0x0);
pao              1888 sound/pci/asihpi/hpi6205.c 		boot_loader_write_mem32(pao, dsp_index, test_addr, 0x0);
pao              1893 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_internal_memory(struct hpi_adapter_obj *pao,
pao              1900 sound/pci/asihpi/hpi6205.c 		err = boot_loader_test_memory(pao, dsp_index, 0x00000000,
pao              1904 sound/pci/asihpi/hpi6205.c 			err = boot_loader_test_memory(pao, dsp_index,
pao              1909 sound/pci/asihpi/hpi6205.c 		err = boot_loader_test_memory(pao, dsp_index, 0x00000000,
pao              1913 sound/pci/asihpi/hpi6205.c 			err = boot_loader_test_memory(pao, dsp_index,
pao              1923 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_external_memory(struct hpi_adapter_obj *pao,
pao              1931 sound/pci/asihpi/hpi6205.c 		if (pao->pci.pci_dev->subsystem_device == 0x5000) {
pao              1945 sound/pci/asihpi/hpi6205.c 	if (boot_loader_test_memory(pao, dsp_index, dRAM_start_address,
pao              1951 sound/pci/asihpi/hpi6205.c static u16 boot_loader_test_pld(struct hpi_adapter_obj *pao, int dsp_index)
pao              1956 sound/pci/asihpi/hpi6205.c 		if (pao->pci.pci_dev->subsystem_device == 0x5000) {
pao              1958 sound/pci/asihpi/hpi6205.c 			data = boot_loader_read_mem32(pao, dsp_index,
pao              1962 sound/pci/asihpi/hpi6205.c 			data = boot_loader_read_mem32(pao, dsp_index,
pao              1969 sound/pci/asihpi/hpi6205.c 		if (pao->pci.pci_dev->subsystem_device == 0x8700) {
pao              1971 sound/pci/asihpi/hpi6205.c 			data = boot_loader_read_mem32(pao, dsp_index,
pao              1976 sound/pci/asihpi/hpi6205.c 			boot_loader_write_mem32(pao, dsp_index, 0x90000000,
pao              1986 sound/pci/asihpi/hpi6205.c static short hpi6205_transfer_data(struct hpi_adapter_obj *pao, u8 *p_data,
pao              1989 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              2084 sound/pci/asihpi/hpi6205.c static u16 message_response_sequence(struct hpi_adapter_obj *pao,
pao              2088 sound/pci/asihpi/hpi6205.c 	struct hpi_hw_obj *phw = pao->priv;
pao              2168 sound/pci/asihpi/hpi6205.c static void hw_message(struct hpi_adapter_obj *pao, struct hpi_message *phm,
pao              2174 sound/pci/asihpi/hpi6205.c 	hpios_dsplock_lock(pao);
pao              2176 sound/pci/asihpi/hpi6205.c 	err = message_response_sequence(pao, phm, phr);
pao              2188 sound/pci/asihpi/hpi6205.c 		pao->dsp_crashed++;
pao              2194 sound/pci/asihpi/hpi6205.c 		pao->dsp_crashed = 0;
pao              2202 sound/pci/asihpi/hpi6205.c 		err = hpi6205_transfer_data(pao, phm->u.d.u.data.pb_data,
pao              2208 sound/pci/asihpi/hpi6205.c 		err = hpi6205_transfer_data(pao, phm->u.d.u.data.pb_data,
pao              2216 sound/pci/asihpi/hpi6205.c 	hpios_dsplock_unlock(pao);
pao                57 sound/pci/asihpi/hpicmn.c u16 hpi_add_adapter(struct hpi_adapter_obj *pao)
pao                64 sound/pci/asihpi/hpicmn.c 	if (pao->index >= HPI_MAX_ADAPTERS) {
pao                69 sound/pci/asihpi/hpicmn.c 	if (adapters.adapter[pao->index].type) {
pao                75 sound/pci/asihpi/hpicmn.c 					pao->type, pao->index, a);
pao                76 sound/pci/asihpi/hpicmn.c 				pao->index = a;
pao                85 sound/pci/asihpi/hpicmn.c 	adapters.adapter[pao->index] = *pao;
pao                86 sound/pci/asihpi/hpicmn.c 	hpios_dsplock_init(&adapters.adapter[pao->index]);
pao                94 sound/pci/asihpi/hpicmn.c void hpi_delete_adapter(struct hpi_adapter_obj *pao)
pao                96 sound/pci/asihpi/hpicmn.c 	if (!pao->type) {
pao               102 sound/pci/asihpi/hpicmn.c 	if (adapters.adapter[pao->index].type)
pao               104 sound/pci/asihpi/hpicmn.c 	memset(&adapters.adapter[pao->index], 0, sizeof(adapters.adapter[0]));
pao               115 sound/pci/asihpi/hpicmn.c 	struct hpi_adapter_obj *pao = NULL;
pao               123 sound/pci/asihpi/hpicmn.c 	pao = &adapters.adapter[adapter_index];
pao               124 sound/pci/asihpi/hpicmn.c 	if (pao->type != 0) {
pao               129 sound/pci/asihpi/hpicmn.c 		return pao;
pao                13 sound/pci/asihpi/hpicmn.h typedef int adapter_int_func(struct hpi_adapter_obj *pao, u32 message);
pao                48 sound/pci/asihpi/hpicmn.h u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
pao                50 sound/pci/asihpi/hpicmn.h void hpi_delete_adapter(struct hpi_adapter_obj *pao);