3 * by yinghai.lu@amd.com
6 #include "bcm5785_smbus.h"
8 #define SMBUS_IO_BASE 0x1000
10 static void enable_smbus(void)
13 dev = pci_locate_device(PCI_ID(0x1166, 0x0205), 0); // 0x0201?
15 if (dev == PCI_DEV_INVALID) {
16 die("SMBUS controller not found\n");
19 print_debug("SMBus controller enabled\n");
20 /* set smbus iobase */
21 pci_write_config32(dev, 0x90, SMBUS_IO_BASE | 1);
22 /* Set smbus iospace enable */
23 pci_write_config8(dev, 0xd2, 0x03);
24 /* clear any lingering errors, so the transaction will run */
25 outb(inb(SMBUS_IO_BASE + SMBHSTSTAT), SMBUS_IO_BASE + SMBHSTSTAT);
28 static inline int smbus_recv_byte(unsigned device)
30 return do_smbus_recv_byte(SMBUS_IO_BASE, device);
33 static inline int smbus_send_byte(unsigned device, unsigned char val)
35 return do_smbus_send_byte(SMBUS_IO_BASE, device, val);
38 static inline int smbus_read_byte(unsigned device, unsigned address)
40 return do_smbus_read_byte(SMBUS_IO_BASE, device, address);
43 static inline int smbus_write_byte(unsigned device, unsigned address, unsigned char val)
45 return do_smbus_write_byte(SMBUS_IO_BASE, device, address, val);