All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@codeaurora.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: 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>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Wei Xu <xuwei5@hisilicon.com>,
	Haojian Zhuang <haojian.zhuang@linaro.org>,
	Bintian Wang <bintian.wang@huawei.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
	Guodong Xu <guodong.xu@linaro.org>,
	Jian Zhang <zhangjian001@hisilicon.com>,
	Zhenwei Wang <Zhenwei.wang@hisilicon.com>,
	Haoju Mo <mohaoju@hisilicon.com>,
	Dan Zhao <dan.zhao@hisilicon.com>,
	sunzhaosheng@hisilicon.com, victor.lixin@hisilicon.com
Subject: Re: [PATCH v3 4/5] clk: Hi6220: add stub clock driver
Date: Mon, 3 Aug 2015 14:37:52 -0700	[thread overview]
Message-ID: <20150803213752.GB21068@codeaurora.org> (raw)
In-Reply-To: <1438564418-15948-5-git-send-email-leo.yan@linaro.org>

On 08/03, Leo Yan wrote:
> diff --git a/drivers/clk/hisilicon/clk-hi6220-stub.c b/drivers/clk/hisilicon/clk-hi6220-stub.c
> new file mode 100644
> index 0000000..0931666
> --- /dev/null
> +++ b/drivers/clk/hisilicon/clk-hi6220-stub.c
> @@ -0,0 +1,279 @@
> +/*
> + * Hi6220 stub clock driver
> + *
> + * Copyright (c) 2015 Hisilicon Limited.
> + * Copyright (c) 2015 Linaro Limited.
> + *
> + * Author: Leo Yan <leo.yan@linaro.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/clkdev.h>

Is this include used?

> +#include <linux/clk-provider.h>
> +#include <linux/clk.h>

Is this include used?

> +#include <linux/err.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/mailbox_client.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/regmap.h>
> +#include <linux/slab.h>
> +#include <linux/kernel.h>
> +
> +#include <dt-bindings/clock/hi6220-clock.h>
> +
> +/* Stub clocks id */
> +#define HI6220_STUB_ACPU0		0
> +#define HI6220_STUB_ACPU1		1
> +#define HI6220_STUB_GPU			2
> +#define HI6220_STUB_DDR			5
> +
> +/* Mailbox message */
> +#define HI6220_MBOX_MSG_LEN		8
> +
> +#define HI6220_MBOX_FREQ		(0xA)
> +#define HI6220_MBOX_CMD_SET		(0x3)
> +#define HI6220_MBOX_OBJ_AP		(0x0)
> +
> +/* CPU dynamic frequency scaling */
> +#define ACPU_DFS_FREQ_MAX		(0x1724)
> +#define ACPU_DFS_CUR_FREQ		(0x17CC)
> +#define ACPU_DFS_FLAG			(0x1B30)
> +#define ACPU_DFS_FREQ_REQ		(0x1B34)
> +#define ACPU_DFS_FREQ_LMT		(0x1B38)
> +#define ACPU_DFS_LOCK_FLAG		(0xAEAEAEAE)

We don't need parenthesis around single values in these macros.

> +
> +#define to_stub_clk(hw) container_of(hw, struct hi6220_stub_clk, hw)
> +
> +struct hi6220_stub_clk {
> +	u32 id;
> +	u32 rate;
> +
> +	struct device *dev;
> +	struct clk_hw hw;
> +
> +	struct regmap *dfs_map;
> +	struct mbox_client cl;
> +	struct mbox_chan *mbox;
> +};
> +
> +struct hi6220_mbox_msg {
> +	unsigned char type;
> +	unsigned char cmd;
> +	unsigned char obj;
> +	unsigned char src;
> +	unsigned char para[4];
> +};
> +
> +union hi6220_mbox_data {
> +	unsigned int data[HI6220_MBOX_MSG_LEN];
> +	struct hi6220_mbox_msg msg;
> +};
> +
> +static unsigned int hi6220_acpu_get_freq(struct hi6220_stub_clk *stub_clk)
> +{
> +	unsigned int freq;
> +
> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_CUR_FREQ, &freq);
> +	return freq;
> +}
> +
> +static int hi6220_acpu_set_freq(struct hi6220_stub_clk *stub_clk,
> +				unsigned int freq)
> +{
> +	union hi6220_mbox_data data;
> +
> +	stub_clk->mbox = mbox_request_channel(&stub_clk->cl, 0);

Why not request the channel once in probe?

> +	if (IS_ERR(stub_clk->mbox)) {
> +		dev_err(stub_clk->dev, "failed get mailbox channel\n");
> +		return PTR_ERR(stub_clk->mbox);
> +	};
> +
> +	/* set the frequency in sram */
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, freq);
> +
> +	/* compound mailbox message */
> +	data.msg.type = HI6220_MBOX_FREQ;
> +	data.msg.cmd  = HI6220_MBOX_CMD_SET;
> +	data.msg.obj  = HI6220_MBOX_OBJ_AP;
> +	data.msg.src  = HI6220_MBOX_OBJ_AP;
> +
> +	mbox_send_message(stub_clk->mbox, &data);
> +	mbox_free_channel(stub_clk->mbox);
> +	return 0;
> +}
> +
> +static int hi6220_acpu_round_freq(struct hi6220_stub_clk *stub_clk,
> +				  unsigned int freq)
> +{
> +	unsigned int limit_flag, limit_freq = UINT_MAX;
> +	unsigned int max_freq;
> +
> +	/* check the constrainted frequency */

s/constrainted/constrained/ ?

> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_FLAG, &limit_flag);
> +	if (limit_flag == ACPU_DFS_LOCK_FLAG)
> +		regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, &limit_freq);
> +
> +	/* check the supported maximum frequency */
> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_MAX, &max_freq);
> +
> +	/* calculate the real maximum frequency */
> +	max_freq = min(max_freq, limit_freq);
> +
> +	if (WARN_ON(freq > max_freq))
> +		freq = max_freq;
> +
> +	return freq;
> +}
> +
> +static unsigned long hi6220_stub_clk_recalc_rate(struct clk_hw *hw,
> +		unsigned long parent_rate)
> +{
> +	u32 rate = 0;
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		rate = hi6220_acpu_get_freq(stub_clk);
> +
> +		/* convert from KHz to Hz */

s/KHz/kHz/ ?

> +		rate *= 1000;
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	return rate;
> +}
> +
> +static int hi6220_stub_clk_set_rate(struct clk_hw *hw, unsigned long rate,
> +                    unsigned long parent_rate)
> +{
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +	unsigned long new_rate = rate / 1000;  /* Khz */

s/KHz/kHz/ ?

> +	int ret = 0;
> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		ret = hi6220_acpu_set_freq(stub_clk, new_rate);
> +		if (ret < 0)
> +			return ret;
> +
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	stub_clk->rate = new_rate;

Why do we store away the rate? Is this used anywhere?

> +
> +	pr_debug("%s: set rate=%ldKhz\n", __func__, new_rate);
> +	return ret;
> +}
> +
> +static long hi6220_stub_clk_round_rate(struct clk_hw *hw, unsigned long rate,
> +		unsigned long *parent_rate)
> +{
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +	unsigned long new_rate = rate / 1000;  /* Khz */

s/KHz/kHz/ ?

> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		new_rate = hi6220_acpu_round_freq(stub_clk, new_rate);
> +
> +		/* convert from KHz to Hz */

s/KHz/kHz/ ?

> +		new_rate *= 1000;
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	return new_rate;
> +}
> +
> +static struct clk_ops hi6220_stub_clk_ops = {

const?

> +	.recalc_rate	= hi6220_stub_clk_recalc_rate,
> +	.round_rate	= hi6220_stub_clk_round_rate,
> +	.set_rate	= hi6220_stub_clk_set_rate,
> +};
> +
> +static int hi6220_stub_clk_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct clk_init_data init;
> +	struct hi6220_stub_clk *stub_clk;
> +	struct clk *clk;
> +	struct device_node *np = pdev->dev.of_node;
> +
> +	stub_clk = devm_kzalloc(&pdev->dev, sizeof(*stub_clk), GFP_KERNEL);

just use dev?

> +	if (!stub_clk)
> +		return -ENOMEM;
> +
> +	stub_clk->dfs_map = syscon_regmap_lookup_by_phandle(np,
> +				"hisilicon,hi6220-clk-sram");
> +	if (IS_ERR(stub_clk->dfs_map)) {
> +		dev_err(dev, "failed to get sram regmap\n");
> +		return PTR_ERR(stub_clk->dfs_map);
> +	}
> +
> +	stub_clk->hw.init = &init;
> +	stub_clk->dev = dev;
> +	stub_clk->id = HI6220_STUB_ACPU0;
> +
> +	/* Use mailbox client with blocking mode */
> +	stub_clk->cl.dev = &pdev->dev;

just use dev?

> +	stub_clk->cl.tx_done = NULL;
> +	stub_clk->cl.tx_block = true;
> +	stub_clk->cl.tx_tout = 500;
> +	stub_clk->cl.knows_txdone = false;
> +
> +	init.name = "acpu0";
> +	init.ops = &hi6220_stub_clk_ops;
> +	init.num_parents = 0;
> +	init.flags = CLK_IS_ROOT;
> +
> +	clk = clk_register(NULL, &stub_clk->hw);

why not devm_clk_register?

> +	if (IS_ERR(clk))
> +		return PTR_ERR(clk);
> +
> +	of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get, clk);

And check this for an error return value? Also, just use dev?

> +
> +	/* initialize buffer to zero */
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FLAG, 0x0);
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, 0x0);
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, 0x0);
> +
> +	dev_dbg(&pdev->dev, "Registered clock '%s'\n", init.name);

just use dev?

> +	return 0;
> +}
> +
> +static const struct of_device_id hi6220_stub_clk_of_match[] = {
> +	{ .compatible = "hisilicon,hi6220-stub-clk", },
> +	{}
> +};
> +
> +static struct platform_driver hi6220_stub_clk_driver = {
> +	.driver	= {
> +		.name = "hi6220-stub-clk",
> +		.of_match_table = of_match_ptr(hi6220_stub_clk_of_match),

We can leave off of_match_ptr() here.

> +	},
> +	.probe = hi6220_stub_clk_probe,
> +};

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 4/5] clk: Hi6220: add stub clock driver
Date: Mon, 3 Aug 2015 14:37:52 -0700	[thread overview]
Message-ID: <20150803213752.GB21068@codeaurora.org> (raw)
In-Reply-To: <1438564418-15948-5-git-send-email-leo.yan@linaro.org>

On 08/03, Leo Yan wrote:
> diff --git a/drivers/clk/hisilicon/clk-hi6220-stub.c b/drivers/clk/hisilicon/clk-hi6220-stub.c
> new file mode 100644
> index 0000000..0931666
> --- /dev/null
> +++ b/drivers/clk/hisilicon/clk-hi6220-stub.c
> @@ -0,0 +1,279 @@
> +/*
> + * Hi6220 stub clock driver
> + *
> + * Copyright (c) 2015 Hisilicon Limited.
> + * Copyright (c) 2015 Linaro Limited.
> + *
> + * Author: Leo Yan <leo.yan@linaro.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/clkdev.h>

Is this include used?

> +#include <linux/clk-provider.h>
> +#include <linux/clk.h>

Is this include used?

> +#include <linux/err.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/mailbox_client.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/regmap.h>
> +#include <linux/slab.h>
> +#include <linux/kernel.h>
> +
> +#include <dt-bindings/clock/hi6220-clock.h>
> +
> +/* Stub clocks id */
> +#define HI6220_STUB_ACPU0		0
> +#define HI6220_STUB_ACPU1		1
> +#define HI6220_STUB_GPU			2
> +#define HI6220_STUB_DDR			5
> +
> +/* Mailbox message */
> +#define HI6220_MBOX_MSG_LEN		8
> +
> +#define HI6220_MBOX_FREQ		(0xA)
> +#define HI6220_MBOX_CMD_SET		(0x3)
> +#define HI6220_MBOX_OBJ_AP		(0x0)
> +
> +/* CPU dynamic frequency scaling */
> +#define ACPU_DFS_FREQ_MAX		(0x1724)
> +#define ACPU_DFS_CUR_FREQ		(0x17CC)
> +#define ACPU_DFS_FLAG			(0x1B30)
> +#define ACPU_DFS_FREQ_REQ		(0x1B34)
> +#define ACPU_DFS_FREQ_LMT		(0x1B38)
> +#define ACPU_DFS_LOCK_FLAG		(0xAEAEAEAE)

We don't need parenthesis around single values in these macros.

> +
> +#define to_stub_clk(hw) container_of(hw, struct hi6220_stub_clk, hw)
> +
> +struct hi6220_stub_clk {
> +	u32 id;
> +	u32 rate;
> +
> +	struct device *dev;
> +	struct clk_hw hw;
> +
> +	struct regmap *dfs_map;
> +	struct mbox_client cl;
> +	struct mbox_chan *mbox;
> +};
> +
> +struct hi6220_mbox_msg {
> +	unsigned char type;
> +	unsigned char cmd;
> +	unsigned char obj;
> +	unsigned char src;
> +	unsigned char para[4];
> +};
> +
> +union hi6220_mbox_data {
> +	unsigned int data[HI6220_MBOX_MSG_LEN];
> +	struct hi6220_mbox_msg msg;
> +};
> +
> +static unsigned int hi6220_acpu_get_freq(struct hi6220_stub_clk *stub_clk)
> +{
> +	unsigned int freq;
> +
> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_CUR_FREQ, &freq);
> +	return freq;
> +}
> +
> +static int hi6220_acpu_set_freq(struct hi6220_stub_clk *stub_clk,
> +				unsigned int freq)
> +{
> +	union hi6220_mbox_data data;
> +
> +	stub_clk->mbox = mbox_request_channel(&stub_clk->cl, 0);

Why not request the channel once in probe?

> +	if (IS_ERR(stub_clk->mbox)) {
> +		dev_err(stub_clk->dev, "failed get mailbox channel\n");
> +		return PTR_ERR(stub_clk->mbox);
> +	};
> +
> +	/* set the frequency in sram */
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, freq);
> +
> +	/* compound mailbox message */
> +	data.msg.type = HI6220_MBOX_FREQ;
> +	data.msg.cmd  = HI6220_MBOX_CMD_SET;
> +	data.msg.obj  = HI6220_MBOX_OBJ_AP;
> +	data.msg.src  = HI6220_MBOX_OBJ_AP;
> +
> +	mbox_send_message(stub_clk->mbox, &data);
> +	mbox_free_channel(stub_clk->mbox);
> +	return 0;
> +}
> +
> +static int hi6220_acpu_round_freq(struct hi6220_stub_clk *stub_clk,
> +				  unsigned int freq)
> +{
> +	unsigned int limit_flag, limit_freq = UINT_MAX;
> +	unsigned int max_freq;
> +
> +	/* check the constrainted frequency */

s/constrainted/constrained/ ?

> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_FLAG, &limit_flag);
> +	if (limit_flag == ACPU_DFS_LOCK_FLAG)
> +		regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, &limit_freq);
> +
> +	/* check the supported maximum frequency */
> +	regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_MAX, &max_freq);
> +
> +	/* calculate the real maximum frequency */
> +	max_freq = min(max_freq, limit_freq);
> +
> +	if (WARN_ON(freq > max_freq))
> +		freq = max_freq;
> +
> +	return freq;
> +}
> +
> +static unsigned long hi6220_stub_clk_recalc_rate(struct clk_hw *hw,
> +		unsigned long parent_rate)
> +{
> +	u32 rate = 0;
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		rate = hi6220_acpu_get_freq(stub_clk);
> +
> +		/* convert from KHz to Hz */

s/KHz/kHz/ ?

> +		rate *= 1000;
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	return rate;
> +}
> +
> +static int hi6220_stub_clk_set_rate(struct clk_hw *hw, unsigned long rate,
> +                    unsigned long parent_rate)
> +{
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +	unsigned long new_rate = rate / 1000;  /* Khz */

s/KHz/kHz/ ?

> +	int ret = 0;
> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		ret = hi6220_acpu_set_freq(stub_clk, new_rate);
> +		if (ret < 0)
> +			return ret;
> +
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	stub_clk->rate = new_rate;

Why do we store away the rate? Is this used anywhere?

> +
> +	pr_debug("%s: set rate=%ldKhz\n", __func__, new_rate);
> +	return ret;
> +}
> +
> +static long hi6220_stub_clk_round_rate(struct clk_hw *hw, unsigned long rate,
> +		unsigned long *parent_rate)
> +{
> +	struct hi6220_stub_clk *stub_clk = to_stub_clk(hw);
> +	unsigned long new_rate = rate / 1000;  /* Khz */

s/KHz/kHz/ ?

> +
> +	switch (stub_clk->id) {
> +	case HI6220_STUB_ACPU0:
> +		new_rate = hi6220_acpu_round_freq(stub_clk, new_rate);
> +
> +		/* convert from KHz to Hz */

s/KHz/kHz/ ?

> +		new_rate *= 1000;
> +		break;
> +
> +	default:
> +		dev_err(stub_clk->dev, "%s: un-supported clock id %d\n",
> +			__func__, stub_clk->id);
> +		break;
> +	}
> +
> +	return new_rate;
> +}
> +
> +static struct clk_ops hi6220_stub_clk_ops = {

const?

> +	.recalc_rate	= hi6220_stub_clk_recalc_rate,
> +	.round_rate	= hi6220_stub_clk_round_rate,
> +	.set_rate	= hi6220_stub_clk_set_rate,
> +};
> +
> +static int hi6220_stub_clk_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct clk_init_data init;
> +	struct hi6220_stub_clk *stub_clk;
> +	struct clk *clk;
> +	struct device_node *np = pdev->dev.of_node;
> +
> +	stub_clk = devm_kzalloc(&pdev->dev, sizeof(*stub_clk), GFP_KERNEL);

just use dev?

> +	if (!stub_clk)
> +		return -ENOMEM;
> +
> +	stub_clk->dfs_map = syscon_regmap_lookup_by_phandle(np,
> +				"hisilicon,hi6220-clk-sram");
> +	if (IS_ERR(stub_clk->dfs_map)) {
> +		dev_err(dev, "failed to get sram regmap\n");
> +		return PTR_ERR(stub_clk->dfs_map);
> +	}
> +
> +	stub_clk->hw.init = &init;
> +	stub_clk->dev = dev;
> +	stub_clk->id = HI6220_STUB_ACPU0;
> +
> +	/* Use mailbox client with blocking mode */
> +	stub_clk->cl.dev = &pdev->dev;

just use dev?

> +	stub_clk->cl.tx_done = NULL;
> +	stub_clk->cl.tx_block = true;
> +	stub_clk->cl.tx_tout = 500;
> +	stub_clk->cl.knows_txdone = false;
> +
> +	init.name = "acpu0";
> +	init.ops = &hi6220_stub_clk_ops;
> +	init.num_parents = 0;
> +	init.flags = CLK_IS_ROOT;
> +
> +	clk = clk_register(NULL, &stub_clk->hw);

why not devm_clk_register?

> +	if (IS_ERR(clk))
> +		return PTR_ERR(clk);
> +
> +	of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get, clk);

And check this for an error return value? Also, just use dev?

> +
> +	/* initialize buffer to zero */
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FLAG, 0x0);
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, 0x0);
> +	regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, 0x0);
> +
> +	dev_dbg(&pdev->dev, "Registered clock '%s'\n", init.name);

just use dev?

> +	return 0;
> +}
> +
> +static const struct of_device_id hi6220_stub_clk_of_match[] = {
> +	{ .compatible = "hisilicon,hi6220-stub-clk", },
> +	{}
> +};
> +
> +static struct platform_driver hi6220_stub_clk_driver = {
> +	.driver	= {
> +		.name = "hi6220-stub-clk",
> +		.of_match_table = of_match_ptr(hi6220_stub_clk_of_match),

We can leave off of_match_ptr() here.

> +	},
> +	.probe = hi6220_stub_clk_probe,
> +};

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2015-08-03 21:37 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-03  1:13 [PATCH v3 0/5] clk: hisilicon: support stub clock Leo Yan
2015-08-03  1:13 ` Leo Yan
2015-08-03  1:13 ` [PATCH v3 1/5] clk: hisi: refine parameter checking for init Leo Yan
2015-08-03  1:13   ` Leo Yan
2015-08-03 21:46   ` Stephen Boyd
2015-08-03 21:46     ` Stephen Boyd
2015-08-03 21:46     ` Stephen Boyd
2015-08-03  1:13 ` [PATCH v3 2/5] dt-bindings: arm: Hi6220: add doc for SRAM controller Leo Yan
2015-08-03  1:13   ` Leo Yan
2015-08-03  1:13 ` [PATCH v3 3/5] dt-bindings: clk: Hi6220: Document stub clock driver Leo Yan
2015-08-03  1:13   ` Leo Yan
2015-08-03  1:13 ` [PATCH v3 4/5] clk: Hi6220: add " Leo Yan
2015-08-03  1:13   ` Leo Yan
2015-08-03  1:13   ` Leo Yan
2015-08-03 21:37   ` Stephen Boyd [this message]
2015-08-03 21:37     ` Stephen Boyd
2015-08-04  6:27     ` Leo Yan
2015-08-04  6:27       ` Leo Yan
2015-08-04  6:27       ` Leo Yan
2015-09-02  0:28   ` Kevin Hilman
2015-09-02  0:28     ` Kevin Hilman
2015-09-02  0:28     ` Kevin Hilman
2015-09-02  1:52     ` Leo Yan
2015-09-02  1:52       ` Leo Yan
2015-09-02  1:52       ` Leo Yan
2015-08-03  1:13 ` [PATCH v3 5/5] arm64: dts: add Hi6220's stub clock node Leo Yan
2015-08-03  1:13   ` Leo Yan

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=20150803213752.GB21068@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=Zhenwei.wang@hisilicon.com \
    --cc=bintian.wang@huawei.com \
    --cc=catalin.marinas@arm.com \
    --cc=dan.zhao@hisilicon.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=guodong.xu@linaro.org \
    --cc=haojian.zhuang@linaro.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mohaoju@hisilicon.com \
    --cc=mturquette@baylibre.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sunzhaosheng@hisilicon.com \
    --cc=victor.lixin@hisilicon.com \
    --cc=will.deacon@arm.com \
    --cc=xuwei5@hisilicon.com \
    --cc=zhangjian001@hisilicon.com \
    /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.