All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Fix missing TCU clock for X1000/X1830 SoCs
@ 2022-04-11 15:42 Aidan MacDonald
  2022-04-11 15:42 ` [PATCH v4 1/2] mips: dts: ingenic: Add TCU clock to x1000/x1830 tcu device node Aidan MacDonald
  2022-04-11 15:42 ` [PATCH v4 2/2] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoCs Aidan MacDonald
  0 siblings, 2 replies; 12+ messages in thread
From: Aidan MacDonald @ 2022-04-11 15:42 UTC (permalink / raw)
  To: paul, robh+dt, krzk+dt, tsbogend, mturquette, sboyd
  Cc: linux-mips, devicetree, linux-kernel, linux-clk

This is basically a resend of v3, except the device tree patches are
now combined into one patch.

v3: https://lore.kernel.org/linux-mips/20220224150326.525707-1-aidanmacdonald.0x0@gmail.com/

Aidan MacDonald (2):
  mips: dts: ingenic: Add TCU clock to x1000/x1830 tcu device node
  clk: ingenic-tcu: Fix missing TCU clock for X1000 SoCs

 arch/mips/boot/dts/ingenic/x1000.dtsi |  5 ++--
 arch/mips/boot/dts/ingenic/x1830.dtsi |  5 ++--
 drivers/clk/ingenic/tcu.c             | 38 ++++++++++++++++++---------
 3 files changed, 32 insertions(+), 16 deletions(-)

-- 
2.35.1


^ permalink raw reply	[flat|nested] 12+ messages in thread
* Re: [PATCH v4 2/2] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoCs
  2022-04-11 15:42 ` [PATCH v4 2/2] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoCs Aidan MacDonald
  2022-04-11 15:48   ` Paul Cercueil
@ 2022-04-12 10:57 ` Dan Carpenter
  2022-04-12  2:03   ` kernel test robot
  2 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2022-04-12 10:41 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 11118 bytes --]

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220411154241.50834-3-aidanmacdonald.0x0@gmail.com>
References: <20220411154241.50834-3-aidanmacdonald.0x0@gmail.com>
TO: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
TO: paul(a)crapouillou.net
TO: robh+dt(a)kernel.org
TO: krzk+dt(a)kernel.org
TO: tsbogend(a)alpha.franken.de
TO: mturquette(a)baylibre.com
TO: sboyd(a)kernel.org
CC: linux-mips(a)vger.kernel.org
CC: devicetree(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org
CC: linux-clk(a)vger.kernel.org

Hi Aidan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next linus/master linux/master v5.18-rc2 next-20220412]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Aidan-MacDonald/Fix-missing-TCU-clock-for-X1000-X1830-SoCs/20220411-234531
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: arc-randconfig-m031-20220411 (https://download.01.org/0day-ci/archive/20220412/202204121856.LxK9kEyg-lkp(a)intel.com/config)
compiler: arc-elf-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/ingenic/tcu.c:456 ingenic_tcu_probe() error: uninitialized symbol 'ret'.

vim +/ret +456 drivers/clk/ingenic/tcu.c

4f89e4b8f1215c1 Paul Cercueil   2019-07-24  336  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  337  static int __init ingenic_tcu_probe(struct device_node *np)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  338  {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  339  	const struct of_device_id *id = of_match_node(ingenic_tcu_of_match, np);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  340  	struct ingenic_tcu *tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  341  	struct regmap *map;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  342  	unsigned int i;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  343  	int ret;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  344  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  345  	map = device_node_to_regmap(np);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  346  	if (IS_ERR(map))
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  347  		return PTR_ERR(map);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  348  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  349  	tcu = kzalloc(sizeof(*tcu), GFP_KERNEL);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  350  	if (!tcu)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  351  		return -ENOMEM;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  352  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  353  	tcu->map = map;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  354  	tcu->soc_info = id->data;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  355  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  356  	if (tcu->soc_info->has_tcu_clk) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  357  		tcu->clk = of_clk_get_by_name(np, "tcu");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  358  		if (IS_ERR(tcu->clk)) {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  359  			/*
8c04eee82a9d67a Aidan MacDonald 2022-04-11  360  			 * Old device trees for some SoCs did not include the
8c04eee82a9d67a Aidan MacDonald 2022-04-11  361  			 * TCU clock because this driver (incorrectly) didn't
8c04eee82a9d67a Aidan MacDonald 2022-04-11  362  			 * use it. In this case we complain loudly and attempt
8c04eee82a9d67a Aidan MacDonald 2022-04-11  363  			 * to continue without the clock, which might work if
8c04eee82a9d67a Aidan MacDonald 2022-04-11  364  			 * booting with workarounds like "clk_ignore_unused".
8c04eee82a9d67a Aidan MacDonald 2022-04-11  365  			 */
8c04eee82a9d67a Aidan MacDonald 2022-04-11  366  			if (tcu->soc_info->allow_missing_tcu_clk &&
8c04eee82a9d67a Aidan MacDonald 2022-04-11  367  			    PTR_ERR(tcu->clk) == -EINVAL) {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  368  				pr_warn("TCU clock missing from device tree, please update your device tree\n");
8c04eee82a9d67a Aidan MacDonald 2022-04-11  369  				tcu->clk = NULL;
8c04eee82a9d67a Aidan MacDonald 2022-04-11  370  			} else {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  371  				pr_crit("Cannot get TCU clock from device tree\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  372  				goto err_free_tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  373  			}
8c04eee82a9d67a Aidan MacDonald 2022-04-11  374  		} else {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  375  			ret = clk_prepare_enable(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  376  			if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  377  				pr_crit("Unable to enable TCU clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  378  				goto err_put_clk;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  379  			}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  380  		}
8c04eee82a9d67a Aidan MacDonald 2022-04-11  381  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  382  
e620a1e061c4738 Stephen Kitt    2019-09-27  383  	tcu->clocks = kzalloc(struct_size(tcu->clocks, hws, TCU_CLK_COUNT),
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  384  			      GFP_KERNEL);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  385  	if (!tcu->clocks) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  386  		ret = -ENOMEM;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  387  		goto err_clk_disable;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  388  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  389  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  390  	tcu->clocks->num = TCU_CLK_COUNT;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  391  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  392  	for (i = 0; i < tcu->soc_info->num_channels; i++) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  393  		ret = ingenic_tcu_register_clock(tcu, i, TCU_PARENT_EXT,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  394  						 &ingenic_tcu_clk_info[i],
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  395  						 tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  396  		if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  397  			pr_crit("cannot register clock %d\n", i);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  398  			goto err_unregister_timer_clocks;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  399  		}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  400  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  401  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  402  	/*
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  403  	 * We set EXT as the default parent clock for all the TCU clocks
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  404  	 * except for the watchdog one, where we set the RTC clock as the
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  405  	 * parent. Since the EXT and PCLK are much faster than the RTC clock,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  406  	 * the watchdog would kick after a maximum time of 5s, and we might
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  407  	 * want a slower kicking time.
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  408  	 */
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  409  	ret = ingenic_tcu_register_clock(tcu, TCU_CLK_WDT, TCU_PARENT_RTC,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  410  					 &ingenic_tcu_watchdog_clk_info,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  411  					 tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  412  	if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  413  		pr_crit("cannot register watchdog clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  414  		goto err_unregister_timer_clocks;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  415  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  416  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  417  	if (tcu->soc_info->has_ost) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  418  		ret = ingenic_tcu_register_clock(tcu, TCU_CLK_OST,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  419  						 TCU_PARENT_EXT,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  420  						 &ingenic_tcu_ost_clk_info,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  421  						 tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  422  		if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  423  			pr_crit("cannot register ost clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  424  			goto err_unregister_watchdog_clock;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  425  		}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  426  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  427  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  428  	ret = of_clk_add_hw_provider(np, of_clk_hw_onecell_get, tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  429  	if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  430  		pr_crit("cannot add OF clock provider\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  431  		goto err_unregister_ost_clock;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  432  	}
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  433  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  434  	ingenic_tcu = tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  435  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  436  	return 0;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  437  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  438  err_unregister_ost_clock:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  439  	if (tcu->soc_info->has_ost)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  440  		clk_hw_unregister(tcu->clocks->hws[i + 1]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  441  err_unregister_watchdog_clock:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  442  	clk_hw_unregister(tcu->clocks->hws[i]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  443  err_unregister_timer_clocks:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  444  	for (i = 0; i < tcu->clocks->num; i++)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  445  		if (tcu->clocks->hws[i])
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  446  			clk_hw_unregister(tcu->clocks->hws[i]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  447  	kfree(tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  448  err_clk_disable:
8c04eee82a9d67a Aidan MacDonald 2022-04-11  449  	if (tcu->clk)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  450  		clk_disable_unprepare(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  451  err_put_clk:
8c04eee82a9d67a Aidan MacDonald 2022-04-11  452  	if (tcu->clk)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  453  		clk_put(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  454  err_free_tcu:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  455  	kfree(tcu);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24 @456  	return ret;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  457  }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  458  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-04-12 12:03 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-11 15:42 [PATCH v4 0/2] Fix missing TCU clock for X1000/X1830 SoCs Aidan MacDonald
2022-04-11 15:42 ` [PATCH v4 1/2] mips: dts: ingenic: Add TCU clock to x1000/x1830 tcu device node Aidan MacDonald
2022-04-11 19:07   ` Paul Cercueil
2022-04-11 15:42 ` [PATCH v4 2/2] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoCs Aidan MacDonald
2022-04-11 15:48   ` Paul Cercueil
2022-04-11 16:08     ` Aidan MacDonald
2022-04-11 16:36       ` Paul Cercueil
2022-04-11 19:07   ` Paul Cercueil
2022-04-12  2:03   ` kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-04-12 10:41 kernel test robot
2022-04-12 10:57 ` Dan Carpenter
2022-04-12 10:57 ` Dan Carpenter

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.