Commit 531310dd authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Wolfram Sang

i2c: designware-pci: Switch to use i2c_new_ccgx_ucsi()

Instead of open coded variant switch to use i2c_new_ccgx_ucsi().
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
parent c74a30ce
...@@ -590,6 +590,7 @@ config I2C_DESIGNWARE_PCI ...@@ -590,6 +590,7 @@ config I2C_DESIGNWARE_PCI
tristate "Synopsys DesignWare PCI" tristate "Synopsys DesignWare PCI"
depends on PCI depends on PCI
select I2C_DESIGNWARE_CORE select I2C_DESIGNWARE_CORE
select I2C_CCGX_UCSI
help help
If you say yes to this option, support will be included for the If you say yes to this option, support will be included for the
Synopsys DesignWare I2C adapter. Only master mode is supported. Synopsys DesignWare I2C adapter. Only master mode is supported.
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include "i2c-designware-core.h" #include "i2c-designware-core.h"
#include "i2c-ccgx-ucsi.h"
#define DRIVER_NAME "i2c-designware-pci" #define DRIVER_NAME "i2c-designware-pci"
#define AMD_CLK_RATE_HZ 100000 #define AMD_CLK_RATE_HZ 100000
...@@ -125,26 +126,6 @@ static int mfld_setup(struct pci_dev *pdev, struct dw_pci_controller *c) ...@@ -125,26 +126,6 @@ static int mfld_setup(struct pci_dev *pdev, struct dw_pci_controller *c)
return -ENODEV; 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) static int navi_amd_setup(struct pci_dev *pdev, struct dw_pci_controller *c)
{ {
struct dw_i2c_dev *dev = dev_get_drvdata(&pdev->dev); struct dw_i2c_dev *dev = dev_get_drvdata(&pdev->dev);
...@@ -325,11 +306,10 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev, ...@@ -325,11 +306,10 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,
} }
if ((dev->flags & MODEL_MASK) == MODEL_AMD_NAVI_GPU) { if ((dev->flags & MODEL_MASK) == MODEL_AMD_NAVI_GPU) {
r = navi_amd_register_client(dev); dev->slave = i2c_new_ccgx_ucsi(&dev->adapter, dev->irq, NULL);
if (r) { if (IS_ERR(dev->slave))
dev_err(dev->dev, "register client failed with %d\n", r); return dev_err_probe(dev->dev, PTR_ERR(dev->slave),
return r; "register UCSI failed\n");
}
} }
pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); pm_runtime_set_autosuspend_delay(&pdev->dev, 1000);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment