Yinghai Lu | afd34e6 | 2006-02-16 17:22:19 +0000 | [diff] [blame] | 1 | #include <console/console.h> |
| 2 | #include <device/device.h> |
| 3 | #include <device/smbus.h> |
| 4 | #include <device/pci.h> |
| 5 | #include <device/pci_ids.h> |
| 6 | #include <device/pci_ops.h> |
| 7 | #include <cpu/x86/msr.h> |
| 8 | #include "chip.h" |
| 9 | |
| 10 | static void i2cmux2_set_link(device_t dev, unsigned int link) |
| 11 | { |
| 12 | if (dev->enabled && dev->path.type == DEVICE_PATH_I2C) |
| 13 | { |
| 14 | if(ops_smbus_bus(get_pbus_smbus(dev))) { |
| 15 | smbus_send_byte(dev, link); // output value |
| 16 | } |
| 17 | |
| 18 | } |
| 19 | |
| 20 | } |
| 21 | static void i2cmux2_noop(device_t dummy) |
| 22 | { |
| 23 | } |
| 24 | |
| 25 | static struct device_operations i2cmux2_operations = { |
| 26 | .read_resources = i2cmux2_noop, |
| 27 | .set_resources = i2cmux2_noop, |
| 28 | .enable_resources = i2cmux2_noop, |
| 29 | .init = i2cmux2_noop, |
| 30 | .scan_bus = scan_static_bus, |
| 31 | .set_link = i2cmux2_set_link, |
| 32 | }; |
| 33 | |
| 34 | static void enable_dev(struct device *dev) |
| 35 | { |
| 36 | if(dev->links>0) |
| 37 | dev->ops = &i2cmux2_operations; |
| 38 | } |
| 39 | |
| 40 | struct chip_operations drivers_i2c_i2cmux2_ops = { |
| 41 | CHIP_NAME("i2cmux2") |
| 42 | .enable_dev = enable_dev, |
| 43 | }; |