* [PATCH v3 1/3] units: Add SI metric prefix definitions
@ 2021-07-12 14:20 Andy Shevchenko
2021-07-12 14:20 ` [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro Andy Shevchenko
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Andy Shevchenko @ 2021-07-12 14:20 UTC (permalink / raw)
To: Andy Shevchenko, linux-i2c, linux-kernel
Cc: Jarkko Nikula, Mika Westerberg, wsa
Sometimes it's useful to have well-defined SI metric prefix to be used
to self-describe the formulas or equations.
List most popular ones in the units.h.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v3: converted to be unsigned values (Joe)
include/linux/units.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/include/linux/units.h b/include/linux/units.h
index dcc30a53fa93..4a25e0cc8fb3 100644
--- a/include/linux/units.h
+++ b/include/linux/units.h
@@ -4,6 +4,22 @@
#include <linux/math.h>
+/* Metric prefixes in accordance with Système international (d'unités) */
+#define PETA 1000000000000000ULL
+#define TERA 1000000000000ULL
+#define GIGA 1000000000UL
+#define MEGA 1000000UL
+#define KILO 1000UL
+#define HECTO 100UL
+#define DECA 10UL
+#define DECI 10UL
+#define CENTI 100UL
+#define MILLI 1000UL
+#define MICRO 1000000UL
+#define NANO 1000000000UL
+#define PICO 1000000000000ULL
+#define FEMTO 1000000000000000ULL
+
#define MILLIWATT_PER_WATT 1000L
#define MICROWATT_PER_MILLIWATT 1000L
#define MICROWATT_PER_WATT 1000000L
--
2.30.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro
2021-07-12 14:20 [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
@ 2021-07-12 14:20 ` Andy Shevchenko
2021-08-11 14:44 ` Wolfram Sang
2021-07-12 14:20 ` [PATCH v3 3/3] i2c: designware: Fix indentation in the header Andy Shevchenko
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2021-07-12 14:20 UTC (permalink / raw)
To: Andy Shevchenko, linux-i2c, linux-kernel
Cc: Jarkko Nikula, Mika Westerberg, wsa
Instead of open-coding DIV_ROUND_CLOSEST() and similar use the macros directly.
While at it, replace numbers with predefined SI metric prefixes.
No functional change intended.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v3: no changes
drivers/i2c/busses/i2c-designware-common.c | 8 ++++----
drivers/i2c/busses/i2c-designware-platdrv.c | 5 +++--
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
index fdc34d9e3702..bf2a4920638a 100644
--- a/drivers/i2c/busses/i2c-designware-common.c
+++ b/drivers/i2c/busses/i2c-designware-common.c
@@ -24,6 +24,7 @@
#include <linux/regmap.h>
#include <linux/swab.h>
#include <linux/types.h>
+#include <linux/units.h>
#include "i2c-designware-core.h"
@@ -350,7 +351,7 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)
*
* If your hardware is free from tHD;STA issue, try this one.
*/
- return (ic_clk * tSYMBOL + 500000) / 1000000 - 8 + offset;
+ return DIV_ROUND_CLOSEST(ic_clk * tSYMBOL, MICRO) - 8 + offset;
else
/*
* Conditional expression:
@@ -366,8 +367,7 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)
* The reason why we need to take into account "tf" here,
* is the same as described in i2c_dw_scl_lcnt().
*/
- return (ic_clk * (tSYMBOL + tf) + 500000) / 1000000
- - 3 + offset;
+ return DIV_ROUND_CLOSEST(ic_clk * (tSYMBOL + tf), MICRO) - 3 + offset;
}
u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset)
@@ -383,7 +383,7 @@ u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset)
* account the fall time of SCL signal (tf). Default tf value
* should be 0.3 us, for safety.
*/
- return ((ic_clk * (tLOW + tf) + 500000) / 1000000) - 1 + offset;
+ return DIV_ROUND_CLOSEST(ic_clk * (tLOW + tf), MICRO) - 1 + offset;
}
int i2c_dw_set_sda_hold(struct dw_i2c_dev *dev)
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 4b37f28ec0c6..21113665ddea 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -31,12 +31,13 @@
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/suspend.h>
+#include <linux/units.h>
#include "i2c-designware-core.h"
static u32 i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev)
{
- return clk_get_rate(dev->clk)/1000;
+ return clk_get_rate(dev->clk) / KILO;
}
#ifdef CONFIG_ACPI
@@ -270,7 +271,7 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
if (!dev->sda_hold_time && t->sda_hold_ns)
dev->sda_hold_time =
- div_u64(clk_khz * t->sda_hold_ns + 500000, 1000000);
+ DIV_S64_ROUND_CLOSEST(clk_khz * t->sda_hold_ns, MICRO);
}
adap = &dev->adapter;
--
2.30.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/3] i2c: designware: Fix indentation in the header
2021-07-12 14:20 [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
2021-07-12 14:20 ` [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro Andy Shevchenko
@ 2021-07-12 14:20 ` Andy Shevchenko
2021-08-11 14:44 ` Wolfram Sang
2021-08-11 12:22 ` [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
2021-08-11 14:44 ` Wolfram Sang
3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2021-07-12 14:20 UTC (permalink / raw)
To: Andy Shevchenko, linux-i2c, linux-kernel
Cc: Jarkko Nikula, Mika Westerberg, wsa
In couple of places the indentation makes harder to read the code.
Fix it to be sane.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v3: no changes
drivers/i2c/busses/i2c-designware-core.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
index 6a53f75abf7c..60a2e750cee9 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -117,7 +117,7 @@
#define DW_IC_ERR_TX_ABRT 0x1
-#define DW_IC_TAR_10BITADDR_MASTER BIT(12)
+#define DW_IC_TAR_10BITADDR_MASTER BIT(12)
#define DW_IC_COMP_PARAM_1_SPEED_MODE_HIGH (BIT(2) | BIT(3))
#define DW_IC_COMP_PARAM_1_SPEED_MODE_MASK GENMASK(3, 2)
@@ -245,7 +245,7 @@ struct dw_i2c_dev {
struct clk *clk;
struct clk *pclk;
struct reset_control *rst;
- struct i2c_client *slave;
+ struct i2c_client *slave;
u32 (*get_clk_rate_khz) (struct dw_i2c_dev *dev);
int cmd_err;
struct i2c_msg *msgs;
--
2.30.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] units: Add SI metric prefix definitions
2021-07-12 14:20 [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
2021-07-12 14:20 ` [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro Andy Shevchenko
2021-07-12 14:20 ` [PATCH v3 3/3] i2c: designware: Fix indentation in the header Andy Shevchenko
@ 2021-08-11 12:22 ` Andy Shevchenko
2021-08-11 14:42 ` Wolfram Sang
2021-08-11 14:44 ` Wolfram Sang
3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2021-08-11 12:22 UTC (permalink / raw)
To: linux-i2c, linux-kernel; +Cc: Jarkko Nikula, Mika Westerberg, wsa
On Mon, Jul 12, 2021 at 05:20:25PM +0300, Andy Shevchenko wrote:
> Sometimes it's useful to have well-defined SI metric prefix to be used
> to self-describe the formulas or equations.
>
> List most popular ones in the units.h.
Wolfram, can we have this applied or commented? It seems we are going to have
more users of these definitions (I have recently reviewed one of IIO driver
where two of them are in use).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] units: Add SI metric prefix definitions
2021-08-11 12:22 ` [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
@ 2021-08-11 14:42 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2021-08-11 14:42 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-i2c, linux-kernel, Jarkko Nikula, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 620 bytes --]
On Wed, Aug 11, 2021 at 03:22:40PM +0300, Andy Shevchenko wrote:
> On Mon, Jul 12, 2021 at 05:20:25PM +0300, Andy Shevchenko wrote:
> > Sometimes it's useful to have well-defined SI metric prefix to be used
> > to self-describe the formulas or equations.
> >
> > List most popular ones in the units.h.
>
> Wolfram, can we have this applied or commented? It seems we are going to have
> more users of these definitions (I have recently reviewed one of IIO driver
> where two of them are in use).
Okay, seems there won't be one to ack the units.h changes. Doesn't
really matter, I think. Will apply now.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] units: Add SI metric prefix definitions
2021-07-12 14:20 [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
` (2 preceding siblings ...)
2021-08-11 12:22 ` [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
@ 2021-08-11 14:44 ` Wolfram Sang
3 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2021-08-11 14:44 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-i2c, linux-kernel, Jarkko Nikula, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 341 bytes --]
On Mon, Jul 12, 2021 at 05:20:25PM +0300, Andy Shevchenko wrote:
> Sometimes it's useful to have well-defined SI metric prefix to be used
> to self-describe the formulas or equations.
>
> List most popular ones in the units.h.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Applied to for-next, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro
2021-07-12 14:20 ` [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro Andy Shevchenko
@ 2021-08-11 14:44 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2021-08-11 14:44 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-i2c, linux-kernel, Jarkko Nikula, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 363 bytes --]
On Mon, Jul 12, 2021 at 05:20:26PM +0300, Andy Shevchenko wrote:
> Instead of open-coding DIV_ROUND_CLOSEST() and similar use the macros directly.
> While at it, replace numbers with predefined SI metric prefixes.
>
> No functional change intended.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Applied to for-next, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/3] i2c: designware: Fix indentation in the header
2021-07-12 14:20 ` [PATCH v3 3/3] i2c: designware: Fix indentation in the header Andy Shevchenko
@ 2021-08-11 14:44 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2021-08-11 14:44 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-i2c, linux-kernel, Jarkko Nikula, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 266 bytes --]
On Mon, Jul 12, 2021 at 05:20:27PM +0300, Andy Shevchenko wrote:
> In couple of places the indentation makes harder to read the code.
> Fix it to be sane.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Applied to for-next, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-08-11 14:44 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-12 14:20 [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
2021-07-12 14:20 ` [PATCH v3 2/3] i2c: designware: Use DIV_ROUND_CLOSEST() macro Andy Shevchenko
2021-08-11 14:44 ` Wolfram Sang
2021-07-12 14:20 ` [PATCH v3 3/3] i2c: designware: Fix indentation in the header Andy Shevchenko
2021-08-11 14:44 ` Wolfram Sang
2021-08-11 12:22 ` [PATCH v3 1/3] units: Add SI metric prefix definitions Andy Shevchenko
2021-08-11 14:42 ` Wolfram Sang
2021-08-11 14:44 ` Wolfram Sang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.