Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: sh-msiof: SITMDR1/SIRMDR1 bitfield conversion

Convert MSIOF Transmit and Receive Mode Register 1 field accesses to use
the FIELD_PREP() bitfield access macro.

This gets rid of explicit shifts.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/9685c54e752b8ef4256c9b281e9d8292e71d222e.1747401908.git.geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Geert Uytterhoeven and committed by
Mark Brown
6bae252a 74cb19c9

+24 -21
+24 -21
drivers/spi/spi-sh-msiof.c
··· 7 7 * Copyright (C) 2014-2017 Glider bvba 8 8 */ 9 9 10 + #include <linux/bitfield.h> 10 11 #include <linux/bitmap.h> 11 12 #include <linux/clk.h> 12 13 #include <linux/completion.h> ··· 85 84 86 85 /* SITMDR1 and SIRMDR1 */ 87 86 #define SIMDR1_TRMD BIT(31) /* Transfer Mode (1 = Master mode) */ 88 - #define SIMDR1_SYNCMD_MASK GENMASK(29, 28) /* SYNC Mode */ 89 - #define SIMDR1_SYNCMD_SPI (2 << 28) /* Level mode/SPI */ 90 - #define SIMDR1_SYNCMD_LR (3 << 28) /* L/R mode */ 91 - #define SIMDR1_SYNCAC_SHIFT 25 /* Sync Polarity (1 = Active-low) */ 92 - #define SIMDR1_BITLSB_SHIFT 24 /* MSB/LSB First (1 = LSB first) */ 93 - #define SIMDR1_DTDL_SHIFT 20 /* Data Pin Bit Delay for MSIOF_SYNC */ 94 - #define SIMDR1_SYNCDL_SHIFT 16 /* Frame Sync Signal Timing Delay */ 95 - #define SIMDR1_FLD_MASK GENMASK(3, 2) /* Frame Sync Signal Interval (0-3) */ 96 - #define SIMDR1_FLD_SHIFT 2 87 + #define SIMDR1_SYNCMD GENMASK(29, 28) /* SYNC Mode */ 88 + #define SIMDR1_SYNCMD_SPI 2U /* Level mode/SPI */ 89 + #define SIMDR1_SYNCMD_LR 3U /* L/R mode */ 90 + #define SIMDR1_SYNCAC BIT(25) /* Sync Polarity (1 = Active-low) */ 91 + #define SIMDR1_BITLSB BIT(24) /* MSB/LSB First (1 = LSB first) */ 92 + #define SIMDR1_DTDL GENMASK(22, 20) /* Data Pin Bit Delay for MSIOF_SYNC */ 93 + #define SIMDR1_SYNCDL GENMASK(18, 16) /* Frame Sync Signal Timing Delay */ 94 + #define SIMDR1_FLD GENMASK(3, 2) /* Frame Sync Signal Interval (0-3) */ 97 95 #define SIMDR1_XXSTP BIT(0) /* Transmission/Reception Stop on FIFO */ 98 96 /* SITMDR1 */ 99 97 #define SITMDR1_PCON BIT(30) /* Transfer Signal Connection */ 100 - #define SITMDR1_SYNCCH_MASK GENMASK(27, 26) /* Sync Signal Channel Select */ 101 - #define SITMDR1_SYNCCH_SHIFT 26 /* 0=MSIOF_SYNC, 1=MSIOF_SS1, 2=MSIOF_SS2 */ 98 + #define SITMDR1_SYNCCH GENMASK(27, 26) /* Sync Signal Channel Select */ 99 + /* 0=MSIOF_SYNC, 1=MSIOF_SS1, 2=MSIOF_SS2 */ 102 100 103 101 /* SITMDR2 and SIRMDR2 */ 104 102 #define SIMDR2_BITLEN1(i) (((i) - 1) << 24) /* Data Size (8-32 bits) */ ··· 341 341 return 0; 342 342 } 343 343 344 - val = sh_msiof_get_delay_bit(p->info->dtdl) << SIMDR1_DTDL_SHIFT; 345 - val |= sh_msiof_get_delay_bit(p->info->syncdl) << SIMDR1_SYNCDL_SHIFT; 344 + val = FIELD_PREP(SIMDR1_DTDL, sh_msiof_get_delay_bit(p->info->dtdl)) | 345 + FIELD_PREP(SIMDR1_SYNCDL, 346 + sh_msiof_get_delay_bit(p->info->syncdl)); 346 347 347 348 return val; 348 349 } ··· 362 361 * 1 0 11 11 0 0 363 362 * 1 1 11 11 1 1 364 363 */ 365 - tmp = SIMDR1_SYNCMD_SPI | 1 << SIMDR1_FLD_SHIFT | SIMDR1_XXSTP; 366 - tmp |= !cs_high << SIMDR1_SYNCAC_SHIFT; 367 - tmp |= lsb_first << SIMDR1_BITLSB_SHIFT; 364 + tmp = FIELD_PREP(SIMDR1_SYNCMD, SIMDR1_SYNCMD_SPI) | 365 + FIELD_PREP(SIMDR1_FLD, 1) | SIMDR1_XXSTP | 366 + FIELD_PREP(SIMDR1_SYNCAC, !cs_high) | 367 + FIELD_PREP(SIMDR1_BITLSB, lsb_first); 368 368 tmp |= sh_msiof_spi_get_dtdl_and_syncdl(p); 369 369 if (spi_controller_is_target(p->ctlr)) { 370 370 sh_msiof_write(p, SITMDR1, tmp | SITMDR1_PCON); 371 371 } else { 372 372 sh_msiof_write(p, SITMDR1, 373 373 tmp | SIMDR1_TRMD | SITMDR1_PCON | 374 - (ss < MAX_SS ? ss : 0) << SITMDR1_SYNCCH_SHIFT); 374 + FIELD_PREP(SITMDR1_SYNCCH, 375 + ss < MAX_SS ? ss : 0)); 375 376 } 376 377 if (p->ctlr->flags & SPI_CONTROLLER_MUST_TX) { 377 378 /* These bits are reserved if RX needs TX */ ··· 582 579 return 0; 583 580 584 581 /* Configure native chip select mode/polarity early */ 585 - clr = SIMDR1_SYNCMD_MASK; 586 - set = SIMDR1_SYNCMD_SPI; 582 + clr = SIMDR1_SYNCMD; 583 + set = FIELD_PREP(SIMDR1_SYNCMD, SIMDR1_SYNCMD_SPI); 587 584 if (spi->mode & SPI_CS_HIGH) 588 - clr |= BIT(SIMDR1_SYNCAC_SHIFT); 585 + clr |= SIMDR1_SYNCAC; 589 586 else 590 - set |= BIT(SIMDR1_SYNCAC_SHIFT); 587 + set |= SIMDR1_SYNCAC; 591 588 pm_runtime_get_sync(&p->pdev->dev); 592 589 tmp = sh_msiof_read(p, SITMDR1) & ~clr; 593 590 sh_msiof_write(p, SITMDR1, tmp | set | SIMDR1_TRMD | SITMDR1_PCON);