static int __init smp2p_remote_mock_init(void) { int i; smp2p_init_header(&remote_mock.remote_item.header, SMP2P_REMOTE_MOCK_PROC, SMP2P_APPS_PROC, 0, 0); remote_mock.rx_interrupt_count = 0; remote_mock.rx_interrupt = smp2p_remote_mock_rx_interrupt; remote_mock.tx_interrupt = smp2p_remote_mock_tx_interrupt; remote_mock.item_exists = false; init_completion(&remote_mock.cb_completion); remote_mock.initialized = true; for (i = 0; i < SMP2P_NUM_PROCS; i++) { INIT_WORK(&(remote_loopback[i].rmt_lpb_work), smp2p_rmt_lpb_worker); if (i == SMP2P_REMOTE_MOCK_PROC) continue; msm_smp2p_init_rmt_lpb(&remote_loopback[i], i, SMP2P_RLPB_ENTRY_NAME); } return 0; }
/** * smp2p_remote_mock_init - Initialize the remote mock and loopback objects. * * @returns: 0 for success */ static int __init smp2p_remote_mock_init(void) { int i; struct smp2p_interrupt_config *int_cfg; smp2p_init_header(&remote_mock.remote_item.header, SMP2P_REMOTE_MOCK_PROC, SMP2P_APPS_PROC, 0, 0); remote_mock.rx_interrupt_count = 0; remote_mock.rx_interrupt = smp2p_remote_mock_rx_interrupt; remote_mock.tx_interrupt = smp2p_remote_mock_tx_interrupt; remote_mock.item_exists = false; init_completion(&remote_mock.cb_completion); remote_mock.initialized = true; for (i = 0; i < SMP2P_NUM_PROCS; i++) { INIT_WORK(&(remote_loopback[i].rmt_lpb_work), smp2p_rmt_lpb_worker); if (i == SMP2P_REMOTE_MOCK_PROC) /* do not register loopback for remote mock proc */ continue; int_cfg = smp2p_get_interrupt_config(); if (!int_cfg) { SMP2P_ERR("Remote processor config unavailable\n"); return 0; } if (!int_cfg[i].is_configured) continue; msm_smp2p_init_rmt_lpb(&remote_loopback[i], i, SMP2P_RLPB_ENTRY_NAME); } return 0; }