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