Commit 2079563d authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Wolfram Sang

i2c: nvidia-gpu: 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>
Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
parent 4ebf4987
...@@ -253,6 +253,7 @@ config I2C_NFORCE2_S4985 ...@@ -253,6 +253,7 @@ config I2C_NFORCE2_S4985
config I2C_NVIDIA_GPU config I2C_NVIDIA_GPU
tristate "NVIDIA GPU I2C controller" tristate "NVIDIA GPU I2C controller"
depends on PCI depends on PCI
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
NVIDIA GPU I2C controller which is used to communicate with the GPU's NVIDIA GPU I2C controller which is used to communicate with the GPU's
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include "i2c-ccgx-ucsi.h"
/* I2C definitions */ /* I2C definitions */
#define I2C_MST_CNTL 0x00 #define I2C_MST_CNTL 0x00
#define I2C_MST_CNTL_GEN_START BIT(0) #define I2C_MST_CNTL_GEN_START BIT(0)
...@@ -266,23 +268,6 @@ static const struct software_node ccgx_node = { ...@@ -266,23 +268,6 @@ static const struct software_node ccgx_node = {
.properties = ccgx_props, .properties = ccgx_props,
}; };
static int gpu_populate_client(struct gpu_i2c_dev *i2cd, int irq)
{
i2cd->gpu_ccgx_ucsi = devm_kzalloc(i2cd->dev,
sizeof(*i2cd->gpu_ccgx_ucsi),
GFP_KERNEL);
if (!i2cd->gpu_ccgx_ucsi)
return -ENOMEM;
strlcpy(i2cd->gpu_ccgx_ucsi->type, "ccgx-ucsi",
sizeof(i2cd->gpu_ccgx_ucsi->type));
i2cd->gpu_ccgx_ucsi->addr = 0x8;
i2cd->gpu_ccgx_ucsi->irq = irq;
i2cd->gpu_ccgx_ucsi->swnode = &ccgx_node;
i2cd->ccgx_client = i2c_new_client_device(&i2cd->adapter, i2cd->gpu_ccgx_ucsi);
return PTR_ERR_OR_ZERO(i2cd->ccgx_client);
}
static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id) static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ {
struct gpu_i2c_dev *i2cd; struct gpu_i2c_dev *i2cd;
...@@ -328,9 +313,10 @@ static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -328,9 +313,10 @@ static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (status < 0) if (status < 0)
goto free_irq_vectors; goto free_irq_vectors;
status = gpu_populate_client(i2cd, pdev->irq); i2cd->ccgx_client = i2c_new_ccgx_ucsi(&i2cd->adapter, pdev->irq, &ccgx_node);
if (status < 0) { if (IS_ERR(i2cd->ccgx_client)) {
dev_err(&pdev->dev, "gpu_populate_client failed %d\n", status); status = dev_err_probe(&pdev->dev, PTR_ERR(i2cd->ccgx_client),
"register UCSI failed\n");
goto del_adapter; goto del_adapter;
} }
......
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