LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [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	[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	[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	[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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).