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.

soc: apple: sart: Make allow flags SART version dependent

SART versions that uses different allow flags will be added.

Reviewed-by: Sven Peter <sven@kernel.org>
Signed-off-by: Nick Chan <towinchenmi@gmail.com>
Link: https://lore.kernel.org/r/20250821-t8015-nvme-v3-4-14a4178adf68@gmail.com
Signed-off-by: Sven Peter <sven@kernel.org>

authored by

Nick Chan and committed by
Sven Peter
8409ebe2 940ce882

+9 -4
+9 -4
drivers/soc/apple/sart.c
··· 25 25 26 26 #define APPLE_SART_MAX_ENTRIES 16 27 27 28 - /* This is probably a bitfield but the exact meaning of each bit is unknown. */ 29 - #define APPLE_SART_FLAGS_ALLOW 0xff 30 - 31 28 /* SARTv2 registers */ 32 29 #define APPLE_SART2_CONFIG(idx) (0x00 + 4 * (idx)) 33 30 #define APPLE_SART2_CONFIG_FLAGS GENMASK(31, 24) ··· 34 37 35 38 #define APPLE_SART2_PADDR(idx) (0x40 + 4 * (idx)) 36 39 #define APPLE_SART2_PADDR_SHIFT 12 40 + 41 + #define APPLE_SART2_FLAGS_ALLOW 0xff 37 42 38 43 /* SARTv3 registers */ 39 44 #define APPLE_SART3_CONFIG(idx) (0x00 + 4 * (idx)) ··· 47 48 #define APPLE_SART3_SIZE_SHIFT 12 48 49 #define APPLE_SART3_SIZE_MAX GENMASK(29, 0) 49 50 51 + #define APPLE_SART3_FLAGS_ALLOW 0xff 52 + 50 53 struct apple_sart_ops { 51 54 void (*get_entry)(struct apple_sart *sart, int index, u8 *flags, 52 55 phys_addr_t *paddr, size_t *size); 53 56 void (*set_entry)(struct apple_sart *sart, int index, u8 flags, 54 57 phys_addr_t paddr_shifted, size_t size_shifted); 58 + /* This is probably a bitfield but the exact meaning of each bit is unknown. */ 59 + unsigned int flags_allow; 55 60 unsigned int size_shift; 56 61 unsigned int paddr_shift; 57 62 size_t size_max; ··· 98 95 static struct apple_sart_ops sart_ops_v2 = { 99 96 .get_entry = sart2_get_entry, 100 97 .set_entry = sart2_set_entry, 98 + .flags_allow = APPLE_SART2_FLAGS_ALLOW, 101 99 .size_shift = APPLE_SART2_CONFIG_SIZE_SHIFT, 102 100 .paddr_shift = APPLE_SART2_PADDR_SHIFT, 103 101 .size_max = APPLE_SART2_CONFIG_SIZE_MAX, ··· 126 122 static struct apple_sart_ops sart_ops_v3 = { 127 123 .get_entry = sart3_get_entry, 128 124 .set_entry = sart3_set_entry, 125 + .flags_allow = APPLE_SART3_FLAGS_ALLOW, 129 126 .size_shift = APPLE_SART3_SIZE_SHIFT, 130 127 .paddr_shift = APPLE_SART3_PADDR_SHIFT, 131 128 .size_max = APPLE_SART3_SIZE_MAX, ··· 238 233 if (test_and_set_bit(i, &sart->used_entries)) 239 234 continue; 240 235 241 - ret = sart_set_entry(sart, i, APPLE_SART_FLAGS_ALLOW, paddr, 236 + ret = sart_set_entry(sart, i, sart->ops->flags_allow, paddr, 242 237 size); 243 238 if (ret) { 244 239 dev_dbg(sart->dev,