first round name simplification. drop the <component>_ prefix.
[coreboot.git] / src / southbridge / intel / i82801ex / smbus.c
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>
7 #include <arch/io.h>
8 #include "i82801ex.h"
9 #include "smbus.h"
10
11 static int lsmbus_read_byte(device_t dev, u8 address)
12 {
13         u16 device;
14         struct resource *res;
15         struct bus *pbus;
16
17         device = dev->path.i2c.device;
18         pbus = get_pbus_smbus(dev);
19         res = find_resource(pbus->dev, 0x20);
20
21         return do_smbus_read_byte(res->base, device, address);
22 }
23
24 static struct smbus_bus_operations lops_smbus_bus = {
25         .read_byte  = lsmbus_read_byte,
26 };
27
28 static struct pci_operations lops_pci = {
29         /* The subsystem id follows the ide controller */
30         .set_subsystem = 0,
31 };
32
33 static struct device_operations smbus_ops = {
34         .read_resources   = pci_dev_read_resources,
35         .set_resources    = pci_dev_set_resources,
36         .enable_resources = pci_dev_enable_resources,
37         .init             = 0,
38         .scan_bus         = scan_static_bus,
39         .enable           = i82801ex_enable,
40         .ops_pci          = &lops_pci,
41         .ops_smbus_bus    = &lops_smbus_bus,
42 };
43
44 static const struct pci_driver smbus_driver __pci_driver = {
45         .ops    = &smbus_ops,
46         .vendor = PCI_VENDOR_ID_INTEL,
47         .device = PCI_DEVICE_ID_INTEL_82801ER_SMB,
48 };
49