spi: sh-msiof: SITMDR2 and SIRMDR2 bitfield conversion
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 16 May 2025 13:32:12 +0000 (15:32 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 19 May 2025 10:55:26 +0000 (11:55 +0100)
Convert MSIOF Transmit and Receive Mode Register 2 field accesses to use
the FIELD_PREP() bitfield access macro.

This gets rid of explicit shifts and custom field preparation macros.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/135b92d010a71e2c224feab3a5792724b4e60ff1.1747401908.git.geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-sh-msiof.c

index fb83b049690e02079602f4e6f251bb370ef9ab91..51a9e89364756af00a9b89398453e5978008b835 100644 (file)
@@ -100,8 +100,8 @@ struct sh_msiof_spi_priv {
                                                /* 0=MSIOF_SYNC, 1=MSIOF_SS1, 2=MSIOF_SS2 */
 
 /* SITMDR2 and SIRMDR2 */
-#define SIMDR2_BITLEN1(i)      (((i) - 1) << 24) /* Data Size (8-32 bits) */
-#define SIMDR2_WDLEN1(i)       (((i) - 1) << 16) /* Word Count (1-64/256 (SH, A1))) */
+#define SIMDR2_BITLEN1         GENMASK(28, 24) /* Data Size (8-32 bits) */
+#define SIMDR2_WDLEN1          GENMASK(23, 16) /* Word Count (1-64/256 (SH, A1))) */
 #define SIMDR2_GRPMASK1                BIT(0)          /* Group Output Mask 1 (SH, A1) */
 
 /* SITSCR and SIRSCR */
@@ -397,7 +397,8 @@ static void sh_msiof_spi_set_mode_regs(struct sh_msiof_spi_priv *p,
                                       const void *tx_buf, void *rx_buf,
                                       u32 bits, u32 words)
 {
-       u32 dr2 = SIMDR2_BITLEN1(bits) | SIMDR2_WDLEN1(words);
+       u32 dr2 = FIELD_PREP(SIMDR2_BITLEN1, bits - 1) |
+                 FIELD_PREP(SIMDR2_WDLEN1, words - 1);
 
        if (tx_buf || (p->ctlr->flags & SPI_CONTROLLER_MUST_TX))
                sh_msiof_write(p, SITMDR2, dr2);
@@ -931,6 +932,7 @@ static int sh_msiof_transfer_one(struct spi_controller *ctlr,
                                 struct spi_transfer *t)
 {
        struct sh_msiof_spi_priv *p = spi_controller_get_devdata(ctlr);
+       unsigned int max_wdlen = FIELD_MAX(SIMDR2_WDLEN1) + 1;
        void (*copy32)(u32 *, const u32 *, unsigned int);
        void (*tx_fifo)(struct sh_msiof_spi_priv *, const void *, unsigned int,
                        unsigned int);
@@ -940,7 +942,6 @@ static int sh_msiof_transfer_one(struct spi_controller *ctlr,
        void *rx_buf = t->rx_buf;
        unsigned int len = t->len;
        unsigned int bits = t->bits_per_word;
-       unsigned int max_wdlen = 256;
        unsigned int bytes_per_word;
        unsigned int words;
        int n;