[U-Boot] [PATCH 1/5] mmc: uniphier-sd: Factor out register IO

Masahiro Yamada yamada.masahiro at socionext.com
Mon Aug 7 02:30:25 UTC 2017


Hi Marek,


2017-08-06 4:23 GMT+09:00 Marek Vasut <marek.vasut at gmail.com>:
> On 08/03/2017 02:36 PM, Masahiro Yamada wrote:
>> Hi Marek,
>
> Hi,
>
> [...]
>
>>> +static u32 uniphier_sd_readl(struct uniphier_sd_priv *priv, const u32 reg)
>>
>> "const" is unneeded here.
>
> Why? The function should not modify reg , so it is const.


Because "const" is useless here.

The "reg" is not a pointer, so it is obvious
that there is no impact to the callers.



Moreover, whether "reg" is constant or not
depends on how you implement the function.


If you force "const" to the argument, the only choice for the implementation
will be as follows:



static u32 uniphier_sd_readl(struct uniphier_sd_priv *priv, const u32 reg)
{
      if (priv->caps & UNIPHIER_SD_CAP_64BIT)
             return readl(priv->regbase + (reg << 1));
      else
             return readl(priv->regbase + reg);
}



If you want to implement the function as follows, you need to drop "const".

static u32 uniphier_sd_readl(struct uniphier_sd_priv *priv, u32 reg)
{
      if (priv->caps & UNIPHIER_SD_CAP_64BIT)
              reg <<= 1;

      return readl(priv->regbase + reg);
}





>> Also, could you use "unsigned int" or "int" for reg?
>
> Why?


Because "unsigned int" or "int" is more natural.

No reason to use a fixed width variable for the address offset.






-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list