All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: nobuhiro1.iwamatsu@toshiba.co.jp
Cc: linux-clk@vger.kernel.org
Subject: [bug report] clk: visconti: Add support common clock driver and reset driver
Date: Tue, 11 Jan 2022 11:14:35 +0300	[thread overview]
Message-ID: <20220111081435.GA19822@kili> (raw)

Hello Nobuhiro Iwamatsu,

The patch b4cbe606dc36: "clk: visconti: Add support common clock
driver and reset driver" from Oct 25, 2021, leads to the following
Smatch static checker warning:

	drivers/clk/visconti/clkc.c:150 visconti_clk_register_gates()
	warn: always true condition '(clks[i]->rs_id >= 0) => (0-255 >= 0)'

drivers/clk/visconti/clkc.c
    124 int visconti_clk_register_gates(struct visconti_clk_provider *ctx,
    125                                 const struct visconti_clk_gate_table *clks,
    126                                 int num_gate,
    127                                 const struct visconti_reset_data *reset,
    128                                 spinlock_t *lock)
    129 {
    130         struct device *dev = ctx->dev;
    131         int i;
    132 
    133         for (i = 0; i < num_gate; i++) {
    134                 const char *parent_div_name = clks[i].parent_data[0].name;
    135                 struct clk_parent_data *pdata;
    136                 u32 rson_offset, rsoff_offset;
    137                 struct clk_hw *gate_clk;
    138                 struct clk_hw *div_clk;
    139                 char *dev_name;
    140                 u8 rs_idx;
    141 
    142                 pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
    143                 if (!pdata)
    144                         return -ENOMEM;
    145 
    146                 dev_name = devm_kasprintf(dev, GFP_KERNEL, "%s_div", clks[i].name);
    147                 if (!dev_name)
    148                         return -ENOMEM;
    149 
--> 150                 if (clks[i].rs_id >= 0) {

This is a u8.  But it does get set to -1 for PISYSTEM in clkc-tmpv770x.c

> drivers/clk/visconti/clkc-tmpv770x.c
>   175                /* PISYSTEM */
>   176                { TMPV770X_CLK_WRCK, "wrck",
>   177                        clks_parent_data, ARRAY_SIZE(clks_parent_data),
>   178                        0, 0x68, 0x168, 9, 32,
>   179                        -1, }, /* No reset */

    151                         rson_offset = reset[clks[i].rs_id].rson_offset;
    152                         rsoff_offset = reset[clks[i].rs_id].rsoff_offset;
    153                         rs_idx = reset[clks[i].rs_id].rs_idx;
    154                 } else {
    155                         rson_offset = rsoff_offset = rs_idx = -1;

All these variables are unsigned but they're set to -1.  clks[i].rs_idx
is also unsigned.

    156                 }
    157 
    158                 div_clk = devm_clk_hw_register_fixed_factor(dev,
    159                                                             dev_name,
    160                                                             parent_div_name,
    161                                                             0, 1,
    162                                                             clks[i].div);
    163                 if (IS_ERR(div_clk))
    164                         return PTR_ERR(div_clk);
    165 
    166                 gate_clk = visconti_clk_register_gate(dev,
    167                                                       clks[i].name,
    168                                                       dev_name,
    169                                                       ctx->regmap,
    170                                                       &clks[i],
    171                                                       rson_offset,
    172                                                       rsoff_offset,
    173                                                       rs_idx,
    174                                                       lock);
    175                 if (IS_ERR(gate_clk)) {
    176                         dev_err(dev, "%s: failed to register clock %s\n",
    177                                 __func__, clks[i].name);
    178                         return PTR_ERR(gate_clk);
    179                 }
    180 
    181                 ctx->clk_data.hws[clks[i].id] = gate_clk;
    182         }
    183 
    184         return 0;
    185 }

regards,
dan carpenter

             reply	other threads:[~2022-01-11  8:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11  8:14 Dan Carpenter [this message]
2022-01-20 20:55 ` [bug report] clk: visconti: Add support common clock driver and reset driver Stephen Boyd
  -- strict thread matches above, loose matches on Subject: below --
2025-12-09 13:05 Dan Carpenter
2025-12-10  7:36 ` Nathan Chancellor
2025-12-10  7:53   ` Dan Carpenter

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=20220111081435.GA19822@kili \
    --to=dan.carpenter@oracle.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=nobuhiro1.iwamatsu@toshiba.co.jp \
    /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.