Skip to content

Commit c72cc33

Browse files
committed
iio: frequency: ad916x: namespace utility functions to avoid symbol conflicts
Rename the adi_api_utils_* functions to ad916x_api_utils_* to avoid symbol conflicts with the apollo driver which defines the same function names. The following symbols are renamed: - adi_api_utils_gcd -> ad916x_api_utils_gcd - adi_api_utils_mult_64 -> ad916x_api_utils_mult_64 - adi_api_utils_lshift_128 -> ad916x_api_utils_lshift_128 - adi_api_utils_rshift_128 -> ad916x_api_utils_rshift_128 - adi_api_utils_mult_128 -> ad916x_api_utils_mult_128 - adi_api_utils_div_128 -> ad916x_api_utils_div_128 - adi_api_utils_add_128 -> ad916x_api_utils_add_128 - adi_api_utils_subt_128 -> ad916x_api_utils_subt_128 - is_power_of_two -> ad916x_is_power_of_two - U64MSB -> AD916X_U64MSB This fixes linker errors when both ad916x and apollo drivers are built into the kernel: multiple definition of `adi_api_utils_gcd' multiple definition of `adi_api_utils_mult_64' ... Fixes: e592f1c ("drivers/iio/frequency/cf_axi_dds: Add support for AD9162") Signed-off-by: Michael Hennerich <[email protected]>
1 parent 1d30714 commit c72cc33

File tree

3 files changed

+49
-49
lines changed

3 files changed

+49
-49
lines changed

drivers/iio/frequency/ad916x/ad916x_nco_api.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ static int ad916x_nco_set_configure_main(ad916x_handle_t *h,
7474
uint64_t tmp_ah, tmp_al, tmp_bh, tmp_bl, tmp_fh, tmp_fl;
7575
/* Modulus NCO mode */
7676

77-
gcd = adi_api_utils_gcd(carrier_freq_hz, h->dac_freq_hz);
77+
gcd = ad916x_api_utils_gcd(carrier_freq_hz, h->dac_freq_hz);
7878
M = DIV64_U64(carrier_freq_hz, gcd);
7979
N = DIV64_U64(h->dac_freq_hz, gcd);
8080

8181
if (M > INT16_MAX) {
82-
uint64_t mask = U64MSB;
82+
uint64_t mask = AD916X_U64MSB;
8383
int i = 0;
8484
while (((mask & M) == 0) && (mask != 1)) {
8585
mask >>= 1;
@@ -91,13 +91,13 @@ static int ad916x_nco_set_configure_main(ad916x_handle_t *h,
9191
int_part = DIV64_U64(M*(ADI_POW2_48), N);
9292
}
9393

94-
adi_api_utils_mult_128(M, ADI_POW2_48, &tmp_ah, &tmp_al);
95-
adi_api_utils_mult_128(N, int_part, &tmp_bh, &tmp_bl);
96-
adi_api_utils_subt_128(tmp_ah, tmp_al, tmp_bh, tmp_bl, &tmp_fh, &tmp_fl);
94+
ad916x_api_utils_mult_128(M, ADI_POW2_48, &tmp_ah, &tmp_al);
95+
ad916x_api_utils_mult_128(N, int_part, &tmp_bh, &tmp_bl);
96+
ad916x_api_utils_subt_128(tmp_ah, tmp_al, tmp_bh, tmp_bl, &tmp_fh, &tmp_fl);
9797
frac_part_a = tmp_fl;
9898
frac_part_b = N;
9999

100-
gcd = adi_api_utils_gcd(frac_part_a, frac_part_b);
100+
gcd = ad916x_api_utils_gcd(frac_part_a, frac_part_b);
101101
frac_part_a = DIV64_U64(frac_part_a, gcd);
102102
frac_part_b = DIV64_U64(frac_part_b, gcd);
103103

@@ -144,8 +144,8 @@ static int ad916x_nco_calc_freq_int_main(ad916x_handle_t *h, uint64_t int_part,
144144
int64_t *carrier_freq_hz)
145145
{
146146
uint64_t tmpa_lo, tmpa_hi;
147-
adi_api_utils_mult_128(int_part, h->dac_freq_hz, &tmpa_hi, &tmpa_lo);
148-
adi_api_utils_div_128(tmpa_hi, tmpa_lo, 0, ADI_POW2_48, &tmpa_hi, &tmpa_lo);
147+
ad916x_api_utils_mult_128(int_part, h->dac_freq_hz, &tmpa_hi, &tmpa_lo);
148+
ad916x_api_utils_div_128(tmpa_hi, tmpa_lo, 0, ADI_POW2_48, &tmpa_hi, &tmpa_lo);
149149
*carrier_freq_hz = tmpa_lo;
150150
return API_ERROR_OK;
151151
}
@@ -156,11 +156,11 @@ static int ad916x_nco_calc_freq_fract_main(ad916x_handle_t *h,
156156
{
157157
uint64_t tmpa_lo, tmpa_hi;
158158
uint64_t tmpb_lo, tmpb_hi;
159-
adi_api_utils_mult_128(int_part, h->dac_freq_hz, &tmpa_hi, &tmpa_lo);
160-
adi_api_utils_mult_128(frac_part_a, h->dac_freq_hz, &tmpb_hi, &tmpb_lo);
161-
adi_api_utils_div_128(tmpb_hi, tmpb_lo, 0, frac_part_b, &tmpb_hi, &tmpb_lo);
162-
adi_api_utils_add_128(tmpa_hi, tmpa_lo, tmpb_hi, tmpb_lo, &tmpa_hi, &tmpa_lo);
163-
adi_api_utils_div_128(tmpa_hi, tmpa_lo, 0, ADI_POW2_48, &tmpa_hi, &tmpa_lo);
159+
ad916x_api_utils_mult_128(int_part, h->dac_freq_hz, &tmpa_hi, &tmpa_lo);
160+
ad916x_api_utils_mult_128(frac_part_a, h->dac_freq_hz, &tmpb_hi, &tmpb_lo);
161+
ad916x_api_utils_div_128(tmpb_hi, tmpb_lo, 0, frac_part_b, &tmpb_hi, &tmpb_lo);
162+
ad916x_api_utils_add_128(tmpa_hi, tmpa_lo, tmpb_hi, tmpb_lo, &tmpa_hi, &tmpa_lo);
163+
ad916x_api_utils_div_128(tmpa_hi, tmpa_lo, 0, ADI_POW2_48, &tmpa_hi, &tmpa_lo);
164164
*carrier_freq_hz = tmpa_lo;
165165
return API_ERROR_OK;
166166
}

drivers/iio/frequency/ad916x/utils.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#define UPPER_16(A) (((A) >> 16) & 0xFFFF)
88
#define LOWER_32(A) ((A) & (uint32_t) 0xFFFFFFFF)
99

10-
int64_t adi_api_utils_gcd(int64_t u, int64_t v)
10+
int64_t ad916x_api_utils_gcd(int64_t u, int64_t v)
1111
{
1212
int64_t t;
1313
while (v != 0) {
@@ -18,7 +18,7 @@ int64_t adi_api_utils_gcd(int64_t u, int64_t v)
1818
return u < 0 ? -u : u; /* abs(u) */
1919
}
2020

21-
void adi_api_utils_mult_64(uint32_t a, uint32_t b, uint32_t *hi, uint32_t *lo)
21+
void ad916x_api_utils_mult_64(uint32_t a, uint32_t b, uint32_t *hi, uint32_t *lo)
2222
{
2323
uint32_t ah = (a >> 16), al = a & 0xffff,
2424
bh = (b >> 16), bl = b & 0xffff,
@@ -35,26 +35,26 @@ void adi_api_utils_mult_64(uint32_t a, uint32_t b, uint32_t *hi, uint32_t *lo)
3535
*hi = rh;
3636
}
3737

38-
void adi_api_utils_lshift_128(uint64_t *hi, uint64_t *lo)
38+
void ad916x_api_utils_lshift_128(uint64_t *hi, uint64_t *lo)
3939
{
4040
*hi <<= 1;
41-
if (*lo & U64MSB)
41+
if (*lo & AD916X_U64MSB)
4242
{
4343
*hi |= 1ul;
4444
}
4545
*lo <<= 1;
4646
}
4747

48-
void adi_api_utils_rshift_128(uint64_t *hi, uint64_t *lo)
48+
void ad916x_api_utils_rshift_128(uint64_t *hi, uint64_t *lo)
4949
{
5050
*lo >>= 1;
5151
if (*hi & 1u) {
52-
*lo |= U64MSB;
52+
*lo |= AD916X_U64MSB;
5353
}
5454
*hi >>= 1;
5555
}
5656

57-
void adi_api_utils_mult_128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo)
57+
void ad916x_api_utils_mult_128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo)
5858
{
5959
uint64_t ah = (a >> 32), al = a & 0xffffffff,
6060
bh = (b >> 32), bl = b & 0xffffffff,
@@ -71,7 +71,7 @@ void adi_api_utils_mult_128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo)
7171
*hi = rh;
7272
}
7373

74-
void adi_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
74+
void ad916x_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
7575
uint64_t b_hi, uint64_t b_lo,
7676
uint64_t *hi, uint64_t *lo)
7777
{
@@ -83,7 +83,7 @@ void adi_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
8383
uint64_t result_hi = 0;
8484
uint64_t mask_lo = 1;
8585
uint64_t mask_hi = 0;
86-
86+
8787
if ((part1_lo == 0) && (part1_hi == 0)) {
8888
/* Do whatever should happen when dividing by zero. */
8989
return;
@@ -92,31 +92,31 @@ void adi_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
9292
/* while(part1_lo < remain_lo)
9393
* Alternative: while(!(part1 & 0x8000)) - For 16-bit, test highest order bit.
9494
* Alternative: while(not_signed(part1)) - Same as above: As long as sign bit is not set in part1. */
95-
while (!(part1_hi & U64MSB)) {
96-
adi_api_utils_lshift_128(&part1_hi, &part1_lo);
97-
adi_api_utils_lshift_128(&mask_hi, &mask_lo);
95+
while (!(part1_hi & AD916X_U64MSB)) {
96+
ad916x_api_utils_lshift_128(&part1_hi, &part1_lo);
97+
ad916x_api_utils_lshift_128(&mask_hi, &mask_lo);
9898
}
9999

100100
do {
101101
if ((remain_hi > part1_hi) || ((remain_hi == part1_hi) && (remain_lo >= part1_lo))) {
102102
/* remain_lo = remain_lo - part1_lo; */
103-
adi_api_utils_subt_128(remain_hi, remain_lo, part1_hi, part1_lo, &remain_hi, &remain_lo);
103+
ad916x_api_utils_subt_128(remain_hi, remain_lo, part1_hi, part1_lo, &remain_hi, &remain_lo);
104104
/* result = result + mask; */
105-
adi_api_utils_add_128(result_hi, result_lo, mask_hi, mask_lo, &result_hi, &result_lo);
105+
ad916x_api_utils_add_128(result_hi, result_lo, mask_hi, mask_lo, &result_hi, &result_lo);
106106
}
107107
/* part1 = part1 >> 1; */
108-
adi_api_utils_rshift_128(&part1_hi, &part1_lo);
108+
ad916x_api_utils_rshift_128(&part1_hi, &part1_lo);
109109
/* mask = mask >> 1; */
110-
adi_api_utils_rshift_128(&mask_hi, &mask_lo);
110+
ad916x_api_utils_rshift_128(&mask_hi, &mask_lo);
111111
} while ((mask_hi != 0) || (mask_lo != 0));
112-
112+
113113
/* Now: result = division result (quotient)
114114
* remain_lo = division remain_loder (modulo) */
115115
*lo = result_lo;
116116
*hi = result_hi;
117117
}
118118

119-
void adi_api_utils_add_128(uint64_t ah, uint64_t al,
119+
void ad916x_api_utils_add_128(uint64_t ah, uint64_t al,
120120
uint64_t bh, uint64_t bl,
121121
uint64_t *hi, uint64_t *lo)
122122
{
@@ -134,8 +134,8 @@ void adi_api_utils_add_128(uint64_t ah, uint64_t al,
134134
*hi = rh;
135135
}
136136

137-
void adi_api_utils_subt_128(uint64_t ah, uint64_t al,
138-
uint64_t bh, uint64_t bl,
137+
void ad916x_api_utils_subt_128(uint64_t ah, uint64_t al,
138+
uint64_t bh, uint64_t bl,
139139
uint64_t *hi, uint64_t *lo)
140140
{
141141
/* r = a - b*/
@@ -154,7 +154,7 @@ void adi_api_utils_subt_128(uint64_t ah, uint64_t al,
154154
*hi = rh;
155155
}
156156

157-
int is_power_of_two(uint64_t x)
157+
int ad916x_is_power_of_two(uint64_t x)
158158
{
159159
return ((x != 0) && !(x & (x - 1)));
160160
}
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
// SPDX-License-Identifier: GPL-2.0
2-
#ifndef __AD_UTILS_H__
3-
#define __AD_UTILS_H__
2+
#ifndef __AD916X_UTILS_H__
3+
#define __AD916X_UTILS_H__
44

55
#include <linux/kernel.h>
66

77
#define MHZ_TO_HZ(x) (((uint64_t)x)*1000*1000)
88
#define MS_TO_US(x) ((x)*1000)
99

1010

11-
#define U64MSB 0x8000000000000000ull
11+
#define AD916X_U64MSB 0x8000000000000000ull
1212

13-
int64_t adi_api_utils_gcd(int64_t u, int64_t v);
14-
void adi_api_utils_mult_64(uint32_t a, uint32_t b, uint32_t *hi, uint32_t *lo);
15-
void adi_api_utils_lshift_128(uint64_t *hi, uint64_t *lo);
16-
void adi_api_utils_rshift_128(uint64_t *hi, uint64_t *lo);
17-
void adi_api_utils_mult_128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo);
18-
void adi_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
13+
int64_t ad916x_api_utils_gcd(int64_t u, int64_t v);
14+
void ad916x_api_utils_mult_64(uint32_t a, uint32_t b, uint32_t *hi, uint32_t *lo);
15+
void ad916x_api_utils_lshift_128(uint64_t *hi, uint64_t *lo);
16+
void ad916x_api_utils_rshift_128(uint64_t *hi, uint64_t *lo);
17+
void ad916x_api_utils_mult_128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo);
18+
void ad916x_api_utils_div_128(uint64_t a_hi, uint64_t a_lo,
1919
uint64_t b_hi, uint64_t b_lo,
2020
uint64_t *hi, uint64_t *lo);
21-
void adi_api_utils_add_128(uint64_t ah, uint64_t al,
21+
void ad916x_api_utils_add_128(uint64_t ah, uint64_t al,
2222
uint64_t bh, uint64_t bl,
2323
uint64_t *hi, uint64_t *lo);
24-
void adi_api_utils_subt_128(uint64_t ah, uint64_t al,
25-
uint64_t bh,uint64_t bl,
26-
uint64_t *hi,uint64_t *lo);
27-
int is_power_of_two(uint64_t x);
28-
#endif /*__AD_UTILS_H__*/
24+
void ad916x_api_utils_subt_128(uint64_t ah, uint64_t al,
25+
uint64_t bh, uint64_t bl,
26+
uint64_t *hi, uint64_t *lo);
27+
int ad916x_is_power_of_two(uint64_t x);
28+
#endif /*__AD916X_UTILS_H__*/

0 commit comments

Comments
 (0)