All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [shenki:aspeed-otp 140/140] drivers/soc/aspeed/aspeed-otp.c:213:5: warning: no previous prototype for 'otp_read_conf'
Date: Tue, 30 Mar 2021 15:57:28 +0800	[thread overview]
Message-ID: <202103301523.TRYrkbMf-lkp@intel.com> (raw)

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

tree:   https://github.com/shenki/linux aspeed-otp
head:   1901faa3a9a68dd9e8e3e81207602d9ff315f2c1
commit: 1901faa3a9a68dd9e8e3e81207602d9ff315f2c1 [140/140] soc: aspeed: Add driver for OTP region
config: arc-allyesconfig (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/shenki/linux/commit/1901faa3a9a68dd9e8e3e81207602d9ff315f2c1
        git remote add shenki https://github.com/shenki/linux
        git fetch --no-tags shenki aspeed-otp
        git checkout 1901faa3a9a68dd9e8e3e81207602d9ff315f2c1
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

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

All warnings (new ones prefixed by >>):

>> drivers/soc/aspeed/aspeed-otp.c:213:5: warning: no previous prototype for 'otp_read_conf' [-Wmissing-prototypes]
     213 | int otp_read_conf(struct aspeed_otp *otp)
         |     ^~~~~~~~~~~~~
>> drivers/soc/aspeed/aspeed-otp.c:236:5: warning: no previous prototype for 'otp_read_strap' [-Wmissing-prototypes]
     236 | int otp_read_strap(struct aspeed_otp *otp)
         |     ^~~~~~~~~~~~~~
>> drivers/soc/aspeed/aspeed-otp.c:291:5: warning: no previous prototype for 'otp_write_conf' [-Wmissing-prototypes]
     291 | int otp_write_conf(struct aspeed_otp *otp, unsigned int word, unsigned int bit)
         |     ^~~~~~~~~~~~~~
>> drivers/soc/aspeed/aspeed-otp.c:327:5: warning: no previous prototype for 'otp_write_strap' [-Wmissing-prototypes]
     327 | int otp_write_strap(struct aspeed_otp *otp, unsigned int bit, unsigned int val)
         |     ^~~~~~~~~~~~~~~
   In file included from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/big_endian.h:13,
                    from include/linux/byteorder/big_endian.h:5,
                    from arch/arc/include/uapi/asm/byteorder.h:14,
                    from include/asm-generic/bitops/le.h:6,
                    from arch/arc/include/asm/bitops.h:373,
                    from include/linux/bitops.h:29,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/wait.h:7,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from drivers/soc/aspeed/aspeed-otp.c:6:
   drivers/soc/aspeed/aspeed-otp.c: In function 'otp_write_strap':
>> drivers/soc/aspeed/aspeed-otp.c:394:22: warning: passing argument 1 of '__fswab32' makes integer from pointer without a cast [-Wint-conversion]
     394 |     writel(otp->base + OTP_PROTECT_KEY, 0);
   include/uapi/linux/swab.h:120:12: note: in definition of macro '__swab32'
     120 |  __fswab32(x))
         |            ^
   include/linux/byteorder/generic.h:88:21: note: in expansion of macro '__cpu_to_le32'
      88 | #define cpu_to_le32 __cpu_to_le32
         |                     ^~~~~~~~~~~~~
   arch/arc/include/asm/io.h:209:36: note: in expansion of macro 'writel_relaxed'
     209 | #define writel(v,c)  ({ __iowmb(); writel_relaxed(v,c); })
         |                                    ^~~~~~~~~~~~~~
   drivers/soc/aspeed/aspeed-otp.c:394:5: note: in expansion of macro 'writel'
     394 |     writel(otp->base + OTP_PROTECT_KEY, 0);
         |     ^~~~~~
   include/uapi/linux/swab.h:57:57: note: expected '__u32' {aka 'unsigned int'} but argument is of type 'void *'
      57 | static inline __attribute_const__ __u32 __fswab32(__u32 val)
         |                                                   ~~~~~~^~~


vim +/otp_read_conf +213 drivers/soc/aspeed/aspeed-otp.c

   212	
 > 213	int otp_read_conf(struct aspeed_otp *otp)
   214	{
   215	    uint32_t conf[NUM_OTP_CONF];
   216	    int i;
   217	    int rc;
   218	
   219	    writel(OTP_PASSWD, otp->base + OTP_PROTECT_KEY);
   220	
   221	    for (i = 0; i < NUM_OTP_CONF; ++i) {
   222		    rc = otp_read_config(otp, i, &conf[i]);
   223		    if (rc)
   224			    goto done;
   225	    }
   226	
   227	    dev_dbg(otp->dev, "OTP configuration:\n");
   228	    for (i = 0; i < NUM_OTP_CONF; ++i)
   229		    dev_dbg(otp->dev, "%02u: %08x\n", i, conf[i]);
   230	
   231	done:
   232	    writel(0, otp->base + OTP_PROTECT_KEY);
   233	    return rc;
   234	}
   235	
 > 236	int otp_read_strap(struct aspeed_otp *otp)
   237	{
   238	    uint32_t res[2] = { 0, 0};
   239	    uint32_t strap[6][2];
   240	    uint32_t protect[2];
   241	    uint32_t scu_protect[2];
   242	    int rc;
   243	    int i;
   244	
   245	    writel(OTP_PASSWD, otp->base + OTP_PROTECT_KEY);
   246	
   247	    rc = otp_read_config(otp, 28, &scu_protect[0]);
   248	    if (rc)
   249		    goto done;
   250	
   251	    rc = otp_read_config(otp, 29, &scu_protect[1]);
   252	    if (rc)
   253		    goto done;
   254	
   255	    rc = otp_read_config(otp, 30, &protect[0]);
   256	    if (rc)
   257		    goto done;
   258	
   259	    rc = otp_read_config(otp, 31, &protect[1]);
   260	    if (rc)
   261		    goto done;
   262	
   263	    for (i = 0; i < 6; ++i) {
   264		    int o = 16 + (i * 2);
   265	
   266		    rc = otp_read_config(otp, o, &strap[i][0]);
   267		    if (rc)
   268			    goto done;
   269	
   270		    rc = otp_read_config(otp, o + 1, &strap[i][1]);
   271		    if (rc)
   272			    goto done;
   273	
   274		    res[0] ^= strap[i][0];
   275		    res[1] ^= strap[i][1];
   276	    }
   277	
   278	    dev_dbg(otp->dev, "OTP straps:\n");
   279	    dev_dbg(otp->dev, "Protect SCU: %08x %08x\n", scu_protect[0], scu_protect[1]);
   280	    dev_dbg(otp->dev, "Protect:     %08x %08x\n", protect[0], protect[1]);
   281	
   282	    for (i = 0; i < 6; ++i)
   283		    dev_dbg(otp->dev, "Option %u:    %08x %08x\n", i, strap[i][0], strap[i][1]);
   284	
   285	    dev_dbg(otp->dev, "Result:      %08x %08x\n", res[0], res[1]);
   286	done:
   287	    writel(0, otp->base + OTP_PROTECT_KEY);
   288	    return rc;
   289	}
   290	
 > 291	int otp_write_conf(struct aspeed_otp *otp, unsigned int word, unsigned int bit)
   292	{
   293	    int rc;
   294	    uint32_t conf;
   295	    uint32_t address;
   296	    uint32_t bitmask;
   297	
   298	    if (word >= NUM_OTP_CONF || bit >= 32)
   299	        return -EINVAL;
   300	
   301	    bitmask = 1 << bit;
   302	
   303	    writel(OTP_PASSWD, otp->base + OTP_PROTECT_KEY);
   304	
   305	    rc = otp_read_config(otp, word, &conf);
   306	    if (rc)
   307	        goto done;
   308	
   309	    if (conf & bitmask) {
   310	        dev_err(otp->dev, "Configuration bit already set\n");
   311	        rc = -EALREADY;
   312	        goto done;
   313	    }
   314	
   315	    address = 0x800;
   316	    address |= (word / 8) * 0x200;
   317	    address |= (word % 8) * 2;
   318	
   319	    dev_dbg(otp->dev, "Writing configuration at OTP %04x with %08x\n", address, bitmask);
   320	    rc = otp_write(otp, address, bitmask);
   321	
   322	done:
   323	    writel(0, otp->base + OTP_PROTECT_KEY);
   324	    return rc;
   325	}
   326	
 > 327	int otp_write_strap(struct aspeed_otp *otp, unsigned int bit, unsigned int val)
   328	{
   329	    int i;
   330	    int rc;
   331	    int f = -1;
   332	    uint32_t address;
   333	    uint32_t bitmask;
   334	    uint32_t protect;
   335	    uint32_t res = 0;
   336	    uint32_t word = 0;
   337	    uint32_t strap[6];
   338	
   339	    if (bit >= 64 || val > 1)
   340	        return -EINVAL;
   341	
   342	    writel(OTP_PASSWD, otp->base + OTP_PROTECT_KEY);
   343	
   344	    if (bit > 31) {
   345	        word = 1;
   346	        bit -= 32;
   347	    }
   348	
   349	    bitmask = 1 << bit;
   350	
   351	    rc = otp_read_config(otp, 30 + word, &protect);
   352	    if (rc)
   353	        goto done;
   354	
   355	    if (protect & bitmask) {
   356	        dev_err(otp->dev, "Cannot write strap; bit is protected\n");
   357	        rc = -EACCES;
   358	        goto done;
   359	    }
   360	
   361	    for (i = 0; i < 6; ++i) {
   362	        uint32_t o = 16 + (i * 2);
   363	
   364	        rc = otp_read_config(otp, o + word, &strap[i]);
   365	        if (rc)
   366	            goto done;
   367	
   368	        res ^= strap[i];
   369	        if (f < 0 && !(strap[i] & bitmask))
   370	            f = i;
   371	    }
   372	
   373	    if (f < 0) {
   374	        dev_err(otp->dev, "Strap cannot be configured further\n");
   375	        rc = -EPERM;
   376	        goto done;
   377	    }
   378	
   379	    if (((res & bitmask) && val) || (!val && !(res & bitmask))) {
   380	        dev_err(otp->dev, "Strap already in desired configuration\n");
   381	        rc = -EALREADY;
   382	        goto done;
   383	    }
   384	
   385	    i = (16 + (f * 2)) + word;
   386	    address = 0x800;
   387	    address |= (i / 8) * 0x200;
   388	    address |= (i % 8) * 2;
   389	
   390	    dev_dbg(otp->dev, "Writing strap at OTP %04x with %08x\n", address, bitmask);
   391	    rc = otp_write(otp, address, bitmask);
   392	
   393	done:
 > 394	    writel(otp->base + OTP_PROTECT_KEY, 0);
   395	    return rc;
   396	}
   397	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 66521 bytes --]

                 reply	other threads:[~2021-03-30  7:57 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202103301523.TRYrkbMf-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.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.