diff for duplicates of <20150417020048.GA27174@deathray> diff --git a/a/1.txt b/N1/1.txt index 0085309..8e475cd 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -5,7 +5,7 @@ On Fri, Apr 17, 2015 at 01:23:50AM +0200, Sebastian Hesselbarth wrote: > >>>On Thu, Apr 16, 2015 at 07:32:32AM +0300, Tero Kristo wrote: > >>>>On 04/15/2015 11:51 PM, Michael Welling wrote: > >>>>>On Wed, Apr 15, 2015 at 01:45:53PM -0700, Mike Turquette wrote: -> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org> wrote: +> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling@ieee.org> wrote: > >>[...] > >>>>>>>There is still an issue with the si5351. > >>>>>>> @@ -82,7 +82,7 @@ testing. I may have to solder a new chip on there. Could misconfiguration damage the chip? > -> >root@som3517-som200:~# cat /sys/kernel/debug/clk/clk_summary +> >root at som3517-som200:~# cat /sys/kernel/debug/clk/clk_summary > > clock enable_cnt prepare_cnt rate accuracy phase > >---------------------------------------------------------------------------------------- > > ref27 0 0 27000000 0 0 @@ -203,3 +203,10 @@ hackish utilities. > > Sebastian +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: clk-si5351.patch +Type: text/x-diff +Size: 10324 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150416/a90fd0ac/attachment.bin> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index 98273ff..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: text/x-diff; charset=us-ascii -Content-Disposition: attachment; filename="clk-si5351.patch" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index dadc2b5..0000000 --- a/a/2.txt +++ /dev/null @@ -1,371 +0,0 @@ -diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c -index 3b2a66f..e0da91d 100644 ---- a/drivers/clk/clk-si5351.c -+++ b/drivers/clk/clk-si5351.c -@@ -1120,6 +1120,7 @@ static int si5351_dt_parse(struct i2c_client *client, - const __be32 *p; - int num = 0; - u32 val; -+ int ret; - - if (np == NULL) - return 0; -@@ -1129,11 +1130,21 @@ static int si5351_dt_parse(struct i2c_client *client, - return -ENOMEM; - - pdata->clk_xtal = of_clk_get(np, 0); -- if (!IS_ERR(pdata->clk_xtal)) -- clk_put(pdata->clk_xtal); -- pdata->clk_clkin = of_clk_get(np, 1); -- if (!IS_ERR(pdata->clk_clkin)) -- clk_put(pdata->clk_clkin); -+ if (IS_ERR(pdata->clk_xtal)) { -+ dev_err(&client->dev, -+ "xtal clock not speficied\n"); -+ return -ENODEV; -+ } -+ -+ if (variant == SI5351_VARIANT_C) { -+ pdata->clk_clkin = of_clk_get(np, 1); -+ if (IS_ERR(pdata->clk_clkin)) { -+ dev_err(&client->dev, -+ "clkin clock not speficied\n"); -+ ret = -ENODEV; -+ goto err_put_clk_of; -+ } -+ } - - /* - * property silabs,pll-source : <num src>, [<..>] -@@ -1143,14 +1154,16 @@ static int si5351_dt_parse(struct i2c_client *client, - if (num >= 2) { - dev_err(&client->dev, - "invalid pll %d on pll-source prop\n", num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - - p = of_prop_next_u32(prop, p, &val); - if (!p) { - dev_err(&client->dev, - "missing pll-source for pll %d\n", num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - - switch (val) { -@@ -1162,14 +1175,16 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid parent %d for pll %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - pdata->pll_src[num] = SI5351_PLL_SRC_CLKIN; - break; - default: - dev_err(&client->dev, - "invalid parent %d for pll %d\n", val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - } - -@@ -1178,13 +1193,15 @@ static int si5351_dt_parse(struct i2c_client *client, - if (of_property_read_u32(child, "reg", &num)) { - dev_err(&client->dev, "missing reg property of %s\n", - child->name); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - - if (num >= 8 || - (variant == SI5351_VARIANT_A3 && num >= 3)) { - dev_err(&client->dev, "invalid clkout %d\n", num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - - if (!of_property_read_u32(child, "silabs,multisynth-source", -@@ -1202,7 +1219,8 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid parent %d for multisynth %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - } - -@@ -1225,7 +1243,8 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid parent %d for clkout %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - pdata->clkout[num].clkout_src = - SI5351_CLKOUT_SRC_CLKIN; -@@ -1234,7 +1253,8 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid parent %d for clkout %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - } - -@@ -1251,7 +1271,8 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid drive strength %d for clkout %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - } - -@@ -1278,7 +1299,8 @@ static int si5351_dt_parse(struct i2c_client *client, - dev_err(&client->dev, - "invalid disable state %d for clkout %d\n", - val, num); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk_of; - } - } - -@@ -1291,9 +1313,18 @@ static int si5351_dt_parse(struct i2c_client *client, - client->dev.platform_data = pdata; - - return 0; -+ -+err_put_clk_of: -+ if (!IS_ERR(pdata->clk_xtal)) -+ clk_put(pdata->clk_xtal); -+ if (IS_ERR(pdata->clk_clkin)) -+ clk_put(pdata->clk_clkin); -+ -+ return ret; - } - #else --static int si5351_dt_parse(struct i2c_client *client, enum si5351_variant variant) -+static int si5351_dt_parse(struct i2c_client *client, -+ enum si5351_variant variant) - { - return 0; - } -@@ -1322,7 +1353,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - drvdata = devm_kzalloc(&client->dev, sizeof(*drvdata), GFP_KERNEL); - if (drvdata == NULL) { - dev_err(&client->dev, "unable to allocate driver data\n"); -- return -ENOMEM; -+ ret = -ENOMEM; -+ goto err_put_clk; - } - - i2c_set_clientdata(client, drvdata); -@@ -1334,7 +1366,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - drvdata->regmap = devm_regmap_init_i2c(client, &si5351_regmap_config); - if (IS_ERR(drvdata->regmap)) { - dev_err(&client->dev, "failed to allocate register map\n"); -- return PTR_ERR(drvdata->regmap); -+ ret = PTR_ERR(drvdata->regmap); -+ goto err_put_clk; - } - - /* Disable interrupts */ -@@ -1351,7 +1384,7 @@ static int si5351_i2c_probe(struct i2c_client *client, - dev_err(&client->dev, - "failed to reparent pll %d to %d\n", - n, pdata->pll_src[n]); -- return ret; -+ goto err_put_clk; - } - } - -@@ -1362,7 +1395,7 @@ static int si5351_i2c_probe(struct i2c_client *client, - dev_err(&client->dev, - "failed to reparent multisynth %d to %d\n", - n, pdata->clkout[n].multisynth_src); -- return ret; -+ goto err_put_clk; - } - - ret = _si5351_clkout_reparent(drvdata, n, -@@ -1371,7 +1404,7 @@ static int si5351_i2c_probe(struct i2c_client *client, - dev_err(&client->dev, - "failed to reparent clkout %d to %d\n", - n, pdata->clkout[n].clkout_src); -- return ret; -+ goto err_put_clk; - } - - ret = _si5351_clkout_set_drive_strength(drvdata, n, -@@ -1380,7 +1413,7 @@ static int si5351_i2c_probe(struct i2c_client *client, - dev_err(&client->dev, - "failed set drive strength of clkout%d to %d\n", - n, pdata->clkout[n].drive); -- return ret; -+ goto err_put_clk; - } - - ret = _si5351_clkout_set_disable_state(drvdata, n, -@@ -1389,7 +1422,7 @@ static int si5351_i2c_probe(struct i2c_client *client, - dev_err(&client->dev, - "failed set disable state of clkout%d to %d\n", - n, pdata->clkout[n].disable_state); -- return ret; -+ goto err_put_clk; - } - } - -@@ -1398,16 +1431,16 @@ static int si5351_i2c_probe(struct i2c_client *client, - init.name = si5351_input_names[0]; - init.ops = &si5351_xtal_ops; - init.flags = 0; -- if (!IS_ERR(drvdata->pxtal)) { -- drvdata->pxtal_name = __clk_get_name(drvdata->pxtal); -- init.parent_names = &drvdata->pxtal_name; -- init.num_parents = 1; -- } -+ drvdata->pxtal_name = __clk_get_name(drvdata->pxtal); -+ init.parent_names = &drvdata->pxtal_name; -+ init.num_parents = 1; -+ - drvdata->xtal.init = &init; - clk = devm_clk_register(&client->dev, &drvdata->xtal); - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", init.name); -- return PTR_ERR(clk); -+ ret = PTR_ERR(clk); -+ goto err_put_clk; - } - - /* register clkin input clock gate */ -@@ -1415,17 +1448,17 @@ static int si5351_i2c_probe(struct i2c_client *client, - memset(&init, 0, sizeof(init)); - init.name = si5351_input_names[1]; - init.ops = &si5351_clkin_ops; -- if (!IS_ERR(drvdata->pclkin)) { -- drvdata->pclkin_name = __clk_get_name(drvdata->pclkin); -- init.parent_names = &drvdata->pclkin_name; -- init.num_parents = 1; -- } -+ drvdata->pclkin_name = __clk_get_name(drvdata->pclkin); -+ init.parent_names = &drvdata->pclkin_name; -+ init.num_parents = 1; -+ - drvdata->clkin.init = &init; - clk = devm_clk_register(&client->dev, &drvdata->clkin); - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", - init.name); -- return PTR_ERR(clk); -+ ret = PTR_ERR(clk); -+ goto err_put_clk; - } - } - -@@ -1447,7 +1480,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - clk = devm_clk_register(&client->dev, &drvdata->pll[0].hw); - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", init.name); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk; - } - - /* register PLLB or VXCO (Si5351B) */ -@@ -1471,7 +1505,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - clk = devm_clk_register(&client->dev, &drvdata->pll[1].hw); - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", init.name); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk; - } - - /* register clk multisync and clk out divider */ -@@ -1492,8 +1527,10 @@ static int si5351_i2c_probe(struct i2c_client *client, - num_clocks * sizeof(*drvdata->onecell.clks), GFP_KERNEL); - - if (WARN_ON(!drvdata->msynth || !drvdata->clkout || -- !drvdata->onecell.clks)) -- return -ENOMEM; -+ !drvdata->onecell.clks)) { -+ ret = -ENOMEM; -+ goto err_put_clk; -+ } - - for (n = 0; n < num_clocks; n++) { - drvdata->msynth[n].num = n; -@@ -1511,7 +1548,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", - init.name); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk; - } - } - -@@ -1538,7 +1576,8 @@ static int si5351_i2c_probe(struct i2c_client *client, - if (IS_ERR(clk)) { - dev_err(&client->dev, "unable to register %s\n", - init.name); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err_put_clk; - } - drvdata->onecell.clks[n] = clk; - -@@ -1557,9 +1596,31 @@ static int si5351_i2c_probe(struct i2c_client *client, - &drvdata->onecell); - if (ret) { - dev_err(&client->dev, "unable to add clk provider\n"); -- return ret; -+ goto err_put_clk; -+ } -+ -+ return 0; -+ -+err_put_clk: -+ if (pdata) { -+ if (!IS_ERR(pdata->clk_xtal)) -+ clk_put(pdata->clk_xtal); -+ if (!IS_ERR(pdata->clk_clkin)) -+ clk_put(pdata->clk_clkin); - } - -+ return ret; -+} -+ -+int si5351_i2c_remove(struct i2c_client *client) -+{ -+ struct si5351_driver_data *drvdata = i2c_get_clientdata(client); -+ -+ of_clk_del_provider(client->dev.of_node); -+ clk_put(drvdata->pxtal); -+ if (drvdata->variant == SI5351_VARIANT_C) -+ clk_put(drvdata->pclkin); -+ - return 0; - } - -@@ -1578,6 +1639,7 @@ static struct i2c_driver si5351_driver = { - .of_match_table = of_match_ptr(si5351_dt_ids), - }, - .probe = si5351_i2c_probe, -+ .remove = si5351_i2c_remove, - .id_table = si5351_i2c_ids, - }; - module_i2c_driver(si5351_driver); diff --git a/a/content_digest b/N1/content_digest index 85c8a41..ca9cbde 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -8,28 +8,11 @@ "ref\055301D7F.30708@gmail.com\0" "ref\020150416220918.GA6057@deathray\0" "ref\055304486.5020404@gmail.com\0" - "ref\055304486.5020404-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org\0" - "From\0Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org>\0" - "Subject\0Re: AM335x OMAP2 common clock external fixed-clock registration\0" + "From\0mwelling@ieee.org (Michael Welling)\0" + "Subject\0AM335x OMAP2 common clock external fixed-clock registration\0" "Date\0Thu, 16 Apr 2015 21:00:48 -0500\0" - "To\0Sebastian Hesselbarth <sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>\0" - "Cc\0Tero Kristo <t-kristo-l0cyMroinI0@public.gmane.org>" - Mike Turquette <mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> - Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> - Linux OMAP Mailing List <linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> - Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org> - Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org> - Ian Campbell <ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org> - Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> - Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> - devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org <linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> - Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> - Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org> - " Daniel Mack <daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>\0" - "\01:1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" "On Fri, Apr 17, 2015 at 01:23:50AM +0200, Sebastian Hesselbarth wrote:\n" "> On 17.04.2015 00:09, Michael Welling wrote:\n" @@ -38,7 +21,7 @@ "> >>>On Thu, Apr 16, 2015 at 07:32:32AM +0300, Tero Kristo wrote:\n" "> >>>>On 04/15/2015 11:51 PM, Michael Welling wrote:\n" "> >>>>>On Wed, Apr 15, 2015 at 01:45:53PM -0700, Mike Turquette wrote:\n" - "> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org> wrote:\n" + "> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling@ieee.org> wrote:\n" "> >>[...]\n" "> >>>>>>>There is still an issue with the si5351.\n" "> >>>>>>>\n" @@ -115,7 +98,7 @@ "Could misconfiguration damage the chip?\n" "\n" "> \n" - "> >root@som3517-som200:~# cat /sys/kernel/debug/clk/clk_summary\n" + "> >root at som3517-som200:~# cat /sys/kernel/debug/clk/clk_summary\n" "> > clock enable_cnt prepare_cnt rate accuracy phase\n" "> >----------------------------------------------------------------------------------------\n" "> > ref27 0 0 27000000 0 0\n" @@ -235,380 +218,13 @@ "hackish utilities.\n" "\n" "> \n" - > Sebastian - "\01:2\0" - "fn\0clk-si5351.patch\0" - "b\0" - "diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c\n" - "index 3b2a66f..e0da91d 100644\n" - "--- a/drivers/clk/clk-si5351.c\n" - "+++ b/drivers/clk/clk-si5351.c\n" - "@@ -1120,6 +1120,7 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \tconst __be32 *p;\n" - " \tint num = 0;\n" - " \tu32 val;\n" - "+\tint ret;\n" - " \n" - " \tif (np == NULL)\n" - " \t\treturn 0;\n" - "@@ -1129,11 +1130,21 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\treturn -ENOMEM;\n" - " \n" - " \tpdata->clk_xtal = of_clk_get(np, 0);\n" - "-\tif (!IS_ERR(pdata->clk_xtal))\n" - "-\t\tclk_put(pdata->clk_xtal);\n" - "-\tpdata->clk_clkin = of_clk_get(np, 1);\n" - "-\tif (!IS_ERR(pdata->clk_clkin))\n" - "-\t\tclk_put(pdata->clk_clkin);\n" - "+\tif (IS_ERR(pdata->clk_xtal)) {\n" - "+\t\tdev_err(&client->dev,\n" - "+\t\t\t\"xtal clock not speficied\\n\");\n" - "+\t\treturn -ENODEV;\n" - "+\t}\n" - "+\n" - "+\tif (variant == SI5351_VARIANT_C) {\n" - "+\t\tpdata->clk_clkin = of_clk_get(np, 1);\n" - "+\t\tif (IS_ERR(pdata->clk_clkin)) {\n" - "+\t\t\tdev_err(&client->dev,\n" - "+\t\t\t\t\"clkin clock not speficied\\n\");\n" - "+\t\t\tret = -ENODEV;\n" - "+\t\t\tgoto err_put_clk_of;\n" - "+\t\t}\n" - "+\t}\n" - " \n" - " \t/*\n" - " \t * property silabs,pll-source : <num src>, [<..>]\n" - "@@ -1143,14 +1154,16 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\tif (num >= 2) {\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"invalid pll %d on pll-source prop\\n\", num);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk_of;\n" - " \t\t}\n" - " \n" - " \t\tp = of_prop_next_u32(prop, p, &val);\n" - " \t\tif (!p) {\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"missing pll-source for pll %d\\n\", num);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk_of;\n" - " \t\t}\n" - " \n" - " \t\tswitch (val) {\n" - "@@ -1162,14 +1175,16 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\"invalid parent %d for pll %d\\n\",\n" - " \t\t\t\t\tval, num);\n" - "-\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t}\n" - " \t\t\tpdata->pll_src[num] = SI5351_PLL_SRC_CLKIN;\n" - " \t\t\tbreak;\n" - " \t\tdefault:\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t \"invalid parent %d for pll %d\\n\", val, num);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk_of;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -1178,13 +1193,15 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\tif (of_property_read_u32(child, \"reg\", &num)) {\n" - " \t\t\tdev_err(&client->dev, \"missing reg property of %s\\n\",\n" - " \t\t\t\tchild->name);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk_of;\n" - " \t\t}\n" - " \n" - " \t\tif (num >= 8 ||\n" - " \t\t (variant == SI5351_VARIANT_A3 && num >= 3)) {\n" - " \t\t\tdev_err(&client->dev, \"invalid clkout %d\\n\", num);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk_of;\n" - " \t\t}\n" - " \n" - " \t\tif (!of_property_read_u32(child, \"silabs,multisynth-source\",\n" - "@@ -1202,7 +1219,8 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\"invalid parent %d for multisynth %d\\n\",\n" - " \t\t\t\t\tval, num);\n" - "-\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t}\n" - " \t\t}\n" - " \n" - "@@ -1225,7 +1243,8 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\t\"invalid parent %d for clkout %d\\n\",\n" - " \t\t\t\t\t\tval, num);\n" - "-\t\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t\t}\n" - " \t\t\t\tpdata->clkout[num].clkout_src =\n" - " \t\t\t\t\tSI5351_CLKOUT_SRC_CLKIN;\n" - "@@ -1234,7 +1253,8 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\"invalid parent %d for clkout %d\\n\",\n" - " \t\t\t\t\tval, num);\n" - "-\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t}\n" - " \t\t}\n" - " \n" - "@@ -1251,7 +1271,8 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\"invalid drive strength %d for clkout %d\\n\",\n" - " \t\t\t\t\tval, num);\n" - "-\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t}\n" - " \t\t}\n" - " \n" - "@@ -1278,7 +1299,8 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \t\t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\t\"invalid disable state %d for clkout %d\\n\",\n" - " \t\t\t\t\tval, num);\n" - "-\t\t\t\treturn -EINVAL;\n" - "+\t\t\t\tret = -EINVAL;\n" - "+\t\t\t\tgoto err_put_clk_of;\n" - " \t\t\t}\n" - " \t\t}\n" - " \n" - "@@ -1291,9 +1313,18 @@ static int si5351_dt_parse(struct i2c_client *client,\n" - " \tclient->dev.platform_data = pdata;\n" - " \n" - " \treturn 0;\n" - "+\n" - "+err_put_clk_of:\n" - "+\tif (!IS_ERR(pdata->clk_xtal))\n" - "+\t\tclk_put(pdata->clk_xtal);\n" - "+\tif (IS_ERR(pdata->clk_clkin))\n" - "+\t\tclk_put(pdata->clk_clkin);\n" - "+\n" - "+\treturn ret;\n" - " }\n" - " #else\n" - "-static int si5351_dt_parse(struct i2c_client *client, enum si5351_variant variant)\n" - "+static int si5351_dt_parse(struct i2c_client *client,\n" - "+\t\tenum si5351_variant variant)\n" - " {\n" - " \treturn 0;\n" - " }\n" - "@@ -1322,7 +1353,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \tdrvdata = devm_kzalloc(&client->dev, sizeof(*drvdata), GFP_KERNEL);\n" - " \tif (drvdata == NULL) {\n" - " \t\tdev_err(&client->dev, \"unable to allocate driver data\\n\");\n" - "-\t\treturn -ENOMEM;\n" - "+\t\tret = -ENOMEM;\n" - "+\t\tgoto err_put_clk;\n" - " \t}\n" - " \n" - " \ti2c_set_clientdata(client, drvdata);\n" - "@@ -1334,7 +1366,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \tdrvdata->regmap = devm_regmap_init_i2c(client, &si5351_regmap_config);\n" - " \tif (IS_ERR(drvdata->regmap)) {\n" - " \t\tdev_err(&client->dev, \"failed to allocate register map\\n\");\n" - "-\t\treturn PTR_ERR(drvdata->regmap);\n" - "+\t\tret = PTR_ERR(drvdata->regmap);\n" - "+\t\tgoto err_put_clk;\n" - " \t}\n" - " \n" - " \t/* Disable interrupts */\n" - "@@ -1351,7 +1384,7 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"failed to reparent pll %d to %d\\n\",\n" - " \t\t\t\tn, pdata->pll_src[n]);\n" - "-\t\t\treturn ret;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -1362,7 +1395,7 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"failed to reparent multisynth %d to %d\\n\",\n" - " \t\t\t\tn, pdata->clkout[n].multisynth_src);\n" - "-\t\t\treturn ret;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \n" - " \t\tret = _si5351_clkout_reparent(drvdata, n,\n" - "@@ -1371,7 +1404,7 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"failed to reparent clkout %d to %d\\n\",\n" - " \t\t\t\tn, pdata->clkout[n].clkout_src);\n" - "-\t\t\treturn ret;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \n" - " \t\tret = _si5351_clkout_set_drive_strength(drvdata, n,\n" - "@@ -1380,7 +1413,7 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"failed set drive strength of clkout%d to %d\\n\",\n" - " \t\t\t\tn, pdata->clkout[n].drive);\n" - "-\t\t\treturn ret;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \n" - " \t\tret = _si5351_clkout_set_disable_state(drvdata, n,\n" - "@@ -1389,7 +1422,7 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\tdev_err(&client->dev,\n" - " \t\t\t\t\"failed set disable state of clkout%d to %d\\n\",\n" - " \t\t\t\tn, pdata->clkout[n].disable_state);\n" - "-\t\t\treturn ret;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -1398,16 +1431,16 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \tinit.name = si5351_input_names[0];\n" - " \tinit.ops = &si5351_xtal_ops;\n" - " \tinit.flags = 0;\n" - "-\tif (!IS_ERR(drvdata->pxtal)) {\n" - "-\t\tdrvdata->pxtal_name = __clk_get_name(drvdata->pxtal);\n" - "-\t\tinit.parent_names = &drvdata->pxtal_name;\n" - "-\t\tinit.num_parents = 1;\n" - "-\t}\n" - "+\tdrvdata->pxtal_name = __clk_get_name(drvdata->pxtal);\n" - "+\tinit.parent_names = &drvdata->pxtal_name;\n" - "+\tinit.num_parents = 1;\n" - "+\n" - " \tdrvdata->xtal.init = &init;\n" - " \tclk = devm_clk_register(&client->dev, &drvdata->xtal);\n" - " \tif (IS_ERR(clk)) {\n" - " \t\tdev_err(&client->dev, \"unable to register %s\\n\", init.name);\n" - "-\t\treturn PTR_ERR(clk);\n" - "+\t\tret = PTR_ERR(clk);\n" - "+\t\tgoto err_put_clk;\n" - " \t}\n" - " \n" - " \t/* register clkin input clock gate */\n" - "@@ -1415,17 +1448,17 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\tmemset(&init, 0, sizeof(init));\n" - " \t\tinit.name = si5351_input_names[1];\n" - " \t\tinit.ops = &si5351_clkin_ops;\n" - "-\t\tif (!IS_ERR(drvdata->pclkin)) {\n" - "-\t\t\tdrvdata->pclkin_name = __clk_get_name(drvdata->pclkin);\n" - "-\t\t\tinit.parent_names = &drvdata->pclkin_name;\n" - "-\t\t\tinit.num_parents = 1;\n" - "-\t\t}\n" - "+\t\tdrvdata->pclkin_name = __clk_get_name(drvdata->pclkin);\n" - "+\t\tinit.parent_names = &drvdata->pclkin_name;\n" - "+\t\tinit.num_parents = 1;\n" - "+\n" - " \t\tdrvdata->clkin.init = &init;\n" - " \t\tclk = devm_clk_register(&client->dev, &drvdata->clkin);\n" - " \t\tif (IS_ERR(clk)) {\n" - " \t\t\tdev_err(&client->dev, \"unable to register %s\\n\",\n" - " \t\t\t\tinit.name);\n" - "-\t\t\treturn PTR_ERR(clk);\n" - "+\t\t\tret = PTR_ERR(clk);\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -1447,7 +1480,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \tclk = devm_clk_register(&client->dev, &drvdata->pll[0].hw);\n" - " \tif (IS_ERR(clk)) {\n" - " \t\tdev_err(&client->dev, \"unable to register %s\\n\", init.name);\n" - "-\t\treturn -EINVAL;\n" - "+\t\tret = -EINVAL;\n" - "+\t\tgoto err_put_clk;\n" - " \t}\n" - " \n" - " \t/* register PLLB or VXCO (Si5351B) */\n" - "@@ -1471,7 +1505,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \tclk = devm_clk_register(&client->dev, &drvdata->pll[1].hw);\n" - " \tif (IS_ERR(clk)) {\n" - " \t\tdev_err(&client->dev, \"unable to register %s\\n\", init.name);\n" - "-\t\treturn -EINVAL;\n" - "+\t\tret = -EINVAL;\n" - "+\t\tgoto err_put_clk;\n" - " \t}\n" - " \n" - " \t/* register clk multisync and clk out divider */\n" - "@@ -1492,8 +1527,10 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\tnum_clocks * sizeof(*drvdata->onecell.clks), GFP_KERNEL);\n" - " \n" - " \tif (WARN_ON(!drvdata->msynth || !drvdata->clkout ||\n" - "-\t\t !drvdata->onecell.clks))\n" - "-\t\treturn -ENOMEM;\n" - "+\t\t !drvdata->onecell.clks)) {\n" - "+\t\tret = -ENOMEM;\n" - "+\t\tgoto err_put_clk;\n" - "+\t}\n" - " \n" - " \tfor (n = 0; n < num_clocks; n++) {\n" - " \t\tdrvdata->msynth[n].num = n;\n" - "@@ -1511,7 +1548,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\tif (IS_ERR(clk)) {\n" - " \t\t\tdev_err(&client->dev, \"unable to register %s\\n\",\n" - " \t\t\t\tinit.name);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \t}\n" - " \n" - "@@ -1538,7 +1576,8 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\tif (IS_ERR(clk)) {\n" - " \t\t\tdev_err(&client->dev, \"unable to register %s\\n\",\n" - " \t\t\t\tinit.name);\n" - "-\t\t\treturn -EINVAL;\n" - "+\t\t\tret = -EINVAL;\n" - "+\t\t\tgoto err_put_clk;\n" - " \t\t}\n" - " \t\tdrvdata->onecell.clks[n] = clk;\n" - " \n" - "@@ -1557,9 +1596,31 @@ static int si5351_i2c_probe(struct i2c_client *client,\n" - " \t\t\t\t &drvdata->onecell);\n" - " \tif (ret) {\n" - " \t\tdev_err(&client->dev, \"unable to add clk provider\\n\");\n" - "-\t\treturn ret;\n" - "+\t\tgoto err_put_clk;\n" - "+\t}\n" - "+\n" - "+\treturn 0;\n" - "+\n" - "+err_put_clk:\n" - "+\tif (pdata) {\n" - "+\t\tif (!IS_ERR(pdata->clk_xtal))\n" - "+\t\t\tclk_put(pdata->clk_xtal);\n" - "+\t\tif (!IS_ERR(pdata->clk_clkin))\n" - "+\t\t\tclk_put(pdata->clk_clkin);\n" - " \t}\n" - " \n" - "+\treturn ret;\n" - "+}\n" - "+\n" - "+int si5351_i2c_remove(struct i2c_client *client)\n" - "+{\n" - "+\tstruct si5351_driver_data *drvdata = i2c_get_clientdata(client);\n" - "+\n" - "+\tof_clk_del_provider(client->dev.of_node);\n" - "+\tclk_put(drvdata->pxtal);\n" - "+\tif (drvdata->variant == SI5351_VARIANT_C)\n" - "+\t\tclk_put(drvdata->pclkin);\n" - "+\n" - " \treturn 0;\n" - " }\n" - " \n" - "@@ -1578,6 +1639,7 @@ static struct i2c_driver si5351_driver = {\n" - " \t\t.of_match_table = of_match_ptr(si5351_dt_ids),\n" - " \t},\n" - " \t.probe = si5351_i2c_probe,\n" - "+\t.remove = si5351_i2c_remove,\n" - " \t.id_table = si5351_i2c_ids,\n" - " };\n" - module_i2c_driver(si5351_driver); + "> Sebastian\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: clk-si5351.patch\n" + "Type: text/x-diff\n" + "Size: 10324 bytes\n" + "Desc: not available\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150416/a90fd0ac/attachment.bin> -00a4322275eef8ac30a716cccd78c6ec3a90f9e372536be9f37f135bb920ce58 +c0541046cb94a148bf7a55f01fc99d25cd429da5c92f6e0bf8288737fcbd62b2
diff --git a/a/1.txt b/N2/1.txt index 0085309..64f8f5a 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -5,7 +5,7 @@ On Fri, Apr 17, 2015 at 01:23:50AM +0200, Sebastian Hesselbarth wrote: > >>>On Thu, Apr 16, 2015 at 07:32:32AM +0300, Tero Kristo wrote: > >>>>On 04/15/2015 11:51 PM, Michael Welling wrote: > >>>>>On Wed, Apr 15, 2015 at 01:45:53PM -0700, Mike Turquette wrote: -> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org> wrote: +> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling@ieee.org> wrote: > >>[...] > >>>>>>>There is still an issue with the si5351. > >>>>>>> diff --git a/a/content_digest b/N2/content_digest index 85c8a41..e45a8bb 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -8,27 +8,26 @@ "ref\055301D7F.30708@gmail.com\0" "ref\020150416220918.GA6057@deathray\0" "ref\055304486.5020404@gmail.com\0" - "ref\055304486.5020404-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org\0" - "From\0Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org>\0" + "From\0Michael Welling <mwelling@ieee.org>\0" "Subject\0Re: AM335x OMAP2 common clock external fixed-clock registration\0" "Date\0Thu, 16 Apr 2015 21:00:48 -0500\0" - "To\0Sebastian Hesselbarth <sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>\0" - "Cc\0Tero Kristo <t-kristo-l0cyMroinI0@public.gmane.org>" - Mike Turquette <mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> - Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> - Linux OMAP Mailing List <linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> - Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org> - Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org> - Ian Campbell <ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org> - Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> - Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> - devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org <linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> - Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> - Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org> - " Daniel Mack <daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>\0" + "To\0Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>\0" + "Cc\0Tero Kristo <t-kristo@ti.com>" + Mike Turquette <mturquette@linaro.org> + Stephen Boyd <sboyd@codeaurora.org> + Linux OMAP Mailing List <linux-omap@vger.kernel.org> + linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> + Rob Herring <robh+dt@kernel.org> + Pawel Moll <pawel.moll@arm.com> + Mark Rutland <mark.rutland@arm.com> + Ian Campbell <ijc+devicetree@hellion.org.uk> + Kumar Gala <galak@codeaurora.org> + Russell King <linux@arm.linux.org.uk> + devicetree <devicetree@vger.kernel.org> + linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org> + Tony Lindgren <tony@atomide.com> + Greg Kroah-Hartman <gregkh@linuxfoundation.org> + " Daniel Mack <daniel@zonque.org>\0" "\01:1\0" "b\0" "On Fri, Apr 17, 2015 at 01:23:50AM +0200, Sebastian Hesselbarth wrote:\n" @@ -38,7 +37,7 @@ "> >>>On Thu, Apr 16, 2015 at 07:32:32AM +0300, Tero Kristo wrote:\n" "> >>>>On 04/15/2015 11:51 PM, Michael Welling wrote:\n" "> >>>>>On Wed, Apr 15, 2015 at 01:45:53PM -0700, Mike Turquette wrote:\n" - "> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling-EkmVulN54Sk@public.gmane.org> wrote:\n" + "> >>>>>>On Wed, Apr 15, 2015 at 12:47 PM, Michael Welling <mwelling@ieee.org> wrote:\n" "> >>[...]\n" "> >>>>>>>There is still an issue with the si5351.\n" "> >>>>>>>\n" @@ -611,4 +610,4 @@ " };\n" module_i2c_driver(si5351_driver); -00a4322275eef8ac30a716cccd78c6ec3a90f9e372536be9f37f135bb920ce58 +975df46ce5941439cae4f0fcdc0e3a1c55139cad46721d397189eaa19ffdc81e
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.