xref: /freebsd/sys/dev/tpm/tpmvar.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1*97f24f66STakanori Watanabe /*
2*97f24f66STakanori Watanabe  * Copyright (c) 2008, 2009 Michael Shalayeff
3*97f24f66STakanori Watanabe  * Copyright (c) 2009, 2010 Hans-Joerg Hoexer
4*97f24f66STakanori Watanabe  * All rights reserved.
5*97f24f66STakanori Watanabe  *
6*97f24f66STakanori Watanabe  * Permission to use, copy, modify, and distribute this software for any
7*97f24f66STakanori Watanabe  * purpose with or without fee is hereby granted, provided that the above
8*97f24f66STakanori Watanabe  * copyright notice and this permission notice appear in all copies.
9*97f24f66STakanori Watanabe  *
10*97f24f66STakanori Watanabe  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*97f24f66STakanori Watanabe  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*97f24f66STakanori Watanabe  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*97f24f66STakanori Watanabe  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*97f24f66STakanori Watanabe  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
15*97f24f66STakanori Watanabe  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
16*97f24f66STakanori Watanabe  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*97f24f66STakanori Watanabe  */
18*97f24f66STakanori Watanabe 
19*97f24f66STakanori Watanabe #ifndef _TPMVAR_H
20*97f24f66STakanori Watanabe #define _TPMVAR_H
21*97f24f66STakanori Watanabe 
22*97f24f66STakanori Watanabe struct tpm_softc {
23*97f24f66STakanori Watanabe #ifndef __FreeBSD__
24*97f24f66STakanori Watanabe 	struct device sc_dev;
25*97f24f66STakanori Watanabe #endif
26*97f24f66STakanori Watanabe 	void *sc_ih;
27*97f24f66STakanori Watanabe 
28*97f24f66STakanori Watanabe 	int	(*sc_init)(struct tpm_softc *, int, const char *);
29*97f24f66STakanori Watanabe 	int	(*sc_start)(struct tpm_softc *, int);
30*97f24f66STakanori Watanabe 	int	(*sc_read)(struct tpm_softc *, void *, int, size_t *, int);
31*97f24f66STakanori Watanabe 	int	(*sc_write)(struct tpm_softc *, void *, int);
32*97f24f66STakanori Watanabe 	int	(*sc_end)(struct tpm_softc *, int, int);
33*97f24f66STakanori Watanabe 
34*97f24f66STakanori Watanabe 	bus_space_tag_t sc_bt, sc_batm;
35*97f24f66STakanori Watanabe 	bus_space_handle_t sc_bh, sc_bahm;
36*97f24f66STakanori Watanabe 
37*97f24f66STakanori Watanabe 	u_int32_t sc_devid;
38*97f24f66STakanori Watanabe 	u_int32_t sc_rev;
39*97f24f66STakanori Watanabe 	u_int32_t sc_stat;
40*97f24f66STakanori Watanabe 	u_int32_t sc_capabilities;
41*97f24f66STakanori Watanabe 
42*97f24f66STakanori Watanabe 	int sc_flags;
43*97f24f66STakanori Watanabe #define	TPM_OPEN	0x0001
44*97f24f66STakanori Watanabe 
45*97f24f66STakanori Watanabe 	int	 sc_vector;
46*97f24f66STakanori Watanabe #ifdef __FreeBSD__
47*97f24f66STakanori Watanabe 	void	*intr_cookie;
48*97f24f66STakanori Watanabe 	int mem_rid, irq_rid;
49*97f24f66STakanori Watanabe 	struct resource *mem_res, *irq_res;
50*97f24f66STakanori Watanabe 	struct cdev *sc_cdev;
51*97f24f66STakanori Watanabe #endif
52*97f24f66STakanori Watanabe 
53*97f24f66STakanori Watanabe #ifndef __FreeBSD__
54*97f24f66STakanori Watanabe 	void	*sc_powerhook;
55*97f24f66STakanori Watanabe #endif
56*97f24f66STakanori Watanabe 	int	 sc_suspend;
57*97f24f66STakanori Watanabe };
58*97f24f66STakanori Watanabe 
59*97f24f66STakanori Watanabe int tpm_tis12_probe(bus_space_tag_t iot, bus_space_handle_t ioh);
60*97f24f66STakanori Watanabe int tpm_attach(device_t dev);
61*97f24f66STakanori Watanabe int tpm_detach(device_t dev);
62*97f24f66STakanori Watanabe int tpm_suspend(device_t dev);
63*97f24f66STakanori Watanabe int tpm_resume(device_t dev);
64*97f24f66STakanori Watanabe #endif
65