Home | History | Annotate | Download | only in pn80t
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef ESE_HW_NXP_PN80T_PLATFORM_H_
     18 #define ESE_HW_NXP_PN80T_PLATFORM_H_ 1
     19 
     20 typedef void *(pn80t_platform_initialize_t)(void *);
     21 typedef int (pn80t_platform_release_t)(void *);
     22 typedef int (pn80t_platform_toggle_t)(void *, int);
     23 typedef int (pn80t_platform_wait_t)(void *, long usec);
     24 
     25 /* Pn80tPlatform
     26  *
     27  * Provides the callbacks necessary to interface with the platform, be it the Linux
     28  * kernel or a bootloader in pn80t_common.c
     29  *
     30  * All "required" functions must be provided.
     31  * All "optional" functions may be set to NULL.
     32  *
     33  */
     34 struct Pn80tPlatform {
     35   /* Required: Initializes the hardware and platform opaque handle. */
     36   pn80t_platform_initialize_t *const initialize;
     37   /* Required: free memory and release resources as needed. */
     38   pn80t_platform_release_t *const release;
     39   /* Required: determines eSE specific power. 1 = on, 0 = off. */
     40   pn80t_platform_toggle_t *const toggle_reset;  /* ESE_RST or other power control. */
     41   /* Optional: determines global NFC power: 1 = on, 0 = off */
     42   pn80t_platform_toggle_t *const toggle_ven;  /* NFC_VEN */
     43   /* Optional: enables eSE power control via |toggle_reset|. 1 = on, 0 = off */
     44   pn80t_platform_toggle_t *const toggle_power_req;  /* SVDD_PWR_REQ */
     45   /* Optional: toggles the in bootloader gpio */
     46   pn80t_platform_toggle_t *const toggle_bootloader;  /* CLEAR_N */
     47   /* Required: provides a usleep() equivalent. */
     48   pn80t_platform_wait_t *const wait;
     49 };
     50 
     51 #endif
     52