Lines Matching +full:gemini +full:- +full:pci
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl>,
6 Copyright (C) 2007 - 2014 Jean Delvare <jdelvare@suse.de>
17 * Chip name PCI ID size PEC buffer call read
18 * ---------------------------------------------------------------------------
43 * Lynx Point-LP (PCH) 0x9c22 32 hard yes yes yes
51 * Wildcat Point-LP (PCH) 0x9ca2 32 hard yes yes yes
54 * Sunrise Point-H (PCH) 0xa123 32 hard yes yes yes
55 * Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes yes
61 * Kaby Lake PCH-H (PCH) 0xa2a3 32 hard yes yes yes
62 * Gemini Lake (SOC) 0x31d4 32 hard yes yes yes
63 * Cannon Lake-H (PCH) 0xa323 32 hard yes yes yes
64 * Cannon Lake-LP (PCH) 0x9da3 32 hard yes yes yes
66 * Ice Lake-LP (PCH) 0x34a3 32 hard yes yes yes
67 * Ice Lake-N (PCH) 0x38a3 32 hard yes yes yes
69 * Comet Lake-H (PCH) 0x06a3 32 hard yes yes yes
71 * Tiger Lake-LP (PCH) 0xa0a3 32 hard yes yes yes
72 * Tiger Lake-H (PCH) 0x43a3 32 hard yes yes yes
74 * Comet Lake-V (PCH) 0xa3a3 32 hard yes yes yes
75 * Alder Lake-S (PCH) 0x7aa3 32 hard yes yes yes
76 * Alder Lake-P (PCH) 0x51a3 32 hard yes yes yes
77 * Alder Lake-M (PCH) 0x54a3 32 hard yes yes yes
78 * Raptor Lake-S (PCH) 0x7a23 32 hard yes yes yes
79 * Meteor Lake-P (SOC) 0x7e22 32 hard yes yes yes
80 * Meteor Lake SoC-S (SOC) 0xae22 32 hard yes yes yes
81 * Meteor Lake PCH-S (PCH) 0x7f23 32 hard yes yes yes
83 * Arrow Lake-H (SOC) 0x7722 32 hard yes yes yes
84 * Panther Lake-H (SOC) 0xe322 32 hard yes yes yes
85 * Panther Lake-P (SOC) 0xe422 32 hard yes yes yes
86 * Wildcat Lake-U (SOC) 0x4d22 32 hard yes yes yes
98 * See the file Documentation/i2c/busses/i2c-i801.rst for details.
105 #include <linux/pci.h>
112 #include <linux/i2c-mux.h>
113 #include <linux/i2c-smbus.h>
129 #include <linux/platform_data/i2c-mux-gpio.h>
133 #define SMBHSTSTS(p) (0 + (p)->smba)
134 #define SMBHSTCNT(p) (2 + (p)->smba)
135 #define SMBHSTCMD(p) (3 + (p)->smba)
136 #define SMBHSTADD(p) (4 + (p)->smba)
137 #define SMBHSTDAT0(p) (5 + (p)->smba)
138 #define SMBHSTDAT1(p) (6 + (p)->smba)
139 #define SMBBLKDAT(p) (7 + (p)->smba)
140 #define SMBPEC(p) (8 + (p)->smba) /* ICH3 and later */
141 #define SMBAUXSTS(p) (12 + (p)->smba) /* ICH4 and later */
142 #define SMBAUXCTL(p) (13 + (p)->smba) /* ICH4 and later */
143 #define SMBSLVSTS(p) (16 + (p)->smba) /* ICH3 and later */
144 #define SMBSLVCMD(p) (17 + (p)->smba) /* ICH3 and later */
145 #define SMBNTFDADD(p) (20 + (p)->smba) /* ICH3 and later */
147 /* PCI Address Constants */
276 unsigned gpios[2]; /* Relative to gpio_chip->base */
293 /* Command state used by isr for byte-by-byte block transactions */
346 unsigned long timeout = jiffies + priv->adapter.timeout; in i801_wait_intr()
358 return -ETIMEDOUT; in i801_wait_intr()
364 unsigned long timeout = jiffies + priv->adapter.timeout; in i801_wait_byte_done()
374 return -ETIMEDOUT; in i801_wait_byte_done()
382 pci_err(priv->pci_dev, "Illegal SMBus block read size %u\n", len); in i801_get_block_len()
383 return -EPROTO; in i801_get_block_len()
393 if (!(priv->features & FEATURE_SMBUS_PEC)) in i801_check_and_clear_pec_error()
399 return -EBADMSG; in i801_check_and_clear_pec_error()
406 Return 0 if it is, -EBUSY if it is not. */
413 pci_err(priv->pci_dev, "SMBus is busy, can't use it!\n"); in i801_check_pre()
414 return -EBUSY; in i801_check_pre()
419 pci_dbg(priv->pci_dev, "Clearing status flags (%02x)\n", status); in i801_check_pre()
432 pci_dbg(priv->pci_dev, "Clearing aux status flag CRCE\n"); in i801_check_pre()
452 pci_dbg(priv->pci_dev, "Failed terminating the transaction\n"); in i801_check_post()
453 return -ETIMEDOUT; in i801_check_post()
457 result = -EIO; in i801_check_post()
458 pci_err(priv->pci_dev, "Transaction failed\n"); in i801_check_post()
478 pci_dbg(priv->pci_dev, "PEC error\n"); in i801_check_post()
480 result = -ENXIO; in i801_check_post()
481 pci_dbg(priv->pci_dev, "No response\n"); in i801_check_post()
485 result = -EAGAIN; in i801_check_post()
486 pci_dbg(priv->pci_dev, "Lost arbitration\n"); in i801_check_post()
495 const struct i2c_adapter *adap = &priv->adapter; in i801_transaction()
497 if (priv->features & FEATURE_IRQ) { in i801_transaction()
498 reinit_completion(&priv->done); in i801_transaction()
501 result = wait_for_completion_timeout(&priv->done, adap->timeout); in i801_transaction()
502 return result ? priv->status : -ETIMEDOUT; in i801_transaction()
524 return -EOPNOTSUPP; in i801_block_transaction_by_block()
531 len = data->block[0]; in i801_block_transaction_by_block()
534 iowrite8_rep(SMBBLKDAT(priv), data->block + 1, len); in i801_block_transaction_by_block()
549 data->block[0] = len; in i801_block_transaction_by_block()
551 ioread8_rep(SMBBLKDAT(priv), data->block + 1, len); in i801_block_transaction_by_block()
560 if (priv->is_read) { in i801_isr_byte_done()
566 if (priv->len == SMBUS_LEN_SENTINEL) { in i801_isr_byte_done()
567 priv->len = i801_get_block_len(priv); in i801_isr_byte_done()
568 if (priv->len < 0) in i801_isr_byte_done()
570 priv->len = I2C_SMBUS_BLOCK_MAX; in i801_isr_byte_done()
572 priv->data[-1] = priv->len; in i801_isr_byte_done()
576 if (priv->count < priv->len) in i801_isr_byte_done()
577 priv->data[priv->count++] = ioread8(SMBBLKDAT(priv)); in i801_isr_byte_done()
579 pci_dbg(priv->pci_dev, "Discarding extra byte on block read\n"); in i801_isr_byte_done()
582 if (priv->count == priv->len - 1) in i801_isr_byte_done()
583 iowrite8(priv->cmd | SMBHSTCNT_LAST_BYTE, in i801_isr_byte_done()
585 } else if (priv->count < priv->len - 1) { in i801_isr_byte_done()
587 iowrite8(priv->data[++priv->count], SMBBLKDAT(priv)); in i801_isr_byte_done()
598 * With the tested platforms, reading SMBNTFDDAT (22 + (p)->smba) in i801_host_notify_isr()
602 i2c_handle_smbus_host_notify(&priv->adapter, addr); in i801_host_notify_isr()
613 * INTR - Success
614 * DEV_ERR - Invalid command, NAK or communication timeout
615 * BUS_ERR - SMI# transaction collision
616 * FAILED - transaction was canceled due to a KILL request
617 * When any of these occur, update ->status and signal completion.
619 * 2) For byte-by-byte (I2C read/write) transactions, one BYTE_DONE interrupt
620 * occurs for each byte of a byte-by-byte to prepare the next byte.
631 pci_read_config_word(priv->pci_dev, PCI_STATUS, &pcists); in i801_isr()
635 if (priv->features & FEATURE_HOST_NOTIFY) { in i801_isr()
655 priv->status = status & STATUS_ERROR_FLAGS; in i801_isr()
656 complete(&priv->done); in i801_isr()
663 * For "byte-by-byte" block transactions:
675 const struct i2c_adapter *adap = &priv->adapter; in i801_block_transaction_byte_by_byte()
678 return -EOPNOTSUPP; in i801_block_transaction_byte_by_byte()
680 len = data->block[0]; in i801_block_transaction_byte_by_byte()
684 iowrite8(data->block[1], SMBBLKDAT(priv)); in i801_block_transaction_byte_by_byte()
693 if (priv->features & FEATURE_IRQ) { in i801_block_transaction_byte_by_byte()
694 priv->is_read = (read_write == I2C_SMBUS_READ); in i801_block_transaction_byte_by_byte()
695 if (len == 1 && priv->is_read) in i801_block_transaction_byte_by_byte()
697 priv->cmd = smbcmd | SMBHSTCNT_INTREN; in i801_block_transaction_byte_by_byte()
698 priv->len = len; in i801_block_transaction_byte_by_byte()
699 priv->count = 0; in i801_block_transaction_byte_by_byte()
700 priv->data = &data->block[1]; in i801_block_transaction_byte_by_byte()
702 reinit_completion(&priv->done); in i801_block_transaction_byte_by_byte()
703 iowrite8(priv->cmd | SMBHSTCNT_START, SMBHSTCNT(priv)); in i801_block_transaction_byte_by_byte()
704 result = wait_for_completion_timeout(&priv->done, adap->timeout); in i801_block_transaction_byte_by_byte()
705 return result ? priv->status : -ETIMEDOUT; in i801_block_transaction_byte_by_byte()
731 return -EPROTO; in i801_block_transaction_byte_by_byte()
733 data->block[0] = len; in i801_block_transaction_byte_by_byte()
737 data->block[i] = ioread8(SMBBLKDAT(priv)); in i801_block_transaction_byte_by_byte()
738 if (i == len - 1) in i801_block_transaction_byte_by_byte()
743 iowrite8(data->block[i+1], SMBBLKDAT(priv)); in i801_block_transaction_byte_by_byte()
777 iowrite8(data->byte, SMBHSTDAT0(priv)); in i801_simple_transaction()
784 iowrite8(data->word & 0xff, SMBHSTDAT0(priv)); in i801_simple_transaction()
785 iowrite8((data->word & 0xff00) >> 8, SMBHSTDAT1(priv)); in i801_simple_transaction()
792 iowrite8(data->word & 0xff, SMBHSTDAT0(priv)); in i801_simple_transaction()
793 iowrite8((data->word & 0xff00) >> 8, SMBHSTDAT1(priv)); in i801_simple_transaction()
799 pci_err(priv->pci_dev, "Unsupported transaction %d\n", command); in i801_simple_transaction()
800 return -EOPNOTSUPP; in i801_simple_transaction()
810 data->byte = ioread8(SMBHSTDAT0(priv)); in i801_simple_transaction()
814 data->word = ioread8(SMBHSTDAT0(priv)) + in i801_simple_transaction()
827 data->block[0] = SMBUS_LEN_SENTINEL; in i801_smbus_block_transaction()
828 else if (data->block[0] < 1 || data->block[0] > I2C_SMBUS_BLOCK_MAX) in i801_smbus_block_transaction()
829 return -EPROTO; in i801_smbus_block_transaction()
838 if (priv->features & FEATURE_BLOCK_BUFFER) in i801_smbus_block_transaction()
850 if (data->block[0] < 1 || data->block[0] > I2C_SMBUS_BLOCK_MAX) in i801_i2c_block_transaction()
851 return -EPROTO; in i801_i2c_block_transaction()
858 priv->original_hstcfg & SMBHSTCFG_SPD_WD ? read_write : I2C_SMBUS_WRITE); in i801_i2c_block_transaction()
868 pci_read_config_byte(priv->pci_dev, SMBHSTCFG, &hostc); in i801_i2c_block_transaction()
869 pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hostc | SMBHSTCFG_I2C_EN); in i801_i2c_block_transaction()
870 } else if (!(priv->features & FEATURE_I2C_BLOCK_READ)) { in i801_i2c_block_transaction()
871 pci_err(priv->pci_dev, "I2C block read is unsupported!\n"); in i801_i2c_block_transaction()
872 return -EOPNOTSUPP; in i801_i2c_block_transaction()
880 pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hostc); in i801_i2c_block_transaction()
893 if (priv->acpi_reserved) in i801_access()
894 return -EBUSY; in i801_access()
896 pm_runtime_get_sync(&priv->pci_dev->dev); in i801_access()
902 hwpec = (priv->features & FEATURE_SMBUS_PEC) && (flags & I2C_CLIENT_PEC) in i801_access()
933 pm_runtime_put_autosuspend(&priv->pci_dev->dev); in i801_access()
946 ((priv->features & FEATURE_SMBUS_PEC) ? I2C_FUNC_SMBUS_PEC : 0) | in i801_func()
947 ((priv->features & FEATURE_BLOCK_PROC) ? in i801_func()
949 ((priv->features & FEATURE_I2C_BLOCK_READ) ? in i801_func()
951 ((priv->features & FEATURE_HOST_NOTIFY) ? in i801_func()
959 if (!(priv->features & FEATURE_HOST_NOTIFY)) in i801_enable_host_notify()
968 priv->original_slvcmd, SMBSLVCMD(priv)); in i801_enable_host_notify()
976 if (!(priv->features & FEATURE_HOST_NOTIFY)) in i801_disable_host_notify()
979 iowrite8(priv->original_slvcmd, SMBSLVCMD(priv)); in i801_disable_host_notify()
1064 MODULE_DEVICE_TABLE(pci, i801_ids);
1077 sizeof(signature)-1)) in bios_signature()
1138 if (dm->type != DMI_ENTRY_ONBOARD_DEVICE) in dmi_check_onboard_devices()
1141 count = (dm->length - sizeof(struct dmi_header)) / 2; in dmi_check_onboard_devices()
1144 const char *name = ((char *) dm) + dm->length; in dmi_check_onboard_devices()
1150 s--; in dmi_check_onboard_devices()
1153 s--; in dmi_check_onboard_devices()
1166 if (priv->features & FEATURE_IDF) in i801_probe_optional_targets()
1175 i2c_new_client_device(&priv->adapter, &info); in i801_probe_optional_targets()
1179 dmi_walk(dmi_check_onboard_devices, &priv->adapter); in i801_probe_optional_targets()
1183 if (!priv->mux_pdev) in i801_probe_optional_targets()
1185 i2c_register_spd_write_enable(&priv->adapter); in i801_probe_optional_targets()
1213 DMI_MATCH(DMI_BOARD_NAME, "Z8NA-D6(C)"),
1220 DMI_MATCH(DMI_BOARD_NAME, "Z8P(N)E-D12(X)"),
1227 DMI_MATCH(DMI_BOARD_NAME, "Z8NH-D12"),
1234 DMI_MATCH(DMI_BOARD_NAME, "Z8PH-D12/IFB"),
1241 DMI_MATCH(DMI_BOARD_NAME, "Z8NR-D12"),
1248 DMI_MATCH(DMI_BOARD_NAME, "Z8P(N)H-D12"),
1255 DMI_MATCH(DMI_BOARD_NAME, "Z8PG-D18"),
1262 DMI_MATCH(DMI_BOARD_NAME, "Z8PE-D18"),
1269 DMI_MATCH(DMI_BOARD_NAME, "Z8PS-D12"),
1283 dev->type != &i2c_adapter_type || in i801_notifier_call()
1284 i2c_root_adapter(dev) != &priv->adapter) in i801_notifier_call()
1296 struct device *dev = &priv->adapter.dev; in i801_add_mux()
1307 mux_config = id->driver_data; in i801_add_mux()
1311 gpio_data.parent = priv->adapter.nr; in i801_add_mux()
1312 gpio_data.values = mux_config->values; in i801_add_mux()
1313 gpio_data.n_values = mux_config->n_values; in i801_add_mux()
1318 struct_size(lookup, table, mux_config->n_gpios + 1), in i801_add_mux()
1322 lookup->dev_id = "i2c-mux-gpio"; in i801_add_mux()
1323 for (i = 0; i < mux_config->n_gpios; i++) in i801_add_mux()
1324 lookup->table[i] = GPIO_LOOKUP(mux_config->gpio_chip, in i801_add_mux()
1325 mux_config->gpios[i], "mux", 0); in i801_add_mux()
1328 priv->mux_notifier_block.notifier_call = i801_notifier_call; in i801_add_mux()
1329 if (bus_register_notifier(&i2c_bus_type, &priv->mux_notifier_block)) in i801_add_mux()
1338 priv->mux_pdev = platform_device_register_data(dev, "i2c-mux-gpio", in i801_add_mux()
1341 if (IS_ERR(priv->mux_pdev)) { in i801_add_mux()
1344 dev_err(dev, "Failed to register i2c-mux-gpio device\n"); in i801_add_mux()
1346 priv->lookup = lookup; in i801_add_mux()
1352 bus_unregister_notifier(&i2c_bus_type, &priv->mux_notifier_block); in i801_del_mux()
1353 platform_device_unregister(priv->mux_pdev); in i801_del_mux()
1354 gpiod_remove_lookup_table(priv->lookup); in i801_del_mux()
1377 ret = p2sb_bar(pci_dev->bus, 0, res); in i801_add_tco_spt()
1381 if (pci_dev->device == PCI_DEVICE_ID_INTEL_DNV_SMBUS) in i801_add_tco_spt()
1382 res->start += SBREG_SMBCTRL_DNV; in i801_add_tco_spt()
1384 res->start += SBREG_SMBCTRL; in i801_add_tco_spt()
1386 res->end = res->start + 3; in i801_add_tco_spt()
1388 return platform_device_register_resndata(&pci_dev->dev, "iTCO_wdt", -1, in i801_add_tco_spt()
1400 return platform_device_register_resndata(&pci_dev->dev, "iTCO_wdt", -1, in i801_add_tco_cnl()
1406 struct pci_dev *pci_dev = priv->pci_dev; in i801_add_tco()
1414 if (!(priv->features & (FEATURE_TCO_SPT | FEATURE_TCO_CNL))) in i801_add_tco()
1428 res->start = tco_base & ~1; in i801_add_tco()
1429 res->end = res->start + 32 - 1; in i801_add_tco()
1430 res->flags = IORESOURCE_IO; in i801_add_tco()
1432 if (priv->features & FEATURE_TCO_CNL) in i801_add_tco()
1433 priv->tco_pdev = i801_add_tco_cnl(pci_dev, tco_res); in i801_add_tco()
1435 priv->tco_pdev = i801_add_tco_spt(pci_dev, tco_res); in i801_add_tco()
1437 if (IS_ERR(priv->tco_pdev)) in i801_add_tco()
1445 return address >= pci_resource_start(priv->pci_dev, SMBBAR) && in i801_acpi_is_smbus_ioport()
1446 address <= pci_resource_end(priv->pci_dev, SMBBAR); in i801_acpi_is_smbus_ioport()
1454 struct pci_dev *pdev = priv->pci_dev; in i801_acpi_io_handler()
1462 i2c_lock_bus(&priv->adapter, I2C_LOCK_SEGMENT); in i801_acpi_io_handler()
1464 if (!priv->acpi_reserved && i801_acpi_is_smbus_ioport(priv, address)) { in i801_acpi_io_handler()
1465 priv->acpi_reserved = true; in i801_acpi_io_handler()
1474 pm_runtime_get_sync(&pdev->dev); in i801_acpi_io_handler()
1482 i2c_unlock_bus(&priv->adapter, I2C_LOCK_SEGMENT); in i801_acpi_io_handler()
1489 acpi_handle ah = ACPI_HANDLE(&priv->pci_dev->dev); in i801_acpi_probe()
1497 return acpi_check_resource_conflict(&priv->pci_dev->resource[SMBBAR]); in i801_acpi_probe()
1502 acpi_handle ah = ACPI_HANDLE(&priv->pci_dev->dev); in i801_acpi_remove()
1513 unsigned char hstcfg = priv->original_hstcfg; in i801_setup_hstcfg()
1517 pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hstcfg); in i801_setup_hstcfg()
1522 iowrite8(priv->original_hstcnt, SMBHSTCNT(priv)); in i801_restore_regs()
1523 pci_write_config_byte(priv->pci_dev, SMBHSTCFG, priv->original_hstcfg); in i801_restore_regs()
1531 priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL); in i801_probe()
1533 return -ENOMEM; in i801_probe()
1535 i2c_set_adapdata(&priv->adapter, priv); in i801_probe()
1536 priv->adapter.owner = THIS_MODULE; in i801_probe()
1537 priv->adapter.class = I2C_CLASS_HWMON; in i801_probe()
1538 priv->adapter.algo = &smbus_algorithm; in i801_probe()
1539 priv->adapter.dev.parent = &dev->dev; in i801_probe()
1540 acpi_use_parent_companion(&priv->adapter.dev); in i801_probe()
1541 priv->adapter.retries = 3; in i801_probe()
1543 priv->pci_dev = dev; in i801_probe()
1544 priv->features = id->driver_data; in i801_probe()
1548 if (priv->features & disable_features & (1 << i)) in i801_probe()
1551 priv->features &= ~disable_features; in i801_probe()
1554 if (!(priv->features & FEATURE_BLOCK_BUFFER)) in i801_probe()
1555 priv->features &= ~FEATURE_BLOCK_PROC; in i801_probe()
1563 pci_err(dev, "Failed to enable SMBus PCI device (%d)\n", err); in i801_probe()
1570 return -ENODEV; in i801_probe()
1574 return -ENODEV; in i801_probe()
1579 priv->smba = pcim_iomap_region(dev, bar, DRV_NAME); in i801_probe()
1580 if (IS_ERR(priv->smba)) { in i801_probe()
1584 return PTR_ERR(priv->smba); in i801_probe()
1587 pci_read_config_byte(dev, SMBHSTCFG, &priv->original_hstcfg); in i801_probe()
1589 if (!(priv->original_hstcfg & SMBHSTCFG_HST_EN)) in i801_probe()
1592 if (priv->original_hstcfg & SMBHSTCFG_SMB_SMI_EN) { in i801_probe()
1595 priv->features &= ~FEATURE_IRQ; in i801_probe()
1597 if (priv->original_hstcfg & SMBHSTCFG_SPD_WD) in i801_probe()
1601 if (priv->features & (FEATURE_SMBUS_PEC | FEATURE_BLOCK_BUFFER)) in i801_probe()
1606 priv->adapter.timeout = HZ / 5; in i801_probe()
1608 if (dev->irq == IRQ_NOTCONNECTED) in i801_probe()
1609 priv->features &= ~FEATURE_IRQ; in i801_probe()
1611 if (priv->features & FEATURE_IRQ) { in i801_probe()
1615 pci_read_config_word(priv->pci_dev, PCI_STATUS, &pcists); in i801_probe()
1620 if (priv->features & FEATURE_IRQ) { in i801_probe()
1621 init_completion(&priv->done); in i801_probe()
1623 err = devm_request_irq(&dev->dev, dev->irq, i801_isr, in i801_probe()
1626 pci_err(dev, "Failed to allocate irq %d: %d\n", dev->irq, err); in i801_probe()
1627 priv->features &= ~FEATURE_IRQ; in i801_probe()
1631 priv->features & FEATURE_IRQ ? "PCI interrupt" : "polling"); in i801_probe()
1634 if (!(priv->features & FEATURE_IRQ)) in i801_probe()
1635 priv->features &= ~FEATURE_HOST_NOTIFY; in i801_probe()
1638 priv->original_hstcnt = ioread8(SMBHSTCNT(priv)) & ~SMBHSTCNT_KILL; in i801_probe()
1639 if (priv->features & FEATURE_HOST_NOTIFY) in i801_probe()
1640 priv->original_slvcmd = ioread8(SMBSLVCMD(priv)); in i801_probe()
1648 snprintf(priv->adapter.name, sizeof(priv->adapter.name), in i801_probe()
1650 (priv->features & FEATURE_IDF) ? "I801 IDF" : "I801", in i801_probe()
1653 err = i2c_add_adapter(&priv->adapter); in i801_probe()
1655 platform_device_unregister(priv->tco_pdev); in i801_probe()
1661 i801_enable_host_notify(&priv->adapter); in i801_probe()
1663 /* We ignore errors - multiplexing is optional */ in i801_probe()
1669 dev_pm_set_driver_flags(&dev->dev, DPM_FLAG_NO_DIRECT_COMPLETE); in i801_probe()
1670 pm_runtime_set_autosuspend_delay(&dev->dev, 1000); in i801_probe()
1671 pm_runtime_use_autosuspend(&dev->dev); in i801_probe()
1672 pm_runtime_put_autosuspend(&dev->dev); in i801_probe()
1673 pm_runtime_allow(&dev->dev); in i801_probe()
1684 i2c_del_adapter(&priv->adapter); in i801_remove()
1687 platform_device_unregister(priv->tco_pdev); in i801_remove()
1690 if (!priv->acpi_reserved) in i801_remove()
1691 pm_runtime_get_noresume(&dev->dev); in i801_remove()
1697 * some systems during power-off (eg. Fujitsu-Siemens Lifebook E8010) in i801_remove()
1714 i2c_mark_adapter_suspended(&priv->adapter); in i801_suspend()
1725 i801_enable_host_notify(&priv->adapter); in i801_resume()
1726 i2c_mark_adapter_resumed(&priv->adapter); in i801_resume()