Skip to content

Commit 6ad7ea1

Browse files
committed
drivers: frequency: adf4030: Fixed temperature read feature
1 parent ab4716c commit 6ad7ea1

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

drivers/frequency/adf4030/adf4030.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ static int adf4030_set_vco_cal(struct adf4030_dev *dev, bool en)
390390

391391
/**
392392
* @brief Set Temperature Readback feature's initial state.
393-
* This feature should be disabled after reading temperature.
393+
* This function should be called before reading temperature to trigger measurement.
394394
* @param dev - The device structure.
395395
* @param en - The enable or disable Temperature readback feature.
396396
* @return - 0 in case of success or negative error code.
@@ -414,13 +414,15 @@ int adf4030_set_temperature(struct adf4030_dev *dev, bool en)
414414
no_os_field_prep(ADF4030_EN_ADC_CNV, true) |
415415
no_os_field_prep(ADF4030_EN_ADC_CLK, true) |
416416
no_os_field_prep(ADF4030_EN_ADC, true);
417-
msk = ADF4030_MANUAL_MODE | ADF4030_EN_ALIGN |
417+
msk = ADF4030_ADC_CLK_SEL | ADF4030_EN_ADC_CNV |
418418
ADF4030_EN_ADC_CLK | ADF4030_EN_ADC;
419419
ret = adf4030_spi_update_bits(dev, 0x61, msk, val);
420420
if (ret)
421421
return ret;
422-
423-
return adf4030_spi_write(dev, 0x72, ADF4030_SPI_DUMMY_DATA);
422+
ret = adf4030_spi_write(dev, 0x62, ADF4030_ADC_CLK_DIV);
423+
if (ret)
424+
return ret;
425+
return adf4030_spi_update_bits(dev, 0x72, ADF4030_ADC_ST_CNV, 0xFF);
424426

425427
} else {
426428
ret = adf4030_spi_update_bits(dev, 0x61,
@@ -447,6 +449,10 @@ int adf4030_get_temperature(struct adf4030_dev *dev, int16_t *temperature)
447449
if (!dev)
448450
return -EINVAL;
449451

452+
ret = adf4030_spi_update_bits(dev, 0x72, ADF4030_ADC_ST_CNV, 0x0);
453+
if (ret)
454+
return ret;
455+
450456
ret = adf4030_spi_read(dev, 0x93, &tmp);
451457
if (ret)
452458
return ret;

drivers/frequency/adf4030/adf4030.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,9 @@
433433
#define ADF4030_GPO2 NO_OS_BIT(7)
434434
#define ADF4030_GPO1 NO_OS_BIT(6)
435435

436+
/* ADF4030 REG0072 Map */
437+
#define ADF4030_ADC_ST_CNV NO_OS_BIT(0)
438+
436439
/* ADF4030 REG0073 Map */
437440
#define ADF4030_TDC_RSLT_UI_LSB NO_OS_GENMASK(7, 0)
438441

@@ -492,6 +495,7 @@
492495
#define ADF4030_SPI_DUMMY_DATA 0x00
493496
#define ADF4030_BUFF_SIZE_BYTES 3
494497
#define ADF4030_CHANNEL_NUMBER 10
498+
#define ADF4030_ADC_CLK_DIV 64U
495499

496500
#define ADF4030_VCO_FREQ_MIN 2375000000U // 2.375GHz
497501
#define ADF4030_VCO_FREQ_MAX 2625000000U // 2.625GHz

0 commit comments

Comments
 (0)