From: Shawn Guo <shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Baoyou Xie <baoyou.xie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: andy.shevchenko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
jun.nie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
xie.baoyou-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.org,
chen.chaokai-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.org,
wang.qiang01-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.org
Subject: Re: [PATCH v3 3/3] i2c: zx2967: add i2c controller driver for ZTE's zx2967 family
Date: Sat, 4 Feb 2017 15:15:47 +0800 [thread overview]
Message-ID: <20170204071545.GC3407@dragon> (raw)
In-Reply-To: <1485435631-32642-3-git-send-email-baoyou.xie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Only a couple of comments below. Otherwise, the patch looks fine to me.
On Thu, Jan 26, 2017 at 09:00:31PM +0800, Baoyou Xie wrote:
<snip>
> +static int zx2967_i2c_flush_fifos(struct zx2967_i2c_info *zx_i2c)
> +{
> + u32 val;
> + u32 offset;
> +
> + if (zx_i2c->msg_rd) {
> + offset = REG_RDCONF;
> + val = I2C_RFIFO_RESET;
> + } else {
> + offset = REG_WRCONF;
> + val = I2C_WFIFO_RESET;
> + }
> +
> + val |= zx2967_i2c_readl(zx_i2c, offset);
> + zx2967_i2c_writel(zx_i2c, val, offset);
> +
> + return 0;
Since the function will never return other values than 0, should we
simply define the return type as void?
> +}
<snip>
> +static int zx2967_i2c_probe(struct platform_device *pdev)
> +{
> + struct zx2967_i2c_info *zx_i2c;
> + void __iomem *reg_base;
> + struct resource *res;
> + struct clk *clk;
> + int ret;
> +
> + zx_i2c = devm_kzalloc(&pdev->dev, sizeof(*zx_i2c), GFP_KERNEL);
> + if (!zx_i2c)
> + return -ENOMEM;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + reg_base = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR(reg_base))
> + return PTR_ERR(reg_base);
> +
> + clk = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(clk)) {
> + dev_err(&pdev->dev, "missing controller clock");
> + return PTR_ERR(clk);
> + }
> +
> + ret = clk_prepare_enable(clk);
> + if (ret) {
> + dev_err(&pdev->dev, "failed to enable i2c_clk\n");
> + return ret;
> + }
> +
> + ret = platform_get_irq(pdev, 0);
> + if (ret < 0)
> + return ret;
> + zx_i2c->irq = ret;
> +
> + ret = device_property_read_u32(&pdev->dev, "clock-frequency",
> + &zx_i2c->clk_freq);
> + if (ret) {
> + dev_err(&pdev->dev, "missing clock-frequency");
> + return ret;
> + }
> +
> + zx_i2c->reg_base = reg_base;
> + zx_i2c->clk = clk;
> + zx_i2c->dev = &pdev->dev;
> +
> + zx_i2c->pin_ctrl = devm_pinctrl_get_select_default(&pdev->dev);
> + if (IS_ERR(zx_i2c->pin_ctrl)) {
> + if (PTR_ERR(zx_i2c->pin_ctrl) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + dev_info(&pdev->dev, "no pinctrl handle\n");
> + }
You do not need this boilerplate code for request "default" pin state,
since device core will automatically issue the call. See section "Pin
control requests from drivers" in Documentation/pinctrl.txt for more
info.
Shawn
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: shawnguo@kernel.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/3] i2c: zx2967: add i2c controller driver for ZTE's zx2967 family
Date: Sat, 4 Feb 2017 15:15:47 +0800 [thread overview]
Message-ID: <20170204071545.GC3407@dragon> (raw)
In-Reply-To: <1485435631-32642-3-git-send-email-baoyou.xie@linaro.org>
Only a couple of comments below. Otherwise, the patch looks fine to me.
On Thu, Jan 26, 2017 at 09:00:31PM +0800, Baoyou Xie wrote:
<snip>
> +static int zx2967_i2c_flush_fifos(struct zx2967_i2c_info *zx_i2c)
> +{
> + u32 val;
> + u32 offset;
> +
> + if (zx_i2c->msg_rd) {
> + offset = REG_RDCONF;
> + val = I2C_RFIFO_RESET;
> + } else {
> + offset = REG_WRCONF;
> + val = I2C_WFIFO_RESET;
> + }
> +
> + val |= zx2967_i2c_readl(zx_i2c, offset);
> + zx2967_i2c_writel(zx_i2c, val, offset);
> +
> + return 0;
Since the function will never return other values than 0, should we
simply define the return type as void?
> +}
<snip>
> +static int zx2967_i2c_probe(struct platform_device *pdev)
> +{
> + struct zx2967_i2c_info *zx_i2c;
> + void __iomem *reg_base;
> + struct resource *res;
> + struct clk *clk;
> + int ret;
> +
> + zx_i2c = devm_kzalloc(&pdev->dev, sizeof(*zx_i2c), GFP_KERNEL);
> + if (!zx_i2c)
> + return -ENOMEM;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + reg_base = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR(reg_base))
> + return PTR_ERR(reg_base);
> +
> + clk = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(clk)) {
> + dev_err(&pdev->dev, "missing controller clock");
> + return PTR_ERR(clk);
> + }
> +
> + ret = clk_prepare_enable(clk);
> + if (ret) {
> + dev_err(&pdev->dev, "failed to enable i2c_clk\n");
> + return ret;
> + }
> +
> + ret = platform_get_irq(pdev, 0);
> + if (ret < 0)
> + return ret;
> + zx_i2c->irq = ret;
> +
> + ret = device_property_read_u32(&pdev->dev, "clock-frequency",
> + &zx_i2c->clk_freq);
> + if (ret) {
> + dev_err(&pdev->dev, "missing clock-frequency");
> + return ret;
> + }
> +
> + zx_i2c->reg_base = reg_base;
> + zx_i2c->clk = clk;
> + zx_i2c->dev = &pdev->dev;
> +
> + zx_i2c->pin_ctrl = devm_pinctrl_get_select_default(&pdev->dev);
> + if (IS_ERR(zx_i2c->pin_ctrl)) {
> + if (PTR_ERR(zx_i2c->pin_ctrl) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + dev_info(&pdev->dev, "no pinctrl handle\n");
> + }
You do not need this boilerplate code for request "default" pin state,
since device core will automatically issue the call. See section "Pin
control requests from drivers" in Documentation/pinctrl.txt for more
info.
Shawn
WARNING: multiple messages have this Message-ID (diff)
From: Shawn Guo <shawnguo@kernel.org>
To: Baoyou Xie <baoyou.xie@linaro.org>
Cc: andy.shevchenko@gmail.com, jun.nie@linaro.org, wsa@the-dreams.de,
robh+dt@kernel.org, mark.rutland@arm.com,
linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
xie.baoyou@zte.com.cn, chen.chaokai@zte.com.cn,
wang.qiang01@zte.com.cn
Subject: Re: [PATCH v3 3/3] i2c: zx2967: add i2c controller driver for ZTE's zx2967 family
Date: Sat, 4 Feb 2017 15:15:47 +0800 [thread overview]
Message-ID: <20170204071545.GC3407@dragon> (raw)
In-Reply-To: <1485435631-32642-3-git-send-email-baoyou.xie@linaro.org>
Only a couple of comments below. Otherwise, the patch looks fine to me.
On Thu, Jan 26, 2017 at 09:00:31PM +0800, Baoyou Xie wrote:
<snip>
> +static int zx2967_i2c_flush_fifos(struct zx2967_i2c_info *zx_i2c)
> +{
> + u32 val;
> + u32 offset;
> +
> + if (zx_i2c->msg_rd) {
> + offset = REG_RDCONF;
> + val = I2C_RFIFO_RESET;
> + } else {
> + offset = REG_WRCONF;
> + val = I2C_WFIFO_RESET;
> + }
> +
> + val |= zx2967_i2c_readl(zx_i2c, offset);
> + zx2967_i2c_writel(zx_i2c, val, offset);
> +
> + return 0;
Since the function will never return other values than 0, should we
simply define the return type as void?
> +}
<snip>
> +static int zx2967_i2c_probe(struct platform_device *pdev)
> +{
> + struct zx2967_i2c_info *zx_i2c;
> + void __iomem *reg_base;
> + struct resource *res;
> + struct clk *clk;
> + int ret;
> +
> + zx_i2c = devm_kzalloc(&pdev->dev, sizeof(*zx_i2c), GFP_KERNEL);
> + if (!zx_i2c)
> + return -ENOMEM;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + reg_base = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR(reg_base))
> + return PTR_ERR(reg_base);
> +
> + clk = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(clk)) {
> + dev_err(&pdev->dev, "missing controller clock");
> + return PTR_ERR(clk);
> + }
> +
> + ret = clk_prepare_enable(clk);
> + if (ret) {
> + dev_err(&pdev->dev, "failed to enable i2c_clk\n");
> + return ret;
> + }
> +
> + ret = platform_get_irq(pdev, 0);
> + if (ret < 0)
> + return ret;
> + zx_i2c->irq = ret;
> +
> + ret = device_property_read_u32(&pdev->dev, "clock-frequency",
> + &zx_i2c->clk_freq);
> + if (ret) {
> + dev_err(&pdev->dev, "missing clock-frequency");
> + return ret;
> + }
> +
> + zx_i2c->reg_base = reg_base;
> + zx_i2c->clk = clk;
> + zx_i2c->dev = &pdev->dev;
> +
> + zx_i2c->pin_ctrl = devm_pinctrl_get_select_default(&pdev->dev);
> + if (IS_ERR(zx_i2c->pin_ctrl)) {
> + if (PTR_ERR(zx_i2c->pin_ctrl) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + dev_info(&pdev->dev, "no pinctrl handle\n");
> + }
You do not need this boilerplate code for request "default" pin state,
since device core will automatically issue the call. See section "Pin
control requests from drivers" in Documentation/pinctrl.txt for more
info.
Shawn
next prev parent reply other threads:[~2017-02-04 7:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-26 13:00 [PATCH v3 1/3] dt: bindings: add documentation for zx2967 family i2c controller Baoyou Xie
2017-01-26 13:00 ` Baoyou Xie
[not found] ` <1485435631-32642-1-git-send-email-baoyou.xie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-01-26 13:00 ` [PATCH v3 2/3] MAINTAINERS: add zx2967 i2c controller driver to ARM ZTE architecture Baoyou Xie
2017-01-26 13:00 ` Baoyou Xie
2017-01-26 13:00 ` Baoyou Xie
2017-01-26 13:00 ` [PATCH v3 3/3] i2c: zx2967: add i2c controller driver for ZTE's zx2967 family Baoyou Xie
2017-01-26 13:00 ` Baoyou Xie
[not found] ` <1485435631-32642-3-git-send-email-baoyou.xie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-02-04 7:15 ` Shawn Guo [this message]
2017-02-04 7:15 ` Shawn Guo
2017-02-04 7:15 ` Shawn Guo
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=20170204071545.GC3407@dragon \
--to=shawnguo-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=andy.shevchenko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=baoyou.xie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=chen.chaokai-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jun.nie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=wang.qiang01-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.org \
--cc=wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org \
--cc=xie.baoyou-Th6q7B73Y6EnDS1+zs4M5A@public.gmane.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.