Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/jpeg: Move parse_cs to amdgpu_jpeg.c

Rename jpeg_v2_dec_ring_parse_cs to amdgpu_jpeg_dec_parse_cs
and move it to amdgpu_jpeg.c as it is shared among jpeg versions.

Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Sathishkumar S and committed by
Alex Deucher
28f75f9b 16973985

+83 -70
+65
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
··· 539 539 drm_printf(p, "\nInactive Instance:JPEG%d\n", i); 540 540 } 541 541 } 542 + 543 + static inline bool amdgpu_jpeg_reg_valid(u32 reg) 544 + { 545 + if (reg < JPEG_REG_RANGE_START || reg > JPEG_REG_RANGE_END || 546 + (reg >= JPEG_ATOMIC_RANGE_START && reg <= JPEG_ATOMIC_RANGE_END)) 547 + return false; 548 + else 549 + return true; 550 + } 551 + 552 + /** 553 + * amdgpu_jpeg_dec_parse_cs - command submission parser 554 + * 555 + * @parser: Command submission parser context 556 + * @job: the job to parse 557 + * @ib: the IB to parse 558 + * 559 + * Parse the command stream, return -EINVAL for invalid packet, 560 + * 0 otherwise 561 + */ 562 + 563 + int amdgpu_jpeg_dec_parse_cs(struct amdgpu_cs_parser *parser, 564 + struct amdgpu_job *job, 565 + struct amdgpu_ib *ib) 566 + { 567 + u32 i, reg, res, cond, type; 568 + struct amdgpu_device *adev = parser->adev; 569 + 570 + for (i = 0; i < ib->length_dw ; i += 2) { 571 + reg = CP_PACKETJ_GET_REG(ib->ptr[i]); 572 + res = CP_PACKETJ_GET_RES(ib->ptr[i]); 573 + cond = CP_PACKETJ_GET_COND(ib->ptr[i]); 574 + type = CP_PACKETJ_GET_TYPE(ib->ptr[i]); 575 + 576 + if (res) /* only support 0 at the moment */ 577 + return -EINVAL; 578 + 579 + switch (type) { 580 + case PACKETJ_TYPE0: 581 + if (cond != PACKETJ_CONDITION_CHECK0 || 582 + !amdgpu_jpeg_reg_valid(reg)) { 583 + dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 584 + return -EINVAL; 585 + } 586 + break; 587 + case PACKETJ_TYPE3: 588 + if (cond != PACKETJ_CONDITION_CHECK3 || 589 + !amdgpu_jpeg_reg_valid(reg)) { 590 + dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 591 + return -EINVAL; 592 + } 593 + break; 594 + case PACKETJ_TYPE6: 595 + if (ib->ptr[i] == CP_PACKETJ_NOP) 596 + continue; 597 + dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 598 + return -EINVAL; 599 + default: 600 + dev_err(adev->dev, "Unknown packet type %d !\n", type); 601 + return -EINVAL; 602 + } 603 + } 604 + 605 + return 0; 606 + }
+10
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.h
··· 25 25 #define __AMDGPU_JPEG_H__ 26 26 27 27 #include "amdgpu_ras.h" 28 + #include "amdgpu_cs.h" 28 29 29 30 #define AMDGPU_MAX_JPEG_INSTANCES 4 30 31 #define AMDGPU_MAX_JPEG_RINGS 10 31 32 #define AMDGPU_MAX_JPEG_RINGS_4_0_3 8 33 + 34 + #define JPEG_REG_RANGE_START 0x4000 35 + #define JPEG_REG_RANGE_END 0x41c2 36 + #define JPEG_ATOMIC_RANGE_START 0x4120 37 + #define JPEG_ATOMIC_RANGE_END 0x412A 38 + 32 39 33 40 #define AMDGPU_JPEG_HARVEST_JPEG0 (1 << 0) 34 41 #define AMDGPU_JPEG_HARVEST_JPEG1 (1 << 1) ··· 177 170 const struct amdgpu_hwip_reg_entry *reg, u32 count); 178 171 void amdgpu_jpeg_dump_ip_state(struct amdgpu_ip_block *ip_block); 179 172 void amdgpu_jpeg_print_ip_state(struct amdgpu_ip_block *ip_block, struct drm_printer *p); 173 + int amdgpu_jpeg_dec_parse_cs(struct amdgpu_cs_parser *parser, 174 + struct amdgpu_job *job, 175 + struct amdgpu_ib *ib); 180 176 181 177 #endif /*__AMDGPU_JPEG_H__*/
+1 -57
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
··· 23 23 24 24 #include "amdgpu.h" 25 25 #include "amdgpu_jpeg.h" 26 - #include "amdgpu_cs.h" 27 26 #include "amdgpu_pm.h" 28 27 #include "soc15.h" 29 28 #include "soc15d.h" ··· 805 806 .get_rptr = jpeg_v2_0_dec_ring_get_rptr, 806 807 .get_wptr = jpeg_v2_0_dec_ring_get_wptr, 807 808 .set_wptr = jpeg_v2_0_dec_ring_set_wptr, 808 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 809 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 809 810 .emit_frame_size = 810 811 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 811 812 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 + ··· 853 854 .rev = 0, 854 855 .funcs = &jpeg_v2_0_ip_funcs, 855 856 }; 856 - 857 - /** 858 - * jpeg_v2_dec_ring_parse_cs - command submission parser 859 - * 860 - * @parser: Command submission parser context 861 - * @job: the job to parse 862 - * @ib: the IB to parse 863 - * 864 - * Parse the command stream, return -EINVAL for invalid packet, 865 - * 0 otherwise 866 - */ 867 - int jpeg_v2_dec_ring_parse_cs(struct amdgpu_cs_parser *parser, 868 - struct amdgpu_job *job, 869 - struct amdgpu_ib *ib) 870 - { 871 - u32 i, reg, res, cond, type; 872 - struct amdgpu_device *adev = parser->adev; 873 - 874 - for (i = 0; i < ib->length_dw ; i += 2) { 875 - reg = CP_PACKETJ_GET_REG(ib->ptr[i]); 876 - res = CP_PACKETJ_GET_RES(ib->ptr[i]); 877 - cond = CP_PACKETJ_GET_COND(ib->ptr[i]); 878 - type = CP_PACKETJ_GET_TYPE(ib->ptr[i]); 879 - 880 - if (res) /* only support 0 at the moment */ 881 - return -EINVAL; 882 - 883 - switch (type) { 884 - case PACKETJ_TYPE0: 885 - if (cond != PACKETJ_CONDITION_CHECK0 || reg < JPEG_REG_RANGE_START || 886 - reg > JPEG_REG_RANGE_END) { 887 - dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 888 - return -EINVAL; 889 - } 890 - break; 891 - case PACKETJ_TYPE3: 892 - if (cond != PACKETJ_CONDITION_CHECK3 || reg < JPEG_REG_RANGE_START || 893 - reg > JPEG_REG_RANGE_END) { 894 - dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 895 - return -EINVAL; 896 - } 897 - break; 898 - case PACKETJ_TYPE6: 899 - if (ib->ptr[i] == CP_PACKETJ_NOP) 900 - continue; 901 - dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]); 902 - return -EINVAL; 903 - default: 904 - dev_err(adev->dev, "Unknown packet type %d !\n", type); 905 - return -EINVAL; 906 - } 907 - } 908 - 909 - return 0; 910 - }
-6
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h
··· 45 45 46 46 #define JRBC_DEC_EXTERNAL_REG_WRITE_ADDR 0x18000 47 47 48 - #define JPEG_REG_RANGE_START 0x4000 49 - #define JPEG_REG_RANGE_END 0x41c2 50 - 51 48 void jpeg_v2_0_dec_ring_insert_start(struct amdgpu_ring *ring); 52 49 void jpeg_v2_0_dec_ring_insert_end(struct amdgpu_ring *ring); 53 50 void jpeg_v2_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, ··· 57 60 unsigned vmid, uint64_t pd_addr); 58 61 void jpeg_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, uint32_t val); 59 62 void jpeg_v2_0_dec_ring_nop(struct amdgpu_ring *ring, uint32_t count); 60 - int jpeg_v2_dec_ring_parse_cs(struct amdgpu_cs_parser *parser, 61 - struct amdgpu_job *job, 62 - struct amdgpu_ib *ib); 63 63 64 64 extern const struct amdgpu_ip_block_version jpeg_v2_0_ip_block; 65 65
+2 -2
drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c
··· 696 696 .get_rptr = jpeg_v2_5_dec_ring_get_rptr, 697 697 .get_wptr = jpeg_v2_5_dec_ring_get_wptr, 698 698 .set_wptr = jpeg_v2_5_dec_ring_set_wptr, 699 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 699 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 700 700 .emit_frame_size = 701 701 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 702 702 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 + ··· 727 727 .get_rptr = jpeg_v2_5_dec_ring_get_rptr, 728 728 .get_wptr = jpeg_v2_5_dec_ring_get_wptr, 729 729 .set_wptr = jpeg_v2_5_dec_ring_set_wptr, 730 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 730 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 731 731 .emit_frame_size = 732 732 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 733 733 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
··· 597 597 .get_rptr = jpeg_v3_0_dec_ring_get_rptr, 598 598 .get_wptr = jpeg_v3_0_dec_ring_get_wptr, 599 599 .set_wptr = jpeg_v3_0_dec_ring_set_wptr, 600 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 600 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 601 601 .emit_frame_size = 602 602 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 603 603 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c
··· 762 762 .get_rptr = jpeg_v4_0_dec_ring_get_rptr, 763 763 .get_wptr = jpeg_v4_0_dec_ring_get_wptr, 764 764 .set_wptr = jpeg_v4_0_dec_ring_set_wptr, 765 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 765 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 766 766 .emit_frame_size = 767 767 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 768 768 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
··· 1177 1177 .get_rptr = jpeg_v4_0_3_dec_ring_get_rptr, 1178 1178 .get_wptr = jpeg_v4_0_3_dec_ring_get_wptr, 1179 1179 .set_wptr = jpeg_v4_0_3_dec_ring_set_wptr, 1180 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 1180 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 1181 1181 .emit_frame_size = 1182 1182 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 1183 1183 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c
··· 807 807 .get_rptr = jpeg_v4_0_5_dec_ring_get_rptr, 808 808 .get_wptr = jpeg_v4_0_5_dec_ring_get_wptr, 809 809 .set_wptr = jpeg_v4_0_5_dec_ring_set_wptr, 810 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 810 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 811 811 .emit_frame_size = 812 812 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 813 813 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
··· 683 683 .get_rptr = jpeg_v5_0_0_dec_ring_get_rptr, 684 684 .get_wptr = jpeg_v5_0_0_dec_ring_get_wptr, 685 685 .set_wptr = jpeg_v5_0_0_dec_ring_set_wptr, 686 - .parse_cs = jpeg_v2_dec_ring_parse_cs, 686 + .parse_cs = amdgpu_jpeg_dec_parse_cs, 687 687 .emit_frame_size = 688 688 SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 689 689 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +