From: Karol Lewandowski <k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
To: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Marek Szyprowski
<m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org,
thomas.abraham-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Tomasz Stanislawski
<t.stanislaws-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org
Subject: Re: [PATCH 3/3] i2c-s3c2410: Add HDMIPHY quirk for S3C2440
Date: Wed, 18 Apr 2012 18:31:28 +0200 [thread overview]
Message-ID: <4F8EEC60.2080603@samsung.com> (raw)
In-Reply-To: <20120418134644.GB19220-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
On 18.04.2012 15:46, Wolfram Sang wrote:
>
>>>> Optional properties:
>>>> + - gpios: The order of the gpios should be the following: <SDA, SCL>.
>>>> + The gpio specifier depends on the gpio controller. Required in all cases
>>>> + except when "samsung,i2c-no-gpio" is also specified.
>>>> + - samsung,i2c-no-gpio: input/output lines of the controller are
>>>> + permanently wired to the respective client, there are no gpio
>>>> + lines that need to be configured to enable this controller
>>>
>>> Can't we just skip this property...
>>
>> All standard s3c-24x0 i2c controllers require gpio lines for proper operation,
>> so lack of the gpios property should be considered as an error. However there
>> is a special case of internal, embedded i2c controller which has no such gpio
>> lines at all.
>>
>>>> - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
>>>> specified, default value is 0.
>>>> - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
>>>> specified, the default value in Hz is 100000.
>>>> + - samsung,i2c-quirk-hdmiphy: Quirk for HDMI PHY block found on
>>>> + Exynos4 platform - reduce timeout and reset controller after each
>>>> + transfer
>>>
>>> ... and this one, if we declare a new compatible-entry for exynos4?
>>
>> It is not strictly related to Exynos4 SoCs. Exynos4 SoC has 8 standard s3c2440 style
>> i2c controllers and one additional, internal controller for HDMIPHY, which needs
>> some workarounds in the driver. Maybe the quirk should be named 'broken timeout
>> detection'
>
> I was wondering since you do what I suggested for platform devices already:
>
> + .name = "s3c2440-hdmiphy-i2c",
> + .driver_data = QUIRK_S3C2440 | QUIRK_HDMIPHY | QUIRK_NO_GPIO,
Here I've done it this way for compatibility with legacy driver and
board(s).
Device tree is new interface, and I thought that it would be better
to describe things explicitly and separately from device type.
Right now these properties are used only on S3C2440, but I don't
consider it highly unlikely to see these on S3C**** in future.
Tomasz had similar doubts when I've posted patch that checked these
quirks only for S3C2440:
http://permalink.gmane.org/gmane.linux.drivers.i2c/10305
Thus, I've chosen properties and not separate type.
It's easy to introduce compat string (see below), but given above
I'm afraid that we might end up adding -hdmiphy- variant for every
new version of i2c controller.
E.g.
diff --git a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
index c6670f9..b1d106e 100644
--- a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
@@ -6,6 +6,8 @@ Required properties:
- compatible: value should be either of the following.
(a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c.
(b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c.
+ (c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used
+ inside HDMIPHY block found on several samsung SoCs
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: interrupt number to the cpu.
@@ -13,18 +15,13 @@ Required properties:
Optional properties:
- gpios: The order of the gpios should be the following: <SDA, SCL>.
- The gpio specifier depends on the gpio controller. Required in all cases
- except when "samsung,i2c-no-gpio" is also specified.
- - samsung,i2c-no-gpio: input/output lines of the controller are
- permanently wired to the respective client, there are no gpio
- lines that need to be configured to enable this controller
+ The gpio specifier depends on the gpio controller. Required in all
+ cases except for "samsung,i2c-hdmiphy-i2c" whose input/output
+ lines are permanently wired to the respective client
- samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
specified, default value is 0.
- samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
specified, the default value in Hz is 100000.
- - samsung,i2c-quirk-hdmiphy: Quirk for HDMI PHY block found on
- Exynos4 platform - reduce timeout and reset controller after each
- transfer
Example:
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 71438eb..bc82045 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -106,6 +106,8 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_driver_ids);
static const struct of_device_id s3c24xx_i2c_match[] = {
{ .compatible = "samsung,s3c2410-i2c", .data = (void *)0 },
{ .compatible = "samsung,s3c2440-i2c", .data = (void *)QUIRK_S3C2440 },
+ { .compatible = "samsung,s3c2440-hdmiphy-i2c",
+ .data = (void *)(QUIRK_S3C2440 | QUIRK_HDMIPHY | QUIRK_NO_GPIO) },
{},
};
MODULE_DEVICE_TABLE(of, s3c24xx_i2c_match);
@@ -902,12 +904,6 @@ s3c24xx_i2c_parse_dt(struct device_node *np, struct s3c24xx_i2c *i2c)
pdata->bus_num = -1; /* i2c bus number is dynamically assigned */
- if (of_get_property(np, "samsung,i2c-quirk-hdmiphy", NULL))
- i2c->quirks |= QUIRK_HDMIPHY;
-
- if (of_get_property(np, "samsung,i2c-no-gpio", NULL))
- i2c->quirks |= QUIRK_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",
Regards,
--
Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform
WARNING: multiple messages have this Message-ID (diff)
From: Karol Lewandowski <k.lewandowsk@samsung.com>
To: Wolfram Sang <w.sang@pengutronix.de>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
ben-linux@fluff.org, thomas.abraham@linaro.org,
linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org,
devicetree-discuss@lists.ozlabs.org,
linux-samsung-soc@vger.kernel.org,
Tomasz Stanislawski <t.stanislaws@samsung.com>,
kyungmin.park@samsung.com, broonie@opensource.wolfsonmicro.com
Subject: Re: [PATCH 3/3] i2c-s3c2410: Add HDMIPHY quirk for S3C2440
Date: Wed, 18 Apr 2012 18:31:28 +0200 [thread overview]
Message-ID: <4F8EEC60.2080603@samsung.com> (raw)
In-Reply-To: <20120418134644.GB19220@pengutronix.de>
On 18.04.2012 15:46, Wolfram Sang wrote:
>
>>>> Optional properties:
>>>> + - gpios: The order of the gpios should be the following: <SDA, SCL>.
>>>> + The gpio specifier depends on the gpio controller. Required in all cases
>>>> + except when "samsung,i2c-no-gpio" is also specified.
>>>> + - samsung,i2c-no-gpio: input/output lines of the controller are
>>>> + permanently wired to the respective client, there are no gpio
>>>> + lines that need to be configured to enable this controller
>>>
>>> Can't we just skip this property...
>>
>> All standard s3c-24x0 i2c controllers require gpio lines for proper operation,
>> so lack of the gpios property should be considered as an error. However there
>> is a special case of internal, embedded i2c controller which has no such gpio
>> lines at all.
>>
>>>> - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
>>>> specified, default value is 0.
>>>> - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
>>>> specified, the default value in Hz is 100000.
>>>> + - samsung,i2c-quirk-hdmiphy: Quirk for HDMI PHY block found on
>>>> + Exynos4 platform - reduce timeout and reset controller after each
>>>> + transfer
>>>
>>> ... and this one, if we declare a new compatible-entry for exynos4?
>>
>> It is not strictly related to Exynos4 SoCs. Exynos4 SoC has 8 standard s3c2440 style
>> i2c controllers and one additional, internal controller for HDMIPHY, which needs
>> some workarounds in the driver. Maybe the quirk should be named 'broken timeout
>> detection'
>
> I was wondering since you do what I suggested for platform devices already:
>
> + .name = "s3c2440-hdmiphy-i2c",
> + .driver_data = QUIRK_S3C2440 | QUIRK_HDMIPHY | QUIRK_NO_GPIO,
Here I've done it this way for compatibility with legacy driver and
board(s).
Device tree is new interface, and I thought that it would be better
to describe things explicitly and separately from device type.
Right now these properties are used only on S3C2440, but I don't
consider it highly unlikely to see these on S3C**** in future.
Tomasz had similar doubts when I've posted patch that checked these
quirks only for S3C2440:
http://permalink.gmane.org/gmane.linux.drivers.i2c/10305
Thus, I've chosen properties and not separate type.
It's easy to introduce compat string (see below), but given above
I'm afraid that we might end up adding -hdmiphy- variant for every
new version of i2c controller.
E.g.
diff --git a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
index c6670f9..b1d106e 100644
--- a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
@@ -6,6 +6,8 @@ Required properties:
- compatible: value should be either of the following.
(a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c.
(b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c.
+ (c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used
+ inside HDMIPHY block found on several samsung SoCs
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: interrupt number to the cpu.
@@ -13,18 +15,13 @@ Required properties:
Optional properties:
- gpios: The order of the gpios should be the following: <SDA, SCL>.
- The gpio specifier depends on the gpio controller. Required in all cases
- except when "samsung,i2c-no-gpio" is also specified.
- - samsung,i2c-no-gpio: input/output lines of the controller are
- permanently wired to the respective client, there are no gpio
- lines that need to be configured to enable this controller
+ The gpio specifier depends on the gpio controller. Required in all
+ cases except for "samsung,i2c-hdmiphy-i2c" whose input/output
+ lines are permanently wired to the respective client
- samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
specified, default value is 0.
- samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
specified, the default value in Hz is 100000.
- - samsung,i2c-quirk-hdmiphy: Quirk for HDMI PHY block found on
- Exynos4 platform - reduce timeout and reset controller after each
- transfer
Example:
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 71438eb..bc82045 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -106,6 +106,8 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_driver_ids);
static const struct of_device_id s3c24xx_i2c_match[] = {
{ .compatible = "samsung,s3c2410-i2c", .data = (void *)0 },
{ .compatible = "samsung,s3c2440-i2c", .data = (void *)QUIRK_S3C2440 },
+ { .compatible = "samsung,s3c2440-hdmiphy-i2c",
+ .data = (void *)(QUIRK_S3C2440 | QUIRK_HDMIPHY | QUIRK_NO_GPIO) },
{},
};
MODULE_DEVICE_TABLE(of, s3c24xx_i2c_match);
@@ -902,12 +904,6 @@ s3c24xx_i2c_parse_dt(struct device_node *np, struct s3c24xx_i2c *i2c)
pdata->bus_num = -1; /* i2c bus number is dynamically assigned */
- if (of_get_property(np, "samsung,i2c-quirk-hdmiphy", NULL))
- i2c->quirks |= QUIRK_HDMIPHY;
-
- if (of_get_property(np, "samsung,i2c-no-gpio", NULL))
- i2c->quirks |= QUIRK_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",
Regards,
--
Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform
next prev parent reply other threads:[~2012-04-18 16:31 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-21 19:11 [PATCH v3 0/3] i2c-s3c2410: Updates for exynos4210 and DT-based systems Karol Lewandowski
2012-03-21 19:11 ` Karol Lewandowski
[not found] ` <1332357113-2973-1-git-send-email-k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-03-21 19:11 ` [PATCH 1/3] i2c-s3c2410: Drop unused define Karol Lewandowski
2012-03-21 19:11 ` Karol Lewandowski
[not found] ` <1332357113-2973-2-git-send-email-k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-04-18 10:56 ` Wolfram Sang
2012-04-18 10:56 ` Wolfram Sang
2012-03-21 19:11 ` [PATCH 3/3] i2c-s3c2410: Add HDMIPHY quirk for S3C2440 Karol Lewandowski
2012-03-21 19:11 ` Karol Lewandowski
2012-04-17 17:40 ` Wolfram Sang
[not found] ` <20120417174029.GC22406-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-04-18 12:11 ` Marek Szyprowski
2012-04-18 12:11 ` Marek Szyprowski
2012-04-18 13:46 ` Wolfram Sang
[not found] ` <20120418134644.GB19220-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-04-18 16:31 ` Karol Lewandowski [this message]
2012-04-18 16:31 ` Karol Lewandowski
2012-04-23 10:01 ` Wolfram Sang
2012-04-23 16:22 ` Karol Lewandowski
2012-04-13 9:30 ` [PATCH v3 0/3] i2c-s3c2410: Updates for exynos4210 and DT-based systems Karol Lewandowski
2012-04-13 9:30 ` Karol Lewandowski
2012-03-21 19:11 ` [PATCH 2/3] i2c-s3c2410: Rework device type handling Karol Lewandowski
[not found] ` <1332357113-2973-3-git-send-email-k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-03-21 20:30 ` Mark Brown
2012-03-21 20:30 ` Mark Brown
2012-04-17 17:31 ` Wolfram Sang
2012-04-17 17:31 ` Wolfram Sang
[not found] ` <20120417173136.GB22406-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-04-18 11:55 ` Karol Lewandowski
2012-04-18 11:55 ` Karol Lewandowski
2012-04-18 13:39 ` Wolfram Sang
-- strict thread matches above, loose matches on Subject: below --
2012-03-13 16:54 [PATCH 0/3 v2] Updates for exynos4210 and DT-based systems Karol Lewandowski
[not found] ` <1331657679-31302-1-git-send-email-k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-03-13 16:54 ` [PATCH 3/3] i2c-s3c2410: Add HDMIPHY quirk for S3C2440 Karol Lewandowski
2012-03-13 16:54 ` Karol Lewandowski
[not found] ` <1331657679-31302-4-git-send-email-k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-03-13 17:27 ` Tomasz Stanislawski
2012-03-13 17:27 ` Tomasz Stanislawski
[not found] ` <4F5F838A.6030908-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-03-13 18:00 ` Karol Lewandowski
2012-03-13 18:00 ` Karol Lewandowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F8EEC60.2080603@samsung.com \
--to=k.lewandowsk-sze3o3uu22jbdgjk7y7tuq@public.gmane.org \
--cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
--cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=t.stanislaws-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=thomas.abraham-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.