From: "Neil Armstrong" <narmstrong@baylibre.com>
To: Guillaume La Roque <glaroque@baylibre.com>,
hs@denx.de, u-boot-amlogic@groups.io, u-boot@lists.denx.de
Subject: Re: [PATCH] i2c: meson: add configurable divider factors
Date: Wed, 10 Apr 2019 16:50:26 +0200 [thread overview]
Message-ID: <36dfbb7b-9f4d-4e8e-9da6-b5080c075023@baylibre.com> (raw)
In-Reply-To: <20190322134932.17103-1-glaroque@baylibre.com>
On 22/03/2019 14:49, Guillaume La Roque wrote:
> This patch add support for I2C controller in Meson-AXG SoC,
> Due to the IP changes between I2C controller, we need to introduce
> a compatible data to make the divider factor configurable.
>
> backport from linux:
> 931b18e92cd0 ("2c: meson: add configurable divider factors")
>
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> ---
> drivers/i2c/meson_i2c.c | 30 +++++++++++++++++++++++++-----
> 1 file changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/i2c/meson_i2c.c b/drivers/i2c/meson_i2c.c
> index 7d06d95cf3..ee59bac123 100644
> --- a/drivers/i2c/meson_i2c.c
> +++ b/drivers/i2c/meson_i2c.c
> @@ -41,7 +41,12 @@ struct i2c_regs {
> u32 tok_rdata1;
> };
>
> +struct meson_i2c_data {
> + unsigned char div_factor;
> +};
> +
> struct meson_i2c {
> + const struct meson_i2c_data *data;
> struct clk clk;
> struct i2c_regs *regs;
> struct i2c_msg *msg; /* Current I2C message */
> @@ -229,7 +234,7 @@ static int meson_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
> if (IS_ERR_VALUE(clk_rate))
> return -EINVAL;
>
> - div = DIV_ROUND_UP(clk_rate, speed * 4);
> + div = DIV_ROUND_UP(clk_rate, speed * i2c->data->div_factor);
>
> /* clock divider has 12 bits */
> if (div >= (1 << 12)) {
> @@ -253,6 +258,8 @@ static int meson_i2c_probe(struct udevice *bus)
> struct meson_i2c *i2c = dev_get_priv(bus);
> int ret;
>
> + i2c->data = (const struct meson_i2c_data *)dev_get_driver_data(bus);
> +
> ret = clk_get_by_index(bus, 0, &i2c->clk);
> if (ret < 0)
> return ret;
> @@ -272,11 +279,24 @@ static const struct dm_i2c_ops meson_i2c_ops = {
> .set_bus_speed = meson_i2c_set_bus_speed,
> };
>
> +static const struct meson_i2c_data i2c_meson6_data = {
> + .div_factor = 4,
> +};
> +
> +static const struct meson_i2c_data i2c_gxbb_data = {
> + .div_factor = 4,
> +};
> +
> +static const struct meson_i2c_data i2c_axg_data = {
> + .div_factor = 3,
> +};
> +
> static const struct udevice_id meson_i2c_ids[] = {
> - { .compatible = "amlogic,meson6-i2c" },
> - { .compatible = "amlogic,meson-gx-i2c" },
> - { .compatible = "amlogic,meson-gxbb-i2c" },
> - { }
> + {.compatible = "amlogic,meson6-i2c", .data = (ulong)&i2c_meson6_data},
> + {.compatible = "amlogic,meson-gx-i2c", .data = (ulong)&i2c_gxbb_data},
> + {.compatible = "amlogic,meson-gxbb-i2c", .data = (ulong)&i2c_gxbb_data},
> + {.compatible = "amlogic,meson-axg-i2c", .data = (ulong)&i2c_axg_data},
> + {}
> };
>
> U_BOOT_DRIVER(i2c_meson) = {
>
Applied to u-boot-amlogic
Thanks
WARNING: multiple messages have this Message-ID (diff)
From: Neil Armstrong <narmstrong@baylibre.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] i2c: meson: add configurable divider factors
Date: Wed, 10 Apr 2019 16:50:26 +0200 [thread overview]
Message-ID: <36dfbb7b-9f4d-4e8e-9da6-b5080c075023@baylibre.com> (raw)
In-Reply-To: <20190322134932.17103-1-glaroque@baylibre.com>
On 22/03/2019 14:49, Guillaume La Roque wrote:
> This patch add support for I2C controller in Meson-AXG SoC,
> Due to the IP changes between I2C controller, we need to introduce
> a compatible data to make the divider factor configurable.
>
> backport from linux:
> 931b18e92cd0 ("2c: meson: add configurable divider factors")
>
> Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
> ---
> drivers/i2c/meson_i2c.c | 30 +++++++++++++++++++++++++-----
> 1 file changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/i2c/meson_i2c.c b/drivers/i2c/meson_i2c.c
> index 7d06d95cf3..ee59bac123 100644
> --- a/drivers/i2c/meson_i2c.c
> +++ b/drivers/i2c/meson_i2c.c
> @@ -41,7 +41,12 @@ struct i2c_regs {
> u32 tok_rdata1;
> };
>
> +struct meson_i2c_data {
> + unsigned char div_factor;
> +};
> +
> struct meson_i2c {
> + const struct meson_i2c_data *data;
> struct clk clk;
> struct i2c_regs *regs;
> struct i2c_msg *msg; /* Current I2C message */
> @@ -229,7 +234,7 @@ static int meson_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
> if (IS_ERR_VALUE(clk_rate))
> return -EINVAL;
>
> - div = DIV_ROUND_UP(clk_rate, speed * 4);
> + div = DIV_ROUND_UP(clk_rate, speed * i2c->data->div_factor);
>
> /* clock divider has 12 bits */
> if (div >= (1 << 12)) {
> @@ -253,6 +258,8 @@ static int meson_i2c_probe(struct udevice *bus)
> struct meson_i2c *i2c = dev_get_priv(bus);
> int ret;
>
> + i2c->data = (const struct meson_i2c_data *)dev_get_driver_data(bus);
> +
> ret = clk_get_by_index(bus, 0, &i2c->clk);
> if (ret < 0)
> return ret;
> @@ -272,11 +279,24 @@ static const struct dm_i2c_ops meson_i2c_ops = {
> .set_bus_speed = meson_i2c_set_bus_speed,
> };
>
> +static const struct meson_i2c_data i2c_meson6_data = {
> + .div_factor = 4,
> +};
> +
> +static const struct meson_i2c_data i2c_gxbb_data = {
> + .div_factor = 4,
> +};
> +
> +static const struct meson_i2c_data i2c_axg_data = {
> + .div_factor = 3,
> +};
> +
> static const struct udevice_id meson_i2c_ids[] = {
> - { .compatible = "amlogic,meson6-i2c" },
> - { .compatible = "amlogic,meson-gx-i2c" },
> - { .compatible = "amlogic,meson-gxbb-i2c" },
> - { }
> + {.compatible = "amlogic,meson6-i2c", .data = (ulong)&i2c_meson6_data},
> + {.compatible = "amlogic,meson-gx-i2c", .data = (ulong)&i2c_gxbb_data},
> + {.compatible = "amlogic,meson-gxbb-i2c", .data = (ulong)&i2c_gxbb_data},
> + {.compatible = "amlogic,meson-axg-i2c", .data = (ulong)&i2c_axg_data},
> + {}
> };
>
> U_BOOT_DRIVER(i2c_meson) = {
>
Applied to u-boot-amlogic
Thanks
next prev parent reply other threads:[~2019-04-10 14:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-22 13:49 [PATCH] i2c: meson: add configurable divider factors glaroque
2019-03-22 13:49 ` [U-Boot] " Guillaume La Roque
2019-04-10 14:50 ` Neil Armstrong [this message]
2019-04-10 14:50 ` Neil Armstrong
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=36dfbb7b-9f4d-4e8e-9da6-b5080c075023@baylibre.com \
--to=narmstrong@baylibre.com \
--cc=glaroque@baylibre.com \
--cc=hs@denx.de \
--cc=u-boot-amlogic@groups.io \
--cc=u-boot@lists.denx.de \
/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.