Re: [RESEND PATCH v6 3/6] i2c: designware: MASTER mode as separated driver

From: Jarkko Nikula
Date: Thu Mar 02 2017 - 09:21:57 EST


On 03/01/17 17:59, Luis Oliveira wrote:
- The functions related to I2C master mode of operation were transformed
in a single driver.
- Common definitions were moved to i2c-designware-core.h
- The i2c-designware-core is now only a library file, the functions
associated are in a source file called i2c-designware-common and
are used by both i2c-designware-master and i2c-designware-slave.
- To decrease noise in namespace common i2c_dw_*() functions are
now using ops to keep them private.

Almost all of the "core" source is now part of the "master" source. The
difference is the functions used by both modes and they are in the
"common" source file.

Signed-off-by: Luis Oliveira <lolivei@xxxxxxxxxxxx>
Acked-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
V5->V6
- Now using ops

drivers/i2c/busses/Makefile | 1 +
drivers/i2c/busses/i2c-designware-common.c | 274 +++++++++++++++
drivers/i2c/busses/i2c-designware-core.h | 140 +++++++-
...c-designware-core.c => i2c-designware-master.c} | 367 +--------------------
drivers/i2c/busses/i2c-designware-platdrv.c | 6 +-
5 files changed, 423 insertions(+), 365 deletions(-)
create mode 100644 drivers/i2c/busses/i2c-designware-common.c
rename drivers/i2c/busses/{i2c-designware-core.c => i2c-designware-master.c} (64%)

...
diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
index 1a010730be43..35d7264d9e3a 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -40,6 +40,124 @@
...
/**
* struct dw_i2c_dev - private i2c-designware data
@@ -125,15 +243,31 @@ struct dw_i2c_dev {
int (*acquire_lock)(struct dw_i2c_dev *dev);
void (*release_lock)(struct dw_i2c_dev *dev);
bool pm_runtime_disabled;
+ void (*disable)(struct dw_i2c_dev *dev);
+ void (*disable_int)(struct dw_i2c_dev *dev);
+ int (*init)(struct dw_i2c_dev *dev);

Please move kernel doc comments for these members from patch 4/6 here. Adding new members and comments should go together.

diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 206dea03b0d0..671bdc0fdb24 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
...
@@ -347,7 +347,7 @@ static int dw_i2c_plat_suspend(struct device *dev)
struct platform_device *pdev = to_platform_device(dev);
struct dw_i2c_dev *i_dev = platform_get_drvdata(pdev);

- i2c_dw_disable(i_dev);
+ dev->disable(i_dev);
i2c_dw_plat_prepare_clk(i_dev, false);

This doesn't compile. Looks like copy-paste from your dw_i2c_plat_remove() change but here you must access through the i_dev.

You need to convert also the i2c-designware-pcidrv.c.

--
Jarkko