Thread (101 messages) 101 messages, 6 authors, 2013-11-06

Re: [PATCHv9 08/43] clk: ti: add composite clock support

From: Nishanth Menon <nm@ti.com>
Date: 2013-11-01 19:24:08
Also in: linux-arm-kernel, linux-omap

On 11/01/2013 04:35 AM, Tero Kristo wrote:
On 10/31/2013 06:27 PM, Nishanth Menon wrote:
quoted
On 10/25/2013 10:57 AM, Tero Kristo wrote:
[..]
quoted
quoted
diff --git a/drivers/clk/ti/composite.c b/drivers/clk/ti/composite.c
new file mode 100644
index 0000000..9ce7e54
--- /dev/null
+++ b/drivers/clk/ti/composite.c
[...]
quoted
quoted
+	}
+
+	clk = clk_register_composite(NULL, name, parent_names, num_parents,
+				     _get_hw(clks[CLK_COMPONENT_TYPE_MUX]),
+				     &clk_mux_ops,
+				     _get_hw(clks[CLK_COMPONENT_TYPE_DIVIDER]),
+				     &ti_composite_divider_ops,
+				     _get_hw(clks[CLK_COMPONENT_TYPE_GATE]),
+				     &ti_composite_gate_ops, 0);
+
+	if (!IS_ERR(clk)) {
+		of_clk_add_provider(node, of_clk_src_simple_get, clk);
+		goto cleanup;
+	}
+
+	ret = PTR_ERR(clk);
+cleanup:
+	/* Free component clock list entries */
+	for (i = 0; i < 3; i++) {
+		if (!clks[i])
+			continue;
+		list_del(&clks[i]->link);
+		kfree(clks[i]);
+	}
could you not just do a kfree(clks[i]) and set the component_clks to NULL?

Further, if there are only 3 clocks that can ever be present and we do
not allow for duplicates types, could we not do those checks in
ti_clk_add_component instead of having a harder recovery in setup of
composite clk?
The list is shared between all composite clocks, as we don't have 
knowledge into which clock each component will go to at the time of the 
component registration. Consider this setup (comp = component):

comp-a1
comp-a2
composite-a : comp-a1 + comp-a2
comp-b1
comp-b2
comp-b3
composite-b : comp-b1 + comp-b2 + comp-b3

Depending on clock init order, we will potentially have 5 components in 
the list at max, which of 2 + 2 are of same type.
makes sense. Thanks for clarifying.


-- 
Regards,
Nishanth Menon
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help