[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f4c1fb29-b315-33ee-f029-684ef9cd6264@linux.intel.com>
Date: Tue, 16 Aug 2016 17:00:12 +0300
From: Jarkko Nikula <jarkko.nikula@...ux.intel.com>
To: Lucas De Marchi <lucas.demarchi@...el.com>,
linux-i2c@...r.kernel.org
Cc: christian.ruppert@...tech.com, linux-kernel@...r.kernel.org,
mika.westerberg@...ux.intel.com,
José Roberto de Souza <jose.souza@...el.com>
Subject: Re: [PATCH v3 2/3] i2c: designware: detect when dynamic tar update is
possible
Hi, + Wolfram
On 07/29/2016 01:03 AM, Lucas De Marchi wrote:
> This adapter can be synthesized with dynamic tar update enabled or disabled.
> When enabled it is not necessary to disable the adapter to change the slave
> address in some situations, which saves some time per transaction.
>
> There is no direct register to know if this feature is enabled but we can do it
> indirectly by writing to the 10BIT_ADDR field in IC_CON: this field is
> read only when dynamic tar update is enabled.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@...el.com>
> Signed-off-by: José Roberto de Souza <jose.souza@...el.com>
> ---
> drivers/i2c/busses/i2c-designware-core.c | 37 ++++++++++++++++++++++----------
> drivers/i2c/busses/i2c-designware-core.h | 1 +
> 2 files changed, 27 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
> index 2c61585..a8408db 100644
> --- a/drivers/i2c/busses/i2c-designware-core.c
> +++ b/drivers/i2c/busses/i2c-designware-core.c
> @@ -388,6 +388,20 @@ int i2c_dw_init(struct dw_i2c_dev *dev)
> /* configure the i2c master */
> dw_writel(dev, dev->master_cfg , DW_IC_CON);
>
> + /*
> + * Test if dynamic TAR update is enabled in this controller by writing to
Over 80 characters in this line.
> + */
> + reg = dw_readl(dev, DW_IC_CON);
> + dw_writel(dev, reg ^ DW_IC_CON_10BITADDR_MASTER, DW_IC_CON);
> +
> + if ((dw_readl(dev, DW_IC_CON) & DW_IC_CON_10BITADDR_MASTER) ==
> + (reg & DW_IC_CON_10BITADDR_MASTER)) {
> + dev->dynamic_tar_update_enabled = true;
> + dev_dbg(dev->dev, "Dynamic TAR update enabled");
> + }
Is this possible to move to i2c_dw_probe()? I guess the enabled status
doesn't change runtime?
--
Jarkko
Powered by blists - more mailing lists