Skip to content

Staging/koror support#3094

Open
stefpopa wants to merge 15 commits intomainfrom
staging/koror_support
Open

Staging/koror support#3094
stefpopa wants to merge 15 commits intomainfrom
staging/koror_support

Conversation

@stefpopa
Copy link
Copy Markdown
Collaborator

PR Description

This PR adds initial Linux kernel driver support for the Analog Devices ADRV904X (Koror) family of wideband transceivers.

PR Type

  • Bug fix (a change that fixes an issue)
  • New feature (a change that adds new functionality)
  • Breaking change (a change that affects other repos or cause CIs to fail)

PR Checklist

  • I have conducted a self-review of my own code changes
  • I have compiled my changes, including the documentation
  • I have tested the changes on the relevant hardware
  • I have updated the documentation outside this repo accordingly
  • I have provided links for the relevant upstream lore

@gastmaier
Copy link
Copy Markdown
Collaborator

gastmaier commented Jan 27, 2026

Can drivers/iio/adc/adrv904x/initdata.c and drivers/iio/adc/adrv904x/initdata.h are API files right?
can they placed under any of the rules below?

local api_match="(public/include|public/src|private/include|private/src|navassa/common|adrv902x/common|adrv903x/common|adrv903x/platforms)/"

the rules are at https://github.com/analogdevicesinc/linux/blob/ci/ci/build.sh#L35
feel free to adjust if needed, but focus on 'containerizing' the API code.

The license.pdf is a no no, please remove

All files should have unix endings, even api ones, csv, etc, use dos2unix to convert

I will now take a look on the build_gcc_arm

@gastmaier
Copy link
Copy Markdown
Collaborator

The api is generating calls to __aeabi_uldivmod(), only compatible with arm64 due to u64 operations.
please check if you can do it in 32 bits, divide first, find gcd (lib/math/gcd.c), etc.
and provide back to the api unit
If not possible, please isolate the 64bit bits into defines, so we don't have to blacklist the whole driver as 'arm64-compatible only'

thanks!

@gastmaier
Copy link
Copy Markdown
Collaborator

0001-API-dirty-adrv904x-use-math64-and-gcd.patch
Attached should do the trick, please read commit message body.

@stefpopa stefpopa force-pushed the staging/koror_support branch 3 times, most recently from 3c1012d to a37e455 Compare January 28, 2026 13:49
@stefpopa
Copy link
Copy Markdown
Collaborator Author

@gastmaier thank you for your review. See the changelog below:

  • Moved initdata.c/initdata.h to devices/adrv904x/private/src/ per API directory structure requirements
  • Updated Makefile with new paths and include directory
  • Updated adrv904x.c include path (now resolved via Makefile)
  • Removed License.pdf
  • Fixed CRLF line endings in initdata.c
  • added your arm32 build patch which to which I added a platform abstraction layer in adi_library_types.h, as per a request made by Sean Harte
  • Added kernel math64/gcd includes
  • Created ADI_LIBRARY_DIV_* and ADI_LIBRARY_GCD wrapper macros

@stefpopa stefpopa force-pushed the staging/koror_support branch from 5fb6eed to fa6d679 Compare January 28, 2026 15:26
@gastmaier
Copy link
Copy Markdown
Collaborator

gastmaier commented Jan 28, 2026

Hi,

is adrv904x/platforms API right? so I added to the
https://github.com/analogdevicesinc/linux/blob/ci/ci/build.sh#L35
as a broad

"(public/include|public/src|private/include|private/src|iio/adc/.*/common|iio/adc/.*/platforms)/"

rule

@gastmaier
Copy link
Copy Markdown
Collaborator

gastmaier commented Jan 28, 2026

Adding new comment to fixup my last comment, you did fix the line endings at
fa6d679

but checkpatch checks per commit

What you can do, if you don't want to force push, is to create a fixup commit with

git commit -s --fixup 7c27e7ba145863d1d069fd9bf8b1d34c5d890511 -m "optional extra msg"

Those commits are intentionally auto squashed during the ci
https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---autosquash

@stefpopa stefpopa force-pushed the staging/koror_support branch from fa6d679 to 1405cc2 Compare January 29, 2026 08:29
@stefpopa
Copy link
Copy Markdown
Collaborator Author

Hi,

is adrv904x/platforms API right? so I added to the https://github.com/analogdevicesinc/linux/blob/ci/ci/build.sh#L35 as a broad

"(public/include|public/src|private/include|private/src|iio/adc/.*/common|iio/adc/.*/platforms)/"

rule

Yes, adrv904x/platforms contains the platform abstraction layer (adi_library_types.h, adi_library.c). Thanks for adding the board rule!

@stefpopa
Copy link
Copy Markdown
Collaborator Author

stefpopa commented Feb 3, 2026

@gastmaier Thank you again for the review! Could you take another look and let me know if there are any remaining topics?
@nunojsa I would love to have your opinion on this PR.

@stefpopa
Copy link
Copy Markdown
Collaborator Author

Friendly reminder: please don't forget to review this PR.
Thank you!

Copy link
Copy Markdown
Collaborator

@gastmaier gastmaier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have documentation on the dt bindings .yaml? How will you document how to use?

Please resolve the clang/gcc analyzer caught issues, they are not static analyzer and are mostly always correct, either directly correct, or surface deeper structure issues.

The issues are, for convenience, shown as annotations, in the changed files; you can also now filter the commits shows in the gui, so de-select the api and fw commits, and focus on your files.

Thanks!

break;
}

ret = adrv904x_gainindex_to_gain(phy, chan->channel,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this ret value is never read.
should you error check? or discard explicitly

Same in all locations

Comment thread drivers/iio/adc/adrv904x/adrv904x.c Outdated
adrv904x_add_debugfs_entry(phy, "bist_tone", DBGFS_BIST_TONE);

for (i = 0; i < phy->adrv904x_debugfs_entry_index; i++)
d = debugfs_create_file(phy->debugfs_entry[i].propname, 0644,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also d is never read.

Comment thread drivers/iio/adc/adrv904x/adrv904x.c Outdated
case OBS_SAMPL_CLK:
phy->orx_iqRate_kHz = phy->kororDevice->initExtract.jesdSetting.framerSetting[1].iqRate_kHz;
init.ops = &bb_clk_ops;
clk_priv->rate = phy->orx_iqRate_kHz;;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clean-up double column

Comment thread drivers/iio/adc/adrv904x/adrv904x.c Outdated
Comment on lines +1684 to +1688
adrv904x_TxLinkSamplingRateFind(phy->kororDevice,
ADI_ADRV904X_DEFRAMER_0,
&rate);
init.ops = &bb_clk_ops;
clk_priv->rate = rate;
Copy link
Copy Markdown
Collaborator

@gastmaier gastmaier Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error checking before storing value? Does rate really get a value on all branches?
If deframerSel selects more than one, it never writes iqRate_kHz.
But in general just always error check.
do you have a wrapper to convert recoveryAction like device->common.errPtr->errDebugInfo.highestPriorityAction, in a more palatable format?

@stefpopa stefpopa force-pushed the staging/koror_support branch from 1405cc2 to db3c42e Compare February 12, 2026 15:41
@stefpopa
Copy link
Copy Markdown
Collaborator Author

changelog v3:
Resolved clang/gcc analyzer issues in adrv904x.c:

Fixed unused/overwritten values:

  • Changed ret = -EINVAL; to return -EINVAL; (value was never returned)
  • Added error check for adi_adrv904x_HwReset() return value before overwriting with PreMcsInit() call
  • Removed unused return value assignment from adrv904x_gainindex_to_gain()
  • Fixed uninitialized rate variable by adding error check for adrv904x_TxLinkSamplingRateFind()

Fixed unused variables:

  • Removed unused variable d from debugfs_create_file() call
  • Added __maybe_unused to clk_priv (used only in dev_dbg)
  • Added __maybe_unused to dev variables (used only in dev_dbg calls)

Fixed syntax issues:

  • Removed double semicolon in orx_iqRate_kHz assignment

Added dt-bindings documentation:

  • Created Documentation/devicetree/bindings/iio/adc/adi,adrv9040.yaml

@stefpopa stefpopa force-pushed the staging/koror_support branch 2 times, most recently from ef097a1 to 3e64a1d Compare February 13, 2026 11:02
@stefpopa stefpopa force-pushed the staging/koror_support branch 3 times, most recently from 2e6cda5 to 8f0c2f0 Compare February 25, 2026 10:51
@stefpopa stefpopa force-pushed the staging/koror_support branch 2 times, most recently from 705a5eb to cd6524b Compare April 14, 2026 10:39
@stefpopa
Copy link
Copy Markdown
Collaborator Author

changelog v5:

  • Use guard(mutex) / scoped_guard(mutex) from cleanup.h instead of manual mutex_lock/mutex_unlock pairs
  • Use adrv904x_api_call() macro for all vendor API calls — translates ADI error codes to Linux errno, reduces boilerplate
  • Use dev_err_probe() throughout probe function
  • Use device_property_() API instead of of_property_read_()
  • Use devm_mutex_init(), devm_jesd204_fsm_start(), and other devm variants — no .remove callback needed
  • Use device_get_match_data() with consistent chip_info in both spi_device_id and of_device_id tables
  • No of_match_ptr(), no trailing commas before sentinels, no EXPORT_SYMBOL
  • Use $(src) in Makefile include paths
  • Per-file -Wframe-larger-than=2048 instead of blanket warning suppression
  • Copyright updated to 2026, removed redundant Licensed under the GPL-2 (SPDX sufficient)
  • Removed dead adrv904x_shutdown() function
  • Moved debugfs to separate adrv904x_debugfs.c with CONFIG_DEBUG_FS guard and no-op inline fallback
  • Use simple_write_to_buffer() instead of manual copy_from_user()
  • Single guard(mutex) for the whole write function
  • No WARN_ON, debugfs registration failure doesn't fail probe
  • Renamed all 39 duplicate symbols in vendor common/platform files with adrv904x_ prefix
  • Added #define compatibility macros in headers so vendor API code compiles unchanged
  • Renamed initdata.c globals (utilityInit → adrv904x_utilityInit, etc.)
  • Removed ADRV903X != y Kconfig constraint — both drivers can now be built-in simultaneously
  • spi-max-frequency with maximum: 25000000
  • Defconfig (separate commit):
  • Added CONFIG_ADRV904X=y to adi_zynqmp_defconfig

@stefpopa stefpopa marked this pull request as ready for review April 14, 2026 10:42
@stefpopa stefpopa requested a review from gastmaier April 14, 2026 10:42
@stefpopa stefpopa force-pushed the staging/koror_support branch 2 times, most recently from 7059b80 to 1e34bc2 Compare April 15, 2026 09:44
@stefpopa
Copy link
Copy Markdown
Collaborator Author

chagelog v6:

  • Moved driver from drivers/iio/adc/adrv904x/ to drivers/iio/trx-rf/adrv904x/
  • Split monolithic commit into: API, firmware, platform, driver, cf_axi_dds, ad_adc, Kconfig.adi
  • Moved include/dt-bindings/iio/adc/adi,adrv904x.h into the DT bindings commit
  • Fixed checkpatch warnings (commit message line length, DT_SPLIT_BINDING_PATCH)

@stefpopa stefpopa force-pushed the staging/koror_support branch from 1e34bc2 to 9e138a1 Compare April 15, 2026 14:10
Copy link
Copy Markdown
Collaborator

@nunojsa nunojsa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here it goes my 2 cents

CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_EXTRA_FIRMWARE="ad9467_intbypass_ad9517.stp ad9517.stp ad9144_fmc_ebz_ad9516.stp Mykonos_M3.bin TaliseStream.bin TaliseTDDArmFirmware.bin TaliseTxArmFirmware.bin TaliseRxArmFirmware.bin adau1761.bin Navassa_EvaluationFw.bin RxGainTable.csv RxGainTable_GainCompensated.csv ORxGainTable.csv TxAttenTable.csv Navassa_Stream.bin Navassa_CMOS_profile.json Navassa_LVDS_profile.json Navassa_CMOS_profile_adrv9003.json Navassa_LVDS_profile_adrv9003.json Navassa_LVDS_init_cals.bin Navassa_CMOS_init_cals.bin Navassa_CMOS_init_cals_adrv9003.bin Navassa_LVDS_init_cals_adrv9003.bin Navassa_CMOS_profile_adrv9004.json Navassa_LVDS_profile_adrv9004.json Navassa_CMOS_profile_adrv9005.json Navassa_LVDS_profile_adrv9005.json Navassa_CMOS_profile_adrv9006.json Navassa_LVDS_profile_adrv9006.json ADRV9025_DPDCORE_FW.bin ADRV9025_FW.bin ADRV9025_RxGainTable.csv ADRV9025_TxAttenTable.csv stream_image_6E3E00EFB74FE7D465FA88A171B81B8F.bin ActiveUseCase.profile ActiveUtilInit.profile ActiveUseCase_NLS.profile ActiveUseCase_204C.profile ADRV9030_FW.bin ADRV9030_DeviceProfileTest_M4.bin ADRV9030_stream_image.bin ADRV9030_RxGainTable.csv ADRV9030_RxGainTable_GainCompensated.csv ADRV9030_RxGainTable_HB.csv"
CONFIG_EXTRA_FIRMWARE="ad9467_intbypass_ad9517.stp ad9517.stp ad9144_fmc_ebz_ad9516.stp Mykonos_M3.bin TaliseStream.bin TaliseTDDArmFirmware.bin TaliseTxArmFirmware.bin TaliseRxArmFirmware.bin adau1761.bin Navassa_EvaluationFw.bin RxGainTable.csv RxGainTable_GainCompensated.csv ORxGainTable.csv TxAttenTable.csv Navassa_Stream.bin Navassa_CMOS_profile.json Navassa_LVDS_profile.json Navassa_CMOS_profile_adrv9003.json Navassa_LVDS_profile_adrv9003.json Navassa_LVDS_init_cals.bin Navassa_CMOS_init_cals.bin Navassa_CMOS_init_cals_adrv9003.bin Navassa_LVDS_init_cals_adrv9003.bin Navassa_CMOS_profile_adrv9004.json Navassa_LVDS_profile_adrv9004.json Navassa_CMOS_profile_adrv9005.json Navassa_LVDS_profile_adrv9005.json Navassa_CMOS_profile_adrv9006.json Navassa_LVDS_profile_adrv9006.json ADRV9025_DPDCORE_FW.bin ADRV9025_FW.bin ADRV9025_RxGainTable.csv ADRV9025_TxAttenTable.csv stream_image_6E3E00EFB74FE7D465FA88A171B81B8F.bin ActiveUseCase.profile ActiveUtilInit.profile ActiveUseCase_NLS.profile ActiveUseCase_204C.profile ADRV9030_FW.bin ADRV9030_DeviceProfileTest_M4.bin ADRV9030_stream_image.bin ADRV9030_RxGainTable.csv ADRV9030_RxGainTable_GainCompensated.csv ADRV9030_RxGainTable_HB.csv ADRV9040_DFE_CALS_FW.bin DeviceProfileTest.bin DeviceProfileTest_NLS.bin stream_image.bin ADRV9040_FW.bin ADRV9040_RxGainTable.csv"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would split this one

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please clarify what you mean? The ADRV9040 firmware entries are already in a dedicated commit. Did you mean splitting the defconfig change from the firmware file additions?


typedef struct {
void *value;
} thread_to_value_t;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say this platform file is code "owned" by us/linux to some extent. So I would use kernel standards as much as possible ine here

size_t total_size;

total_size = size * nmemb;
return kzalloc(total_size, GFP_KERNEL);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not kcalloc()?

{
int ret;

FILE *stream = devm_kzalloc(&hal->spi->dev, sizeof(*stream), GFP_KERNEL);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No new line and this devm_kzalloc() is very questionable. I would just do the typical pair "kzalloc() + kfree()"


ADI_API adi_hal_Err_e linux_adrv904x_MutexUnlock(adi_hal_mutex_t *mutex)
{
(void)mutex;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use __unused??

struct adrv904x_rf_phy *phy = priv->phy;
adi_adrv904x_TxAtten_t txAttenuation[1];
const u32 ALL_CHANNELS_MASK = 0xFFU;
const u32 NUM_TRACKING_CALS = 7U;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think plain GENMASK() in the code would be more readable

Comment thread drivers/iio/trx-rf/adrv904x/adrv904x.c Outdated

if (dev_clk > 0 && ((dev_clk / 1000) ==
deviceClockScaled_kHz)) {
clk_set_rate(phy->dev_clk, (unsigned long)dev_clk);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should check for error codes

Comment thread drivers/iio/trx-rf/adrv904x/adrv904x.c Outdated
_parent_name[0] =
adrv904x_clk_set_dev_name(phy, p_name[0], parent_name);
_parent_name[1] =
adrv904x_clk_set_dev_name(phy, p_name[1], parent_name2);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would not do the line break

else
orxchan_en &= ~(ADI_ADRV904X_RX0 << chan->channel);
}
}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the above seems that there's room to properly use linux bit handling! I would use it

Comment thread drivers/iio/trx-rf/adrv904x/adrv904x.c Outdated
* in Hz. Using scale is a bit ugly.
*/
_ADRV904X_EXT_LO_INFO("frequency", LOEXT_FREQ),
{},
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would drop the comma! We have the NULL terminator entry

danmois and others added 15 commits April 20, 2026 13:39
Add Koror API 2.15.0.5.

Signed-off-by: George Mois <george.mois@analog.com>
Add binaries to be used with the ADRV904X driver.

New adrv904x firmware to reflect the two available use cases,
without ORX (default profile) and with ORX (NLS profile)

Signed-off-by: George Mois <george.mois@analog.com>
Signed-off-by: Andrei Dragomir <andrei.dragomir@analog.com>
Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add the platform adaptation layer for the ADRV904X driver,
including Linux-specific HAL implementation and platform
abstraction functions.

Signed-off-by: George Mois <george.mois@analog.com>
Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add driver files for ADRV904X and add option to makefiles.

Signed-off-by: George Mois <george.mois@analog.com>
Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add adrv904x_1_00_a_info core info and the "adi,axi-adrv904x-tx-1.0"
compatible string to support the ADRV904X DAC.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add info table for observation receiver for the ADRV904X family.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Make sure that the ADRV904X driver is built.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add dts file for adrv904x (Koror).

Signed-off-by: George Mois <george.mois@analog.com>
New adrv904x dts to implement the use case with ORX in NLS mode

Signed-off-by: AndrDragomir <andrei.dragomir@analog.com>
Direct 64-bit division on ARM32 causes undefined references to
__aeabi_uldivmod and __aeabi_ldivmod. Add platform abstraction
wrappers in adi_library_types.h for division operations and use
them throughout the driver.

Use GCD reduction before squaring in scale_with_squared_ratio()
to prevent overflow in power threshold calculations.

Co-authored-by: Jorge Marques <jorge.marques@analog.com>
Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Add device tree bindings documentation for the Analog Devices
ADRV904X RF transceiver family. The ADRV904X is a highly integrated
RF transceiver supporting 8 transmitter and 8 receiver channels
with observation receivers, designed for cellular infrastructure
applications.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
…e_dpd

The prototype for adi_adrv904x_WBBufSegConfigGet() in
adi_adrv904x_dfe_dpd.h is conditionally compiled under
in adi_adrv904x_dfe_dpd.c lacks the same guard.

When ADI_LIBRARY_RM_FLOATS is defined the compiler sees no prior
declaration for the function and emits -Wmissing-prototypes, which
is promoted to an error by -Werror, breaking the build.

Wrap the function definition with the same guard as its prototype.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Fix variable-length array (VLA) build errors in vendor API code.
Replace const local variables used as array dimensions with #define
macros so sizes are true compile-time constants.

Affected files: adi_adrv904x_utilities.c, adi_adrv904x_cpu.c,
adrv904x_carrier_reconfigure.c

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
adrv904x_dfe_vswr.c defines adrv904x_VswrPlaybackDatNumOfSamplesInit
but does not include its own header adrv904x_dfe_vswr.h, where the
function prototype is declared. This causes a -Werror=missing-prototypes
build failure since the compiler sees the definition before any
declaration.

Add the missing self-include to fix the build error.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Rename all symbols in the adrv904x vendor common library and platform
files that clash with the identical copies in adrv903x when both
drivers are built-in (=y). This follows the same approach used for
adrv9104 in commit 6cf76da.

Renamed symbols use the adrv904x_ prefix. Compatibility #defines are
added in the headers so that vendor API code calling the old names
continues to compile unchanged.

Also rename the initdata.c globals (utilityInit, deviceInitStruct, etc.)
to adrv904x_-prefixed names and update references in adrv904x.c.

Signed-off-by: Stefan Popa <stefan.popa@analog.com>
@stefpopa stefpopa force-pushed the staging/koror_support branch from 9e138a1 to a16087c Compare April 20, 2026 10:39
@stefpopa
Copy link
Copy Markdown
Collaborator Author

@nunojsa thank you for the review! Here's chagelog v7:

  • Replace typedef struct with kernel-style struct thread_to_value
  • Use kcalloc() instead of kzalloc(size * nmemb)
  • Use kzalloc()/kfree() instead of devm_kzalloc()/devm_kfree() for FILE
  • Use __always_unused attribute instead of (void)param casts on mutex functions
  • Remove unnecessary (void) casts on linux_adrv904x_TlsSet() calls
  • Use fsleep() instead of usleep_range()/msleep()
  • Use dev_info() instead of pr_info() to associate logs with the device
  • Use gpiod_set_value_cansleep() for sleepable GPIO context
  • Update copyright to 2020-2026
  • Remove commented-out //adi,spi-3wire-enable
  • Remove commented-out clock-output-names line
  • Restore trailing empty line at end of file
  • Remove #if IS_ENABLED(CONFIG_CF_AXI_ADC) guard (always selected in Kconfig)
  • Remove unnecessary chip_info NULL check in probe
  • Remove duplicate API version print at end of probe
  • Use dev_dbg() instead of dev_info() for RF channel init details
  • Remove unnecessary (u32) cast on trackingCalMask
  • Use GENMASK(7, 0) instead of 0xFFU
  • Check clk_set_rate() return value
  • Remove unnecessary line breaks on _parent_name assignments
  • Use BIT() macro for bit operations in channel enable/disable
  • Drop trailing comma after NULL sentinel in ext_info array
  • Remove inline from scale_with_squared_ratio(), let compiler decide
  • Trailing whitespace cleanup in vendor API file (whitespace-only, no code changes)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants