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