1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2010-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Registration/deregistration functions for inter-module callbacks
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys.h"
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys_int.h"
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         nfa_sys_cback_reg_enable_complete
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
31552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi** Description      Called to register an initialization complete callback
32552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi**                  function
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          void
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_sys_cback_reg_enable_complete(tNFA_SYS_ENABLE_CBACK* p_cback) {
386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.p_enable_cback = p_cback;
396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.enable_cplt_flags = 0;
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         nfa_sys_cback_notify_enable_complete
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Called by other NFA subsystems to notify initialization is
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  complete
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          void
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_sys_cback_notify_enable_complete(uint8_t id) {
536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.enable_cplt_flags |= (0x0001 << id);
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
556fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  NFA_TRACE_DEBUG2(
566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      "nfa_sys_cback_notify_enable_complete () enable_cplt_flags=0x%x, "
576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      "enable_cplt_mask=0x%x",
586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      nfa_sys_cb.enable_cplt_flags, nfa_sys_cb.enable_cplt_mask);
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  if ((nfa_sys_cb.enable_cplt_flags == nfa_sys_cb.enable_cplt_mask) &&
616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      (nfa_sys_cb.p_enable_cback)) {
626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi    nfa_sys_cb.p_enable_cback();
636fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi    nfa_sys_cb.p_enable_cback = NULL;
646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  }
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         nfa_sys_cback_reg_nfcc_power_mode_proc_complete
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
71552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi** Description      Called to register a callback function for complete of
72552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi**                  processing NFCC power mode change from NFA sub-systems
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          void
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_sys_cback_reg_nfcc_power_mode_proc_complete(
786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi    tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL* p_cback) {
796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback = p_cback;
806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags = 0;
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         nfa_sys_cback_notify_nfcc_power_mode_proc_complete
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
87552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi** Description      Called by other NFA subsystems to notify processing NFCC
88552f2b745deddd35d9b75da9c9c09bd2f3f573a8Ruchi Kandoi**                  power mode is complete
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          void
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_sys_cback_notify_nfcc_power_mode_proc_complete(uint8_t id) {
946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags |= (0x0001 << id);
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  NFA_TRACE_DEBUG2(
976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      "nfa_sys_cback_notify_nfcc_power_mode_proc_complete () flags=0x%x, "
986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      "mask=0x%x",
996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags,
1006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask);
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1026fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  /* except SYS */
1036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  if ((nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags ==
1046fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi       nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask) &&
1056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      (nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback)) {
1066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi    nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback();
1076fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi    nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback = NULL;
1086fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  }
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
110