clk: sunxi-ng: nkmp: Explain why zero width check is needed
authorJernej Skrabec <jernej.skrabec@siol.net>
Wed, 3 Apr 2019 15:14:04 +0000 (17:14 +0200)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Thu, 4 Apr 2019 07:32:32 +0000 (09:32 +0200)
Add an explanation why zero width check is needed when generating factor
mask using GENMASK() macro.

Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
drivers/clk/sunxi-ng/ccu_nkmp.c

index 69dfc6de1c4e6dc37077e3639fb4172b2325a11d..cbcdf664f33604c283a64c2e57dea8342537a675 100644 (file)
@@ -186,6 +186,12 @@ static int ccu_nkmp_set_rate(struct clk_hw *hw, unsigned long rate,
 
        ccu_nkmp_find_best(parent_rate, rate, &_nkmp);
 
+       /*
+        * If width is 0, GENMASK() macro may not generate expected mask (0)
+        * as it falls under undefined behaviour by C standard due to shifts
+        * which are equal or greater than width of left operand. This can
+        * be easily avoided by explicitly checking if width is 0.
+        */
        if (nkmp->n.width)
                n_mask = GENMASK(nkmp->n.width + nkmp->n.shift - 1,
                                 nkmp->n.shift);