aboutsummaryrefslogtreecommitdiff
path: root/src/devices/smbus_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/smbus_ops.c')
-rw-r--r--src/devices/smbus_ops.c75
1 files changed, 48 insertions, 27 deletions
diff --git a/src/devices/smbus_ops.c b/src/devices/smbus_ops.c
index 9d134619b8..bac73986da 100644
--- a/src/devices/smbus_ops.c
+++ b/src/devices/smbus_ops.c
@@ -28,13 +28,17 @@
struct bus *get_pbus_smbus(device_t dev)
{
struct bus *pbus = dev->bus;
- while (pbus && pbus->dev && !ops_smbus_bus(pbus)) {
+
+ while (pbus && pbus->dev && !ops_smbus_bus(pbus))
pbus = pbus->dev->bus;
- }
- if (!pbus || !pbus->dev || !pbus->dev->ops || !pbus->dev->ops->ops_smbus_bus) {
- printk(BIOS_ALERT, "%s Cannot find smbus bus operations", dev_path(dev));
+
+ if (!pbus || !pbus->dev || !pbus->dev->ops
+ || !pbus->dev->ops->ops_smbus_bus) {
+ printk(BIOS_ALERT, "%s Cannot find SMBus bus operations",
+ dev_path(dev));
die("");
}
+
return pbus;
}
@@ -50,67 +54,84 @@ struct bus *get_pbus_smbus(device_t dev)
int smbus_set_link(device_t dev)
{
struct bus *pbus_a[4]; // 4 level mux only. Enough?
- struct bus *pbus = dev->bus;
- int pbus_num=0;
+ struct bus *pbus = dev->bus;
+ int pbus_num = 0;
int i;
- while(pbus && pbus->dev && (pbus->dev->path.type==DEVICE_PATH_I2C)) {
+
+ while (pbus && pbus->dev && (pbus->dev->path.type == DEVICE_PATH_I2C)) {
pbus_a[pbus_num++] = pbus;
- pbus = pbus->dev->bus;
- }
-// printk(BIOS_INFO, "smbus_set_link: ");
- for (i=pbus_num-1; i>=0; i--) {
-// printk(BIOS_INFO, " %s[%d] -> ", dev_path(pbus_a[i]->dev), pbus_a[i]->link);
- if (ops_smbus_bus(get_pbus_smbus(pbus_a[i]->dev))) {
- if (pbus_a[i]->dev->ops && pbus_a[i]->dev->ops->set_link)
- pbus_a[i]->dev->ops->set_link(pbus_a[i]->dev, pbus_a[i]->link_num);
+ pbus = pbus->dev->bus;
+ }
+
+ // printk(BIOS_INFO, "smbus_set_link: ");
+ for (i = pbus_num - 1; i >= 0; i--) {
+ // printk(BIOS_INFO, " %s[%d] -> ", dev_path(pbus_a[i]->dev),
+ // pbus_a[i]->link);
+ if (ops_smbus_bus(get_pbus_smbus(pbus_a[i]->dev))) {
+ if (pbus_a[i]->dev->ops
+ && pbus_a[i]->dev->ops->set_link)
+ pbus_a[i]->dev->ops->set_link(pbus_a[i]->dev,
+ pbus_a[i]->link_num);
}
}
-// printk(BIOS_INFO, " %s\n", dev_path(dev));
+ // printk(BIOS_INFO, " %s\n", dev_path(dev));
- return pbus_num;
+ return pbus_num;
}
int smbus_quick_read(device_t dev)
{
return ops_smbus_bus(get_pbus_smbus(dev))->quick_read(dev);
}
+
int smbus_quick_write(device_t dev)
{
return ops_smbus_bus(get_pbus_smbus(dev))->quick_write(dev);
}
+
int smbus_recv_byte(device_t dev)
{
return ops_smbus_bus(get_pbus_smbus(dev))->recv_byte(dev);
}
-int smbus_send_byte(device_t dev, uint8_t byte)
+
+int smbus_send_byte(device_t dev, u8 byte)
{
return ops_smbus_bus(get_pbus_smbus(dev))->send_byte(dev, byte);
}
-int smbus_read_byte(device_t dev, uint8_t addr)
+
+int smbus_read_byte(device_t dev, u8 addr)
{
return ops_smbus_bus(get_pbus_smbus(dev))->read_byte(dev, addr);
}
-int smbus_write_byte(device_t dev, uint8_t addr, uint8_t val)
+
+int smbus_write_byte(device_t dev, u8 addr, u8 val)
{
return ops_smbus_bus(get_pbus_smbus(dev))->write_byte(dev, addr, val);
}
-int smbus_read_word(device_t dev, uint8_t addr)
+
+int smbus_read_word(device_t dev, u8 addr)
{
return ops_smbus_bus(get_pbus_smbus(dev))->read_word(dev, addr);
}
-int smbus_write_word(device_t dev, uint8_t addr, uint16_t val)
+
+int smbus_write_word(device_t dev, u8 addr, u16 val)
{
return ops_smbus_bus(get_pbus_smbus(dev))->write_word(dev, addr, val);
}
-int smbus_process_call(device_t dev, uint8_t cmd, uint16_t data)
+
+int smbus_process_call(device_t dev, u8 cmd, u16 data)
{
return ops_smbus_bus(get_pbus_smbus(dev))->process_call(dev, cmd, data);
}
-int smbus_block_read(device_t dev, uint8_t cmd, uint8_t bytes, uint8_t *buffer)
+
+int smbus_block_read(device_t dev, u8 cmd, u8 bytes, u8 *buffer)
{
- return ops_smbus_bus(get_pbus_smbus(dev))->block_read(dev, cmd, bytes, buffer);
+ return ops_smbus_bus(get_pbus_smbus(dev))->block_read(dev, cmd,
+ bytes, buffer);
}
-int smbus_block_write(device_t dev, uint8_t cmd, uint8_t bytes, const uint8_t *buffer)
+
+int smbus_block_write(device_t dev, u8 cmd, u8 bytes, const u8 *buffer)
{
- return ops_smbus_bus(get_pbus_smbus(dev))->block_write(dev, cmd, bytes, buffer);
+ return ops_smbus_bus(get_pbus_smbus(dev))->block_write(dev, cmd,
+ bytes, buffer);
}