1d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*
2d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Copyright (C) 2012-2014 NXP Semiconductors
3d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
4d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Licensed under the Apache License, Version 2.0 (the "License");
5d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * you may not use this file except in compliance with the License.
6d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * You may obtain a copy of the License at
7d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
8d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *      http://www.apache.org/licenses/LICENSE-2.0
9d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
10d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Unless required by applicable law or agreed to in writing, software
11d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * distributed under the License is distributed on an "AS IS" BASIS,
12d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * See the License for the specific language governing permissions and
14d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * limitations under the License.
15d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna */
16d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
17d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <unistd.h>
18d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <sys/types.h>
19d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <sys/stat.h>
20d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <log/log.h>
21d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
22d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <sys/ioctl.h>
23d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <fcntl.h>
24d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <errno.h>
25d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include "spi_spm.h"
26d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include "phNxpLog.h"
27d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include "phTmlNfc_i2c.h"
28d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
29d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
30d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**
31d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna** Function         phPalEse_spi_ioctl
32d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**
33d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna** Description      Exposed ioctl by p61 spi driver
34d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**
35d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna** Parameters       pDevHandle     - valid device handle
36d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**                  level          - reset level
37d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**
38d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna** Returns           0   - ioctl operation success
39d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**                  -1   - ioctl operation failure
40d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna**
41d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna*******************************************************************************/
42d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaint phPalEse_spi_ioctl(phPalEse_ControlCode_t eControlCode,void *pDevHandle, long level)
43d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna{
44d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    int ret;
45d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    NXPLOG_TML_D("phPalEse_spi_ioctl(), ioctl %x , level %lx", eControlCode, level);
46d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
47d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (NULL == pDevHandle) {
48d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    return -1;
49d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
50d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  switch (eControlCode) {
51d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    case phPalEse_e_ChipRst:
52d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        if(level == 1 || level == 0)
53d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret = ioctl((intptr_t)pDevHandle, P61_SET_SPI_PWR, level);
54d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        else
55d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret=0;
56d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
57d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
58d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    case phPalEse_e_GetSPMStatus:
59d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret = ioctl((intptr_t)pDevHandle, P61_GET_PWR_STATUS, level);
60d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
61d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
62d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    case phPalEse_e_SetPowerScheme:
63d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna         ret=0;
64d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
65d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna   case phPalEse_e_GetEseAccess:
66d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna         ret=0;
67d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
68d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#if(NXP_ESE_JCOP_DWNLD_PROTECTION == TRUE)
69d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    case phPalEse_e_SetJcopDwnldState:
70d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret=0;
71d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
72d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#endif
73d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    case phPalEse_e_DisablePwrCntrl:
74d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret = ioctl((intptr_t)pDevHandle, P61_SET_SPI_PWR, 1);
75d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
76d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    default:
77d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        ret=-1;
78d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        break;
79d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    }
80d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    return ret;
81d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
82