bitmap-for-6.18-rc2

- rust: bitmap: clean Rust 1.92.0 `unused_unsafe` warning (Miguel);
  - FIELD_PREP_WM16() rework leftover (Nicolas).
 -----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEEi8GdvG6xMhdgpu/4sUSA/TofvsgFAmjvuUIACgkQsUSA/Tof
 vshJcgv9Hf2YD5QP5QJiwRIrusTQF/jq8OcNMF3dzpIZQTXWQSA16y/GPNRcRwCB
 4B5RQbqy4wfOZZFDFoOKeyW7clN06XTPH8BNELX+IjGmPDBLXBS0X1fooC2JSUpY
 +Othx4vvay/KtUhfbeN1qw6H3IT2BS3WEgB8ke+P/bOJBbBnDzoDM1SqYbwnOWZ6
 5ZBKix1QOCIzUhGijevQmkT3kBmR1lFM/DTmXo3P5kqp87jmMhIibKhp6+xsWbkN
 gA9iCCJdpqCT9M4EaYLliCv18GuagfXSQzLspQl8V4I9SRlei0f33Ylwv0uAI1OD
 ShZN4b8ARkxDQdaFOnSKSDAh1XpNGfUC0HLwwW9om/NrBT5ikgdG04WWat96xsvl
 N54qT/8yreQPcCJZvkjbqxmI0Ga4pscAbeo+HQ9sWoMRxwtEsyln/RutH2Pa8DRA
 rNaQP1oRc3CbxCtcPMDaj1e2rF1J0eZnseJggLEOi6kL6uI1vi65fY5ALf+zcaSd
 2Wofwg0s
 =kLaJ
 -----END PGP SIGNATURE-----

Merge tag 'bitmap-for-v6.18-rc2' of https://github.com/norov/linux

Pull bitmap fixes from Yury Norov:
 "A "unnecessary `unsafe`" warning fix for bitmap/rust, and one leftover
  patch for FIELD_PREP_WM16() conversion.

   - rust: bitmap: clean Rust 1.92.0 `unused_unsafe` warning (Miguel)

   - FIELD_PREP_WM16() rework leftover (Nicolas)"

* tag 'bitmap-for-v6.18-rc2' of https://github.com/norov/linux:
  PM / devfreq: rockchip-dfi: switch to FIELD_PREP_WM16 macro
  rust: bitmap: clean Rust 1.92.0 `unused_unsafe` warning
This commit is contained in:
Linus Torvalds 2025-10-15 08:48:17 -07:00
commit 5a6f65d150
2 changed files with 24 additions and 23 deletions

View File

@ -20,6 +20,7 @@
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/bitfield.h>
#include <linux/hw_bitfield.h>
#include <linux/bits.h>
#include <linux/perf_event.h>
@ -30,8 +31,6 @@
#define DMC_MAX_CHANNELS 4
#define HIWORD_UPDATE(val, mask) ((val) | (mask) << 16)
/* DDRMON_CTRL */
#define DDRMON_CTRL 0x04
#define DDRMON_CTRL_LPDDR5 BIT(6)
@ -41,10 +40,6 @@
#define DDRMON_CTRL_LPDDR23 BIT(2)
#define DDRMON_CTRL_SOFTWARE_EN BIT(1)
#define DDRMON_CTRL_TIMER_CNT_EN BIT(0)
#define DDRMON_CTRL_DDR_TYPE_MASK (DDRMON_CTRL_LPDDR5 | \
DDRMON_CTRL_DDR4 | \
DDRMON_CTRL_LPDDR4 | \
DDRMON_CTRL_LPDDR23)
#define DDRMON_CTRL_LP5_BANK_MODE_MASK GENMASK(8, 7)
#define DDRMON_CH0_WR_NUM 0x20
@ -124,27 +119,31 @@ struct rockchip_dfi {
unsigned int count_multiplier; /* number of data clocks per count */
};
static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctrl,
u32 *mask)
static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctrl)
{
u32 ddrmon_ver;
*mask = DDRMON_CTRL_DDR_TYPE_MASK;
switch (dfi->ddr_type) {
case ROCKCHIP_DDRTYPE_LPDDR2:
case ROCKCHIP_DDRTYPE_LPDDR3:
*ctrl = DDRMON_CTRL_LPDDR23;
*ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 1) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 0);
break;
case ROCKCHIP_DDRTYPE_LPDDR4:
case ROCKCHIP_DDRTYPE_LPDDR4X:
*ctrl = DDRMON_CTRL_LPDDR4;
*ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 1) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 0);
break;
case ROCKCHIP_DDRTYPE_LPDDR5:
ddrmon_ver = readl_relaxed(dfi->regs);
if (ddrmon_ver < 0x40) {
*ctrl = DDRMON_CTRL_LPDDR5 | dfi->lp5_bank_mode;
*mask |= DDRMON_CTRL_LP5_BANK_MODE_MASK;
*ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 1) |
FIELD_PREP_WM16(DDRMON_CTRL_LP5_BANK_MODE_MASK,
dfi->lp5_bank_mode);
break;
}
@ -172,7 +171,6 @@ static int rockchip_dfi_enable(struct rockchip_dfi *dfi)
void __iomem *dfi_regs = dfi->regs;
int i, ret = 0;
u32 ctrl;
u32 ctrl_mask;
mutex_lock(&dfi->mutex);
@ -186,7 +184,7 @@ static int rockchip_dfi_enable(struct rockchip_dfi *dfi)
goto out;
}
ret = rockchip_dfi_ddrtype_to_ctrl(dfi, &ctrl, &ctrl_mask);
ret = rockchip_dfi_ddrtype_to_ctrl(dfi, &ctrl);
if (ret)
goto out;
@ -196,15 +194,16 @@ static int rockchip_dfi_enable(struct rockchip_dfi *dfi)
continue;
/* clear DDRMON_CTRL setting */
writel_relaxed(HIWORD_UPDATE(0, DDRMON_CTRL_TIMER_CNT_EN |
DDRMON_CTRL_SOFTWARE_EN | DDRMON_CTRL_HARDWARE_EN),
writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_TIMER_CNT_EN, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0) |
FIELD_PREP_WM16(DDRMON_CTRL_HARDWARE_EN, 0),
dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL);
writel_relaxed(HIWORD_UPDATE(ctrl, ctrl_mask),
dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL);
writel_relaxed(ctrl, dfi_regs + i * dfi->ddrmon_stride +
DDRMON_CTRL);
/* enable count, use software mode */
writel_relaxed(HIWORD_UPDATE(DDRMON_CTRL_SOFTWARE_EN, DDRMON_CTRL_SOFTWARE_EN),
writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 1),
dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL);
if (dfi->ddrmon_ctrl_single)
@ -234,8 +233,8 @@ static void rockchip_dfi_disable(struct rockchip_dfi *dfi)
if (!(dfi->channel_mask & BIT(i)))
continue;
writel_relaxed(HIWORD_UPDATE(0, DDRMON_CTRL_SOFTWARE_EN),
dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL);
writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0),
dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL);
if (dfi->ddrmon_ctrl_single)
break;

View File

@ -166,6 +166,7 @@ impl core::ops::Deref for BitmapVec {
fn deref(&self) -> &Bitmap {
let ptr = if self.nbits <= BITS_PER_LONG {
// SAFETY: Bitmap is represented inline.
#[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")]
unsafe { core::ptr::addr_of!(self.repr.bitmap) }
} else {
// SAFETY: Bitmap is represented as array of `unsigned long`.
@ -182,6 +183,7 @@ impl core::ops::DerefMut for BitmapVec {
fn deref_mut(&mut self) -> &mut Bitmap {
let ptr = if self.nbits <= BITS_PER_LONG {
// SAFETY: Bitmap is represented inline.
#[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")]
unsafe { core::ptr::addr_of_mut!(self.repr.bitmap) }
} else {
// SAFETY: Bitmap is represented as array of `unsigned long`.