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

soc: qcom: llcc-qcom: Add support for SM8750

Add system cache table and configs for SM8750 SoCs.

Signed-off-by: Melody Olvera <melody.olvera@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250512-sm8750_llcc_master-v5-3-d78dca6282a5@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Melody Olvera and committed by
Bjorn Andersson
2c04e58e 9186a0f3

+281
+273
drivers/soc/qcom/llcc-qcom.c
··· 2689 2689 }, 2690 2690 }; 2691 2691 2692 + static const struct llcc_slice_config sm8750_data[] = { 2693 + { 2694 + .usecase_id = LLCC_CPUSS, 2695 + .slice_id = 1, 2696 + .max_cap = 5120, 2697 + .priority = 1, 2698 + .bonus_ways = 0xffffffff, 2699 + .activate_on_init = true, 2700 + .write_scid_en = true, 2701 + }, { 2702 + .usecase_id = LLCC_MDMHPFX, 2703 + .slice_id = 24, 2704 + .max_cap = 1024, 2705 + .priority = 5, 2706 + .fixed_size = true, 2707 + .bonus_ways = 0xffffffff, 2708 + }, { 2709 + .usecase_id = LLCC_VIDSC0, 2710 + .slice_id = 2, 2711 + .max_cap = 512, 2712 + .priority = 4, 2713 + .fixed_size = true, 2714 + .bonus_ways = 0xffffffff, 2715 + }, { 2716 + .usecase_id = LLCC_AUDIO, 2717 + .slice_id = 35, 2718 + .max_cap = 512, 2719 + .priority = 1, 2720 + .fixed_size = true, 2721 + .bonus_ways = 0xffffffff, 2722 + }, { 2723 + .usecase_id = LLCC_MDMHPGRW, 2724 + .slice_id = 25, 2725 + .max_cap = 1024, 2726 + .priority = 5, 2727 + .bonus_ways = 0xffffffff, 2728 + }, { 2729 + .usecase_id = LLCC_MODHW, 2730 + .slice_id = 26, 2731 + .max_cap = 1024, 2732 + .priority = 1, 2733 + .fixed_size = true, 2734 + .bonus_ways = 0xffffffff, 2735 + }, { 2736 + .usecase_id = LLCC_CMPT, 2737 + .slice_id = 34, 2738 + .max_cap = 4096, 2739 + .priority = 1, 2740 + .fixed_size = true, 2741 + .bonus_ways = 0xffffffff, 2742 + }, { 2743 + .usecase_id = LLCC_GPUHTW, 2744 + .slice_id = 11, 2745 + .max_cap = 512, 2746 + .priority = 1, 2747 + .fixed_size = true, 2748 + .bonus_ways = 0xffffffff, 2749 + }, { 2750 + .usecase_id = LLCC_GPU, 2751 + .slice_id = 9, 2752 + .max_cap = 5632, 2753 + .priority = 1, 2754 + .fixed_size = true, 2755 + .bonus_ways = 0xffffffff, 2756 + .write_scid_en = true, 2757 + .write_scid_cacheable_en = true 2758 + }, { 2759 + .usecase_id = LLCC_MMUHWT, 2760 + .slice_id = 18, 2761 + .max_cap = 768, 2762 + .priority = 1, 2763 + .fixed_size = true, 2764 + .bonus_ways = 0xffffffff, 2765 + .activate_on_init = true, 2766 + }, { 2767 + .usecase_id = LLCC_DISP, 2768 + .slice_id = 16, 2769 + .max_cap = 7168, 2770 + .priority = 1, 2771 + .fixed_size = true, 2772 + .bonus_ways = 0xffffffff, 2773 + .cache_mode = 2, 2774 + .stale_en = true, 2775 + }, { 2776 + .usecase_id = LLCC_VIDFW, 2777 + .slice_id = 17, 2778 + .priority = 4, 2779 + .fixed_size = true, 2780 + .bonus_ways = 0xffffffff, 2781 + }, { 2782 + .usecase_id = LLCC_CAMFW, 2783 + .slice_id = 20, 2784 + .priority = 4, 2785 + .fixed_size = true, 2786 + .bonus_ways = 0xffffffff, 2787 + }, { 2788 + .usecase_id = LLCC_MDMPNG, 2789 + .slice_id = 27, 2790 + .max_cap = 256, 2791 + .priority = 5, 2792 + .fixed_size = true, 2793 + .bonus_ways = 0xf0000000, 2794 + }, { 2795 + .usecase_id = LLCC_AUDHW, 2796 + .slice_id = 22, 2797 + .max_cap = 512, 2798 + .priority = 1, 2799 + .fixed_size = true, 2800 + .bonus_ways = 0xffffffff, 2801 + }, { 2802 + .usecase_id = LLCC_CVP, 2803 + .slice_id = 8, 2804 + .max_cap = 800, 2805 + .priority = 5, 2806 + .fixed_size = true, 2807 + .bonus_ways = 0xffffffff, 2808 + .vict_prio = true, 2809 + }, { 2810 + .usecase_id = LLCC_MODPE, 2811 + .slice_id = 29, 2812 + .max_cap = 256, 2813 + .priority = 1, 2814 + .fixed_size = true, 2815 + .bonus_ways = 0xf0000000, 2816 + .alloc_oneway_en = true, 2817 + }, { 2818 + .usecase_id = LLCC_WRCACHE, 2819 + .slice_id = 31, 2820 + .max_cap = 512, 2821 + .priority = 1, 2822 + .fixed_size = true, 2823 + .bonus_ways = 0xffffffff, 2824 + .activate_on_init = true, 2825 + }, { 2826 + .usecase_id = LLCC_CVPFW, 2827 + .slice_id = 19, 2828 + .max_cap = 64, 2829 + .priority = 4, 2830 + .fixed_size = true, 2831 + .bonus_ways = 0xffffffff, 2832 + }, { 2833 + .usecase_id = LLCC_CMPTHCP, 2834 + .slice_id = 15, 2835 + .max_cap = 256, 2836 + .priority = 4, 2837 + .fixed_size = true, 2838 + .bonus_ways = 0xffffffff, 2839 + }, { 2840 + .usecase_id = LLCC_LCPDARE, 2841 + .slice_id = 30, 2842 + .max_cap = 128, 2843 + .priority = 5, 2844 + .fixed_size = true, 2845 + .bonus_ways = 0xffffffff, 2846 + .activate_on_init = true, 2847 + .alloc_oneway_en = true, 2848 + }, { 2849 + .usecase_id = LLCC_AENPU, 2850 + .slice_id = 3, 2851 + .max_cap = 3072, 2852 + .priority = 1, 2853 + .fixed_size = true, 2854 + .bonus_ways = 0xffffffff, 2855 + .cache_mode = 2, 2856 + }, { 2857 + .usecase_id = LLCC_ISLAND1, 2858 + .slice_id = 12, 2859 + .max_cap = 7936, 2860 + .priority = 7, 2861 + .fixed_size = true, 2862 + .bonus_ways = 0x7fffffff, 2863 + }, { 2864 + .usecase_id = LLCC_DISP_WB, 2865 + .slice_id = 23, 2866 + .max_cap = 512, 2867 + .priority = 4, 2868 + .fixed_size = true, 2869 + .bonus_ways = 0xffffffff, 2870 + }, { 2871 + .usecase_id = LLCC_VIDVSP, 2872 + .slice_id = 4, 2873 + .max_cap = 256, 2874 + .priority = 4, 2875 + .fixed_size = true, 2876 + .bonus_ways = 0xffffffff, 2877 + }, { 2878 + .usecase_id = LLCC_VIDDEC, 2879 + .slice_id = 5, 2880 + .max_cap = 6144, 2881 + .priority = 4, 2882 + .fixed_size = true, 2883 + .bonus_ways = 0xffffffff, 2884 + .cache_mode = 2, 2885 + .ovcap_prio = true, 2886 + .parent_slice_id = 33, 2887 + }, { 2888 + .usecase_id = LLCC_CAMOFE, 2889 + .slice_id = 33, 2890 + .max_cap = 6144, 2891 + .priority = 4, 2892 + .fixed_size = true, 2893 + .bonus_ways = 0xffffffff, 2894 + .stale_en = true, 2895 + .ovcap_prio = true, 2896 + .parent_slice_id = 33, 2897 + }, { 2898 + .usecase_id = LLCC_CAMRTIP, 2899 + .slice_id = 13, 2900 + .max_cap = 1024, 2901 + .priority = 4, 2902 + .fixed_size = true, 2903 + .bonus_ways = 0xffffffff, 2904 + .stale_en = true, 2905 + .ovcap_prio = true, 2906 + .parent_slice_id = 33, 2907 + }, { 2908 + .usecase_id = LLCC_CAMSRTIP, 2909 + .slice_id = 14, 2910 + .max_cap = 6144, 2911 + .priority = 4, 2912 + .fixed_size = true, 2913 + .bonus_ways = 0xffffffff, 2914 + .stale_en = true, 2915 + .ovcap_prio = true, 2916 + .parent_slice_id = 33, 2917 + }, { 2918 + .usecase_id = LLCC_CAMRTRF, 2919 + .slice_id = 7, 2920 + .max_cap = 3584, 2921 + .priority = 1, 2922 + .fixed_size = true, 2923 + .bonus_ways = 0xffffffff, 2924 + .stale_en = true, 2925 + .ovcap_prio = true, 2926 + .parent_slice_id = 33, 2927 + }, { 2928 + .usecase_id = LLCC_CAMSRTRF, 2929 + .slice_id = 21, 2930 + .max_cap = 6144, 2931 + .priority = 1, 2932 + .fixed_size = true, 2933 + .bonus_ways = 0xffffffff, 2934 + .stale_en = true, 2935 + .ovcap_prio = true, 2936 + .parent_slice_id = 33, 2937 + }, { 2938 + .usecase_id = LLCC_CPUSSMPAM, 2939 + .slice_id = 6, 2940 + .max_cap = 2048, 2941 + .priority = 1, 2942 + .fixed_size = true, 2943 + .bonus_ways = 0xffffffff, 2944 + .activate_on_init = true, 2945 + .write_scid_en = true, 2946 + }, 2947 + }; 2948 + 2692 2949 static const struct llcc_slice_config qcs615_data[] = { 2693 2950 { 2694 2951 .usecase_id = LLCC_CPUSS, ··· 3711 3454 }, 3712 3455 }; 3713 3456 3457 + static const struct qcom_llcc_config sm8750_cfg[] = { 3458 + { 3459 + .sct_data = sm8750_data, 3460 + .size = ARRAY_SIZE(sm8750_data), 3461 + .skip_llcc_cfg = false, 3462 + .reg_offset = llcc_v6_reg_offset, 3463 + .edac_reg_offset = &llcc_v6_edac_reg_offset, 3464 + }, 3465 + }; 3466 + 3714 3467 static const struct qcom_llcc_config x1e80100_cfg[] = { 3715 3468 { 3716 3469 .sct_data = x1e80100_data, ··· 3829 3562 static const struct qcom_sct_config sm8650_cfgs = { 3830 3563 .llcc_config = sm8650_cfg, 3831 3564 .num_config = ARRAY_SIZE(sm8650_cfg), 3565 + }; 3566 + 3567 + static const struct qcom_sct_config sm8750_cfgs = { 3568 + .llcc_config = sm8750_cfg, 3569 + .num_config = ARRAY_SIZE(sm8750_cfg), 3832 3570 }; 3833 3571 3834 3572 static const struct qcom_sct_config x1e80100_cfgs = { ··· 4590 4318 { .compatible = "qcom,sm8450-llcc", .data = &sm8450_cfgs }, 4591 4319 { .compatible = "qcom,sm8550-llcc", .data = &sm8550_cfgs }, 4592 4320 { .compatible = "qcom,sm8650-llcc", .data = &sm8650_cfgs }, 4321 + { .compatible = "qcom,sm8750-llcc", .data = &sm8750_cfgs }, 4593 4322 { .compatible = "qcom,x1e80100-llcc", .data = &x1e80100_cfgs }, 4594 4323 { } 4595 4324 };
+8
include/linux/soc/qcom/llcc-qcom.h
··· 24 24 #define LLCC_CMPTDMA 15 25 25 #define LLCC_DISP 16 26 26 #define LLCC_VIDFW 17 27 + #define LLCC_CAMFW 18 27 28 #define LLCC_MDMHPFX 20 28 29 #define LLCC_MDMPNG 21 29 30 #define LLCC_AUDHW 22 ··· 68 67 #define LLCC_EVCS_LEFT 67 69 68 #define LLCC_EVCS_RIGHT 68 70 69 #define LLCC_SPAD 69 70 + #define LLCC_VIDDEC 70 71 + #define LLCC_CAMOFE 71 72 + #define LLCC_CAMRTIP 72 73 + #define LLCC_CAMSRTIP 73 74 + #define LLCC_CAMRTRF 74 75 + #define LLCC_CAMSRTRF 75 76 + #define LLCC_CPUSSMPAM 89 71 77 72 78 /** 73 79 * struct llcc_slice_desc - Cache slice descriptor