2023-06-19 17:29:40

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 0/4] ASoC: remove copy of intlog10()

The first three patches moves intlog10() to be available in entire
kernel. The last one removes copy of it in one driver. Besides already
good Lines of Code (LoC) statistics the upcoming users, if any, can
utilize the exported functions.

The series can be routed either via ASoC tree or media tree.

Note, int_log.h is separated from math.h due to licensing.
I dunno if we can mix two in a single header file. In any
case we may do it later on.

Andy Shevchenko (4):
lib/math: Move dvb_math.c into lib/math/int_log.c
lib/math/int_log: Use ARRAY_SIZE(logtable) where makes sense
lib/math/int_log: Replace LGPL-2.1-or-later boilerplate with SPDX
identifier
ASoC: nau8825: Replace copied'n'pasted intlog10()

Documentation/driver-api/media/dtv-common.rst | 2 +-
drivers/media/dvb-core/Makefile | 2 +-
drivers/media/dvb-frontends/af9013_priv.h | 2 +-
drivers/media/dvb-frontends/af9033_priv.h | 2 +-
drivers/media/dvb-frontends/cxd2820r_priv.h | 2 +-
drivers/media/dvb-frontends/cxd2841er.c | 2 +-
.../cxd2880/cxd2880_tnrdmd_dvbt2_mon.c | 2 +-
.../cxd2880/cxd2880_tnrdmd_dvbt_mon.c | 2 +-
.../media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
drivers/media/dvb-frontends/dib7000p.c | 2 +-
drivers/media/dvb-frontends/dib8000.c | 2 +-
drivers/media/dvb-frontends/dib9000.c | 2 +-
drivers/media/dvb-frontends/drxk_hard.c | 2 +-
drivers/media/dvb-frontends/lgdt3305.c | 2 +-
drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
drivers/media/dvb-frontends/lgdt330x.c | 2 +-
drivers/media/dvb-frontends/m88ds3103_priv.h | 2 +-
drivers/media/dvb-frontends/mn88443x.c | 2 +-
drivers/media/dvb-frontends/mn88472_priv.h | 2 +-
drivers/media/dvb-frontends/mn88473_priv.h | 2 +-
drivers/media/dvb-frontends/or51132.c | 2 +-
drivers/media/dvb-frontends/or51211.c | 2 +-
drivers/media/dvb-frontends/rtl2830_priv.h | 2 +-
drivers/media/dvb-frontends/rtl2832_priv.h | 2 +-
drivers/media/dvb-frontends/si2165.c | 2 +-
drivers/media/dvb-frontends/stv0367.c | 2 +-
drivers/media/dvb-frontends/tc90522.c | 2 +-
drivers/media/dvb-frontends/tda10048.c | 2 +-
include/{media/dvb_math.h => linux/int_log.h} | 18 +---
lib/math/Makefile | 2 +-
.../dvb-core/dvb_math.c => lib/math/int_log.c | 26 ++----
sound/soc/codecs/nau8825.c | 93 +------------------
32 files changed, 45 insertions(+), 150 deletions(-)
rename include/{media/dvb_math.h => linux/int_log.h} (63%)
rename drivers/media/dvb-core/dvb_math.c => lib/math/int_log.c (84%)

--
2.40.0.1.gaa8946217a0b



2023-06-19 17:34:26

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 4/4] ASoC: nau8825: Replace copied'n'pasted intlog10()

As the code even references to dvb_math.c, which is now available
as int_log.c, replace its content by the calling respective API.

Signed-off-by: Andy Shevchenko <[email protected]>
---
sound/soc/codecs/nau8825.c | 93 ++------------------------------------
1 file changed, 3 insertions(+), 90 deletions(-)

diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c
index 9e0e4ddf128e..5cb0de648bd3 100644
--- a/sound/soc/codecs/nau8825.c
+++ b/sound/soc/codecs/nau8825.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/init.h>
+#include <linux/int_log.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/slab.h>
@@ -38,7 +39,6 @@
#define NAU_FVCO_MIN 90000000

/* cross talk suppression detection */
-#define LOG10_MAGIC 646456993
#define GAIN_AUGMENT 22500
#define SIDETONE_BASE 207000

@@ -219,42 +219,6 @@ static const struct reg_sequence nau8825_regmap_patch[] = {
{ NAU8825_REG_MIC_BIAS, 0x0046 },
};

-
-static const unsigned short logtable[256] = {
- 0x0000, 0x0171, 0x02e0, 0x044e, 0x05ba, 0x0725, 0x088e, 0x09f7,
- 0x0b5d, 0x0cc3, 0x0e27, 0x0f8a, 0x10eb, 0x124b, 0x13aa, 0x1508,
- 0x1664, 0x17bf, 0x1919, 0x1a71, 0x1bc8, 0x1d1e, 0x1e73, 0x1fc6,
- 0x2119, 0x226a, 0x23ba, 0x2508, 0x2656, 0x27a2, 0x28ed, 0x2a37,
- 0x2b80, 0x2cc8, 0x2e0f, 0x2f54, 0x3098, 0x31dc, 0x331e, 0x345f,
- 0x359f, 0x36de, 0x381b, 0x3958, 0x3a94, 0x3bce, 0x3d08, 0x3e41,
- 0x3f78, 0x40af, 0x41e4, 0x4319, 0x444c, 0x457f, 0x46b0, 0x47e1,
- 0x4910, 0x4a3f, 0x4b6c, 0x4c99, 0x4dc5, 0x4eef, 0x5019, 0x5142,
- 0x526a, 0x5391, 0x54b7, 0x55dc, 0x5700, 0x5824, 0x5946, 0x5a68,
- 0x5b89, 0x5ca8, 0x5dc7, 0x5ee5, 0x6003, 0x611f, 0x623a, 0x6355,
- 0x646f, 0x6588, 0x66a0, 0x67b7, 0x68ce, 0x69e4, 0x6af8, 0x6c0c,
- 0x6d20, 0x6e32, 0x6f44, 0x7055, 0x7165, 0x7274, 0x7383, 0x7490,
- 0x759d, 0x76aa, 0x77b5, 0x78c0, 0x79ca, 0x7ad3, 0x7bdb, 0x7ce3,
- 0x7dea, 0x7ef0, 0x7ff6, 0x80fb, 0x81ff, 0x8302, 0x8405, 0x8507,
- 0x8608, 0x8709, 0x8809, 0x8908, 0x8a06, 0x8b04, 0x8c01, 0x8cfe,
- 0x8dfa, 0x8ef5, 0x8fef, 0x90e9, 0x91e2, 0x92db, 0x93d2, 0x94ca,
- 0x95c0, 0x96b6, 0x97ab, 0x98a0, 0x9994, 0x9a87, 0x9b7a, 0x9c6c,
- 0x9d5e, 0x9e4f, 0x9f3f, 0xa02e, 0xa11e, 0xa20c, 0xa2fa, 0xa3e7,
- 0xa4d4, 0xa5c0, 0xa6ab, 0xa796, 0xa881, 0xa96a, 0xaa53, 0xab3c,
- 0xac24, 0xad0c, 0xadf2, 0xaed9, 0xafbe, 0xb0a4, 0xb188, 0xb26c,
- 0xb350, 0xb433, 0xb515, 0xb5f7, 0xb6d9, 0xb7ba, 0xb89a, 0xb97a,
- 0xba59, 0xbb38, 0xbc16, 0xbcf4, 0xbdd1, 0xbead, 0xbf8a, 0xc065,
- 0xc140, 0xc21b, 0xc2f5, 0xc3cf, 0xc4a8, 0xc580, 0xc658, 0xc730,
- 0xc807, 0xc8de, 0xc9b4, 0xca8a, 0xcb5f, 0xcc34, 0xcd08, 0xcddc,
- 0xceaf, 0xcf82, 0xd054, 0xd126, 0xd1f7, 0xd2c8, 0xd399, 0xd469,
- 0xd538, 0xd607, 0xd6d6, 0xd7a4, 0xd872, 0xd93f, 0xda0c, 0xdad9,
- 0xdba5, 0xdc70, 0xdd3b, 0xde06, 0xded0, 0xdf9a, 0xe063, 0xe12c,
- 0xe1f5, 0xe2bd, 0xe385, 0xe44c, 0xe513, 0xe5d9, 0xe69f, 0xe765,
- 0xe82a, 0xe8ef, 0xe9b3, 0xea77, 0xeb3b, 0xebfe, 0xecc1, 0xed83,
- 0xee45, 0xef06, 0xefc8, 0xf088, 0xf149, 0xf209, 0xf2c8, 0xf387,
- 0xf446, 0xf505, 0xf5c3, 0xf680, 0xf73e, 0xf7fb, 0xf8b7, 0xf973,
- 0xfa2f, 0xfaea, 0xfba5, 0xfc60, 0xfd1a, 0xfdd4, 0xfe8e, 0xff47
-};
-
/**
* nau8825_sema_acquire - acquire the semaphore of nau88l25
* @nau8825: component to register the codec private data with
@@ -368,65 +332,14 @@ static void nau8825_hpvol_ramp(struct nau8825 *nau8825,
}

/**
- * nau8825_intlog10_dec3 - Computes log10 of a value
- * the result is round off to 3 decimal. This function takes reference to
- * dvb-math. The source code locates as the following.
- * Linux/drivers/media/dvb-core/dvb_math.c
+ * nau8825_intlog10_dec3 - Computes log10 of a value, rounding the result to 3 decimal places.
* @value: input for log10
*
* return log10(value) * 1000
*/
static u32 nau8825_intlog10_dec3(u32 value)
{
- u32 msb, logentry, significand, interpolation, log10val;
- u64 log2val;
-
- /* first detect the msb (count begins at 0) */
- msb = fls(value) - 1;
- /**
- * now we use a logtable after the following method:
- *
- * log2(2^x * y) * 2^24 = x * 2^24 + log2(y) * 2^24
- * where x = msb and therefore 1 <= y < 2
- * first y is determined by shifting the value left
- * so that msb is bit 31
- * 0x00231f56 -> 0x8C7D5800
- * the result is y * 2^31 -> "significand"
- * then the highest 9 bits are used for a table lookup
- * the highest bit is discarded because it's always set
- * the highest nine bits in our example are 100011000
- * so we would use the entry 0x18
- */
- significand = value << (31 - msb);
- logentry = (significand >> 23) & 0xff;
- /**
- * last step we do is interpolation because of the
- * limitations of the log table the error is that part of
- * the significand which isn't used for lookup then we
- * compute the ratio between the error and the next table entry
- * and interpolate it between the log table entry used and the
- * next one the biggest error possible is 0x7fffff
- * (in our example it's 0x7D5800)
- * needed value for next table entry is 0x800000
- * so the interpolation is
- * (error / 0x800000) * (logtable_next - logtable_current)
- * in the implementation the division is moved to the end for
- * better accuracy there is also an overflow correction if
- * logtable_next is 256
- */
- interpolation = ((significand & 0x7fffff) *
- ((logtable[(logentry + 1) & 0xff] -
- logtable[logentry]) & 0xffff)) >> 15;
-
- log2val = ((msb << 24) + (logtable[logentry] << 8) + interpolation);
- /**
- * log10(x) = log2(x) * log10(2)
- */
- log10val = (log2val * LOG10_MAGIC) >> 31;
- /**
- * the result is round off to 3 decimal
- */
- return log10val / ((1 << 24) / 1000);
+ return intlog10(value) / ((1 << 24) / 1000);
}

/**
--
2.40.0.1.gaa8946217a0b


2023-06-19 17:34:45

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 2/4] lib/math/int_log: Use ARRAY_SIZE(logtable) where makes sense

Use ARRAY_SIZE(logtable) where makes sense.

Signed-off-by: Andy Shevchenko <[email protected]>
---
lib/math/int_log.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/math/int_log.c b/lib/math/int_log.c
index 322df25a22d6..ea98fc0b3fe2 100644
--- a/lib/math/int_log.c
+++ b/lib/math/int_log.c
@@ -91,7 +91,7 @@ unsigned int intlog2(u32 value)
* so we would use the entry 0x18
*/
significand = value << (31 - msb);
- logentry = (significand >> 23) & 0xff;
+ logentry = (significand >> 23) % ARRAY_SIZE(logtable);

/**
* last step we do is interpolation because of the
@@ -109,7 +109,7 @@ unsigned int intlog2(u32 value)
* logtable_next is 256
*/
interpolation = ((significand & 0x7fffff) *
- ((logtable[(logentry + 1) & 0xff] -
+ ((logtable[(logentry + 1) % ARRAY_SIZE(logtable)] -
logtable[logentry]) & 0xffff)) >> 15;

/* now we return the result */
--
2.40.0.1.gaa8946217a0b


2023-06-19 17:42:07

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 3/4] lib/math/int_log: Replace LGPL-2.1-or-later boilerplate with SPDX identifier

Replace license boilerplate in udftime.c with SPDX identifier for
LGPL-2.1-or-later.

Signed-off-by: Andy Shevchenko <[email protected]>
---
include/linux/int_log.h | 11 +----------
lib/math/int_log.c | 11 +----------
2 files changed, 2 insertions(+), 20 deletions(-)

diff --git a/include/linux/int_log.h b/include/linux/int_log.h
index 332306202464..0a6f58c38b61 100644
--- a/include/linux/int_log.h
+++ b/include/linux/int_log.h
@@ -1,17 +1,8 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Provides fixed-point logarithm operations.
*
* Copyright (C) 2006 Christoph Pfister ([email protected])
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
*/

#ifndef __LINUX_INT_LOG_H
diff --git a/lib/math/int_log.c b/lib/math/int_log.c
index ea98fc0b3fe2..8f9da3a2ad39 100644
--- a/lib/math/int_log.c
+++ b/lib/math/int_log.c
@@ -1,17 +1,8 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
/*
* Provides fixed-point logarithm operations.
*
* Copyright (C) 2006 Christoph Pfister ([email protected])
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
*/

#include <linux/bitops.h>
--
2.40.0.1.gaa8946217a0b


2023-06-19 17:53:58

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH v1 4/4] ASoC: nau8825: Replace copied'n'pasted intlog10()

On Mon, Jun 19, 2023 at 08:20:19PM +0300, Andy Shevchenko wrote:
> As the code even references to dvb_math.c, which is now available
> as int_log.c, replace its content by the calling respective API.

Acked-by: Mark Brown <[email protected]>


Attachments:
(No filename) (248.00 B)
signature.asc (499.00 B)
Download all attachments

2023-06-19 18:04:07

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 1/4] lib/math: Move dvb_math.c into lib/math/int_log.c

Some existing and new users may benefit from the intlog2() and
intlog10() APIs, make them wide available.

Signed-off-by: Andy Shevchenko <[email protected]>
---
Documentation/driver-api/media/dtv-common.rst | 2 +-
drivers/media/dvb-core/Makefile | 2 +-
drivers/media/dvb-frontends/af9013_priv.h | 2 +-
drivers/media/dvb-frontends/af9033_priv.h | 2 +-
drivers/media/dvb-frontends/cxd2820r_priv.h | 2 +-
drivers/media/dvb-frontends/cxd2841er.c | 2 +-
.../dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c | 2 +-
.../dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c | 2 +-
drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
drivers/media/dvb-frontends/dib7000p.c | 2 +-
drivers/media/dvb-frontends/dib8000.c | 2 +-
drivers/media/dvb-frontends/dib9000.c | 2 +-
drivers/media/dvb-frontends/drxk_hard.c | 2 +-
drivers/media/dvb-frontends/lgdt3305.c | 2 +-
drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
drivers/media/dvb-frontends/lgdt330x.c | 2 +-
drivers/media/dvb-frontends/m88ds3103_priv.h | 2 +-
drivers/media/dvb-frontends/mn88443x.c | 2 +-
drivers/media/dvb-frontends/mn88472_priv.h | 2 +-
drivers/media/dvb-frontends/mn88473_priv.h | 2 +-
drivers/media/dvb-frontends/or51132.c | 2 +-
drivers/media/dvb-frontends/or51211.c | 2 +-
drivers/media/dvb-frontends/rtl2830_priv.h | 2 +-
drivers/media/dvb-frontends/rtl2832_priv.h | 2 +-
drivers/media/dvb-frontends/si2165.c | 2 +-
drivers/media/dvb-frontends/stv0367.c | 2 +-
drivers/media/dvb-frontends/tc90522.c | 2 +-
drivers/media/dvb-frontends/tda10048.c | 2 +-
include/{media/dvb_math.h => linux/int_log.h} | 7 +++----
lib/math/Makefile | 2 +-
.../media/dvb-core/dvb_math.c => lib/math/int_log.c | 11 ++++++-----
31 files changed, 38 insertions(+), 38 deletions(-)
rename include/{media/dvb_math.h => linux/int_log.h} (92%)
rename drivers/media/dvb-core/dvb_math.c => lib/math/int_log.c (95%)

diff --git a/Documentation/driver-api/media/dtv-common.rst b/Documentation/driver-api/media/dtv-common.rst
index f8b2c4dc8170..cf234e0e101a 100644
--- a/Documentation/driver-api/media/dtv-common.rst
+++ b/Documentation/driver-api/media/dtv-common.rst
@@ -9,7 +9,7 @@ Math functions
Provide some commonly-used math functions, usually required in order to
estimate signal strength and signal to noise measurements in dB.

-.. kernel-doc:: include/media/dvb_math.h
+.. kernel-doc:: include/linux/int_log.h


DVB devices
diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
index 62b028ded9f7..1cb3ca67bed9 100644
--- a/drivers/media/dvb-core/Makefile
+++ b/drivers/media/dvb-core/Makefile
@@ -8,6 +8,6 @@ dvb-vb2-$(CONFIG_DVB_MMAP) := dvb_vb2.o

dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o \
dvb_ca_en50221.o dvb_frontend.o \
- $(dvb-net-y) dvb_ringbuffer.o $(dvb-vb2-y) dvb_math.o
+ $(dvb-net-y) dvb_ringbuffer.o $(dvb-vb2-y)

obj-$(CONFIG_DVB_CORE) += dvb-core.o
diff --git a/drivers/media/dvb-frontends/af9013_priv.h b/drivers/media/dvb-frontends/af9013_priv.h
index 3b9b9424fe1a..bba7a9693a23 100644
--- a/drivers/media/dvb-frontends/af9013_priv.h
+++ b/drivers/media/dvb-frontends/af9013_priv.h
@@ -12,7 +12,7 @@
#define AF9013_PRIV_H

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "af9013.h"
#include <linux/firmware.h>
#include <linux/i2c-mux.h>
diff --git a/drivers/media/dvb-frontends/af9033_priv.h b/drivers/media/dvb-frontends/af9033_priv.h
index 0e64da0cdeab..7560da75ef00 100644
--- a/drivers/media/dvb-frontends/af9033_priv.h
+++ b/drivers/media/dvb-frontends/af9033_priv.h
@@ -14,7 +14,7 @@
#include <linux/math64.h>
#include <linux/regmap.h>
#include <linux/kernel.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>

struct reg_val {
u32 reg;
diff --git a/drivers/media/dvb-frontends/cxd2820r_priv.h b/drivers/media/dvb-frontends/cxd2820r_priv.h
index 9b4d9cf8563d..605320bbc12b 100644
--- a/drivers/media/dvb-frontends/cxd2820r_priv.h
+++ b/drivers/media/dvb-frontends/cxd2820r_priv.h
@@ -11,7 +11,7 @@

#include <linux/dvb/version.h>
#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "cxd2820r.h"
#include <linux/gpio/driver.h> /* For gpio_chip */
#include <linux/math64.h>
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
index 5431f922f55e..ef403a9fb753 100644
--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -22,7 +22,7 @@
#include <linux/dynamic_debug.h>
#include <linux/kernel.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <media/dvb_frontend.h>
#include "cxd2841er.h"
#include "cxd2841er_priv.h"
diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
index 604580bf7cf7..4e173dd87ecf 100644
--- a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
+++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
@@ -11,7 +11,7 @@
#include "cxd2880_tnrdmd_dvbt2.h"
#include "cxd2880_tnrdmd_dvbt2_mon.h"

-#include <media/dvb_math.h>
+#include <linux/int_log.h>

static const int ref_dbm_1000[4][8] = {
{-96000, -95000, -94000, -93000, -92000, -92000, -98000, -97000},
diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
index fedc3b4a2fa0..86d5a1e4022a 100644
--- a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
+++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
@@ -11,7 +11,7 @@
#include "cxd2880_tnrdmd_dvbt.h"
#include "cxd2880_tnrdmd_dvbt_mon.h"

-#include <media/dvb_math.h>
+#include <linux/int_log.h>

static const int ref_dbm_1000[3][5] = {
{-93000, -91000, -90000, -89000, -88000},
diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
index d5b1b3788e39..f67b6d24b8d4 100644
--- a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
+++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
@@ -11,7 +11,7 @@
#include <linux/spi/spi.h>

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>

#include "cxd2880.h"
#include "cxd2880_tnrdmd_mon.h"
diff --git a/drivers/media/dvb-frontends/dib7000p.c b/drivers/media/dvb-frontends/dib7000p.c
index a90d2f51868f..b791e687d2e2 100644
--- a/drivers/media/dvb-frontends/dib7000p.c
+++ b/drivers/media/dvb-frontends/dib7000p.c
@@ -13,7 +13,7 @@
#include <linux/mutex.h>
#include <asm/div64.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <media/dvb_frontend.h>

#include "dib7000p.h"
diff --git a/drivers/media/dvb-frontends/dib8000.c b/drivers/media/dvb-frontends/dib8000.c
index fe19d127abb3..2abda7d1cb6e 100644
--- a/drivers/media/dvb-frontends/dib8000.c
+++ b/drivers/media/dvb-frontends/dib8000.c
@@ -13,7 +13,7 @@
#include <linux/mutex.h>
#include <asm/div64.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>

#include <media/dvb_frontend.h>

diff --git a/drivers/media/dvb-frontends/dib9000.c b/drivers/media/dvb-frontends/dib9000.c
index 914ca820c174..1c57587a917a 100644
--- a/drivers/media/dvb-frontends/dib9000.c
+++ b/drivers/media/dvb-frontends/dib9000.c
@@ -11,7 +11,7 @@
#include <linux/i2c.h>
#include <linux/mutex.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <media/dvb_frontend.h>

#include "dib9000.h"
diff --git a/drivers/media/dvb-frontends/drxk_hard.c b/drivers/media/dvb-frontends/drxk_hard.c
index 3301ef75d441..6ad4f202f1bf 100644
--- a/drivers/media/dvb-frontends/drxk_hard.c
+++ b/drivers/media/dvb-frontends/drxk_hard.c
@@ -20,7 +20,7 @@
#include <media/dvb_frontend.h>
#include "drxk.h"
#include "drxk_hard.h"
-#include <media/dvb_math.h>
+#include <linux/int_log.h>

static int power_down_dvbt(struct drxk_state *state, bool set_power_mode);
static int power_down_qam(struct drxk_state *state);
diff --git a/drivers/media/dvb-frontends/lgdt3305.c b/drivers/media/dvb-frontends/lgdt3305.c
index 62d743988919..c15d3735d34c 100644
--- a/drivers/media/dvb-frontends/lgdt3305.c
+++ b/drivers/media/dvb-frontends/lgdt3305.c
@@ -10,7 +10,7 @@
#include <asm/div64.h>
#include <linux/dvb/frontend.h>
#include <linux/slab.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "lgdt3305.h"

static int debug;
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
index 70258884126b..3c6650f6e9a3 100644
--- a/drivers/media/dvb-frontends/lgdt3306a.c
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
@@ -12,7 +12,7 @@
#include <asm/div64.h>
#include <linux/kernel.h>
#include <linux/dvb/frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "lgdt3306a.h"
#include <linux/i2c-mux.h>

diff --git a/drivers/media/dvb-frontends/lgdt330x.c b/drivers/media/dvb-frontends/lgdt330x.c
index 83565209c3b1..97a10996c7fa 100644
--- a/drivers/media/dvb-frontends/lgdt330x.c
+++ b/drivers/media/dvb-frontends/lgdt330x.c
@@ -28,7 +28,7 @@
#include <asm/byteorder.h>

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "lgdt330x_priv.h"
#include "lgdt330x.h"

diff --git a/drivers/media/dvb-frontends/m88ds3103_priv.h b/drivers/media/dvb-frontends/m88ds3103_priv.h
index aa5306f40201..594ad9cbc2cc 100644
--- a/drivers/media/dvb-frontends/m88ds3103_priv.h
+++ b/drivers/media/dvb-frontends/m88ds3103_priv.h
@@ -10,7 +10,7 @@

#include <media/dvb_frontend.h>
#include "m88ds3103.h"
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <linux/firmware.h>
#include <linux/i2c-mux.h>
#include <linux/regmap.h>
diff --git a/drivers/media/dvb-frontends/mn88443x.c b/drivers/media/dvb-frontends/mn88443x.c
index 2ce5692bc22c..db2921c736af 100644
--- a/drivers/media/dvb-frontends/mn88443x.c
+++ b/drivers/media/dvb-frontends/mn88443x.c
@@ -10,7 +10,7 @@
#include <linux/gpio/consumer.h>
#include <linux/of_device.h>
#include <linux/regmap.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>

#include "mn88443x.h"

diff --git a/drivers/media/dvb-frontends/mn88472_priv.h b/drivers/media/dvb-frontends/mn88472_priv.h
index 337562723f88..41f14bd67bfd 100644
--- a/drivers/media/dvb-frontends/mn88472_priv.h
+++ b/drivers/media/dvb-frontends/mn88472_priv.h
@@ -9,7 +9,7 @@
#define MN88472_PRIV_H

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "mn88472.h"
#include <linux/firmware.h>
#include <linux/regmap.h>
diff --git a/drivers/media/dvb-frontends/mn88473_priv.h b/drivers/media/dvb-frontends/mn88473_priv.h
index eca7f4e2b769..e9daaacfa22f 100644
--- a/drivers/media/dvb-frontends/mn88473_priv.h
+++ b/drivers/media/dvb-frontends/mn88473_priv.h
@@ -9,7 +9,7 @@
#define MN88473_PRIV_H

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "mn88473.h"
#include <linux/math64.h>
#include <linux/firmware.h>
diff --git a/drivers/media/dvb-frontends/or51132.c b/drivers/media/dvb-frontends/or51132.c
index 24de1b115158..355f3598627b 100644
--- a/drivers/media/dvb-frontends/or51132.c
+++ b/drivers/media/dvb-frontends/or51132.c
@@ -27,7 +27,7 @@
#include <linux/slab.h>
#include <asm/byteorder.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <media/dvb_frontend.h>
#include "or51132.h"

diff --git a/drivers/media/dvb-frontends/or51211.c b/drivers/media/dvb-frontends/or51211.c
index ddcaea5c9941..ae732dc5116e 100644
--- a/drivers/media/dvb-frontends/or51211.c
+++ b/drivers/media/dvb-frontends/or51211.c
@@ -26,7 +26,7 @@
#include <linux/slab.h>
#include <asm/byteorder.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include <media/dvb_frontend.h>
#include "or51211.h"

diff --git a/drivers/media/dvb-frontends/rtl2830_priv.h b/drivers/media/dvb-frontends/rtl2830_priv.h
index fae78ed78522..ae1fc24a4d84 100644
--- a/drivers/media/dvb-frontends/rtl2830_priv.h
+++ b/drivers/media/dvb-frontends/rtl2830_priv.h
@@ -9,7 +9,7 @@
#define RTL2830_PRIV_H

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "rtl2830.h"
#include <linux/i2c-mux.h>
#include <linux/math64.h>
diff --git a/drivers/media/dvb-frontends/rtl2832_priv.h b/drivers/media/dvb-frontends/rtl2832_priv.h
index 5f79f95b9475..f11ba038d5f0 100644
--- a/drivers/media/dvb-frontends/rtl2832_priv.h
+++ b/drivers/media/dvb-frontends/rtl2832_priv.h
@@ -14,7 +14,7 @@
#include <linux/bitops.h>

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "rtl2832.h"

struct rtl2832_dev {
diff --git a/drivers/media/dvb-frontends/si2165.c b/drivers/media/dvb-frontends/si2165.c
index 72810efd1a96..434d003bf397 100644
--- a/drivers/media/dvb-frontends/si2165.c
+++ b/drivers/media/dvb-frontends/si2165.c
@@ -19,7 +19,7 @@
#include <linux/regmap.h>

#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "si2165_priv.h"
#include "si2165.h"

diff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c
index 95e376f23506..a93f40617469 100644
--- a/drivers/media/dvb-frontends/stv0367.c
+++ b/drivers/media/dvb-frontends/stv0367.c
@@ -15,7 +15,7 @@
#include <linux/slab.h>
#include <linux/i2c.h>

-#include <media/dvb_math.h>
+#include <linux/int_log.h>

#include "stv0367.h"
#include "stv0367_defs.h"
diff --git a/drivers/media/dvb-frontends/tc90522.c b/drivers/media/dvb-frontends/tc90522.c
index 879f028f9682..1f8cbf45554a 100644
--- a/drivers/media/dvb-frontends/tc90522.c
+++ b/drivers/media/dvb-frontends/tc90522.c
@@ -21,7 +21,7 @@
#include <linux/kernel.h>
#include <linux/math64.h>
#include <linux/dvb/frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "tc90522.h"

#define TC90522_I2C_THRU_REG 0xfe
diff --git a/drivers/media/dvb-frontends/tda10048.c b/drivers/media/dvb-frontends/tda10048.c
index 0b3f6999515e..3cb4e5270e4f 100644
--- a/drivers/media/dvb-frontends/tda10048.c
+++ b/drivers/media/dvb-frontends/tda10048.c
@@ -16,7 +16,7 @@
#include <linux/math64.h>
#include <asm/div64.h>
#include <media/dvb_frontend.h>
-#include <media/dvb_math.h>
+#include <linux/int_log.h>
#include "tda10048.h"

#define TDA10048_DEFAULT_FIRMWARE "dvb-fe-tda10048-1.0.fw"
diff --git a/include/media/dvb_math.h b/include/linux/int_log.h
similarity index 92%
rename from include/media/dvb_math.h
rename to include/linux/int_log.h
index 8690ec42954d..332306202464 100644
--- a/include/media/dvb_math.h
+++ b/include/linux/int_log.h
@@ -1,6 +1,5 @@
/*
- * dvb-math provides some complex fixed-point math
- * operations shared between the dvb related stuff
+ * Provides fixed-point logarithm operations.
*
* Copyright (C) 2006 Christoph Pfister ([email protected])
*
@@ -15,8 +14,8 @@
* GNU Lesser General Public License for more details.
*/

-#ifndef __DVB_MATH_H
-#define __DVB_MATH_H
+#ifndef __LINUX_INT_LOG_H
+#define __LINUX_INT_LOG_H

#include <linux/types.h>

diff --git a/lib/math/Makefile b/lib/math/Makefile
index bfac26ddfc22..91fcdb0c9efe 100644
--- a/lib/math/Makefile
+++ b/lib/math/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-y += div64.o gcd.o lcm.o int_pow.o int_sqrt.o reciprocal_div.o
+obj-y += div64.o gcd.o lcm.o int_log.o int_pow.o int_sqrt.o reciprocal_div.o

obj-$(CONFIG_CORDIC) += cordic.o
obj-$(CONFIG_PRIME_NUMBERS) += prime_numbers.o
diff --git a/drivers/media/dvb-core/dvb_math.c b/lib/math/int_log.c
similarity index 95%
rename from drivers/media/dvb-core/dvb_math.c
rename to lib/math/int_log.c
index dc90564d7f34..322df25a22d6 100644
--- a/drivers/media/dvb-core/dvb_math.c
+++ b/lib/math/int_log.c
@@ -1,6 +1,5 @@
/*
- * dvb-math provides some complex fixed-point math
- * operations shared between the dvb related stuff
+ * Provides fixed-point logarithm operations.
*
* Copyright (C) 2006 Christoph Pfister ([email protected])
*
@@ -16,10 +15,12 @@
*/

#include <linux/bitops.h>
+#include <linux/export.h>
+#include <linux/int_log.h>
#include <linux/kernel.h>
-#include <linux/module.h>
+#include <linux/types.h>
+
#include <asm/bug.h>
-#include <media/dvb_math.h>

static const unsigned short logtable[256] = {
0x0000, 0x0171, 0x02e0, 0x044e, 0x05ba, 0x0725, 0x088e, 0x09f7,
@@ -53,7 +54,7 @@ static const unsigned short logtable[256] = {
0xe82a, 0xe8ef, 0xe9b3, 0xea77, 0xeb3b, 0xebfe, 0xecc1, 0xed83,
0xee45, 0xef06, 0xefc8, 0xf088, 0xf149, 0xf209, 0xf2c8, 0xf387,
0xf446, 0xf505, 0xf5c3, 0xf680, 0xf73e, 0xf7fb, 0xf8b7, 0xf973,
- 0xfa2f, 0xfaea, 0xfba5, 0xfc60, 0xfd1a, 0xfdd4, 0xfe8e, 0xff47
+ 0xfa2f, 0xfaea, 0xfba5, 0xfc60, 0xfd1a, 0xfdd4, 0xfe8e, 0xff47,
};

unsigned int intlog2(u32 value)
--
2.40.0.1.gaa8946217a0b


2023-07-03 06:24:11

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH v1 2/4] lib/math/int_log: Use ARRAY_SIZE(logtable) where makes sense

Em Mon, 19 Jun 2023 20:20:17 +0300
Andy Shevchenko <[email protected]> escreveu:

> Use ARRAY_SIZE(logtable) where makes sense.
>
> Signed-off-by: Andy Shevchenko <[email protected]>

Reviewed-by: Mauro Carvalho Chehab <[email protected]>

> ---
> lib/math/int_log.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/lib/math/int_log.c b/lib/math/int_log.c
> index 322df25a22d6..ea98fc0b3fe2 100644
> --- a/lib/math/int_log.c
> +++ b/lib/math/int_log.c
> @@ -91,7 +91,7 @@ unsigned int intlog2(u32 value)
> * so we would use the entry 0x18
> */
> significand = value << (31 - msb);
> - logentry = (significand >> 23) & 0xff;
> + logentry = (significand >> 23) % ARRAY_SIZE(logtable);
>
> /**
> * last step we do is interpolation because of the
> @@ -109,7 +109,7 @@ unsigned int intlog2(u32 value)
> * logtable_next is 256
> */
> interpolation = ((significand & 0x7fffff) *
> - ((logtable[(logentry + 1) & 0xff] -
> + ((logtable[(logentry + 1) % ARRAY_SIZE(logtable)] -
> logtable[logentry]) & 0xffff)) >> 15;
>
> /* now we return the result */

2023-07-03 06:37:56

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH v1 1/4] lib/math: Move dvb_math.c into lib/math/int_log.c

Em Mon, 19 Jun 2023 20:20:16 +0300
Andy Shevchenko <[email protected]> escreveu:

> Some existing and new users may benefit from the intlog2() and
> intlog10() APIs, make them wide available.
>
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
> Documentation/driver-api/media/dtv-common.rst | 2 +-
> drivers/media/dvb-core/Makefile | 2 +-
> drivers/media/dvb-frontends/af9013_priv.h | 2 +-
> drivers/media/dvb-frontends/af9033_priv.h | 2 +-
> drivers/media/dvb-frontends/cxd2820r_priv.h | 2 +-
> drivers/media/dvb-frontends/cxd2841er.c | 2 +-
> .../dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c | 2 +-
> .../dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c | 2 +-
> drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
> drivers/media/dvb-frontends/dib7000p.c | 2 +-
> drivers/media/dvb-frontends/dib8000.c | 2 +-
> drivers/media/dvb-frontends/dib9000.c | 2 +-
> drivers/media/dvb-frontends/drxk_hard.c | 2 +-
> drivers/media/dvb-frontends/lgdt3305.c | 2 +-
> drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
> drivers/media/dvb-frontends/lgdt330x.c | 2 +-
> drivers/media/dvb-frontends/m88ds3103_priv.h | 2 +-
> drivers/media/dvb-frontends/mn88443x.c | 2 +-
> drivers/media/dvb-frontends/mn88472_priv.h | 2 +-
> drivers/media/dvb-frontends/mn88473_priv.h | 2 +-
> drivers/media/dvb-frontends/or51132.c | 2 +-
> drivers/media/dvb-frontends/or51211.c | 2 +-
> drivers/media/dvb-frontends/rtl2830_priv.h | 2 +-
> drivers/media/dvb-frontends/rtl2832_priv.h | 2 +-
> drivers/media/dvb-frontends/si2165.c | 2 +-
> drivers/media/dvb-frontends/stv0367.c | 2 +-
> drivers/media/dvb-frontends/tc90522.c | 2 +-
> drivers/media/dvb-frontends/tda10048.c | 2 +-
> include/{media/dvb_math.h => linux/int_log.h} | 7 +++----
> lib/math/Makefile | 2 +-
> .../media/dvb-core/dvb_math.c => lib/math/int_log.c | 11 ++++++-----
> 31 files changed, 38 insertions(+), 38 deletions(-)
> rename include/{media/dvb_math.h => linux/int_log.h} (92%)
> rename drivers/media/dvb-core/dvb_math.c => lib/math/int_log.c (95%)
>
> diff --git a/Documentation/driver-api/media/dtv-common.rst b/Documentation/driver-api/media/dtv-common.rst
> index f8b2c4dc8170..cf234e0e101a 100644
> --- a/Documentation/driver-api/media/dtv-common.rst
> +++ b/Documentation/driver-api/media/dtv-common.rst
> @@ -9,7 +9,7 @@ Math functions
> Provide some commonly-used math functions, usually required in order to
> estimate signal strength and signal to noise measurements in dB.
>
> -.. kernel-doc:: include/media/dvb_math.h
> +.. kernel-doc:: include/linux/int_log.h

Hmm... maybe the best would be to move the kernel-doc tag to be on
a more generic place, as this will now be used outside media, and we
don't want to risk having multiple kernel-doc entries to the same
header - as it breaks cross-references.

After fixed:

Reviewed-by: Mauro Carvalho Chehab <[email protected]>


>
>
> DVB devices
> diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
> index 62b028ded9f7..1cb3ca67bed9 100644
> --- a/drivers/media/dvb-core/Makefile
> +++ b/drivers/media/dvb-core/Makefile
> @@ -8,6 +8,6 @@ dvb-vb2-$(CONFIG_DVB_MMAP) := dvb_vb2.o
>
> dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o \
> dvb_ca_en50221.o dvb_frontend.o \
> - $(dvb-net-y) dvb_ringbuffer.o $(dvb-vb2-y) dvb_math.o
> + $(dvb-net-y) dvb_ringbuffer.o $(dvb-vb2-y)
>
> obj-$(CONFIG_DVB_CORE) += dvb-core.o
> diff --git a/drivers/media/dvb-frontends/af9013_priv.h b/drivers/media/dvb-frontends/af9013_priv.h
> index 3b9b9424fe1a..bba7a9693a23 100644
> --- a/drivers/media/dvb-frontends/af9013_priv.h
> +++ b/drivers/media/dvb-frontends/af9013_priv.h
> @@ -12,7 +12,7 @@
> #define AF9013_PRIV_H
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "af9013.h"
> #include <linux/firmware.h>
> #include <linux/i2c-mux.h>
> diff --git a/drivers/media/dvb-frontends/af9033_priv.h b/drivers/media/dvb-frontends/af9033_priv.h
> index 0e64da0cdeab..7560da75ef00 100644
> --- a/drivers/media/dvb-frontends/af9033_priv.h
> +++ b/drivers/media/dvb-frontends/af9033_priv.h
> @@ -14,7 +14,7 @@
> #include <linux/math64.h>
> #include <linux/regmap.h>
> #include <linux/kernel.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> struct reg_val {
> u32 reg;
> diff --git a/drivers/media/dvb-frontends/cxd2820r_priv.h b/drivers/media/dvb-frontends/cxd2820r_priv.h
> index 9b4d9cf8563d..605320bbc12b 100644
> --- a/drivers/media/dvb-frontends/cxd2820r_priv.h
> +++ b/drivers/media/dvb-frontends/cxd2820r_priv.h
> @@ -11,7 +11,7 @@
>
> #include <linux/dvb/version.h>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "cxd2820r.h"
> #include <linux/gpio/driver.h> /* For gpio_chip */
> #include <linux/math64.h>
> diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
> index 5431f922f55e..ef403a9fb753 100644
> --- a/drivers/media/dvb-frontends/cxd2841er.c
> +++ b/drivers/media/dvb-frontends/cxd2841er.c
> @@ -22,7 +22,7 @@
> #include <linux/dynamic_debug.h>
> #include <linux/kernel.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <media/dvb_frontend.h>
> #include "cxd2841er.h"
> #include "cxd2841er_priv.h"
> diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
> index 604580bf7cf7..4e173dd87ecf 100644
> --- a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
> +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2_mon.c
> @@ -11,7 +11,7 @@
> #include "cxd2880_tnrdmd_dvbt2.h"
> #include "cxd2880_tnrdmd_dvbt2_mon.h"
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> static const int ref_dbm_1000[4][8] = {
> {-96000, -95000, -94000, -93000, -92000, -92000, -98000, -97000},
> diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
> index fedc3b4a2fa0..86d5a1e4022a 100644
> --- a/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
> +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt_mon.c
> @@ -11,7 +11,7 @@
> #include "cxd2880_tnrdmd_dvbt.h"
> #include "cxd2880_tnrdmd_dvbt_mon.h"
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> static const int ref_dbm_1000[3][5] = {
> {-93000, -91000, -90000, -89000, -88000},
> diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
> index d5b1b3788e39..f67b6d24b8d4 100644
> --- a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
> +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
> @@ -11,7 +11,7 @@
> #include <linux/spi/spi.h>
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> #include "cxd2880.h"
> #include "cxd2880_tnrdmd_mon.h"
> diff --git a/drivers/media/dvb-frontends/dib7000p.c b/drivers/media/dvb-frontends/dib7000p.c
> index a90d2f51868f..b791e687d2e2 100644
> --- a/drivers/media/dvb-frontends/dib7000p.c
> +++ b/drivers/media/dvb-frontends/dib7000p.c
> @@ -13,7 +13,7 @@
> #include <linux/mutex.h>
> #include <asm/div64.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <media/dvb_frontend.h>
>
> #include "dib7000p.h"
> diff --git a/drivers/media/dvb-frontends/dib8000.c b/drivers/media/dvb-frontends/dib8000.c
> index fe19d127abb3..2abda7d1cb6e 100644
> --- a/drivers/media/dvb-frontends/dib8000.c
> +++ b/drivers/media/dvb-frontends/dib8000.c
> @@ -13,7 +13,7 @@
> #include <linux/mutex.h>
> #include <asm/div64.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> #include <media/dvb_frontend.h>
>
> diff --git a/drivers/media/dvb-frontends/dib9000.c b/drivers/media/dvb-frontends/dib9000.c
> index 914ca820c174..1c57587a917a 100644
> --- a/drivers/media/dvb-frontends/dib9000.c
> +++ b/drivers/media/dvb-frontends/dib9000.c
> @@ -11,7 +11,7 @@
> #include <linux/i2c.h>
> #include <linux/mutex.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <media/dvb_frontend.h>
>
> #include "dib9000.h"
> diff --git a/drivers/media/dvb-frontends/drxk_hard.c b/drivers/media/dvb-frontends/drxk_hard.c
> index 3301ef75d441..6ad4f202f1bf 100644
> --- a/drivers/media/dvb-frontends/drxk_hard.c
> +++ b/drivers/media/dvb-frontends/drxk_hard.c
> @@ -20,7 +20,7 @@
> #include <media/dvb_frontend.h>
> #include "drxk.h"
> #include "drxk_hard.h"
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> static int power_down_dvbt(struct drxk_state *state, bool set_power_mode);
> static int power_down_qam(struct drxk_state *state);
> diff --git a/drivers/media/dvb-frontends/lgdt3305.c b/drivers/media/dvb-frontends/lgdt3305.c
> index 62d743988919..c15d3735d34c 100644
> --- a/drivers/media/dvb-frontends/lgdt3305.c
> +++ b/drivers/media/dvb-frontends/lgdt3305.c
> @@ -10,7 +10,7 @@
> #include <asm/div64.h>
> #include <linux/dvb/frontend.h>
> #include <linux/slab.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "lgdt3305.h"
>
> static int debug;
> diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
> index 70258884126b..3c6650f6e9a3 100644
> --- a/drivers/media/dvb-frontends/lgdt3306a.c
> +++ b/drivers/media/dvb-frontends/lgdt3306a.c
> @@ -12,7 +12,7 @@
> #include <asm/div64.h>
> #include <linux/kernel.h>
> #include <linux/dvb/frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "lgdt3306a.h"
> #include <linux/i2c-mux.h>
>
> diff --git a/drivers/media/dvb-frontends/lgdt330x.c b/drivers/media/dvb-frontends/lgdt330x.c
> index 83565209c3b1..97a10996c7fa 100644
> --- a/drivers/media/dvb-frontends/lgdt330x.c
> +++ b/drivers/media/dvb-frontends/lgdt330x.c
> @@ -28,7 +28,7 @@
> #include <asm/byteorder.h>
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "lgdt330x_priv.h"
> #include "lgdt330x.h"
>
> diff --git a/drivers/media/dvb-frontends/m88ds3103_priv.h b/drivers/media/dvb-frontends/m88ds3103_priv.h
> index aa5306f40201..594ad9cbc2cc 100644
> --- a/drivers/media/dvb-frontends/m88ds3103_priv.h
> +++ b/drivers/media/dvb-frontends/m88ds3103_priv.h
> @@ -10,7 +10,7 @@
>
> #include <media/dvb_frontend.h>
> #include "m88ds3103.h"
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <linux/firmware.h>
> #include <linux/i2c-mux.h>
> #include <linux/regmap.h>
> diff --git a/drivers/media/dvb-frontends/mn88443x.c b/drivers/media/dvb-frontends/mn88443x.c
> index 2ce5692bc22c..db2921c736af 100644
> --- a/drivers/media/dvb-frontends/mn88443x.c
> +++ b/drivers/media/dvb-frontends/mn88443x.c
> @@ -10,7 +10,7 @@
> #include <linux/gpio/consumer.h>
> #include <linux/of_device.h>
> #include <linux/regmap.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> #include "mn88443x.h"
>
> diff --git a/drivers/media/dvb-frontends/mn88472_priv.h b/drivers/media/dvb-frontends/mn88472_priv.h
> index 337562723f88..41f14bd67bfd 100644
> --- a/drivers/media/dvb-frontends/mn88472_priv.h
> +++ b/drivers/media/dvb-frontends/mn88472_priv.h
> @@ -9,7 +9,7 @@
> #define MN88472_PRIV_H
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "mn88472.h"
> #include <linux/firmware.h>
> #include <linux/regmap.h>
> diff --git a/drivers/media/dvb-frontends/mn88473_priv.h b/drivers/media/dvb-frontends/mn88473_priv.h
> index eca7f4e2b769..e9daaacfa22f 100644
> --- a/drivers/media/dvb-frontends/mn88473_priv.h
> +++ b/drivers/media/dvb-frontends/mn88473_priv.h
> @@ -9,7 +9,7 @@
> #define MN88473_PRIV_H
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "mn88473.h"
> #include <linux/math64.h>
> #include <linux/firmware.h>
> diff --git a/drivers/media/dvb-frontends/or51132.c b/drivers/media/dvb-frontends/or51132.c
> index 24de1b115158..355f3598627b 100644
> --- a/drivers/media/dvb-frontends/or51132.c
> +++ b/drivers/media/dvb-frontends/or51132.c
> @@ -27,7 +27,7 @@
> #include <linux/slab.h>
> #include <asm/byteorder.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <media/dvb_frontend.h>
> #include "or51132.h"
>
> diff --git a/drivers/media/dvb-frontends/or51211.c b/drivers/media/dvb-frontends/or51211.c
> index ddcaea5c9941..ae732dc5116e 100644
> --- a/drivers/media/dvb-frontends/or51211.c
> +++ b/drivers/media/dvb-frontends/or51211.c
> @@ -26,7 +26,7 @@
> #include <linux/slab.h>
> #include <asm/byteorder.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include <media/dvb_frontend.h>
> #include "or51211.h"
>
> diff --git a/drivers/media/dvb-frontends/rtl2830_priv.h b/drivers/media/dvb-frontends/rtl2830_priv.h
> index fae78ed78522..ae1fc24a4d84 100644
> --- a/drivers/media/dvb-frontends/rtl2830_priv.h
> +++ b/drivers/media/dvb-frontends/rtl2830_priv.h
> @@ -9,7 +9,7 @@
> #define RTL2830_PRIV_H
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "rtl2830.h"
> #include <linux/i2c-mux.h>
> #include <linux/math64.h>
> diff --git a/drivers/media/dvb-frontends/rtl2832_priv.h b/drivers/media/dvb-frontends/rtl2832_priv.h
> index 5f79f95b9475..f11ba038d5f0 100644
> --- a/drivers/media/dvb-frontends/rtl2832_priv.h
> +++ b/drivers/media/dvb-frontends/rtl2832_priv.h
> @@ -14,7 +14,7 @@
> #include <linux/bitops.h>
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "rtl2832.h"
>
> struct rtl2832_dev {
> diff --git a/drivers/media/dvb-frontends/si2165.c b/drivers/media/dvb-frontends/si2165.c
> index 72810efd1a96..434d003bf397 100644
> --- a/drivers/media/dvb-frontends/si2165.c
> +++ b/drivers/media/dvb-frontends/si2165.c
> @@ -19,7 +19,7 @@
> #include <linux/regmap.h>
>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "si2165_priv.h"
> #include "si2165.h"
>
> diff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c
> index 95e376f23506..a93f40617469 100644
> --- a/drivers/media/dvb-frontends/stv0367.c
> +++ b/drivers/media/dvb-frontends/stv0367.c
> @@ -15,7 +15,7 @@
> #include <linux/slab.h>
> #include <linux/i2c.h>
>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
>
> #include "stv0367.h"
> #include "stv0367_defs.h"
> diff --git a/drivers/media/dvb-frontends/tc90522.c b/drivers/media/dvb-frontends/tc90522.c
> index 879f028f9682..1f8cbf45554a 100644
> --- a/drivers/media/dvb-frontends/tc90522.c
> +++ b/drivers/media/dvb-frontends/tc90522.c
> @@ -21,7 +21,7 @@
> #include <linux/kernel.h>
> #include <linux/math64.h>
> #include <linux/dvb/frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "tc90522.h"
>
> #define TC90522_I2C_THRU_REG 0xfe
> diff --git a/drivers/media/dvb-frontends/tda10048.c b/drivers/media/dvb-frontends/tda10048.c
> index 0b3f6999515e..3cb4e5270e4f 100644
> --- a/drivers/media/dvb-frontends/tda10048.c
> +++ b/drivers/media/dvb-frontends/tda10048.c
> @@ -16,7 +16,7 @@
> #include <linux/math64.h>
> #include <asm/div64.h>
> #include <media/dvb_frontend.h>
> -#include <media/dvb_math.h>
> +#include <linux/int_log.h>
> #include "tda10048.h"
>
> #define TDA10048_DEFAULT_FIRMWARE "dvb-fe-tda10048-1.0.fw"
> diff --git a/include/media/dvb_math.h b/include/linux/int_log.h
> similarity index 92%
> rename from include/media/dvb_math.h
> rename to include/linux/int_log.h
> index 8690ec42954d..332306202464 100644
> --- a/include/media/dvb_math.h
> +++ b/include/linux/int_log.h
> @@ -1,6 +1,5 @@
> /*
> - * dvb-math provides some complex fixed-point math
> - * operations shared between the dvb related stuff
> + * Provides fixed-point logarithm operations.
> *
> * Copyright (C) 2006 Christoph Pfister ([email protected])
> *
> @@ -15,8 +14,8 @@
> * GNU Lesser General Public License for more details.
> */
>
> -#ifndef __DVB_MATH_H
> -#define __DVB_MATH_H
> +#ifndef __LINUX_INT_LOG_H
> +#define __LINUX_INT_LOG_H
>
> #include <linux/types.h>
>
> diff --git a/lib/math/Makefile b/lib/math/Makefile
> index bfac26ddfc22..91fcdb0c9efe 100644
> --- a/lib/math/Makefile
> +++ b/lib/math/Makefile
> @@ -1,5 +1,5 @@
> # SPDX-License-Identifier: GPL-2.0-only
> -obj-y += div64.o gcd.o lcm.o int_pow.o int_sqrt.o reciprocal_div.o
> +obj-y += div64.o gcd.o lcm.o int_log.o int_pow.o int_sqrt.o reciprocal_div.o
>
> obj-$(CONFIG_CORDIC) += cordic.o
> obj-$(CONFIG_PRIME_NUMBERS) += prime_numbers.o
> diff --git a/drivers/media/dvb-core/dvb_math.c b/lib/math/int_log.c
> similarity index 95%
> rename from drivers/media/dvb-core/dvb_math.c
> rename to lib/math/int_log.c
> index dc90564d7f34..322df25a22d6 100644
> --- a/drivers/media/dvb-core/dvb_math.c
> +++ b/lib/math/int_log.c
> @@ -1,6 +1,5 @@
> /*
> - * dvb-math provides some complex fixed-point math
> - * operations shared between the dvb related stuff
> + * Provides fixed-point logarithm operations.
> *
> * Copyright (C) 2006 Christoph Pfister ([email protected])
> *
> @@ -16,10 +15,12 @@
> */
>
> #include <linux/bitops.h>
> +#include <linux/export.h>
> +#include <linux/int_log.h>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> +#include <linux/types.h>
> +
> #include <asm/bug.h>
> -#include <media/dvb_math.h>
>
> static const unsigned short logtable[256] = {
> 0x0000, 0x0171, 0x02e0, 0x044e, 0x05ba, 0x0725, 0x088e, 0x09f7,
> @@ -53,7 +54,7 @@ static const unsigned short logtable[256] = {
> 0xe82a, 0xe8ef, 0xe9b3, 0xea77, 0xeb3b, 0xebfe, 0xecc1, 0xed83,
> 0xee45, 0xef06, 0xefc8, 0xf088, 0xf149, 0xf209, 0xf2c8, 0xf387,
> 0xf446, 0xf505, 0xf5c3, 0xf680, 0xf73e, 0xf7fb, 0xf8b7, 0xf973,
> - 0xfa2f, 0xfaea, 0xfba5, 0xfc60, 0xfd1a, 0xfdd4, 0xfe8e, 0xff47
> + 0xfa2f, 0xfaea, 0xfba5, 0xfc60, 0xfd1a, 0xfdd4, 0xfe8e, 0xff47,
> };
>
> unsigned int intlog2(u32 value)

2023-07-03 06:42:09

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH v1 0/4] ASoC: remove copy of intlog10()

Em Mon, 19 Jun 2023 20:20:15 +0300
Andy Shevchenko <[email protected]> escreveu:

> The first three patches moves intlog10() to be available in entire
> kernel. The last one removes copy of it in one driver. Besides already
> good Lines of Code (LoC) statistics the upcoming users, if any, can
> utilize the exported functions.
>
> The series can be routed either via ASoC tree or media tree.
>
> Note, int_log.h is separated from math.h due to licensing.
> I dunno if we can mix two in a single header file. In any
> case we may do it later on.
>
> Andy Shevchenko (4):
> lib/math: Move dvb_math.c into lib/math/int_log.c
> lib/math/int_log: Use ARRAY_SIZE(logtable) where makes sense
> lib/math/int_log: Replace LGPL-2.1-or-later boilerplate with SPDX
> identifier
> ASoC: nau8825: Replace copied'n'pasted intlog10()

It probably makes sense to apply it at ASoC tree, as the relevant
change is there.

I have just one small nit on patch 1/4, which should be trivial to
solve. Once done, feel free to merge it with my ack:

Acked-by: Mauro Carvalho Chehab <[email protected]>

>
> Documentation/driver-api/media/dtv-common.rst | 2 +-
> drivers/media/dvb-core/Makefile | 2 +-
> drivers/media/dvb-frontends/af9013_priv.h | 2 +-
> drivers/media/dvb-frontends/af9033_priv.h | 2 +-
> drivers/media/dvb-frontends/cxd2820r_priv.h | 2 +-
> drivers/media/dvb-frontends/cxd2841er.c | 2 +-
> .../cxd2880/cxd2880_tnrdmd_dvbt2_mon.c | 2 +-
> .../cxd2880/cxd2880_tnrdmd_dvbt_mon.c | 2 +-
> .../media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
> drivers/media/dvb-frontends/dib7000p.c | 2 +-
> drivers/media/dvb-frontends/dib8000.c | 2 +-
> drivers/media/dvb-frontends/dib9000.c | 2 +-
> drivers/media/dvb-frontends/drxk_hard.c | 2 +-
> drivers/media/dvb-frontends/lgdt3305.c | 2 +-
> drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
> drivers/media/dvb-frontends/lgdt330x.c | 2 +-
> drivers/media/dvb-frontends/m88ds3103_priv.h | 2 +-
> drivers/media/dvb-frontends/mn88443x.c | 2 +-
> drivers/media/dvb-frontends/mn88472_priv.h | 2 +-
> drivers/media/dvb-frontends/mn88473_priv.h | 2 +-
> drivers/media/dvb-frontends/or51132.c | 2 +-
> drivers/media/dvb-frontends/or51211.c | 2 +-
> drivers/media/dvb-frontends/rtl2830_priv.h | 2 +-
> drivers/media/dvb-frontends/rtl2832_priv.h | 2 +-
> drivers/media/dvb-frontends/si2165.c | 2 +-
> drivers/media/dvb-frontends/stv0367.c | 2 +-
> drivers/media/dvb-frontends/tc90522.c | 2 +-
> drivers/media/dvb-frontends/tda10048.c | 2 +-
> include/{media/dvb_math.h => linux/int_log.h} | 18 +---
> lib/math/Makefile | 2 +-
> .../dvb-core/dvb_math.c => lib/math/int_log.c | 26 ++----
> sound/soc/codecs/nau8825.c | 93 +------------------
> 32 files changed, 45 insertions(+), 150 deletions(-)
> rename include/{media/dvb_math.h => linux/int_log.h} (63%)
> rename drivers/media/dvb-core/dvb_math.c => lib/math/int_log.c (84%)
>

2023-07-03 06:56:25

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH v1 3/4] lib/math/int_log: Replace LGPL-2.1-or-later boilerplate with SPDX identifier

Em Mon, 19 Jun 2023 20:20:18 +0300
Andy Shevchenko <[email protected]> escreveu:

> Replace license boilerplate in udftime.c with SPDX identifier for
> LGPL-2.1-or-later.
>
> Signed-off-by: Andy Shevchenko <[email protected]>

Acked-by: Mauro Carvalho Chehab <[email protected]>

> ---
> include/linux/int_log.h | 11 +----------
> lib/math/int_log.c | 11 +----------
> 2 files changed, 2 insertions(+), 20 deletions(-)
>
> diff --git a/include/linux/int_log.h b/include/linux/int_log.h
> index 332306202464..0a6f58c38b61 100644
> --- a/include/linux/int_log.h
> +++ b/include/linux/int_log.h
> @@ -1,17 +1,8 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> /*
> * Provides fixed-point logarithm operations.
> *
> * Copyright (C) 2006 Christoph Pfister ([email protected])
> - *
> - * This library is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU Lesser General Public License as
> - * published by the Free Software Foundation; either version 2.1 of
> - * the License, or (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU Lesser General Public License for more details.
> */
>
> #ifndef __LINUX_INT_LOG_H
> diff --git a/lib/math/int_log.c b/lib/math/int_log.c
> index ea98fc0b3fe2..8f9da3a2ad39 100644
> --- a/lib/math/int_log.c
> +++ b/lib/math/int_log.c
> @@ -1,17 +1,8 @@
> +// SPDX-License-Identifier: LGPL-2.1-or-later
> /*
> * Provides fixed-point logarithm operations.
> *
> * Copyright (C) 2006 Christoph Pfister ([email protected])
> - *
> - * This library is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU Lesser General Public License as
> - * published by the Free Software Foundation; either version 2.1 of
> - * the License, or (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU Lesser General Public License for more details.
> */
>
> #include <linux/bitops.h>