Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: iio: adc: ad7280a: split ad7280_attr_init() to more functions

The ad7280_attr_init function has been split into more specific
functions to increase the code readability.

Signed-off-by: Slawomir Stepien <sst@poczta.fm>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Slawomir Stepien and committed by
Jonathan Cameron
4b637457 243c5c9d

+72 -38
+72 -38
drivers/staging/iio/adc/ad7280a.c
··· 596 596 return cnt + 1; 597 597 } 598 598 599 + static int ad7280_balance_switch_attr_init(struct iio_dev_attr *attr, 600 + struct device *dev, int addr, int i) 601 + { 602 + attr->address = addr; 603 + attr->dev_attr.attr.mode = 0644; 604 + attr->dev_attr.show = ad7280_show_balance_sw; 605 + attr->dev_attr.store = ad7280_store_balance_sw; 606 + attr->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL, 607 + "in%d-in%d_balance_switch_en", 608 + i, i + 1); 609 + if (!attr->dev_attr.attr.name) 610 + return -ENOMEM; 611 + 612 + return 0; 613 + } 614 + 615 + static int ad7280_balance_timer_attr_init(struct iio_dev_attr *attr, 616 + struct device *dev, int addr, int i) 617 + { 618 + attr->address = addr; 619 + attr->dev_attr.attr.mode = 0644; 620 + attr->dev_attr.show = ad7280_show_balance_timer; 621 + attr->dev_attr.store = ad7280_store_balance_timer; 622 + attr->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL, 623 + "in%d-in%d_balance_timer", 624 + i, i + 1); 625 + if (!attr->dev_attr.attr.name) 626 + return -ENOMEM; 627 + 628 + return 0; 629 + } 630 + 631 + static int ad7280_init_dev_attrs(struct ad7280_state *st, int dev, int *cnt) 632 + { 633 + int addr, ch, i, ret; 634 + struct iio_dev_attr *iio_attr; 635 + struct device *sdev = &st->spi->dev; 636 + 637 + for (ch = AD7280A_CELL_VOLTAGE_1; ch <= AD7280A_CELL_VOLTAGE_6; ch++) { 638 + iio_attr = &st->iio_attr[*cnt]; 639 + addr = ad7280a_devaddr(dev) << 8 | ch; 640 + i = dev * AD7280A_CELLS_PER_DEV + ch; 641 + 642 + ret = ad7280_balance_switch_attr_init(iio_attr, sdev, addr, i); 643 + if (ret < 0) 644 + return ret; 645 + 646 + ad7280_attributes[*cnt] = &iio_attr->dev_attr.attr; 647 + 648 + (*cnt)++; 649 + iio_attr = &st->iio_attr[*cnt]; 650 + addr = ad7280a_devaddr(dev) << 8 | (AD7280A_CB1_TIMER + ch); 651 + 652 + ret = ad7280_balance_timer_attr_init(iio_attr, sdev, addr, i); 653 + if (ret < 0) 654 + return ret; 655 + 656 + ad7280_attributes[*cnt] = &iio_attr->dev_attr.attr; 657 + (*cnt)++; 658 + } 659 + 660 + ad7280_attributes[*cnt] = NULL; 661 + 662 + return 0; 663 + } 664 + 599 665 static int ad7280_attr_init(struct ad7280_state *st) 600 666 { 601 - int dev, ch, cnt; 602 - unsigned int index; 603 - struct iio_dev_attr *iio_attr; 667 + int dev, cnt = 0, ret; 604 668 605 669 st->iio_attr = devm_kcalloc(&st->spi->dev, 2, sizeof(*st->iio_attr) * 606 670 (st->slave_num + 1) * AD7280A_CELLS_PER_DEV, ··· 672 608 if (!st->iio_attr) 673 609 return -ENOMEM; 674 610 675 - for (dev = 0, cnt = 0; dev <= st->slave_num; dev++) 676 - for (ch = AD7280A_CELL_VOLTAGE_1; ch <= AD7280A_CELL_VOLTAGE_6; 677 - ch++, cnt++) { 678 - iio_attr = &st->iio_attr[cnt]; 679 - index = dev * AD7280A_CELLS_PER_DEV + ch; 680 - iio_attr->address = ad7280a_devaddr(dev) << 8 | ch; 681 - iio_attr->dev_attr.attr.mode = 0644; 682 - iio_attr->dev_attr.show = ad7280_show_balance_sw; 683 - iio_attr->dev_attr.store = ad7280_store_balance_sw; 684 - iio_attr->dev_attr.attr.name = 685 - devm_kasprintf(&st->spi->dev, GFP_KERNEL, 686 - "in%d-in%d_balance_switch_en", 687 - index, index + 1); 688 - if (!iio_attr->dev_attr.attr.name) 689 - return -ENOMEM; 690 - 691 - ad7280_attributes[cnt] = &iio_attr->dev_attr.attr; 692 - cnt++; 693 - iio_attr = &st->iio_attr[cnt]; 694 - iio_attr->address = ad7280a_devaddr(dev) << 8 | 695 - (AD7280A_CB1_TIMER + ch); 696 - iio_attr->dev_attr.attr.mode = 0644; 697 - iio_attr->dev_attr.show = ad7280_show_balance_timer; 698 - iio_attr->dev_attr.store = ad7280_store_balance_timer; 699 - iio_attr->dev_attr.attr.name = 700 - devm_kasprintf(&st->spi->dev, GFP_KERNEL, 701 - "in%d-in%d_balance_timer", 702 - index, index + 1); 703 - if (!iio_attr->dev_attr.attr.name) 704 - return -ENOMEM; 705 - 706 - ad7280_attributes[cnt] = &iio_attr->dev_attr.attr; 707 - } 708 - 709 - ad7280_attributes[cnt] = NULL; 611 + for (dev = 0; dev <= st->slave_num; dev++) { 612 + ret = ad7280_init_dev_attrs(st, dev, &cnt); 613 + if (ret < 0) 614 + return ret; 615 + } 710 616 711 617 return 0; 712 618 }