1/*
2 * Copyright (c) 1999-2000 by Sun Microsystems, Inc.
3 * All rights reserved.
4 */
5
6#ifndef _I2C_SVC_IMPL_H
7#define	_I2C_SVC_IMPL_H
8
9#pragma ident	"%Z%%M%	%I%	%E% SMI"
10
11#ifdef	__cplusplus
12extern "C" {
13#endif
14
15/*
16 * i2c_transfer_alloc is a wrapper structure that is used
17 * to store i2c_transfer_t allocation information so that
18 * the caller to i2c_transfer_allocate() can modify the
19 * buffer/size fields and i2c_transfer_free() will still
20 * be able to recover all buffers.
21 */
22typedef struct i2c_transfer_alloc {
23	i2c_transfer_t		i2cw_i2ct;
24	uint32_t		i2cw_size;
25} i2c_transfer_alloc_t;
26
27#define	CHDL(client_hdl) ((i2c_client_hdl_impl_t *)(client_hdl))
28
29/*
30 * i2c_client_hdl_impl is the real implementation of
31 * i2c_client_hdl.
32 */
33typedef struct i2c_client_hdl_impl {
34	dev_info_t	*chdl_dip; /* dip for I2C device */
35	struct i2c_nexus_reg *chdl_nexus_reg;
36} i2c_client_hdl_impl_t;
37
38/*
39 * i2c_nexus_reg_list are the elements of a linked list which
40 * tracks all I2C parents.
41 */
42typedef struct i2c_nexus_reg_list {
43	i2c_nexus_reg_t nexus_reg;
44	dev_info_t	*dip;
45	struct i2c_nexus_reg_list *next;
46} i2c_nexus_reg_list_t;
47
48#ifdef	__cplusplus
49}
50#endif
51
52#endif /* _I2C_SVC_IMPL_H */
53