[PATCH v2 1/3] mtd: nand: lpc32xx_slc: improve SLCTAC_*() macro definitions
Vladimir Zapolskiy
vz at mleia.com
Wed Sep 30 22:20:12 PDT 2015
On 01.10.2015 02:23, Vladimir Zapolskiy wrote:
> No functional change, move bitfield calculations to macro
> definitions with added clock rate argument, which are in turn defined
> by new common SLCTAC_CLOCKS(c, n, s) macro definition.
>
> Signed-off-by: Vladimir Zapolskiy <vz at mleia.com>
> ---
> Changes from v1 to v2:
> * none, new change
>
> drivers/mtd/nand/lpc32xx_slc.c | 27 +++++++++++++++------------
> 1 file changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/mtd/nand/lpc32xx_slc.c b/drivers/mtd/nand/lpc32xx_slc.c
> index abfec13..9ac0f3b 100644
> --- a/drivers/mtd/nand/lpc32xx_slc.c
> +++ b/drivers/mtd/nand/lpc32xx_slc.c
> @@ -94,22 +94,25 @@
> /**********************************************************************
> * slc_tac register definitions
> **********************************************************************/
> +/* Computation of clock cycles on basis of controller and device clock rates */
> +#define SLCTAC_CLOCKS(c, n, s) (((1 + (c / n)) & 0xF) << s)
> +
> /* Clock setting for RDY write sample wait time in 2*n clocks */
> #define SLCTAC_WDR(n) (((n) & 0xF) << 28)
> /* Write pulse width in clock cycles, 1 to 16 clocks */
> -#define SLCTAC_WWIDTH(n) (((n) & 0xF) << 24)
> +#define SLCTAC_WWIDTH(c, n) (SLCTAC_CLOCKS(c, n, 24))
> /* Write hold time of control and data signals, 1 to 16 clocks */
> -#define SLCTAC_WHOLD(n) (((n) & 0xF) << 20)
> +#define SLCTAC_WHOLD(c, n) (SLCTAC_CLOCKS(c, n, 20))
> /* Write setup time of control and data signals, 1 to 16 clocks */
> -#define SLCTAC_WSETUP(n) (((n) & 0xF) << 16)
> +#define SLCTAC_WSETUP(c, n) (SLCTAC_CLOCKS(c, n, 16))
> /* Clock setting for RDY read sample wait time in 2*n clocks */
> #define SLCTAC_RDR(n) (((n) & 0xF) << 12)
> /* Read pulse width in clock cycles, 1 to 16 clocks */
> -#define SLCTAC_RWIDTH(n) (((n) & 0xF) << 8)
> +#define SLCTAC_RWIDTH(c, n) (SLCTAC_CLOCKS(c, n, 8))
> /* Read hold time of control and data signals, 1 to 16 clocks */
> -#define SLCTAC_RHOLD(n) (((n) & 0xF) << 4)
> +#define SLCTAC_RHOLD(c, n) (SLCTAC_CLOCKS(c, n, 4))
> /* Read setup time of control and data signals, 1 to 16 clocks */
> -#define SLCTAC_RSETUP(n) (((n) & 0xF) << 0)
> +#define SLCTAC_RSETUP(c, n) (SLCTAC_CLOCKS(c, n, 0))
>
Anticipating a question about not parenthesized arguments, I don't know,
if more parentheses around arguments in these macro definitions are
needed, because there is no other potential usage of them.
Please let me know, if you think different, I'll fix it.
--
With best wishes,
Vladimir
More information about the linux-mtd
mailing list