coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
smbus.h
Go to the documentation of this file.
1 #ifndef DEVICE_SMBUS_H
2 #define DEVICE_SMBUS_H
3 
4 #include <stdint.h>
5 #include <device/device.h>
6 #include <device/i2c_bus.h>
7 
8 /* Common SMBus bus operations */
10  int (*recv_byte)(struct device *dev);
11  int (*send_byte)(struct device *dev, u8 value);
12  int (*read_byte)(struct device *dev, u8 addr);
13  int (*write_byte)(struct device *dev, u8 addr, u8 value);
14  int (*block_read)(struct device *dev, u8 cmd, u8 bytes, u8 *buffer);
15  int (*block_write)(struct device *dev, u8 cmd, u8 bytes,
16  const u8 *buffer);
17 };
18 
19 static inline const struct smbus_bus_operations *ops_smbus_bus(struct bus *bus)
20 {
21  const struct smbus_bus_operations *bops;
22 
23  bops = 0;
24  if (bus && bus->dev && bus->dev->ops)
25  bops = bus->dev->ops->ops_smbus_bus;
26 
27  return bops;
28 }
29 
30 struct bus *get_pbus_smbus(struct device *dev);
31 
32 #if !DEVTREE_EARLY
33 static inline int smbus_recv_byte(struct device *const dev)
34 {
35  return i2c_dev_readb(dev);
36 }
37 
38 static inline int smbus_send_byte(struct device *const dev, u8 byte)
39 {
40  return i2c_dev_writeb(dev, byte);
41 }
42 
43 static inline int smbus_read_byte(struct device *const dev, u8 addr)
44 {
45  return i2c_dev_readb_at(dev, addr);
46 }
47 
48 static inline int smbus_write_byte(struct device *const dev, u8 addr, u8 val)
49 {
50  return i2c_dev_writeb_at(dev, addr, val);
51 }
52 
53 int smbus_block_read(struct device *dev, u8 cmd, u8 bytes, u8 *buffer);
54 int smbus_block_write(struct device *dev, u8 cmd, u8 bytes, const u8 *buffer);
55 #endif
56 
57 #endif /* DEVICE_SMBUS_H */
pte_t value
Definition: mmu.c:91
static u32 addr
Definition: cirrus.c:14
int i2c_dev_writeb_at(struct device *const dev, const uint8_t off, const uint8_t val)
Definition: i2c_bus.c:121
int i2c_dev_readb(struct device *const dev)
Definition: i2c_bus.c:34
int i2c_dev_writeb(struct device *const dev, uint8_t val)
Definition: i2c_bus.c:62
int i2c_dev_readb_at(struct device *const dev, uint8_t off)
Definition: i2c_bus.c:84
static int smbus_read_byte(struct device *const dev, u8 addr)
Definition: smbus.h:43
static const struct smbus_bus_operations * ops_smbus_bus(struct bus *bus)
Definition: smbus.h:19
int smbus_block_write(struct device *dev, u8 cmd, u8 bytes, const u8 *buffer)
Definition: smbus_ops.c:34
static int smbus_write_byte(struct device *const dev, u8 addr, u8 val)
Definition: smbus.h:48
static int smbus_send_byte(struct device *const dev, u8 byte)
Definition: smbus.h:38
struct bus * get_pbus_smbus(struct device *dev)
Definition: smbus_ops.c:8
static int smbus_recv_byte(struct device *const dev)
Definition: smbus.h:33
int smbus_block_read(struct device *dev, u8 cmd, u8 bytes, u8 *buffer)
Definition: smbus_ops.c:26
u8 buffer[C2P_BUFFER_MAXSIZE]
Definition: psp_smm.c:18
uint8_t u8
Definition: stdint.h:45
Definition: device.h:76
DEVTREE_CONST struct device * dev
Definition: device.h:78
const struct smbus_bus_operations * ops_smbus_bus
Definition: device.h:65
Definition: device.h:107
struct device_operations * ops
Definition: device.h:143
int(* recv_byte)(struct device *dev)
Definition: smbus.h:10
int(* write_byte)(struct device *dev, u8 addr, u8 value)
Definition: smbus.h:13
int(* send_byte)(struct device *dev, u8 value)
Definition: smbus.h:11
int(* block_write)(struct device *dev, u8 cmd, u8 bytes, const u8 *buffer)
Definition: smbus.h:15
int(* block_read)(struct device *dev, u8 cmd, u8 bytes, u8 *buffer)
Definition: smbus.h:14
int(* read_byte)(struct device *dev, u8 addr)
Definition: smbus.h:12
u8 val
Definition: sys.c:300