Skip to content

Commit c58a17a

Browse files
svenpeter42joergroedel
authored andcommitted
iommu/apple-dart: Write to all DART_T8020_STREAM_SELECT
We're about to add support for a DART variant that use more than 16 streams and requires writing to two separate stream select registers when issuing TLB flushes. Acked-by: Hector Martin <marcan@marcan.st> Signed-off-by: Sven Peter <sven@svenpeter.dev> Link: https://lore.kernel.org/r/20231126151701.16534-3-sven@svenpeter.dev Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent a08bd8d commit c58a17a

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/iommu/apple-dart.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,14 @@ apple_dart_t8020_hw_stream_command(struct apple_dart_stream_map *stream_map,
368368
u32 command)
369369
{
370370
unsigned long flags;
371-
int ret;
371+
int ret, i;
372372
u32 command_reg;
373373

374374
spin_lock_irqsave(&stream_map->dart->lock, flags);
375375

376-
writel(stream_map->sidmap[0], stream_map->dart->regs + DART_T8020_STREAM_SELECT);
376+
for (i = 0; i < BITS_TO_U32(stream_map->dart->num_streams); i++)
377+
writel(stream_map->sidmap[i],
378+
stream_map->dart->regs + DART_T8020_STREAM_SELECT + 4 * i);
377379
writel(command, stream_map->dart->regs + DART_T8020_STREAM_COMMAND);
378380

379381
ret = readl_poll_timeout_atomic(

0 commit comments

Comments
 (0)