1211201Stakawata/*
2211201Stakawata * Copyright (c) 2008, 2009 Michael Shalayeff
3211201Stakawata * Copyright (c) 2009, 2010 Hans-Joerg Hoexer
4211201Stakawata * All rights reserved.
5211201Stakawata *
6211201Stakawata * Permission to use, copy, modify, and distribute this software for any
7211201Stakawata * purpose with or without fee is hereby granted, provided that the above
8211201Stakawata * copyright notice and this permission notice appear in all copies.
9211201Stakawata *
10211201Stakawata * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11211201Stakawata * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12211201Stakawata * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13211201Stakawata * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14211201Stakawata * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
15211201Stakawata * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
16211201Stakawata * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17211201Stakawata *
18211201Stakawata * $FreeBSD$
19211201Stakawata */
20211201Stakawata
21211201Stakawata#ifndef _TPMVAR_H
22211201Stakawata#define _TPMVAR_H
23211201Stakawata
24211201Stakawatastruct tpm_softc {
25211201Stakawata#ifndef __FreeBSD__
26211201Stakawata	struct device sc_dev;
27211201Stakawata#endif
28211201Stakawata	void *sc_ih;
29211201Stakawata
30211201Stakawata	int	(*sc_init)(struct tpm_softc *, int, const char *);
31211201Stakawata	int	(*sc_start)(struct tpm_softc *, int);
32211201Stakawata	int	(*sc_read)(struct tpm_softc *, void *, int, size_t *, int);
33211201Stakawata	int	(*sc_write)(struct tpm_softc *, void *, int);
34211201Stakawata	int	(*sc_end)(struct tpm_softc *, int, int);
35211201Stakawata
36211201Stakawata	bus_space_tag_t sc_bt, sc_batm;
37211201Stakawata	bus_space_handle_t sc_bh, sc_bahm;
38211201Stakawata
39211201Stakawata	u_int32_t sc_devid;
40211201Stakawata	u_int32_t sc_rev;
41211201Stakawata	u_int32_t sc_stat;
42211201Stakawata	u_int32_t sc_capabilities;
43211201Stakawata
44211201Stakawata	int sc_flags;
45211201Stakawata#define	TPM_OPEN	0x0001
46211201Stakawata
47211201Stakawata	int	 sc_vector;
48211201Stakawata#ifdef __FreeBSD__
49211201Stakawata	void	*intr_cookie;
50211201Stakawata	int mem_rid, irq_rid;
51211201Stakawata	struct resource *mem_res, *irq_res;
52211201Stakawata	struct cdev *sc_cdev;
53211201Stakawata#endif
54211201Stakawata
55211201Stakawata#ifndef __FreeBSD__
56211201Stakawata	void	*sc_powerhook;
57211201Stakawata#endif
58211201Stakawata	int	 sc_suspend;
59211201Stakawata};
60211201Stakawata
61211201Stakawataint tpm_tis12_probe(bus_space_tag_t iot, bus_space_handle_t ioh);
62211201Stakawataint tpm_attach(device_t dev);
63211201Stakawataint tpm_detach(device_t dev);
64211201Stakawataint tpm_suspend(device_t dev);
65211201Stakawataint tpm_resume(device_t dev);
66211201Stakawata#endif
67