Lines Matching refs:stream_map

162 	int (*invalidate_tlb)(struct apple_dart_stream_map *stream_map);
294 #define for_each_stream_map(i, base, stream_map) \
295 for (i = 0, stream_map = &(base)->stream_maps[0]; \
296 i < MAX_DARTS_PER_DEVICE && stream_map->dart; \
297 stream_map = &(base)->stream_maps[++i])
308 apple_dart_hw_enable_translation(struct apple_dart_stream_map *stream_map)
310 struct apple_dart *dart = stream_map->dart;
313 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
317 static void apple_dart_hw_disable_dma(struct apple_dart_stream_map *stream_map)
319 struct apple_dart *dart = stream_map->dart;
322 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
327 apple_dart_hw_enable_bypass(struct apple_dart_stream_map *stream_map)
329 struct apple_dart *dart = stream_map->dart;
332 WARN_ON(!stream_map->dart->supports_bypass);
333 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
338 static void apple_dart_hw_set_ttbr(struct apple_dart_stream_map *stream_map,
341 struct apple_dart *dart = stream_map->dart;
345 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
351 static void apple_dart_hw_clear_ttbr(struct apple_dart_stream_map *stream_map,
354 struct apple_dart *dart = stream_map->dart;
357 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams)
362 apple_dart_hw_clear_all_ttbrs(struct apple_dart_stream_map *stream_map)
366 for (i = 0; i < stream_map->dart->hw->ttbr_count; ++i)
367 apple_dart_hw_clear_ttbr(stream_map, i);
371 apple_dart_t8020_hw_stream_command(struct apple_dart_stream_map *stream_map,
378 spin_lock_irqsave(&stream_map->dart->lock, flags);
380 for (i = 0; i < BITS_TO_U32(stream_map->dart->num_streams); i++)
381 writel(stream_map->sidmap[i],
382 stream_map->dart->regs + DART_T8020_STREAM_SELECT + 4 * i);
383 writel(command, stream_map->dart->regs + DART_T8020_STREAM_COMMAND);
386 stream_map->dart->regs + DART_T8020_STREAM_COMMAND, command_reg,
390 spin_unlock_irqrestore(&stream_map->dart->lock, flags);
393 dev_err(stream_map->dart->dev,
395 command, stream_map->sidmap[0]);
403 apple_dart_t8110_hw_tlb_command(struct apple_dart_stream_map *stream_map,
406 struct apple_dart *dart = stream_map->dart;
413 for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) {
431 dev_err(stream_map->dart->dev,
441 apple_dart_t8020_hw_invalidate_tlb(struct apple_dart_stream_map *stream_map)
444 stream_map, DART_T8020_STREAM_COMMAND_INVALIDATE);
448 apple_dart_t8110_hw_invalidate_tlb(struct apple_dart_stream_map *stream_map)
451 stream_map, DART_T8110_TLB_CMD_OP_FLUSH_SID);
457 struct apple_dart_stream_map stream_map;
467 stream_map.dart = dart;
468 bitmap_zero(stream_map.sidmap, DART_MAX_STREAMS);
469 bitmap_set(stream_map.sidmap, 0, dart->num_streams);
470 apple_dart_hw_disable_dma(&stream_map);
471 apple_dart_hw_clear_all_ttbrs(&stream_map);
483 return dart->hw->invalidate_tlb(&stream_map);
490 struct apple_dart_stream_map stream_map;
493 stream_map.dart = domain_stream_map->dart;
495 for (j = 0; j < BITS_TO_LONGS(stream_map.dart->num_streams); j++)
496 stream_map.sidmap[j] = atomic_long_read(&domain_stream_map->sidmap[j]);
498 stream_map.dart->hw->invalidate_tlb(&stream_map);
560 struct apple_dart_stream_map *stream_map)
567 apple_dart_hw_set_ttbr(stream_map, i,
569 for (; i < stream_map->dart->hw->ttbr_count; ++i)
570 apple_dart_hw_clear_ttbr(stream_map, i);
572 apple_dart_hw_enable_translation(stream_map);
573 stream_map->dart->hw->invalidate_tlb(stream_map);
666 struct apple_dart_stream_map *stream_map;
678 for_each_stream_map(i, cfg, stream_map)
679 apple_dart_setup_translation(dart_domain, stream_map);
687 struct apple_dart_stream_map *stream_map;
693 for_each_stream_map(i, cfg, stream_map)
694 apple_dart_hw_enable_bypass(stream_map);
711 struct apple_dart_stream_map *stream_map;
714 for_each_stream_map(i, cfg, stream_map)
715 apple_dart_hw_disable_dma(stream_map);
731 struct apple_dart_stream_map *stream_map;
737 for_each_stream_map(i, cfg, stream_map)
739 dev, stream_map->dart->dev,
836 struct apple_dart_stream_map *stream_map;
841 for_each_stream_map(i, group_master_cfg, stream_map)
842 for_each_set_bit(sid, stream_map->sidmap, stream_map->dart->num_streams)
843 stream_map->dart->sid2group[sid] = NULL;
876 struct apple_dart_stream_map *stream_map;
883 for_each_stream_map(i, cfg, stream_map) {
884 for_each_set_bit(sid, stream_map->sidmap, stream_map->dart->num_streams) {
886 stream_map->dart->sid2group[sid];
936 for_each_stream_map(i, cfg, stream_map)
937 for_each_set_bit(sid, stream_map->sidmap, stream_map->dart->num_streams)
938 stream_map->dart->sid2group[sid] = group;