Lines Matching full:ipa
13 #include "ipa.h"
28 * complete, the AP and modem may begin IPA operation. This occurs
29 * only when the AP IPA driver, modem IPA driver, and IPA microcontroller
36 * contains a success result, the AP knows the modem IPA driver is ready.
38 * The modem is responsible for loading firmware on the IPA microcontroller.
53 * - Whenever the AP learns the modem has booted and its IPA QMI service
56 * - On the initial boot, the modem sets up the IPA microcontroller, and
86 struct ipa *ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_server_init_complete() local
99 dev_err(&ipa->pdev->dev, in ipa_server_init_complete()
118 * We know everything (else) is ready when we know the IPA driver on
128 struct ipa *ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_qmi_ready() local
148 ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_qmi_ready()
149 ret = ipa_modem_start(ipa); in ipa_qmi_ready()
151 dev_err(&ipa->pdev->dev, "error %d starting modem\n", ret); in ipa_qmi_ready()
186 struct ipa *ipa; in ipa_server_indication_register() local
190 ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_server_indication_register()
202 dev_err(&ipa->pdev->dev, in ipa_server_indication_register()
215 struct ipa *ipa; in ipa_server_driver_init_complete() local
219 ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_server_driver_init_complete()
231 dev_err(&ipa->pdev->dev, in ipa_server_driver_init_complete()
284 struct ipa *ipa = container_of(ipa_qmi, struct ipa, qmi); in init_modem_driver_req() local
290 req.skip_uc_load = ipa->uc_loaded ? 1 : 0; in init_modem_driver_req()
299 mem = &ipa->mem[IPA_MEM_MODEM_HEADER]; in init_modem_driver_req()
302 req.hdr_tbl_info.start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
306 mem = &ipa->mem[IPA_MEM_V4_ROUTE]; in init_modem_driver_req()
308 req.v4_route_tbl_info.start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
311 mem = &ipa->mem[IPA_MEM_V6_ROUTE]; in init_modem_driver_req()
313 req.v6_route_tbl_info.start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
316 mem = &ipa->mem[IPA_MEM_V4_FILTER]; in init_modem_driver_req()
318 req.v4_filter_tbl_start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
320 mem = &ipa->mem[IPA_MEM_V6_FILTER]; in init_modem_driver_req()
322 req.v6_filter_tbl_start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
324 mem = &ipa->mem[IPA_MEM_MODEM]; in init_modem_driver_req()
327 req.modem_mem_info.start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
333 ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]->endpoint_id; in init_modem_driver_req()
337 mem = &ipa->mem[IPA_MEM_MODEM_PROC_CTX]; in init_modem_driver_req()
341 ipa->mem_offset + mem->offset; in init_modem_driver_req()
348 mem = &ipa->mem[IPA_MEM_V4_ROUTE_HASHED]; in init_modem_driver_req()
352 ipa->mem_offset + mem->offset; in init_modem_driver_req()
357 mem = &ipa->mem[IPA_MEM_V6_ROUTE_HASHED]; in init_modem_driver_req()
361 ipa->mem_offset + mem->offset; in init_modem_driver_req()
366 mem = &ipa->mem[IPA_MEM_V4_FILTER_HASHED]; in init_modem_driver_req()
369 req.v4_hash_filter_tbl_start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
372 mem = &ipa->mem[IPA_MEM_V6_FILTER_HASHED]; in init_modem_driver_req()
375 req.v6_hash_filter_tbl_start = ipa->mem_offset + mem->offset; in init_modem_driver_req()
378 /* None of the stats fields are valid (IPA v4.0 and above) */ in init_modem_driver_req()
380 if (ipa->version != IPA_VERSION_3_5_1) { in init_modem_driver_req()
381 mem = &ipa->mem[IPA_MEM_STATS_QUOTA]; in init_modem_driver_req()
385 ipa->mem_offset + mem->offset; in init_modem_driver_req()
387 req.hw_stats_quota_size = ipa->mem_offset + mem->size; in init_modem_driver_req()
390 mem = &ipa->mem[IPA_MEM_STATS_DROP]; in init_modem_driver_req()
394 ipa->mem_offset + mem->offset; in init_modem_driver_req()
396 req.hw_stats_drop_size = ipa->mem_offset + mem->size; in init_modem_driver_req()
412 struct ipa *ipa; in ipa_client_init_driver_work() local
418 ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_client_init_driver_work()
419 dev = &ipa->pdev->dev; in ipa_client_init_driver_work()
474 int ipa_qmi_setup(struct ipa *ipa) in ipa_qmi_setup() argument
476 struct ipa_qmi *ipa_qmi = &ipa->qmi; in ipa_qmi_setup()
529 void ipa_qmi_teardown(struct ipa *ipa) in ipa_qmi_teardown() argument
531 cancel_work_sync(&ipa->qmi.init_driver_work); in ipa_qmi_teardown()
533 qmi_handle_release(&ipa->qmi.client_handle); in ipa_qmi_teardown()
534 memset(&ipa->qmi.client_handle, 0, sizeof(ipa->qmi.client_handle)); in ipa_qmi_teardown()
536 qmi_handle_release(&ipa->qmi.server_handle); in ipa_qmi_teardown()
537 memset(&ipa->qmi.server_handle, 0, sizeof(ipa->qmi.server_handle)); in ipa_qmi_teardown()