5 #include <device/device.h>
6 #include <device/path.h>
7 #include <device/smbus_def.h>
9 /* Common SMBus bus operations */
10 struct smbus_bus_operations
{
11 int (*quick_read
) (device_t dev
);
12 int (*quick_write
) (device_t dev
);
13 int (*recv_byte
) (device_t dev
);
14 int (*send_byte
) (device_t dev
, u8 value
);
15 int (*read_byte
) (device_t dev
, u8 addr
);
16 int (*write_byte
) (device_t dev
, u8 addr
, u8 value
);
17 int (*read_word
) (device_t dev
, u8 addr
);
18 int (*write_word
) (device_t dev
, u8 addr
, u16 value
);
19 int (*process_call
)(device_t dev
, u8 cmd
, u16 data
);
20 int (*block_read
) (device_t dev
, u8 cmd
, u8 bytes
, u8
*buffer
);
21 int (*block_write
) (device_t dev
, u8 cmd
, u8 bytes
, const u8
*buffer
);
24 static inline const struct smbus_bus_operations
*ops_smbus_bus(struct bus
*bus
)
26 const struct smbus_bus_operations
*bops
;
29 if (bus
&& bus
->dev
&& bus
->dev
->ops
)
30 bops
= bus
->dev
->ops
->ops_smbus_bus
;
35 struct bus
*get_pbus_smbus(device_t dev
);
36 int smbus_set_link(device_t dev
);
38 int smbus_quick_read(device_t dev
);
39 int smbus_quick_write(device_t dev
);
40 int smbus_recv_byte(device_t dev
);
41 int smbus_send_byte(device_t dev
, u8 byte
);
42 int smbus_read_byte(device_t dev
, u8 addr
);
43 int smbus_write_byte(device_t dev
, u8 addr
, u8 val
);
44 int smbus_read_word(device_t dev
, u8 addr
);
45 int smbus_write_word(device_t dev
, u8 addr
, u16 val
);
46 int smbus_process_call(device_t dev
, u8 cmd
, u16 data
);
47 int smbus_block_read(device_t dev
, u8 cmd
, u8 bytes
, u8
*buffer
);
48 int smbus_block_write(device_t dev
, u8 cmd
, u8 bytes
, const u8
*buffer
);
50 #endif /* DEVICE_SMBUS_H */