- First stab at running linuxbios without the old static device tree.
[coreboot.git] / src / include / device / smbus.h
1 #ifndef DEVICE_SMBUS_H
2 #define DEVICE_SMBUS_H
3
4 #include <stdint.h>
5 #include <device/device.h>
6 #include <device/path.h>
7 #include <device/smbus_def.h>
8
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, uint8_t value);
15         int (*read_byte)   (device_t dev, uint8_t addr);
16         int (*write_byte)  (device_t dev, uint8_t addr, uint8_t value);
17         int (*read_word)   (device_t dev, uint8_t addr);
18         int (*write_word)  (device_t dev, uint8_t addr, uint16_t value);
19         int (*process_call)(device_t dev, uint8_t cmd, uint16_t data);
20         int (*block_read)  (device_t dev, uint8_t cmd, uint8_t bytes, uint8_t *buffer);
21         int (*block_write) (device_t dev, uint8_t cmd, uint8_t bytes, const uint8_t *buffer);
22 };
23
24 static inline int smbus_quick_read(device_t dev)
25 {
26         return dev->bus->dev->ops->ops_smbus_bus->quick_read(dev);
27 }
28 static inline int smbus_quick_write(device_t dev)
29 {
30         return dev->bus->dev->ops->ops_smbus_bus->quick_write(dev);
31 }
32 static inline int smbus_recv_byte(device_t dev)
33 {
34         return dev->bus->dev->ops->ops_smbus_bus->recv_byte(dev);
35 }
36 static inline int smbus_send_byte(device_t dev, uint8_t byte)
37 {
38         return dev->bus->dev->ops->ops_smbus_bus->send_byte(dev, byte);
39 }
40 static inline int smbus_read_byte(device_t dev, uint8_t addr)
41 {
42         return dev->bus->dev->ops->ops_smbus_bus->read_byte(dev, addr);
43 }
44 static inline int smbus_write_byte(device_t dev, uint8_t addr, uint8_t val)
45 {
46         return dev->bus->dev->ops->ops_smbus_bus->write_byte(dev, addr, val);
47 }
48 static inline int smbus_read_word(device_t dev, uint8_t addr)
49 {
50         return dev->bus->dev->ops->ops_smbus_bus->read_word(dev, addr);
51 }
52 static inline int smbus_write_word(device_t dev, uint8_t addr, uint16_t val)
53 {
54         return dev->bus->dev->ops->ops_smbus_bus->write_word(dev, addr, val);
55 }
56 static inline int smbus_process_call(device_t dev, uint8_t cmd, uint16_t data)
57 {
58         return dev->bus->dev->ops->ops_smbus_bus->process_call(dev, cmd, data);
59 }
60 static inline int smbus_block_read(device_t dev, uint8_t cmd, uint8_t bytes, uint8_t *buffer)
61 {
62         return dev->bus->dev->ops->ops_smbus_bus->block_read(dev, cmd, bytes, buffer);
63 }
64 static inline int smbus_block_write(device_t dev, uint8_t cmd, uint8_t bytes, const uint8_t *buffer)
65 {
66         return dev->bus->dev->ops->ops_smbus_bus->block_write(dev, cmd, bytes, buffer);
67 }
68
69
70 #endif /* DEVICE_SMBUS_H */