]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iio: adc: aspeed: Add AST2700 ADC support
authorBilly Tsai <billy_tsai@aspeedtech.com>
Mon, 3 Nov 2025 10:52:17 +0000 (18:52 +0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 Nov 2025 15:02:57 +0000 (15:02 +0000)
This patch adds support for the ADCs found on the Aspeed AST2700 SoC,
which includes two instances: "ast2700-adc0" and "ast2700-adc1". While
they are functionally similar to those on AST2600, the OTP trimming data
is located at the same offset (0x820), but uses different bitfields.

Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/aspeed_adc.c

index 1d5fd5f534b8a19fffff018f844049bce353f71e..bf2bfd6bdc412ddcf066a2e3282d469e27406c44 100644 (file)
@@ -645,6 +645,16 @@ static const struct aspeed_adc_trim_locate ast2600_adc1_trim = {
        .field = GENMASK(7, 4),
 };
 
+static const struct aspeed_adc_trim_locate ast2700_adc0_trim = {
+       .offset = 0x820,
+       .field = GENMASK(3, 0),
+};
+
+static const struct aspeed_adc_trim_locate ast2700_adc1_trim = {
+       .offset = 0x820,
+       .field = GENMASK(7, 4),
+};
+
 static const struct aspeed_adc_model_data ast2400_model_data = {
        .model_name = "ast2400-adc",
        .vref_fixed_mv = 2500,
@@ -689,11 +699,35 @@ static const struct aspeed_adc_model_data ast2600_adc1_model_data = {
        .trim_locate = &ast2600_adc1_trim,
 };
 
+static const struct aspeed_adc_model_data ast2700_adc0_model_data = {
+       .model_name = "ast2700-adc0",
+       .min_sampling_rate = 10000,
+       .max_sampling_rate = 500000,
+       .wait_init_sequence = true,
+       .bat_sense_sup = true,
+       .scaler_bit_width = 16,
+       .num_channels = 8,
+       .trim_locate = &ast2700_adc0_trim,
+};
+
+static const struct aspeed_adc_model_data ast2700_adc1_model_data = {
+       .model_name = "ast2700-adc1",
+       .min_sampling_rate = 10000,
+       .max_sampling_rate = 500000,
+       .wait_init_sequence = true,
+       .bat_sense_sup = true,
+       .scaler_bit_width = 16,
+       .num_channels = 8,
+       .trim_locate = &ast2700_adc1_trim,
+};
+
 static const struct of_device_id aspeed_adc_matches[] = {
        { .compatible = "aspeed,ast2400-adc", .data = &ast2400_model_data },
        { .compatible = "aspeed,ast2500-adc", .data = &ast2500_model_data },
        { .compatible = "aspeed,ast2600-adc0", .data = &ast2600_adc0_model_data },
        { .compatible = "aspeed,ast2600-adc1", .data = &ast2600_adc1_model_data },
+       { .compatible = "aspeed,ast2700-adc0", .data = &ast2700_adc0_model_data },
+       { .compatible = "aspeed,ast2700-adc1", .data = &ast2700_adc1_model_data },
        { }
 };
 MODULE_DEVICE_TABLE(of, aspeed_adc_matches);