Lines Matching refs:smbus
68 static int amd_ec_wait_write(struct amd_smbus *smbus)
72 while ((inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_IBF) && --timeout)
76 dev_warn(&smbus->dev->dev,
84 static int amd_ec_wait_read(struct amd_smbus *smbus)
88 while ((~inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_OBF) && --timeout)
92 dev_warn(&smbus->dev->dev,
100 static int amd_ec_read(struct amd_smbus *smbus, unsigned char address,
105 status = amd_ec_wait_write(smbus);
108 outb(AMD_EC_CMD_RD, smbus->base + AMD_EC_CMD);
110 status = amd_ec_wait_write(smbus);
113 outb(address, smbus->base + AMD_EC_DATA);
115 status = amd_ec_wait_read(smbus);
118 *data = inb(smbus->base + AMD_EC_DATA);
123 static int amd_ec_write(struct amd_smbus *smbus, unsigned char address,
128 status = amd_ec_wait_write(smbus);
131 outb(AMD_EC_CMD_WR, smbus->base + AMD_EC_CMD);
133 status = amd_ec_wait_write(smbus);
136 outb(address, smbus->base + AMD_EC_DATA);
138 status = amd_ec_wait_write(smbus);
141 outb(data, smbus->base + AMD_EC_DATA);
193 struct amd_smbus *smbus = adap->algo_data;
209 status = amd_ec_write(smbus, AMD_SMB_CMD,
218 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
222 status = amd_ec_write(smbus, AMD_SMB_DATA,
231 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
235 status = amd_ec_write(smbus, AMD_SMB_DATA,
239 status = amd_ec_write(smbus, AMD_SMB_DATA + 1,
248 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
254 status = amd_ec_write(smbus, AMD_SMB_BCNT, len);
259 amd_ec_write(smbus, AMD_SMB_DATA + i,
271 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
274 status = amd_ec_write(smbus, AMD_SMB_BCNT, len);
280 amd_ec_write(smbus, AMD_SMB_DATA + i,
289 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
292 status = amd_ec_write(smbus, AMD_SMB_DATA,
296 status = amd_ec_write(smbus, AMD_SMB_DATA + 1,
307 status = amd_ec_write(smbus, AMD_SMB_CMD, command);
310 status = amd_ec_write(smbus, AMD_SMB_BCNT, len);
314 status = amd_ec_write(smbus, AMD_SMB_DATA + i,
328 status = amd_ec_write(smbus, AMD_SMB_ADDR, addr << 1);
331 status = amd_ec_write(smbus, AMD_SMB_PRTCL, protocol);
335 status = amd_ec_read(smbus, AMD_SMB_STS, temp + 0);
341 status = amd_ec_read(smbus, AMD_SMB_STS, temp + 0);
348 status = amd_ec_read(smbus, AMD_SMB_STS, temp + 0);
362 status = amd_ec_read(smbus, AMD_SMB_DATA, &data->byte);
369 status = amd_ec_read(smbus, AMD_SMB_DATA, temp + 0);
372 status = amd_ec_read(smbus, AMD_SMB_DATA + 1, temp + 1);
380 status = amd_ec_read(smbus, AMD_SMB_BCNT, &len);
387 status = amd_ec_read(smbus, AMD_SMB_DATA + i,
424 struct amd_smbus *smbus;
430 smbus = kzalloc(sizeof(struct amd_smbus), GFP_KERNEL);
431 if (!smbus)
434 smbus->dev = dev;
435 smbus->base = pci_resource_start(dev, 0);
436 smbus->size = pci_resource_len(dev, 0);
444 if (!request_region(smbus->base, smbus->size, amd8111_driver.name)) {
449 smbus->adapter.owner = THIS_MODULE;
450 snprintf(smbus->adapter.name, sizeof(smbus->adapter.name),
451 "SMBus2 AMD8111 adapter at %04x", smbus->base);
452 smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
453 smbus->adapter.algo = &smbus_algorithm;
454 smbus->adapter.algo_data = smbus;
457 smbus->adapter.dev.parent = &dev->dev;
459 pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0);
460 error = i2c_add_adapter(&smbus->adapter);
464 pci_set_drvdata(dev, smbus);
468 release_region(smbus->base, smbus->size);
470 kfree(smbus);
476 struct amd_smbus *smbus = pci_get_drvdata(dev);
478 i2c_del_adapter(&smbus->adapter);
479 release_region(smbus->base, smbus->size);
480 kfree(smbus);