Hi Katsuhiro,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on v4.17-rc5 next-20180514]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Katsuhiro-Suzuki/media-dvb-frontends-add-Socionext-SC1501A-ISDB-S-T-demodulator-driver/20180515-091453
base:   git://linuxtv.org/media_tree.git master
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/media/dvb-frontends/sc1501a.c:313:47: sparse: constant 211243671486 
>> is so big it is long

vim +313 drivers/media/dvb-frontends/sc1501a.c

   258  
   259  static int sc1501a_s_read_status(struct sc1501a_priv *chip,
   260                                   struct dtv_frontend_properties *c,
   261                                   enum fe_status *status)
   262  {
   263          struct regmap *r_s = chip->regmap_s;
   264          u32 cpmon, tmpu, tmpl, flg;
   265          u64 tmp;
   266  
   267          /* Sync detection */
   268          regmap_read(r_s, CPMON1_S, &cpmon);
   269  
   270          *status = 0;
   271          if (cpmon & CPMON1_S_FSYNC)
   272                  *status |= FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
   273          if (cpmon & CPMON1_S_W2LOCK)
   274                  *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER;
   275  
   276          /* Signal strength */
   277          c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
   278  
   279          if (*status & FE_HAS_SIGNAL) {
   280                  u32 agc;
   281  
   282                  regmap_read(r_s, AGCREAD_S, &tmpu);
   283                  agc = tmpu << 8;
   284  
   285                  c->strength.len = 1;
   286                  c->strength.stat[0].scale = FE_SCALE_RELATIVE;
   287                  c->strength.stat[0].uvalue = agc;
   288          }
   289  
   290          /* C/N rate */
   291          c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
   292  
   293          if (*status & FE_HAS_VITERBI) {
   294                  u32 cnr = 0, x, y, d;
   295                  u64 d_3 = 0;
   296  
   297                  regmap_read(r_s, CNRDXU_S, &tmpu);
   298                  regmap_read(r_s, CNRDXL_S, &tmpl);
   299                  x = (tmpu << 8) | tmpl;
   300                  regmap_read(r_s, CNRDYU_S, &tmpu);
   301                  regmap_read(r_s, CNRDYL_S, &tmpl);
   302                  y = (tmpu << 8) | tmpl;
   303  
   304                  /* CNR[dB]: 10 * log10(D) - 30.74 / D^3 - 3 */
   305                  /*   D = x^2 / (2^15 * y - x^2) */
   306                  d = (y << 15) - x * x;
   307                  if (d > 0) {
   308                          /* (2^4 * D)^3 = 2^12 * D^3 */
   309                          /* 3.074 * 2^(12 + 24) = 211243671486 */
   310                          d_3 = div_u64(16 * x * x, d);
   311                          d_3 = d_3 * d_3 * d_3;
   312                          if (d_3)
 > 313                                  d_3 = div_u64(211243671486, d_3);
   314                  }
   315  
   316                  if (d_3) {
   317                          /* 0.3 * 2^24 = 5033164 */
   318                          tmp = (s64)2 * intlog10(x) - intlog10(abs(d)) - 
d_3
   319                                  - 5033164;
   320                          cnr = div_u64(tmp * 10000, 1 << 24);
   321                  }
   322  
   323                  if (cnr) {
   324                          c->cnr.len = 1;
   325                          c->cnr.stat[0].scale = FE_SCALE_DECIBEL;
   326                          c->cnr.stat[0].uvalue = cnr;
   327                  }
   328          }
   329  
   330          /* BER */
   331          c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
   332          c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
   333  
   334          regmap_read(r_s, BERCNFLG_S, &flg);
   335  
   336          if ((*status & FE_HAS_VITERBI) && (flg & BERCNFLG_S_BERVRDY)) {
   337                  u32 bit_err, bit_cnt;
   338  
   339                  regmap_read(r_s, BERVRDU_S, &tmpu);
   340                  regmap_read(r_s, BERVRDL_S, &tmpl);
   341                  bit_err = (tmpu << 8) | tmpl;
   342                  bit_cnt = (1 << 13) * 204;
   343  
   344                  if (bit_cnt) {
   345                          c->post_bit_error.len = 1;
   346                          c->post_bit_error.stat[0].scale = 
FE_SCALE_COUNTER;
   347                          c->post_bit_error.stat[0].uvalue = bit_err;
   348                          c->post_bit_count.len = 1;
   349                          c->post_bit_count.stat[0].scale = 
FE_SCALE_COUNTER;
   350                          c->post_bit_count.stat[0].uvalue = bit_cnt;
   351                  }
   352          }
   353  
   354          return 0;
   355  }
   356  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to