Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
nfc
pn544.h
Go to the documentation of this file.
1
/*
2
* Driver include for the PN544 NFC chip.
3
*
4
* Copyright (C) Nokia Corporation
5
*
6
* Author: Jari Vanhala <
[email protected]
>
7
* Contact: Matti Aaltoenn <
[email protected]
>
8
*
9
* This program is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU General Public License
11
* version 2 as published by the Free Software Foundation.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
*/
22
23
#ifndef _PN544_H_
24
#define _PN544_H_
25
26
#include <linux/i2c.h>
27
28
#define PN544_DRIVER_NAME "pn544"
29
#define PN544_MAXWINDOW_SIZE 7
30
#define PN544_WINDOW_SIZE 4
31
#define PN544_RETRIES 10
32
#define PN544_MAX_I2C_TRANSFER 0x0400
33
#define PN544_MSG_MAX_SIZE 0x21
/* at normal HCI mode */
34
35
/* ioctl */
36
#define PN544_CHAR_BASE 'P'
37
#define PN544_IOR(num, dtype) _IOR(PN544_CHAR_BASE, num, dtype)
38
#define PN544_IOW(num, dtype) _IOW(PN544_CHAR_BASE, num, dtype)
39
#define PN544_GET_FW_MODE PN544_IOW(1, unsigned int)
40
#define PN544_SET_FW_MODE PN544_IOW(2, unsigned int)
41
#define PN544_GET_DEBUG PN544_IOW(3, unsigned int)
42
#define PN544_SET_DEBUG PN544_IOW(4, unsigned int)
43
44
/* Timing restrictions (ms) */
45
#define PN544_RESETVEN_TIME 30
/* 7 */
46
#define PN544_PVDDVEN_TIME 0
47
#define PN544_VBATVEN_TIME 0
48
#define PN544_GPIO4VEN_TIME 0
49
#define PN544_WAKEUP_ACK 5
50
#define PN544_WAKEUP_GUARD (PN544_WAKEUP_ACK + 1)
51
#define PN544_INACTIVITY_TIME 1000
52
#define PN544_INTERFRAME_DELAY 200
/* us */
53
#define PN544_BAUDRATE_CHANGE 150
/* us */
54
55
/* Debug bits */
56
#define PN544_DEBUG_BUF 0x01
57
#define PN544_DEBUG_READ 0x02
58
#define PN544_DEBUG_WRITE 0x04
59
#define PN544_DEBUG_IRQ 0x08
60
#define PN544_DEBUG_CALLS 0x10
61
#define PN544_DEBUG_MODE 0x20
62
63
/* Normal (HCI) mode */
64
#define PN544_LLC_HCI_OVERHEAD 3
/* header + crc (to length) */
65
#define PN544_LLC_MIN_SIZE (1 + PN544_LLC_HCI_OVERHEAD)
/* length + */
66
#define PN544_LLC_MAX_DATA (PN544_MSG_MAX_SIZE - 2)
67
#define PN544_LLC_MAX_HCI_SIZE (PN544_LLC_MAX_DATA - 2)
68
69
struct
pn544_llc_packet
{
70
unsigned
char
length
;
/* of rest of packet */
71
unsigned
char
header
;
72
unsigned
char
data
[
PN544_LLC_MAX_DATA
];
/* includes crc-ccitt */
73
};
74
75
/* Firmware upgrade mode */
76
#define PN544_FW_HEADER_SIZE 3
77
/* max fw transfer is 1024bytes, but I2C limits it to 0xC0 */
78
#define PN544_MAX_FW_DATA (PN544_MAX_I2C_TRANSFER - PN544_FW_HEADER_SIZE)
79
80
struct
pn544_fw_packet
{
81
unsigned
char
command
;
/* status in answer */
82
unsigned
char
length
[2];
/* big-endian order (msf) */
83
unsigned
char
data
[
PN544_MAX_FW_DATA
];
84
};
85
86
#ifdef __KERNEL__
87
enum
{
88
NFC_GPIO_ENABLE,
89
NFC_GPIO_FW_RESET,
90
NFC_GPIO_IRQ
91
};
92
93
/* board config */
94
struct
pn544_nfc_platform_data {
95
int
(*request_resources) (
struct
i2c_client
*
client
);
96
void
(*free_resources) (
void
);
97
void
(*
enable
) (
int
fw
);
98
int
(*
test
) (
void
);
99
void
(*
disable
) (
void
);
100
int
(*get_gpio)(
int
type
);
101
};
102
#endif
/* __KERNEL__ */
103
104
#endif
/* _PN544_H_ */
Generated on Thu Jan 10 2013 14:52:11 for Linux Kernel by
1.8.2