From: jenskuske@gmail.com (Jens Kuske)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/10] clk: sunxi: Add support for multiple parents to gates
Date: Mon, 18 May 2015 11:11:34 +0200 [thread overview]
Message-ID: <5559ACC6.6050202@gmail.com> (raw)
In-Reply-To: <20150517125014.GB4004@lukather>
Hi,
On 05/17/15 14:50, Maxime Ripard wrote:
> Hi Jens,
>
> On Fri, May 15, 2015 at 06:38:52PM +0200, Jens Kuske wrote:
>> Some newer sunxi SoCs (A83T, H3) don't have individual registers for
>> AHB1, APB1 and APB2 gates anymore, but one big bus gates area where each
>> gate can have a different parent.
>>
>> The current clock driver sets the same parent for all gates in a group.
>> This commit adds a new parents field to the gates_data structure, which
>> allows us to specify an array of parent indices for every single gate.
>>
>> Signed-off-by: Jens Kuske <jenskuske@gmail.com>
>> ---
>> drivers/clk/sunxi/clk-sunxi.c | 12 +++++++++++-
>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
>> index 9a82f17..17cba4d 100644
>> --- a/drivers/clk/sunxi/clk-sunxi.c
>> +++ b/drivers/clk/sunxi/clk-sunxi.c
>> @@ -898,6 +898,8 @@ static void __init sunxi_divider_clk_setup(struct device_node *node,
>>
>> struct gates_data {
>> DECLARE_BITMAP(mask, SUNXI_GATES_MAX_SIZE);
>> + /* If used, ARRAY_SIZE(parents) has to be >= bitmap_weight(mask) */
>> + const u8 *parents;
>> };
>>
>> static const struct gates_data sun4i_axi_gates_data __initconst = {
>> @@ -1000,16 +1002,21 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> struct gates_data *data)
>> {
>> struct clk_onecell_data *clk_data;
>> + const char *parents[SUNXI_MAX_PARENTS];
>> const char *clk_parent;
>> const char *clk_name;
>> void __iomem *reg;
>> + int npar = 0;
>> int qty;
>> int i = 0;
>> int j = 0;
>>
>> reg = of_iomap(node, 0);
>>
>> - clk_parent = of_clk_get_parent_name(node, 0);
>> + while (npar < SUNXI_MAX_PARENTS &&
>> + (parents[npar] = of_clk_get_parent_name(node, npar)) != NULL)
>> + npar++;
>> + clk_parent = parents[0];
>>
>> /* Worst-case size approximation and memory allocation */
>> qty = find_last_bit(data->mask, SUNXI_GATES_MAX_SIZE);
>> @@ -1026,6 +1033,9 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> of_property_read_string_index(node, "clock-output-names",
>> j, &clk_name);
>>
>> + if (data->parents && !WARN_ON(data->parents[j] >= npar))
>> + clk_parent = parents[data->parents[j]];
>> +
>
> I'm currently removing that code, so I was more expecting a new
> standalone driver for that clock.
How do you want to replace that code? To me this looks like a good way
to set up all the different gates sunxi has.
Jens
WARNING: multiple messages have this Message-ID (diff)
From: Jens Kuske <jenskuske-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: "Emilio López" <emilio-0Z03zUJReD5OxF6Tv1QG9Q@public.gmane.org>,
"Mike Turquette"
<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"Linus Walleij"
<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"Rob Herring" <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"Chen-Yu Tsai" <wens-jdAy2FN1RRM@public.gmane.org>,
"Vishnu Patekar"
<vishnupatekar0510-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"Hans de Goede"
<hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH v2 02/10] clk: sunxi: Add support for multiple parents to gates
Date: Mon, 18 May 2015 11:11:34 +0200 [thread overview]
Message-ID: <5559ACC6.6050202@gmail.com> (raw)
In-Reply-To: <20150517125014.GB4004@lukather>
Hi,
On 05/17/15 14:50, Maxime Ripard wrote:
> Hi Jens,
>
> On Fri, May 15, 2015 at 06:38:52PM +0200, Jens Kuske wrote:
>> Some newer sunxi SoCs (A83T, H3) don't have individual registers for
>> AHB1, APB1 and APB2 gates anymore, but one big bus gates area where each
>> gate can have a different parent.
>>
>> The current clock driver sets the same parent for all gates in a group.
>> This commit adds a new parents field to the gates_data structure, which
>> allows us to specify an array of parent indices for every single gate.
>>
>> Signed-off-by: Jens Kuske <jenskuske-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>> drivers/clk/sunxi/clk-sunxi.c | 12 +++++++++++-
>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
>> index 9a82f17..17cba4d 100644
>> --- a/drivers/clk/sunxi/clk-sunxi.c
>> +++ b/drivers/clk/sunxi/clk-sunxi.c
>> @@ -898,6 +898,8 @@ static void __init sunxi_divider_clk_setup(struct device_node *node,
>>
>> struct gates_data {
>> DECLARE_BITMAP(mask, SUNXI_GATES_MAX_SIZE);
>> + /* If used, ARRAY_SIZE(parents) has to be >= bitmap_weight(mask) */
>> + const u8 *parents;
>> };
>>
>> static const struct gates_data sun4i_axi_gates_data __initconst = {
>> @@ -1000,16 +1002,21 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> struct gates_data *data)
>> {
>> struct clk_onecell_data *clk_data;
>> + const char *parents[SUNXI_MAX_PARENTS];
>> const char *clk_parent;
>> const char *clk_name;
>> void __iomem *reg;
>> + int npar = 0;
>> int qty;
>> int i = 0;
>> int j = 0;
>>
>> reg = of_iomap(node, 0);
>>
>> - clk_parent = of_clk_get_parent_name(node, 0);
>> + while (npar < SUNXI_MAX_PARENTS &&
>> + (parents[npar] = of_clk_get_parent_name(node, npar)) != NULL)
>> + npar++;
>> + clk_parent = parents[0];
>>
>> /* Worst-case size approximation and memory allocation */
>> qty = find_last_bit(data->mask, SUNXI_GATES_MAX_SIZE);
>> @@ -1026,6 +1033,9 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> of_property_read_string_index(node, "clock-output-names",
>> j, &clk_name);
>>
>> + if (data->parents && !WARN_ON(data->parents[j] >= npar))
>> + clk_parent = parents[data->parents[j]];
>> +
>
> I'm currently removing that code, so I was more expecting a new
> standalone driver for that clock.
How do you want to replace that code? To me this looks like a good way
to set up all the different gates sunxi has.
Jens
WARNING: multiple messages have this Message-ID (diff)
From: Jens Kuske <jenskuske@gmail.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: "Emilio López" <emilio@elopez.com.ar>,
"Mike Turquette" <mturquette@linaro.org>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Chen-Yu Tsai" <wens@csie.org>,
"Vishnu Patekar" <vishnupatekar0510@gmail.com>,
"Hans de Goede" <hdegoede@redhat.com>,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com
Subject: Re: [PATCH v2 02/10] clk: sunxi: Add support for multiple parents to gates
Date: Mon, 18 May 2015 11:11:34 +0200 [thread overview]
Message-ID: <5559ACC6.6050202@gmail.com> (raw)
In-Reply-To: <20150517125014.GB4004@lukather>
Hi,
On 05/17/15 14:50, Maxime Ripard wrote:
> Hi Jens,
>
> On Fri, May 15, 2015 at 06:38:52PM +0200, Jens Kuske wrote:
>> Some newer sunxi SoCs (A83T, H3) don't have individual registers for
>> AHB1, APB1 and APB2 gates anymore, but one big bus gates area where each
>> gate can have a different parent.
>>
>> The current clock driver sets the same parent for all gates in a group.
>> This commit adds a new parents field to the gates_data structure, which
>> allows us to specify an array of parent indices for every single gate.
>>
>> Signed-off-by: Jens Kuske <jenskuske@gmail.com>
>> ---
>> drivers/clk/sunxi/clk-sunxi.c | 12 +++++++++++-
>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
>> index 9a82f17..17cba4d 100644
>> --- a/drivers/clk/sunxi/clk-sunxi.c
>> +++ b/drivers/clk/sunxi/clk-sunxi.c
>> @@ -898,6 +898,8 @@ static void __init sunxi_divider_clk_setup(struct device_node *node,
>>
>> struct gates_data {
>> DECLARE_BITMAP(mask, SUNXI_GATES_MAX_SIZE);
>> + /* If used, ARRAY_SIZE(parents) has to be >= bitmap_weight(mask) */
>> + const u8 *parents;
>> };
>>
>> static const struct gates_data sun4i_axi_gates_data __initconst = {
>> @@ -1000,16 +1002,21 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> struct gates_data *data)
>> {
>> struct clk_onecell_data *clk_data;
>> + const char *parents[SUNXI_MAX_PARENTS];
>> const char *clk_parent;
>> const char *clk_name;
>> void __iomem *reg;
>> + int npar = 0;
>> int qty;
>> int i = 0;
>> int j = 0;
>>
>> reg = of_iomap(node, 0);
>>
>> - clk_parent = of_clk_get_parent_name(node, 0);
>> + while (npar < SUNXI_MAX_PARENTS &&
>> + (parents[npar] = of_clk_get_parent_name(node, npar)) != NULL)
>> + npar++;
>> + clk_parent = parents[0];
>>
>> /* Worst-case size approximation and memory allocation */
>> qty = find_last_bit(data->mask, SUNXI_GATES_MAX_SIZE);
>> @@ -1026,6 +1033,9 @@ static void __init sunxi_gates_clk_setup(struct device_node *node,
>> of_property_read_string_index(node, "clock-output-names",
>> j, &clk_name);
>>
>> + if (data->parents && !WARN_ON(data->parents[j] >= npar))
>> + clk_parent = parents[data->parents[j]];
>> +
>
> I'm currently removing that code, so I was more expecting a new
> standalone driver for that clock.
How do you want to replace that code? To me this looks like a good way
to set up all the different gates sunxi has.
Jens
next prev parent reply other threads:[~2015-05-18 9:11 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-15 16:38 [PATCH v2 00/10] ARM: sunxi: Introduce Allwinner H3 support Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` [PATCH v2 01/10] Documentation: sunxi: Update Allwinner SoC documentation Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 12:52 ` Maxime Ripard
2015-05-17 12:52 ` Maxime Ripard
2015-05-17 12:52 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 02/10] clk: sunxi: Add support for multiple parents to gates Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 12:50 ` Maxime Ripard
2015-05-17 12:50 ` Maxime Ripard
2015-05-17 12:50 ` Maxime Ripard
2015-05-18 9:11 ` Jens Kuske [this message]
2015-05-18 9:11 ` Jens Kuske
2015-05-18 9:11 ` Jens Kuske
2015-05-19 7:53 ` Maxime Ripard
2015-05-19 7:53 ` Maxime Ripard
2015-05-19 7:53 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 03/10] clk: sunxi: Let divs clocks read the base factor clock name from devicetree Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
[not found] ` <1431707940-19372-4-git-send-email-jenskuske-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-16 2:10 ` Chen-Yu Tsai
2015-05-18 9:15 ` Jens Kuske
2015-05-18 9:15 ` Jens Kuske
2015-05-18 9:15 ` Jens Kuske
2015-05-18 14:45 ` Chen-Yu Tsai
2015-05-18 14:45 ` Chen-Yu Tsai
2015-05-18 14:45 ` Chen-Yu Tsai
2015-05-17 13:06 ` Maxime Ripard
2015-05-17 13:06 ` Maxime Ripard
2015-05-17 13:06 ` Maxime Ripard
2015-05-18 9:22 ` Jens Kuske
2015-05-18 9:22 ` Jens Kuske
2015-05-18 9:22 ` Jens Kuske
2015-05-19 8:26 ` Maxime Ripard
2015-05-19 8:26 ` Maxime Ripard
2015-05-19 8:26 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 04/10] pinctrl: sunxi: Prepare for building SoC specific drivers as modules Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 14:19 ` Maxime Ripard
2015-05-17 14:19 ` Maxime Ripard
2015-05-17 14:19 ` Maxime Ripard
2015-05-18 9:32 ` Jens Kuske
2015-05-18 9:32 ` Jens Kuske
2015-05-18 9:32 ` Jens Kuske
2015-05-19 7:55 ` Maxime Ripard
2015-05-19 7:55 ` Maxime Ripard
2015-05-19 8:02 ` Chen-Yu Tsai
2015-05-19 8:02 ` Chen-Yu Tsai
2015-05-19 8:02 ` Chen-Yu Tsai
2015-05-19 8:16 ` Maxime Ripard
2015-05-19 8:16 ` Maxime Ripard
2015-05-19 8:16 ` Maxime Ripard
2015-05-19 14:58 ` Linus Walleij
2015-05-19 14:58 ` Linus Walleij
2015-05-19 14:58 ` Linus Walleij
2015-05-15 16:38 ` [PATCH v2 05/10] ARM: sunxi: Introduce Allwinner H3 support Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 14:21 ` Maxime Ripard
2015-05-17 14:21 ` Maxime Ripard
2015-05-17 14:21 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 06/10] clk: sunxi: Add H3 clocks support Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 14:27 ` Maxime Ripard
2015-05-17 14:27 ` Maxime Ripard
2015-05-17 14:27 ` Maxime Ripard
2015-05-18 9:45 ` Jens Kuske
2015-05-18 9:45 ` Jens Kuske
2015-05-18 9:45 ` Jens Kuske
2015-05-19 8:50 ` Maxime Ripard
2015-05-19 8:50 ` Maxime Ripard
2015-05-19 8:50 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 07/10] pinctrl: sunxi: Add H3 PIO controller support Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-16 15:32 ` Paul Bolle
2015-05-16 15:32 ` Paul Bolle
2015-05-16 15:32 ` Paul Bolle
2015-05-17 14:30 ` Maxime Ripard
2015-05-17 14:30 ` Maxime Ripard
2015-05-17 14:30 ` Maxime Ripard
2015-05-18 9:52 ` Jens Kuske
2015-05-18 9:52 ` Jens Kuske
2015-05-18 9:52 ` Jens Kuske
2015-05-19 14:04 ` Linus Walleij
2015-05-19 14:04 ` Linus Walleij
2015-05-19 14:04 ` Linus Walleij
2015-05-19 15:03 ` Maxime Ripard
2015-05-19 15:03 ` Maxime Ripard
2015-05-19 15:03 ` Maxime Ripard
2015-05-15 16:38 ` [PATCH v2 08/10] reset: sunxi: Add compatible for Allwinner H3 bus resets Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-17 14:31 ` Maxime Ripard
2015-05-17 14:31 ` Maxime Ripard
2015-05-17 14:31 ` Maxime Ripard
2015-05-18 9:55 ` Jens Kuske
2015-05-18 9:55 ` Jens Kuske
2015-05-18 9:55 ` Jens Kuske
2015-05-15 16:38 ` [PATCH v2 09/10] ARM: dts: sunxi: Add Allwinner H3 DTSI Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:38 ` Jens Kuske
2015-05-15 16:39 ` [PATCH v2 10/10] ARM: dts: sun8i: Add Orange Pi Plus support Jens Kuske
2015-05-15 16:39 ` Jens Kuske
2015-05-15 16:39 ` Jens Kuske
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=5559ACC6.6050202@gmail.com \
--to=jenskuske@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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.