Hi Biwen,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on abelloni/rtc-next]
[also build test WARNING on v5.10-rc6 next-20201130]
[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/0day-ci/linux/commits/Biwen-Li/rtc-pcf2127-clear-the-flag-TSF1-before-enabling-interrupt-generation/20201201-165409
base:   https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git 
rtc-next
config: mips-randconfig-r023-20201201 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
ac40a2d8f16b8a8c68fc811d67f647740e965cb8)
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
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/54db60db88e4fd3ab6ac26f9a5b4768316347f95
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Biwen-Li/rtc-pcf2127-clear-the-flag-TSF1-before-enabling-interrupt-generation/20201201-165409
        git checkout 54db60db88e4fd3ab6ac26f9a5b4768316347f95
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

>> drivers/rtc/rtc-pcf2127.c:629:16: warning: operator has lower precedence 
>> than '|'; '|' will be evaluated first
   has_nvmem (PCF2127_BIT_WD_CTL_CD0) : (0) |
   ~~~~~~~~~ ^
   drivers/rtc/rtc-pcf2127.c:629:16: note: place parentheses around the '|' 
expression to silence this warning
   has_nvmem (PCF2127_BIT_WD_CTL_CD0) : (0) |
   ~~~~~~~~~ ^
   drivers/rtc/rtc-pcf2127.c:629:16: note: place parentheses around the 
expression to evaluate it first
   has_nvmem (PCF2127_BIT_WD_CTL_CD0) : (0) |
   ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fatal error: error in backend: Nested variants found in inline asm string: ' 
.set push
   .set mips64r2
   .if ( 0x00 ) != -1)) 0x00 ) != -1)) : ($( static struct ftrace_branch_data 
__attribute__((__aligned__(4))) __attribute__((__section__("_ftrace_branch"))) 
__if_trace = $( .func = __func__, .file = "arch/mips/include/asm/bitops.h", 
.line = 105, $); 0x00 ) != -1)) : $))) ) && ( 0 ); .set push; .set mips64r2; 
.rept 1; sync 0x00; .endr; .set pop; .else; ; .endif
   1: ll $0, $1
   or $0, $2
   sc $0, $1
   beqz $0, 1b
   .set pop
   '
   clang-12: error: clang frontend command failed with exit code 70 (use -v to 
see invocation)
   clang version 12.0.0 (git://gitmirror/llvm_project 
ac40a2d8f16b8a8c68fc811d67f647740e965cb8)
   Target: mips-unknown-linux-gnu
   Thread model: posix
   InstalledDir: /opt/cross/clang-ac40a2d8f1/bin
   clang-12: note: diagnostic msg:
   Makefile arch drivers include kernel scripts source usr

vim +629 drivers/rtc/rtc-pcf2127.c

   560  
   561  static int pcf2127_probe(struct device *dev, struct regmap *regmap,
   562                           int alarm_irq, const char *name, bool 
has_nvmem)
   563  {
   564          struct pcf2127 *pcf2127;
   565          int ret = 0;
   566  
   567          dev_dbg(dev, "%s\n", __func__);
   568  
   569          pcf2127 = devm_kzalloc(dev, sizeof(*pcf2127), GFP_KERNEL);
   570          if (!pcf2127)
   571                  return -ENOMEM;
   572  
   573          pcf2127->regmap = regmap;
   574  
   575          dev_set_drvdata(dev, pcf2127);
   576  
   577          pcf2127->rtc = devm_rtc_allocate_device(dev);
   578          if (IS_ERR(pcf2127->rtc))
   579                  return PTR_ERR(pcf2127->rtc);
   580  
   581          pcf2127->rtc->ops = &pcf2127_rtc_ops;
   582          pcf2127->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
   583          pcf2127->rtc->range_max = RTC_TIMESTAMP_END_2099;
   584          pcf2127->rtc->set_start_time = true; /* Sets actual start to 
1970 */
   585          pcf2127->rtc->uie_unsupported = 1;
   586  
   587          if (alarm_irq > 0) {
   588                  ret = devm_request_threaded_irq(dev, alarm_irq, NULL,
   589                                                  pcf2127_rtc_irq,
   590                                                  IRQF_TRIGGER_LOW | 
IRQF_ONESHOT,
   591                                                  dev_name(dev), dev);
   592                  if (ret) {
   593                          dev_err(dev, "failed to request alarm irq\n");
   594                          return ret;
   595                  }
   596          }
   597  
   598          if (alarm_irq > 0 || device_property_read_bool(dev, 
"wakeup-source")) {
   599                  device_init_wakeup(dev, true);
   600                  pcf2127->rtc->ops = &pcf2127_rtc_alrm_ops;
   601          }
   602  
   603          if (has_nvmem) {
   604                  struct nvmem_config nvmem_cfg = {
   605                          .priv = pcf2127,
   606                          .reg_read = pcf2127_nvmem_read,
   607                          .reg_write = pcf2127_nvmem_write,
   608                          .size = 512,
   609                  };
   610  
   611                  ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg);
   612          }
   613  
   614          /*
   615           * Watchdog timer enabled and reset pin /RST activated when 
timed out.
   616           * Select 1Hz clock source for watchdog timer.
   617           * Note: Countdown timer disabled and not available.
   618           * For pca2129, pcf2129, only bit[7] is for Symbol WD_CD
   619           * of register watchdg_tim_ctl. The bit[6] is labeled
   620           * as T. Bits labeled as T must always be written with
   621           * logic 0.
   622           */
   623          ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_WD_CTL,
   624                                   PCF2127_BIT_WD_CTL_CD1 |
   625                                   PCF2127_BIT_WD_CTL_CD0 |
   626                                   PCF2127_BIT_WD_CTL_TF1 |
   627                                   PCF2127_BIT_WD_CTL_TF0,
   628                                   PCF2127_BIT_WD_CTL_CD1 |
 > 629                                   has_nvmem ? (PCF2127_BIT_WD_CTL_CD0) : 
 > (0) |
   630                                   PCF2127_BIT_WD_CTL_TF1);
   631          if (ret) {
   632                  dev_err(dev, "%s: watchdog config (wd_ctl) failed\n", 
__func__);
   633                  return ret;
   634          }
   635  
   636          pcf2127_watchdog_init(dev, pcf2127);
   637  
   638          /*
   639           * Disable battery low/switch-over timestamp and interrupts.
   640           * Clear battery interrupt flags which can block new trigger 
events.
   641           * Note: This is the default chip behaviour but added to ensure
   642           * correct tamper timestamp and interrupt function.
   643           */
   644          ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
   645                                   PCF2127_BIT_CTRL3_BTSE |
   646                                   PCF2127_BIT_CTRL3_BIE |
   647                                   PCF2127_BIT_CTRL3_BLIE, 0);
   648          if (ret) {
   649                  dev_err(dev, "%s: interrupt config (ctrl3) failed\n",
   650                          __func__);
   651                  return ret;
   652          }
   653  
   654          /*
   655           * Enable timestamp function and store timestamp of first 
trigger
   656           * event until TSF1 and TFS2 interrupt flags are cleared.
   657           */
   658          ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_TS_CTRL,
   659                                   PCF2127_BIT_TS_CTRL_TSOFF |
   660                                   PCF2127_BIT_TS_CTRL_TSM,
   661                                   PCF2127_BIT_TS_CTRL_TSM);
   662          if (ret) {
   663                  dev_err(dev, "%s: tamper detection config (ts_ctrl) 
failed\n",
   664                          __func__);
   665                  return ret;
   666          }
   667  
   668          /*
   669           * Clear TSF1 field of ctrl1 register to clear interrupt
   670           * before enabling interrupt generation when
   671           * timestamp flag set. Unless the flag TSF1 won't
   672           * be cleared and the interrupt(INT pin) is
   673           * triggered continueously.
   674           */
   675          ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
   676                                   PCF2127_BIT_CTRL1_TSF1,
   677                                   0);
   678          if (ret) {
   679                  dev_err(dev, "%s:  control and status register 1 
(ctrl1) failed, ret = 0x%x\n",
   680                          __func__, ret);
   681                  return ret;
   682          }
   683          /*
   684           * Enable interrupt generation when TSF1 or TSF2 timestamp flags
   685           * are set. Interrupt signal is an open-drain output and can be
   686           * left floating if unused.
   687           */
   688          ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL2,
   689                                   PCF2127_BIT_CTRL2_TSIE,
   690                                   PCF2127_BIT_CTRL2_TSIE);
   691          if (ret) {
   692                  dev_err(dev, "%s: tamper detection config (ctrl2) 
failed\n",
   693                          __func__);
   694                  return ret;
   695          }
   696  
   697          ret = rtc_add_group(pcf2127->rtc, &pcf2127_attr_group);
   698          if (ret) {
   699                  dev_err(dev, "%s: tamper sysfs registering failed\n",
   700                          __func__);
   701                  return ret;
   702          }
   703  
   704          return devm_rtc_register_device(pcf2127->rtc);
   705  }
   706  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

Reply via email to