1 #include <device/device.h>
2 #include <device/path.h>
3 #include <device/pci.h>
4 #include <device/pci_ids.h>
5 #include <device/pci_ops.h>
6 #include <device/smbus.h>
9 #include "i82801ex_smbus.h"
11 static int lsmbus_read_byte(struct bus *bus, device_t dev, uint8_t address)
16 device = dev->path.i2c.device;
17 res = find_resource(bus->dev, 0x20);
19 return do_smbus_read_byte(res->base, device, address);
22 static struct smbus_bus_operations lops_smbus_bus = {
23 .read_byte = lsmbus_read_byte,
25 static struct pci_operations lops_pci = {
26 /* The subsystem id follows the ide controller */
29 static struct device_operations smbus_ops = {
30 .read_resources = pci_dev_read_resources,
31 .set_resources = pci_dev_set_resources,
32 .enable_resources = pci_dev_enable_resources,
34 .scan_bus = scan_static_bus,
35 .enable = i82801ex_enable,
37 .ops_smbus_bus = &lops_smbus_bus,
40 static const struct pci_driver smbus_driver __pci_driver = {
42 .vendor = PCI_VENDOR_ID_INTEL,
43 .device = PCI_DEVICE_ID_INTEL_82801ER_SMB,