/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include extern struct chip_operations drivers_i2c_tpm_ops; static bool match_i2c_tpm(DEVTREE_CONST struct device *dev) { return dev->chip_ops == &drivers_i2c_tpm_ops; } /* * This function runs only on the volteer_ti50 variant, which has the GSC on a * reworked I2C bus. */ static void devtree_enable_i2c_tpm(void) { struct device *spi_tpm = pcidev_path_on_root(PCH_DEVFN_GSPI0)->link_list->children; struct device *i2c_tpm = dev_find_matching_device_on_bus( pcidev_path_on_root(PCH_DEVFN_I2C1)->link_list, match_i2c_tpm); if (!i2c_tpm || !spi_tpm) return; spi_tpm->enabled = 0; i2c_tpm->enabled = 1; } void variant_devtree_update(void) { if (CONFIG(MAINBOARD_HAS_I2C_TPM_CR50)) devtree_enable_i2c_tpm(); }