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

Configure Feed

Select the types of activity you want to include in your feed.

iio: dac: ad3552r: share model data structures

Preparing for new parts to be added also in the hs driver,
set model data structures in ad3552r-common.c, to be accessible
from both -hs and non hs driver.

Reviewed-by: David Lechner <dlechner@baylibre.com>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
Link: https://patch.msgid.link/20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-7-979402e33545@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Angelo Dureghello and committed by
Jonathan Cameron
67a0f040 21889245

+46 -50
+42 -4
drivers/iio/dac/ad3552r-common.c
··· 11 11 12 12 #include "ad3552r.h" 13 13 14 - const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2] = { 14 + static const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2] = { 15 15 [AD3552R_CH_OUTPUT_RANGE_0__2P5V] = { 0, 2500 }, 16 16 [AD3552R_CH_OUTPUT_RANGE_0__5V] = { 0, 5000 }, 17 17 [AD3552R_CH_OUTPUT_RANGE_0__10V] = { 0, 10000 }, 18 18 [AD3552R_CH_OUTPUT_RANGE_NEG_5__5V] = { -5000, 5000 }, 19 19 [AD3552R_CH_OUTPUT_RANGE_NEG_10__10V] = { -10000, 10000 } 20 20 }; 21 - EXPORT_SYMBOL_NS_GPL(ad3552r_ch_ranges, "IIO_AD3552R"); 22 21 23 - const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2] = { 22 + static const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2] = { 24 23 [AD3542R_CH_OUTPUT_RANGE_0__2P5V] = { 0, 2500 }, 25 24 [AD3542R_CH_OUTPUT_RANGE_0__5V] = { 0, 5000 }, 26 25 [AD3542R_CH_OUTPUT_RANGE_0__10V] = { 0, 10000 }, 27 26 [AD3542R_CH_OUTPUT_RANGE_NEG_5__5V] = { -5000, 5000 }, 28 27 [AD3542R_CH_OUTPUT_RANGE_NEG_2P5__7P5V] = { -2500, 7500 } 29 28 }; 30 - EXPORT_SYMBOL_NS_GPL(ad3542r_ch_ranges, "IIO_AD3552R"); 31 29 32 30 /* Gain * AD3552R_GAIN_SCALE */ 33 31 static const s32 gains_scaling_table[] = { ··· 34 36 [AD3552R_CH_GAIN_SCALING_0_25] = 250, 35 37 [AD3552R_CH_GAIN_SCALING_0_125] = 125 36 38 }; 39 + 40 + const struct ad3552r_model_data ad3541r_model_data = { 41 + .model_name = "ad3541r", 42 + .chip_id = AD3541R_ID, 43 + .num_hw_channels = 1, 44 + .ranges_table = ad3542r_ch_ranges, 45 + .num_ranges = ARRAY_SIZE(ad3542r_ch_ranges), 46 + .requires_output_range = true, 47 + }; 48 + EXPORT_SYMBOL_NS_GPL(ad3541r_model_data, "IIO_AD3552R"); 49 + 50 + const struct ad3552r_model_data ad3542r_model_data = { 51 + .model_name = "ad3542r", 52 + .chip_id = AD3542R_ID, 53 + .num_hw_channels = 2, 54 + .ranges_table = ad3542r_ch_ranges, 55 + .num_ranges = ARRAY_SIZE(ad3542r_ch_ranges), 56 + .requires_output_range = true, 57 + }; 58 + EXPORT_SYMBOL_NS_GPL(ad3542r_model_data, "IIO_AD3552R"); 59 + 60 + const struct ad3552r_model_data ad3551r_model_data = { 61 + .model_name = "ad3551r", 62 + .chip_id = AD3551R_ID, 63 + .num_hw_channels = 1, 64 + .ranges_table = ad3552r_ch_ranges, 65 + .num_ranges = ARRAY_SIZE(ad3552r_ch_ranges), 66 + .requires_output_range = false, 67 + }; 68 + EXPORT_SYMBOL_NS_GPL(ad3551r_model_data, "IIO_AD3552R"); 69 + 70 + const struct ad3552r_model_data ad3552r_model_data = { 71 + .model_name = "ad3552r", 72 + .chip_id = AD3552R_ID, 73 + .num_hw_channels = 2, 74 + .ranges_table = ad3552r_ch_ranges, 75 + .num_ranges = ARRAY_SIZE(ad3552r_ch_ranges), 76 + .requires_output_range = false, 77 + }; 78 + EXPORT_SYMBOL_NS_GPL(ad3552r_model_data, "IIO_AD3552R"); 37 79 38 80 u16 ad3552r_calc_custom_gain(u8 p, u8 n, s16 goffs) 39 81 {
-8
drivers/iio/dac/ad3552r-hs.c
··· 532 532 return devm_iio_device_register(&pdev->dev, indio_dev); 533 533 } 534 534 535 - static const struct ad3552r_model_data ad3552r_model_data = { 536 - .model_name = "ad3552r", 537 - .chip_id = AD3552R_ID, 538 - .num_hw_channels = 2, 539 - .ranges_table = ad3552r_ch_ranges, 540 - .num_ranges = ARRAY_SIZE(ad3552r_ch_ranges), 541 - }; 542 - 543 535 static const struct of_device_id ad3552r_hs_of_id[] = { 544 536 { .compatible = "adi,ad3552r", .data = &ad3552r_model_data }, 545 537 { }
-36
drivers/iio/dac/ad3552r.c
··· 649 649 return devm_iio_device_register(&spi->dev, indio_dev); 650 650 } 651 651 652 - static const struct ad3552r_model_data ad3541r_model_data = { 653 - .model_name = "ad3541r", 654 - .chip_id = AD3541R_ID, 655 - .num_hw_channels = 1, 656 - .ranges_table = ad3542r_ch_ranges, 657 - .num_ranges = ARRAY_SIZE(ad3542r_ch_ranges), 658 - .requires_output_range = true, 659 - }; 660 - 661 - static const struct ad3552r_model_data ad3542r_model_data = { 662 - .model_name = "ad3542r", 663 - .chip_id = AD3542R_ID, 664 - .num_hw_channels = 2, 665 - .ranges_table = ad3542r_ch_ranges, 666 - .num_ranges = ARRAY_SIZE(ad3542r_ch_ranges), 667 - .requires_output_range = true, 668 - }; 669 - 670 - static const struct ad3552r_model_data ad3551r_model_data = { 671 - .model_name = "ad3551r", 672 - .chip_id = AD3551R_ID, 673 - .num_hw_channels = 1, 674 - .ranges_table = ad3552r_ch_ranges, 675 - .num_ranges = ARRAY_SIZE(ad3552r_ch_ranges), 676 - .requires_output_range = false, 677 - }; 678 - 679 - static const struct ad3552r_model_data ad3552r_model_data = { 680 - .model_name = "ad3552r", 681 - .chip_id = AD3552R_ID, 682 - .num_hw_channels = 2, 683 - .ranges_table = ad3552r_ch_ranges, 684 - .num_ranges = ARRAY_SIZE(ad3552r_ch_ranges), 685 - .requires_output_range = false, 686 - }; 687 - 688 652 static const struct spi_device_id ad3552r_id[] = { 689 653 { 690 654 .name = "ad3541r",
+4 -2
drivers/iio/dac/ad3552r.h
··· 134 134 #define AD3542R_MAX_RANGES 5 135 135 #define AD3552R_QUAD_SPI 2 136 136 137 - extern const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2]; 138 - extern const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2]; 137 + extern const struct ad3552r_model_data ad3541r_model_data; 138 + extern const struct ad3552r_model_data ad3542r_model_data; 139 + extern const struct ad3552r_model_data ad3551r_model_data; 140 + extern const struct ad3552r_model_data ad3552r_model_data; 139 141 140 142 enum ad3552r_id { 141 143 AD3541R_ID = 0x400b,