[V1] i2c: designware: fix wrong tx/rx fifo for ACPI
diff mbox

Message ID 1480390327-24562-1-git-send-email-tnhuynh@apm.com
State Superseded
Headers show

Commit Message

tnhuynh@apm.com Nov. 29, 2016, 3:32 a.m. UTC
ACPI always sets txfifo and rxfifo to 32. This configuration will
cause problem if the IP core supports a fifo size of 16 bytes only.
Set the default value to 0 so the driver will get these parameters 
from IP core.

Signed-off-by: Tin Huynh <tnhuynh@apm.com>
---
 drivers/i2c/busses/i2c-designware-platdrv.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Mika Westerberg Nov. 29, 2016, 9:04 a.m. UTC | #1
On Tue, Nov 29, 2016 at 10:32:07AM +0700, Tin Huynh wrote:
> ACPI always sets txfifo and rxfifo to 32. This configuration will
> cause problem if the IP core supports a fifo size of 16 bytes only.
> Set the default value to 0 so the driver will get these parameters 
> from IP core.

Except when those values are not available which is the reason why we
have the default 32 for ACPI systems.

Are you saying you have DW I2C controller on ACPI system where the FIFO
is smaller than 32?
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mika Westerberg Nov. 29, 2016, 9:26 a.m. UTC | #2
On Tue, Nov 29, 2016 at 04:15:13PM +0700, Tin Huynh wrote:
>    Yes , My IP core supports 16 bytes size only . Should we get this
>    parameter from ACPI table instead of 32 ?

What if we set the default 32 from ACPI as currently but then read the
value from hardware as well and pick the smaller one of the two?
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
tnhuynh@apm.com Nov. 29, 2016, 9:36 a.m. UTC | #3
On Tue, Nov 29, 2016 at 4:26 PM, Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
> On Tue, Nov 29, 2016 at 04:15:13PM +0700, Tin Huynh wrote:
>>    Yes , My IP core supports 16 bytes size only . Should we get this
>>    parameter from ACPI table instead of 32 ?
>
> What if we set the default 32 from ACPI as currently but then read the
> value from hardware as well and pick the smaller one of the two?
Yes , it should be ok. I will create new patch as your request

Patch
diff mbox

diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 0b42a12..c88a4b8 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -97,8 +97,8 @@  static int dw_i2c_acpi_configure(struct platform_device *pdev)
 	const struct acpi_device_id *id;
 
 	dev->adapter.nr = -1;
-	dev->tx_fifo_depth = 32;
-	dev->rx_fifo_depth = 32;
+	dev->tx_fifo_depth = 0;
+	dev->rx_fifo_depth = 0;
 
 	/*
 	 * Try to get SDA hold time and *CNT values from an ACPI method if