/linux/drivers/gpu/drm/amd/amdgpu/ |
H A D | amdgpu_ring.h | 33 struct amdgpu_ring; 67 #define to_amdgpu_ring(s) container_of((s), struct amdgpu_ring, sched) 143 struct amdgpu_ring *ring; 155 void amdgpu_fence_driver_clear_job_fences(struct amdgpu_ring *ring); 156 void amdgpu_fence_driver_set_error(struct amdgpu_ring *ring, int error); 157 void amdgpu_fence_driver_force_completion(struct amdgpu_ring *ring); 161 int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring); 162 int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring, 169 int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, 171 int amdgpu_fence_emit_polling(struct amdgpu_ring *rin 288 struct amdgpu_ring { global() struct 290 funcsamdgpu_ring global() argument 291 fence_drvamdgpu_ring global() argument 292 schedamdgpu_ring global() argument 294 ring_objamdgpu_ring global() argument 295 ringamdgpu_ring global() argument 297 ring_backupamdgpu_ring global() argument 298 ring_backup_entries_to_copyamdgpu_ring global() argument 299 rptr_offsamdgpu_ring global() argument 300 rptr_gpu_addramdgpu_ring global() argument 301 rptr_cpu_addramdgpu_ring global() argument 326 ring_sizeamdgpu_ring global() argument 328 max_dwamdgpu_ring global() argument 336 count_dwamdgpu_ring global() argument 337 gpu_addramdgpu_ring global() argument 348 ptr_maskamdgpu_ring global() argument 357 buf_maskamdgpu_ring global() argument 358 idxamdgpu_ring global() argument 359 xcc_idamdgpu_ring global() argument 360 xcp_idamdgpu_ring global() argument 361 meamdgpu_ring global() argument 362 pipeamdgpu_ring global() argument 363 queueamdgpu_ring global() argument 364 mqd_objamdgpu_ring global() argument 365 mqd_gpu_addramdgpu_ring global() argument 366 mqd_ptramdgpu_ring global() argument 367 mqd_sizeamdgpu_ring global() argument 368 eop_gpu_addramdgpu_ring global() argument 369 doorbell_indexamdgpu_ring global() argument 370 use_doorbellamdgpu_ring global() argument 371 use_pollmemamdgpu_ring global() argument 372 wptr_offsamdgpu_ring global() argument 373 wptr_gpu_addramdgpu_ring global() argument 381 wptr_cpu_addramdgpu_ring global() argument 382 fence_offsamdgpu_ring global() argument 383 fence_gpu_addramdgpu_ring global() argument 384 fence_cpu_addramdgpu_ring global() argument 385 current_ctxamdgpu_ring global() argument 386 nameamdgpu_ring global() argument 387 trail_seqamdgpu_ring global() argument 388 trail_fence_offsamdgpu_ring global() argument 389 trail_fence_gpu_addramdgpu_ring global() argument 413 cached_rptramdgpu_ring global() argument [all...] |
H A D | amdgpu_ring_mux.h | 29 #include "amdgpu_ring.h" 31 struct amdgpu_ring; 44 struct amdgpu_ring *ring; 69 struct amdgpu_ring *real_ring; 104 int amdgpu_ring_mux_init(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring, 107 int amdgpu_ring_mux_add_sw_ring(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring); 108 void amdgpu_ring_mux_set_wptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring, u64 wptr); 109 u64 amdgpu_ring_mux_get_wptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring); 110 u64 amdgpu_ring_mux_get_rptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring); 111 void amdgpu_ring_mux_start_ib(struct amdgpu_ring_mux *mux, struct amdgpu_ring *rin [all...] |
H A D | vcn_v2_0.h | 27 extern void vcn_v2_0_dec_ring_insert_start(struct amdgpu_ring *ring); 28 extern void vcn_v2_0_dec_ring_insert_end(struct amdgpu_ring *ring); 29 extern void vcn_v2_0_dec_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count); 30 extern void vcn_v2_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 32 extern void vcn_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job, 34 extern void vcn_v2_0_dec_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, 36 extern void vcn_v2_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, 38 extern void vcn_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, 40 extern int vcn_v2_0_dec_ring_test_ring(struct amdgpu_ring *ring); 42 extern void vcn_v2_0_enc_ring_insert_end(struct amdgpu_ring *rin [all...] |
H A D | jpeg_v4_0_3.h | 58 void jpeg_v4_0_3_dec_ring_emit_ib(struct amdgpu_ring *ring, 62 void jpeg_v4_0_3_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 64 void jpeg_v4_0_3_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, 66 void jpeg_v4_0_3_ring_emit_hdp_flush(struct amdgpu_ring *ring); 67 void jpeg_v4_0_3_dec_ring_nop(struct amdgpu_ring *ring, uint32_t count); 68 void jpeg_v4_0_3_dec_ring_insert_start(struct amdgpu_ring *ring); 69 void jpeg_v4_0_3_dec_ring_insert_end(struct amdgpu_ring *ring); 70 void jpeg_v4_0_3_dec_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, uint32_t val); 71 void jpeg_v4_0_3_dec_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg,
|
H A D | jpeg_v2_0.h | 51 void jpeg_v2_0_dec_ring_insert_start(struct amdgpu_ring *ring); 52 void jpeg_v2_0_dec_ring_insert_end(struct amdgpu_ring *ring); 53 void jpeg_v2_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 55 void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job, 57 void jpeg_v2_0_dec_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, 59 void jpeg_v2_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, 61 void jpeg_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, uint32_t val); 62 void jpeg_v2_0_dec_ring_nop(struct amdgpu_ring *ring, uint32_t count);
|
H A D | amdgpu_uvd.h | 45 struct amdgpu_ring ring; 46 struct amdgpu_ring ring_enc[AMDGPU_MAX_UVD_ENC_RINGS]; 76 int amdgpu_uvd_entity_init(struct amdgpu_device *adev, struct amdgpu_ring *ring); 80 int amdgpu_uvd_get_create_msg(struct amdgpu_ring *ring, uint32_t handle, 82 int amdgpu_uvd_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle, 89 void amdgpu_uvd_ring_begin_use(struct amdgpu_ring *ring); 90 void amdgpu_uvd_ring_end_use(struct amdgpu_ring *ring); 91 int amdgpu_uvd_ring_test_ib(struct amdgpu_ring *ring, long timeout);
|
H A D | vcn_sw_ring.h | 32 void vcn_dec_sw_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, 34 void vcn_dec_sw_ring_insert_end(struct amdgpu_ring *ring); 35 void vcn_dec_sw_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job, 37 void vcn_dec_sw_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, 39 void vcn_dec_sw_ring_emit_vm_flush(struct amdgpu_ring *ring, 41 void vcn_dec_sw_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg,
|
H A D | amdgpu_ring.c | 75 * @ring: amdgpu_ring structure holding ring information 81 int amdgpu_ring_alloc(struct amdgpu_ring *ring, unsigned int ndw) in amdgpu_ring_alloc() 105 * @ring: amdgpu_ring structure holding ring information 112 static void amdgpu_ring_alloc_reemit(struct amdgpu_ring *ring, unsigned int ndw) in amdgpu_ring_alloc_reemit() 127 * @ring: amdgpu_ring structure holding ring information 132 void amdgpu_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count) in amdgpu_ring_insert_nop() 155 * @ring: amdgpu_ring structure holding ring information 160 void amdgpu_ring_generic_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib) in amdgpu_ring_generic_pad_ib() 170 * @ring: amdgpu_ring structure holding ring information 175 void amdgpu_ring_commit(struct amdgpu_ring *rin [all...] |
H A D | amdgpu_ring_mux.c | 27 #include "amdgpu_ring.h" 44 struct amdgpu_ring *ring) in amdgpu_ring_mux_sw_entry() 52 struct amdgpu_ring *ring, in amdgpu_ring_mux_copy_pkt_from_sw_ring() 56 struct amdgpu_ring *real_ring = mux->real_ring; in amdgpu_ring_mux_copy_pkt_from_sw_ring() 150 int amdgpu_ring_mux_init(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring, in amdgpu_ring_mux_init() 195 int amdgpu_ring_mux_add_sw_ring(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring) in amdgpu_ring_mux_add_sw_ring() 213 void amdgpu_ring_mux_set_wptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring, u64 wptr) in amdgpu_ring_mux_set_wptr() 253 u64 amdgpu_ring_mux_get_wptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring) in amdgpu_ring_mux_get_wptr() 282 u64 amdgpu_ring_mux_get_rptr(struct amdgpu_ring_mux *mux, struct amdgpu_ring *ring) in amdgpu_ring_mux_get_rptr() 316 u64 amdgpu_sw_ring_get_rptr_gfx(struct amdgpu_ring *rin [all...] |
H A D | vcn_sw_ring.c | 27 void vcn_dec_sw_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, in vcn_dec_sw_ring_emit_fence() 39 void vcn_dec_sw_ring_insert_end(struct amdgpu_ring *ring) in vcn_dec_sw_ring_insert_end() 44 void vcn_dec_sw_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job, in vcn_dec_sw_ring_emit_ib() 56 void vcn_dec_sw_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, in vcn_dec_sw_ring_emit_reg_wait() 65 void vcn_dec_sw_ring_emit_vm_flush(struct amdgpu_ring *ring, in vcn_dec_sw_ring_emit_vm_flush() 80 void vcn_dec_sw_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, in vcn_dec_sw_ring_emit_wreg()
|
H A D | amdgpu_gfx.h | 31 #include "amdgpu_ring.h" 130 void (*kiq_set_resources)(struct amdgpu_ring *kiq_ring, 132 void (*kiq_map_queues)(struct amdgpu_ring *kiq_ring, 133 struct amdgpu_ring *ring); 134 void (*kiq_unmap_queues)(struct amdgpu_ring *kiq_ring, 135 struct amdgpu_ring *ring, 138 void (*kiq_query_status)(struct amdgpu_ring *kiq_ring, 139 struct amdgpu_ring *ring, 142 void (*kiq_invalidate_tlbs)(struct amdgpu_ring *kiq_ring, 145 void (*kiq_reset_hw_queue)(struct amdgpu_ring *kiq_rin [all...] |
H A D | amdgpu_fence.c | 68 static void amdgpu_fence_write(struct amdgpu_ring *ring, u32 seq) in amdgpu_fence_write() 84 static u32 amdgpu_fence_read(struct amdgpu_ring *ring) in amdgpu_fence_read() 108 int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, in amdgpu_fence_emit() 187 int amdgpu_fence_emit_polling(struct amdgpu_ring *ring, uint32_t *s, in amdgpu_fence_emit_polling() 214 * @ring: pointer to struct amdgpu_ring 218 static void amdgpu_fence_schedule_fallback(struct amdgpu_ring *ring) in amdgpu_fence_schedule_fallback() 227 * @ring: pointer to struct amdgpu_ring 235 bool amdgpu_fence_process(struct amdgpu_ring *ring) in amdgpu_fence_process() 296 struct amdgpu_ring *ring = timer_container_of(ring, t, in amdgpu_fence_fallback() 313 int amdgpu_fence_wait_empty(struct amdgpu_ring *rin [all...] |
H A D | vcn_v4_0_3.h | 35 void vcn_v4_0_3_enc_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, 38 void vcn_v4_0_3_enc_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, 40 void vcn_v4_0_3_enc_ring_emit_vm_flush(struct amdgpu_ring *ring, 42 void vcn_v4_0_3_ring_emit_hdp_flush(struct amdgpu_ring *ring);
|
H A D | jpeg_v1_0.c | 37 static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring); 42 static void jpeg_v1_0_decode_ring_patch_wreg(struct amdgpu_ring *ring, uint32_t *ptr, uint32_t reg_offset, uint32_t val) in jpeg_v1_0_decode_ring_patch_wreg() 57 static void jpeg_v1_0_decode_ring_set_patch_ring(struct amdgpu_ring *ring, uint32_t ptr) in jpeg_v1_0_decode_ring_set_patch_ring() 136 * @ring: amdgpu_ring pointer 140 static uint64_t jpeg_v1_0_decode_ring_get_rptr(struct amdgpu_ring *ring) in jpeg_v1_0_decode_ring_get_rptr() 150 * @ring: amdgpu_ring pointer 154 static uint64_t jpeg_v1_0_decode_ring_get_wptr(struct amdgpu_ring *ring) in jpeg_v1_0_decode_ring_get_wptr() 164 * @ring: amdgpu_ring pointer 168 static void jpeg_v1_0_decode_ring_set_wptr(struct amdgpu_ring *ring) in jpeg_v1_0_decode_ring_set_wptr() 178 * @ring: amdgpu_ring pointe [all...] |
H A D | amdgpu_vcn.h | 303 struct amdgpu_ring ring_dec; 304 struct amdgpu_ring ring_enc[AMDGPU_VCN_MAX_ENC_RINGS]; 518 void amdgpu_vcn_ring_begin_use(struct amdgpu_ring *ring); 519 void amdgpu_vcn_ring_end_use(struct amdgpu_ring *ring); 524 int amdgpu_vcn_dec_ring_test_ring(struct amdgpu_ring *ring); 525 int amdgpu_vcn_dec_ring_test_ib(struct amdgpu_ring *ring, long timeout); 526 int amdgpu_vcn_dec_sw_ring_test_ring(struct amdgpu_ring *ring); 527 int amdgpu_vcn_dec_sw_ring_test_ib(struct amdgpu_ring *ring, long timeout); 528 int amdgpu_vcn_unified_ring_test_ib(struct amdgpu_ring *ring, long timeout); 530 int amdgpu_vcn_enc_ring_test_ring(struct amdgpu_ring *rin [all...] |
H A D | amdgpu_hdp.h | 32 void (*flush_hdp)(struct amdgpu_device *adev, struct amdgpu_ring *ring); 34 struct amdgpu_ring *ring); 48 struct amdgpu_ring *ring);
|
H A D | jpeg_v2_0.c | 87 struct amdgpu_ring *ring; in jpeg_v2_0_sw_init() 162 struct amdgpu_ring *ring = adev->jpeg.inst->ring_dec; in jpeg_v2_0_hw_init() 338 struct amdgpu_ring *ring = adev->jpeg.inst->ring_dec; in jpeg_v2_0_start() 411 * @ring: amdgpu_ring pointer 415 static uint64_t jpeg_v2_0_dec_ring_get_rptr(struct amdgpu_ring *ring) in jpeg_v2_0_dec_ring_get_rptr() 425 * @ring: amdgpu_ring pointer 429 static uint64_t jpeg_v2_0_dec_ring_get_wptr(struct amdgpu_ring *ring) in jpeg_v2_0_dec_ring_get_wptr() 442 * @ring: amdgpu_ring pointer 446 static void jpeg_v2_0_dec_ring_set_wptr(struct amdgpu_ring *ring) in jpeg_v2_0_dec_ring_set_wptr() 461 * @ring: amdgpu_ring pointe [all...] |
H A D | amdgpu_vpe.c | 275 struct amdgpu_ring *ring = &vpe->ring; in amdgpu_vpe_ring_init() 460 static void vpe_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count) in vpe_ring_insert_nop() 472 static uint64_t vpe_get_csa_mc_addr(struct amdgpu_ring *ring, uint32_t vmid) in vpe_get_csa_mc_addr() 487 static void vpe_ring_emit_pred_exec(struct amdgpu_ring *ring, in vpe_ring_emit_pred_exec() 499 static void vpe_ring_emit_ib(struct amdgpu_ring *ring, in vpe_ring_emit_ib() 518 static void vpe_ring_emit_fence(struct amdgpu_ring *ring, uint64_t addr, in vpe_ring_emit_fence() 542 static void vpe_ring_emit_pipeline_sync(struct amdgpu_ring *ring) in vpe_ring_emit_pipeline_sync() 562 static void vpe_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, uint32_t val) in vpe_ring_emit_wreg() 571 static void vpe_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, in vpe_ring_emit_reg_wait() 588 static void vpe_ring_emit_vm_flush(struct amdgpu_ring *rin [all...] |
H A D | amdgpu_jpeg.h | 108 struct amdgpu_ring ring_dec[AMDGPU_MAX_JPEG_RINGS]; 152 void amdgpu_jpeg_ring_begin_use(struct amdgpu_ring *ring); 153 void amdgpu_jpeg_ring_end_use(struct amdgpu_ring *ring); 155 int amdgpu_jpeg_dec_ring_test_ring(struct amdgpu_ring *ring); 156 int amdgpu_jpeg_dec_ring_test_ib(struct amdgpu_ring *ring, long timeout);
|
H A D | uvd_v6_0.c | 73 * @ring: amdgpu_ring pointer 77 static uint64_t uvd_v6_0_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v6_0_ring_get_rptr() 87 * @ring: amdgpu_ring pointer 91 static uint64_t uvd_v6_0_enc_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v6_0_enc_ring_get_rptr() 103 * @ring: amdgpu_ring pointer 107 static uint64_t uvd_v6_0_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v6_0_ring_get_wptr() 117 * @ring: amdgpu_ring pointer 121 static uint64_t uvd_v6_0_enc_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v6_0_enc_ring_get_wptr() 134 * @ring: amdgpu_ring pointer 138 static void uvd_v6_0_ring_set_wptr(struct amdgpu_ring *rin [all...] |
H A D | uvd_v7_0.c | 67 * @ring: amdgpu_ring pointer 71 static uint64_t uvd_v7_0_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v7_0_ring_get_rptr() 81 * @ring: amdgpu_ring pointer 85 static uint64_t uvd_v7_0_enc_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v7_0_enc_ring_get_rptr() 98 * @ring: amdgpu_ring pointer 102 static uint64_t uvd_v7_0_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v7_0_ring_get_wptr() 112 * @ring: amdgpu_ring pointer 116 static uint64_t uvd_v7_0_enc_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v7_0_enc_ring_get_wptr() 132 * @ring: amdgpu_ring pointer 136 static void uvd_v7_0_ring_set_wptr(struct amdgpu_ring *rin [all...] |
H A D | si_dma.c | 50 static uint64_t si_dma_ring_get_rptr(struct amdgpu_ring *ring) in si_dma_ring_get_rptr() 62 static uint64_t si_dma_ring_get_wptr(struct amdgpu_ring *ring) in si_dma_ring_get_wptr() 70 static void si_dma_ring_set_wptr(struct amdgpu_ring *ring) in si_dma_ring_set_wptr() 78 static void si_dma_ring_emit_ib(struct amdgpu_ring *ring, in si_dma_ring_emit_ib() 107 static void si_dma_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, in si_dma_ring_emit_fence() 144 struct amdgpu_ring *ring; in si_dma_start() 202 * @ring: amdgpu_ring structure holding ring information 208 static int si_dma_ring_test_ring(struct amdgpu_ring *ring) in si_dma_ring_test_ring() 253 * @ring: amdgpu_ring structure holding ring information 259 static int si_dma_ring_test_ib(struct amdgpu_ring *rin [all...] |
H A D | vcn_v1_0.h | 27 void vcn_v1_0_ring_end_use(struct amdgpu_ring *ring); 28 void vcn_v1_0_set_pg_for_begin_use(struct amdgpu_ring *ring, bool set_clocks);
|
H A D | uvd_v4_2.c | 54 * @ring: amdgpu_ring pointer 58 static uint64_t uvd_v4_2_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v4_2_ring_get_rptr() 68 * @ring: amdgpu_ring pointer 72 static uint64_t uvd_v4_2_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v4_2_ring_get_wptr() 82 * @ring: amdgpu_ring pointer 86 static void uvd_v4_2_ring_set_wptr(struct amdgpu_ring *ring) in uvd_v4_2_ring_set_wptr() 106 struct amdgpu_ring *ring; in uvd_v4_2_sw_init() 157 struct amdgpu_ring *ring = &adev->uvd.inst->ring; in uvd_v4_2_hw_init() 284 struct amdgpu_ring *ring = &adev->uvd.inst->ring; in uvd_v4_2_start() 470 * @ring: amdgpu_ring pointe [all...] |
H A D | uvd_v3_1.c | 40 * @ring: amdgpu_ring pointer 44 static uint64_t uvd_v3_1_ring_get_rptr(struct amdgpu_ring *ring) in uvd_v3_1_ring_get_rptr() 54 * @ring: amdgpu_ring pointer 58 static uint64_t uvd_v3_1_ring_get_wptr(struct amdgpu_ring *ring) in uvd_v3_1_ring_get_wptr() 68 * @ring: amdgpu_ring pointer 72 static void uvd_v3_1_ring_set_wptr(struct amdgpu_ring *ring) in uvd_v3_1_ring_set_wptr() 82 * @ring: amdgpu_ring pointer 89 static void uvd_v3_1_ring_emit_ib(struct amdgpu_ring *ring, in uvd_v3_1_ring_emit_ib() 103 * @ring: amdgpu_ring pointer 110 static void uvd_v3_1_ring_emit_fence(struct amdgpu_ring *rin [all...] |