Re: [PATCH 3/3] i2c-s3c2410: Add HDMIPHY quirk for S3C2440
From: Tomasz Stanislawski <hidden>
Date: 2012-03-13 17:27:43
Also in:
linux-i2c, linux-samsung-soc, lkml
Hi Karol, Please refer to comments below, Regards, Tomasz Stanislawski On 03/13/2012 05:54 PM, Karol Lewandowski wrote:
This patch adds support for s3c2440 I2C bus controller dedicated HDMIPHY device on Exynos4 platform. Some quirks are introduced due to differences between HDMIPHY and other I2C controllers on Exynos4. These differences are: - no GPIOs, HDMIPHY is inside the SoC and the controller is connected internally - due to unknown reason (probably HW bug in HDMIPHY and/or the controller) a transfer fails to finish. The controller hangs after sending the last byte, the workaround for this bug is resetting the controller after each transfer Signed-off-by: Tomasz Stanislawski <redacted> Signed-off-by: Karol Lewandowski <redacted> Tested-by: Tomasz Stanislawski <redacted> Signed-off-by: Kyungmin Park <redacted> --- .../devicetree/bindings/i2c/samsung-i2c.txt | 10 ++++- drivers/i2c/busses/i2c-s3c2410.c | 36 ++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-)
[snip]
quoted hunk ↗ jump to hunk
@@ -871,6 +896,14 @@ s3c24xx_i2c_parse_dt(struct device_node *np, struct s3c24xx_i2c *i2c) return; pdata->bus_num = -1; /* i2c bus number is dynamically assigned */ + + if (s3c24xx_i2c_is_type(i2c, TYPE_S3C2440) &&
I think that type checking should be removed because hdmiphy quirk is something orthogonal to the controller type.
quoted hunk ↗ jump to hunk
+ of_get_property(np, "samsung,i2c-quirk-hdmiphy", NULL)) + i2c->type |= FLAG_HDMIPHY; + + if (of_get_property(np, "samsung,i2c-no-gpio", NULL)) + i2c->type |= FLAG_NO_GPIO; + of_property_read_u32(np, "samsung,i2c-sda-delay", &pdata->sda_delay); of_property_read_u32(np, "samsung,i2c-slave-addr", &pdata->slave_addr); of_property_read_u32(np, "samsung,i2c-max-bus-freq",@@ -1128,6 +1161,9 @@ static struct platform_device_id s3c24xx_driver_ids[] = { }, { .name = "s3c2440-i2c", .driver_data = TYPE_S3C2440, + }, { + .name = "s3c2440-hdmiphy-i2c", + .driver_data = TYPE_S3C2440 | FLAG_HDMIPHY | FLAG_NO_GPIO, }, { }, }; MODULE_DEVICE_TABLE(platform, s3c24xx_driver_ids);