e67409d01bc46e83492e5b70c09257c9d3fd1739
[coreboot.git] / src / drivers / i2c / lm63 / lm63.c
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
11 static void lm63_init(device_t dev)
12 {
13         int result;
14         if (dev->enabled && dev->path.type == DEVICE_PATH_I2C)
15         {
16                 if(ops_smbus_bus(get_pbus_smbus(dev))) {
17                         if( dev->bus->dev->path.type == DEVICE_PATH_I2C) smbus_set_link(dev); // it is under mux 
18                         result = smbus_read_byte(dev, 0x03);
19 //                      result &= ~0x04;
20                         result |= 0x04;
21                         smbus_write_byte(dev, 0x03, result & 0xff); // config lm63
22                 }
23                 
24         }
25
26 }
27 static void lm63_noop(device_t dummy)
28 {
29 }
30
31 static struct device_operations lm63_operations = {
32         .read_resources   = lm63_noop,
33         .set_resources    = lm63_noop,
34         .enable_resources = lm63_noop,
35         .init             = lm63_init,
36 };
37
38 static void enable_dev(struct device *dev)
39 {
40         dev->ops = &lm63_operations;
41 }
42
43 struct chip_operations drivers_i2c_lm63_ops = {
44         CHIP_NAME("National Semiconductor LM63")
45         .enable_dev = enable_dev, 
46 };