aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch
new file mode 100644
index 00000000..224356de
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-5.15/0016-i2c-designware-pci-Switch-to-use-i2c_new_ccgx_ucsi.patch
@@ -0,0 +1,88 @@
+From 1cdb0c2c2428f38bc7914c35d662bae50b018b1f Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Wed, 5 Jan 2022 16:19:35 +0200
+Subject: [PATCH 16/48] i2c: designware-pci: Switch to use i2c_new_ccgx_ucsi()
+
+commit 531310dd5d9f78b5d9e28e742d55c775f114ad5a upstream
+
+Instead of open coded variant switch to use i2c_new_ccgx_ucsi().
+
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Signed-off-by: Wolfram Sang <wsa@kernel.org>
+Signed-off-by: Zhaolong Zhang <zhaolong.zhang@windriver.com>
+---
+ drivers/i2c/busses/Kconfig | 1 +
+ drivers/i2c/busses/i2c-designware-pcidrv.c | 30 ++++------------------
+ 2 files changed, 6 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
+index 28d38d163a53..0d9920283c88 100644
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -578,6 +578,7 @@ config I2C_DESIGNWARE_PCI
+ tristate "Synopsys DesignWare PCI"
+ depends on PCI
+ select I2C_DESIGNWARE_CORE
++ select I2C_CCGX_UCSI
+ help
+ If you say yes to this option, support will be included for the
+ Synopsys DesignWare I2C adapter. Only master mode is supported.
+diff --git a/drivers/i2c/busses/i2c-designware-pcidrv.c b/drivers/i2c/busses/i2c-designware-pcidrv.c
+index 5b45941bcbdd..d7945e6640ca 100644
+--- a/drivers/i2c/busses/i2c-designware-pcidrv.c
++++ b/drivers/i2c/busses/i2c-designware-pcidrv.c
+@@ -24,6 +24,7 @@
+ #include <linux/slab.h>
+
+ #include "i2c-designware-core.h"
++#include "i2c-ccgx-ucsi.h"
+
+ #define DRIVER_NAME "i2c-designware-pci"
+ #define AMD_CLK_RATE_HZ 100000
+@@ -118,26 +119,6 @@ static int mfld_setup(struct pci_dev *pdev, struct dw_pci_controller *c)
+ return -ENODEV;
+ }
+
+- /*
+- * TODO find a better way how to deduplicate instantiation
+- * of USB PD slave device from nVidia GPU driver.
+- */
+-static int navi_amd_register_client(struct dw_i2c_dev *dev)
+-{
+- struct i2c_board_info info;
+-
+- memset(&info, 0, sizeof(struct i2c_board_info));
+- strscpy(info.type, "ccgx-ucsi", I2C_NAME_SIZE);
+- info.addr = 0x08;
+- info.irq = dev->irq;
+-
+- dev->slave = i2c_new_client_device(&dev->adapter, &info);
+- if (IS_ERR(dev->slave))
+- return PTR_ERR(dev->slave);
+-
+- return 0;
+-}
+-
+ static int navi_amd_setup(struct pci_dev *pdev, struct dw_pci_controller *c)
+ {
+ struct dw_i2c_dev *dev = dev_get_drvdata(&pdev->dev);
+@@ -324,11 +305,10 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,
+ }
+
+ if ((dev->flags & MODEL_MASK) == MODEL_AMD_NAVI_GPU) {
+- r = navi_amd_register_client(dev);
+- if (r) {
+- dev_err(dev->dev, "register client failed with %d\n", r);
+- return r;
+- }
++ dev->slave = i2c_new_ccgx_ucsi(&dev->adapter, dev->irq, NULL);
++ if (IS_ERR(dev->slave))
++ return dev_err_probe(dev->dev, PTR_ERR(dev->slave),
++ "register UCSI failed\n");
+ }
+
+ pm_runtime_set_autosuspend_delay(&pdev->dev, 1000);
+--
+2.27.0
+