CC: [email protected] BCC: [email protected] CC: [email protected] TO: "Lars-Peter Clausen" <[email protected]> CC: Jonathan Cameron <[email protected]> CC: Alexandru Tachici <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing head: b09eac38bca896ebe88da75a864c94f3a9ea8492 commit: 60e0ee74d11157dbbfedfc91e56f97a12735d6d3 [17/36] iio: adc: ad_sigma_delta: Add sequencer support :::::: branch date: 8 hours ago :::::: commit date: 6 days ago config: nios2-randconfig-m031-20220403 (https://download.01.org/0day-ci/archive/20220403/[email protected]/config) compiler: nios2-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/iio/adc/ad_sigma_delta.c:493 ad_sd_trigger_handler() error: uninitialized symbol 'status_pos'. vim +/status_pos +493 drivers/iio/adc/ad_sigma_delta.c af3008485ea037 Lars-Peter Clausen 2012-08-10 431 af3008485ea037 Lars-Peter Clausen 2012-08-10 432 static irqreturn_t ad_sd_trigger_handler(int irq, void *p) af3008485ea037 Lars-Peter Clausen 2012-08-10 433 { af3008485ea037 Lars-Peter Clausen 2012-08-10 434 struct iio_poll_func *pf = p; af3008485ea037 Lars-Peter Clausen 2012-08-10 435 struct iio_dev *indio_dev = pf->indio_dev; af3008485ea037 Lars-Peter Clausen 2012-08-10 436 struct ad_sigma_delta *sigma_delta = iio_device_get_drvdata(indio_dev); 0fb6ee8d0b5e90 Lars-Peter Clausen 2020-11-24 437 uint8_t *data = sigma_delta->rx_buf; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 438 unsigned int transfer_size; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 439 unsigned int sample_size; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 440 unsigned int sample_pos; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 441 unsigned int status_pos; af3008485ea037 Lars-Peter Clausen 2012-08-10 442 unsigned int reg_size; f0aef2d0186431 Lars-Peter Clausen 2018-11-13 443 unsigned int data_reg; af3008485ea037 Lars-Peter Clausen 2012-08-10 444 af3008485ea037 Lars-Peter Clausen 2012-08-10 445 reg_size = indio_dev->channels[0].scan_type.realbits + af3008485ea037 Lars-Peter Clausen 2012-08-10 446 indio_dev->channels[0].scan_type.shift; af3008485ea037 Lars-Peter Clausen 2012-08-10 447 reg_size = DIV_ROUND_UP(reg_size, 8); af3008485ea037 Lars-Peter Clausen 2012-08-10 448 f0aef2d0186431 Lars-Peter Clausen 2018-11-13 449 if (sigma_delta->info->data_reg != 0) f0aef2d0186431 Lars-Peter Clausen 2018-11-13 450 data_reg = sigma_delta->info->data_reg; f0aef2d0186431 Lars-Peter Clausen 2018-11-13 451 else f0aef2d0186431 Lars-Peter Clausen 2018-11-13 452 data_reg = AD_SD_REG_DATA; f0aef2d0186431 Lars-Peter Clausen 2018-11-13 453 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 454 /* Status word will be appended to the sample during transfer */ 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 455 if (sigma_delta->status_appended) 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 456 transfer_size = reg_size + 1; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 457 else 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 458 transfer_size = reg_size; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 459 af3008485ea037 Lars-Peter Clausen 2012-08-10 460 switch (reg_size) { af3008485ea037 Lars-Peter Clausen 2012-08-10 461 case 4: af3008485ea037 Lars-Peter Clausen 2012-08-10 462 case 2: af3008485ea037 Lars-Peter Clausen 2012-08-10 463 case 1: 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 464 status_pos = reg_size; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 465 ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[0]); af3008485ea037 Lars-Peter Clausen 2012-08-10 466 break; af3008485ea037 Lars-Peter Clausen 2012-08-10 467 case 3: 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 468 /* 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 469 * Data array after transfer will look like (if status is appended): 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 470 * data[] = { [0][sample][sample][sample][status] } 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 471 * Keeping the first byte 0 shifts the status postion by 1 byte to the right. 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 472 */ 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 473 status_pos = reg_size + 1; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 474 af3008485ea037 Lars-Peter Clausen 2012-08-10 475 /* We store 24 bit samples in a 32 bit word. Keep the upper af3008485ea037 Lars-Peter Clausen 2012-08-10 476 * byte set to zero. */ 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 477 ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[1]); af3008485ea037 Lars-Peter Clausen 2012-08-10 478 break; af3008485ea037 Lars-Peter Clausen 2012-08-10 479 } af3008485ea037 Lars-Peter Clausen 2012-08-10 480 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 481 /* 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 482 * For devices sampling only one channel at 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 483 * once, there is no need for sample number tracking. 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 484 */ 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 485 if (sigma_delta->active_slots == 1) { a1be505f49cacb Lars-Peter Clausen 2013-09-19 486 iio_push_to_buffers_with_timestamp(indio_dev, data, pf->timestamp); 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 487 goto irq_handled; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 488 } 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 489 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 490 if (sigma_delta->status_appended) { 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 491 u8 converted_channel; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 492 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 @493 converted_channel = data[status_pos] & sigma_delta->info->status_ch_mask; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 494 if (converted_channel != sigma_delta->slots[sigma_delta->current_slot]) { 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 495 /* 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 496 * Desync occurred during continuous sampling of multiple channels. 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 497 * Drop this incomplete sample and start from first channel again. 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 498 */ 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 499 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 500 sigma_delta->current_slot = 0; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 501 goto irq_handled; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 502 } 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 503 } 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 504 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 505 sample_size = indio_dev->channels[0].scan_type.storagebits / 8; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 506 sample_pos = sample_size * sigma_delta->current_slot; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 507 memcpy(&sigma_delta->samples_buf[sample_pos], data, sample_size); 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 508 sigma_delta->current_slot++; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 509 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 510 if (sigma_delta->current_slot == sigma_delta->active_slots) { 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 511 sigma_delta->current_slot = 0; 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 512 iio_push_to_buffers_with_timestamp(indio_dev, sigma_delta->samples_buf, 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 513 pf->timestamp); 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 514 } af3008485ea037 Lars-Peter Clausen 2012-08-10 515 60e0ee74d11157 Lars-Peter Clausen 2022-03-22 516 irq_handled: af3008485ea037 Lars-Peter Clausen 2012-08-10 517 iio_trigger_notify_done(indio_dev->trig); af3008485ea037 Lars-Peter Clausen 2012-08-10 518 sigma_delta->irq_dis = false; af3008485ea037 Lars-Peter Clausen 2012-08-10 519 enable_irq(sigma_delta->spi->irq); af3008485ea037 Lars-Peter Clausen 2012-08-10 520 af3008485ea037 Lars-Peter Clausen 2012-08-10 521 return IRQ_HANDLED; af3008485ea037 Lars-Peter Clausen 2012-08-10 522 } af3008485ea037 Lars-Peter Clausen 2012-08-10 523 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
