drm/msm/dpu: Mark various data tables as const
authorStephen Boyd <swboyd@chromium.org>
Tue, 19 Nov 2019 18:48:53 +0000 (10:48 -0800)
committerRob Clark <robdclark@chromium.org>
Thu, 2 Jan 2020 22:54:44 +0000 (14:54 -0800)
These structures look like a bunch of data tables that aren't going to
change after boot. Let's move them to the const RO section of memory so
that they can't be modified at runtime on modern machines.

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
14 files changed:
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.h
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c

index 04c8c44f5b9ccf1a465edbf93f2a126d49c029d8..dd096b6b7bfa13cb28696770c0c3a5bbeb75aeb1 100644 (file)
@@ -60,7 +60,7 @@ static const struct dpu_caps sdm845_dpu_caps = {
        .has_idle_pc = true,
 };
 
-static struct dpu_mdp_cfg sdm845_mdp[] = {
+static const struct dpu_mdp_cfg sdm845_mdp[] = {
        {
        .name = "top_0", .id = MDP_TOP,
        .base = 0x0, .len = 0x45C,
@@ -88,7 +88,7 @@ static struct dpu_mdp_cfg sdm845_mdp[] = {
 /*************************************************************
  * CTL sub blocks config
  *************************************************************/
-static struct dpu_ctl_cfg sdm845_ctl[] = {
+static const struct dpu_ctl_cfg sdm845_ctl[] = {
        {
        .name = "ctl_0", .id = CTL_0,
        .base = 0x1000, .len = 0xE4,
@@ -184,7 +184,7 @@ static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
        .clk_ctrl = _clkctrl \
        }
 
-static struct dpu_sspp_cfg sdm845_sspp[] = {
+static const struct dpu_sspp_cfg sdm845_sspp[] = {
        SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
                sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
        SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
@@ -225,7 +225,7 @@ static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
        .lm_pair_mask = (1 << _lmpair) \
        }
 
-static struct dpu_lm_cfg sdm845_lm[] = {
+static const struct dpu_lm_cfg sdm845_lm[] = {
        LM_BLK("lm_0", LM_0, 0x44000, PINGPONG_0, LM_1),
        LM_BLK("lm_1", LM_1, 0x45000, PINGPONG_1, LM_0),
        LM_BLK("lm_2", LM_2, 0x46000, PINGPONG_2, LM_5),
@@ -264,7 +264,7 @@ static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
        .sblk = &sdm845_pp_sblk \
        }
 
-static struct dpu_pingpong_cfg sdm845_pp[] = {
+static const struct dpu_pingpong_cfg sdm845_pp[] = {
        PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000),
        PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800),
        PP_BLK("pingpong_2", PINGPONG_2, 0x71000),
@@ -283,7 +283,7 @@ static struct dpu_pingpong_cfg sdm845_pp[] = {
        .prog_fetch_lines_worst_case = 24 \
        }
 
-static struct dpu_intf_cfg sdm845_intf[] = {
+static const struct dpu_intf_cfg sdm845_intf[] = {
        INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0),
        INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0),
        INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1),
@@ -294,10 +294,10 @@ static struct dpu_intf_cfg sdm845_intf[] = {
  * VBIF sub blocks config
  *************************************************************/
 /* VBIF QOS remap */
-static u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
-static u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
+static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
+static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
 
-static struct dpu_vbif_cfg sdm845_vbif[] = {
+static const struct dpu_vbif_cfg sdm845_vbif[] = {
        {
        .name = "vbif_0", .id = VBIF_0,
        .base = 0, .len = 0x1040,
@@ -316,7 +316,7 @@ static struct dpu_vbif_cfg sdm845_vbif[] = {
        },
 };
 
-static struct dpu_reg_dma_cfg sdm845_regdma = {
+static const struct dpu_reg_dma_cfg sdm845_regdma = {
        .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
 };
 
@@ -325,7 +325,7 @@ static struct dpu_reg_dma_cfg sdm845_regdma = {
  *************************************************************/
 
 /* SSPP QOS LUTs */
-static struct dpu_qos_lut_entry sdm845_qos_linear[] = {
+static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
        {.fl = 4, .lut = 0x357},
        {.fl = 5, .lut = 0x3357},
        {.fl = 6, .lut = 0x23357},
@@ -340,7 +340,7 @@ static struct dpu_qos_lut_entry sdm845_qos_linear[] = {
        {.fl = 0, .lut = 0x11222222223357}
 };
 
-static struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
+static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
        {.fl = 10, .lut = 0x344556677},
        {.fl = 11, .lut = 0x3344556677},
        {.fl = 12, .lut = 0x23344556677},
@@ -349,11 +349,11 @@ static struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
        {.fl = 0, .lut = 0x112233344556677},
 };
 
-static struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
+static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
        {.fl = 0, .lut = 0x0},
 };
 
-static struct dpu_perf_cfg sdm845_perf_data = {
+static const struct dpu_perf_cfg sdm845_perf_data = {
        .max_bw_low = 6800000,
        .max_bw_high = 6800000,
        .min_core_ib = 2400000,
@@ -424,7 +424,7 @@ static void sdm845_cfg_init(struct dpu_mdss_cfg *dpu_cfg)
        };
 }
 
-static struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
+static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
        { .hw_rev = DPU_HW_VER_400, .cfg_init = sdm845_cfg_init},
        { .hw_rev = DPU_HW_VER_401, .cfg_init = sdm845_cfg_init},
 };
index ec76b8687a985ba90f7daf8db2b125e7dbecdf03..79875195cd9ca87796af9056a628109349dce862 100644 (file)
@@ -269,7 +269,7 @@ struct dpu_qos_lut_entry {
  */
 struct dpu_qos_lut_tbl {
        u32 nentry;
-       struct dpu_qos_lut_entry *entries;
+       const struct dpu_qos_lut_entry *entries;
 };
 
 /**
@@ -511,7 +511,7 @@ struct dpu_vbif_dynamic_ot_cfg {
  */
 struct dpu_vbif_dynamic_ot_tbl {
        u32 count;
-       struct dpu_vbif_dynamic_ot_cfg *cfg;
+       const struct dpu_vbif_dynamic_ot_cfg *cfg;
 };
 
 /**
@@ -521,7 +521,7 @@ struct dpu_vbif_dynamic_ot_tbl {
  */
 struct dpu_vbif_qos_tbl {
        u32 npriority_lvl;
-       u32 *priority_lvl;
+       const u32 *priority_lvl;
 };
 
 /**
@@ -653,25 +653,25 @@ struct dpu_mdss_cfg {
        const struct dpu_caps *caps;
 
        u32 mdp_count;
-       struct dpu_mdp_cfg *mdp;
+       const struct dpu_mdp_cfg *mdp;
 
        u32 ctl_count;
-       struct dpu_ctl_cfg *ctl;
+       const struct dpu_ctl_cfg *ctl;
 
        u32 sspp_count;
-       struct dpu_sspp_cfg *sspp;
+       const struct dpu_sspp_cfg *sspp;
 
        u32 mixer_count;
-       struct dpu_lm_cfg *mixer;
+       const struct dpu_lm_cfg *mixer;
 
        u32 pingpong_count;
-       struct dpu_pingpong_cfg *pingpong;
+       const struct dpu_pingpong_cfg *pingpong;
 
        u32 intf_count;
-       struct dpu_intf_cfg *intf;
+       const struct dpu_intf_cfg *intf;
 
        u32 vbif_count;
-       struct dpu_vbif_cfg *vbif;
+       const struct dpu_vbif_cfg *vbif;
 
        u32 reg_dma_count;
        struct dpu_reg_dma_cfg dma_cfg;
@@ -681,9 +681,9 @@ struct dpu_mdss_cfg {
        /* Add additional block data structures here */
 
        struct dpu_perf_cfg perf;
-       struct dpu_format_extended *dma_formats;
-       struct dpu_format_extended *cursor_formats;
-       struct dpu_format_extended *vig_formats;
+       const struct dpu_format_extended *dma_formats;
+       const struct dpu_format_extended *cursor_formats;
+       const struct dpu_format_extended *vig_formats;
 };
 
 struct dpu_mdss_hw_cfg_handler {
index 179e8d52cadb41346f9089ae59bd90b23adcfd85..d3a96f350cad4c3c57e8d823806c1b520baf7472 100644 (file)
@@ -28,8 +28,8 @@
 
 #define DPU_REG_RESET_TIMEOUT_US        2000
 
-static struct dpu_ctl_cfg *_ctl_offset(enum dpu_ctl ctl,
-               struct dpu_mdss_cfg *m,
+static const struct dpu_ctl_cfg *_ctl_offset(enum dpu_ctl ctl,
+               const struct dpu_mdss_cfg *m,
                void __iomem *addr,
                struct dpu_hw_blk_reg_map *b)
 {
@@ -476,10 +476,10 @@ static struct dpu_hw_blk_ops dpu_hw_ops;
 
 struct dpu_hw_ctl *dpu_hw_ctl_init(enum dpu_ctl idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m)
+               const struct dpu_mdss_cfg *m)
 {
        struct dpu_hw_ctl *c;
-       struct dpu_ctl_cfg *cfg;
+       const struct dpu_ctl_cfg *cfg;
 
        c = kzalloc(sizeof(*c), GFP_KERNEL);
        if (!c)
index d3ae939ef9f8bc7f3deb6e08b584ccdc9e6baf64..b92aaee69f7863bb24bcb843e3b76d7036186905 100644 (file)
@@ -195,7 +195,7 @@ static inline struct dpu_hw_ctl *to_dpu_hw_ctl(struct dpu_hw_blk *hw)
  */
 struct dpu_hw_ctl *dpu_hw_ctl_init(enum dpu_ctl idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m);
+               const struct dpu_mdss_cfg *m);
 
 /**
  * dpu_hw_ctl_destroy(): Destroys ctl driver context
index dcd87cda13fe0b8fa1c226f4097a264fb6f66387..85b32ec18609650570a24704a8afa4654f7ae153 100644 (file)
@@ -56,8 +56,8 @@
 #define   INTF_FRAME_COUNT              0x0AC
 #define   INTF_LINE_COUNT               0x0B0
 
-static struct dpu_intf_cfg *_intf_offset(enum dpu_intf intf,
-               struct dpu_mdss_cfg *m,
+static const struct dpu_intf_cfg *_intf_offset(enum dpu_intf intf,
+               const struct dpu_mdss_cfg *m,
                void __iomem *addr,
                struct dpu_hw_blk_reg_map *b)
 {
@@ -260,10 +260,10 @@ static struct dpu_hw_blk_ops dpu_hw_ops;
 
 struct dpu_hw_intf *dpu_hw_intf_init(enum dpu_intf idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m)
+               const struct dpu_mdss_cfg *m)
 {
        struct dpu_hw_intf *c;
-       struct dpu_intf_cfg *cfg;
+       const struct dpu_intf_cfg *cfg;
 
        c = kzalloc(sizeof(*c), GFP_KERNEL);
        if (!c)
index b03acc225c9b37e7b37e0682ceb5e36dd8ca55fd..fb8ff05970c641c8e9b8573d7da8a964938d5ac2 100644 (file)
@@ -92,7 +92,7 @@ struct dpu_hw_intf {
  */
 struct dpu_hw_intf *dpu_hw_intf_init(enum dpu_intf idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m);
+               const struct dpu_mdss_cfg *m);
 
 /**
  * dpu_hw_intf_destroy(): Destroys INTF driver context
index 5bc39baa746a2436e7ceebe8714071596b4bb41e..55ea90ce80cc1fbbb2607db109925550320ca078 100644 (file)
@@ -24,8 +24,8 @@
 #define LM_BLEND0_FG_ALPHA               0x04
 #define LM_BLEND0_BG_ALPHA               0x08
 
-static struct dpu_lm_cfg *_lm_offset(enum dpu_lm mixer,
-               struct dpu_mdss_cfg *m,
+static const struct dpu_lm_cfg *_lm_offset(enum dpu_lm mixer,
+               const struct dpu_mdss_cfg *m,
                void __iomem *addr,
                struct dpu_hw_blk_reg_map *b)
 {
@@ -147,7 +147,7 @@ static void dpu_hw_lm_setup_color3(struct dpu_hw_mixer *ctx,
        DPU_REG_WRITE(c, LM_OP_MODE, op_mode);
 }
 
-static void _setup_mixer_ops(struct dpu_mdss_cfg *m,
+static void _setup_mixer_ops(const struct dpu_mdss_cfg *m,
                struct dpu_hw_lm_ops *ops,
                unsigned long features)
 {
@@ -164,10 +164,10 @@ static struct dpu_hw_blk_ops dpu_hw_ops;
 
 struct dpu_hw_mixer *dpu_hw_lm_init(enum dpu_lm idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m)
+               const struct dpu_mdss_cfg *m)
 {
        struct dpu_hw_mixer *c;
-       struct dpu_lm_cfg *cfg;
+       const struct dpu_lm_cfg *cfg;
 
        c = kzalloc(sizeof(*c), GFP_KERNEL);
        if (!c)
index 147ace31cfc253a0035320a394416d3b1ed263b7..4a6b2de19ef6e771fa12d6605585edff041a5a20 100644 (file)
@@ -91,7 +91,7 @@ static inline struct dpu_hw_mixer *to_dpu_hw_mixer(struct dpu_hw_blk *hw)
  */
 struct dpu_hw_mixer *dpu_hw_lm_init(enum dpu_lm idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m);
+               const struct dpu_mdss_cfg *m);
 
 /**
  * dpu_hw_lm_destroy(): Destroys layer mixer driver context
index 5dbaba9fd1808d6ac43a5705312634901ade0ef5..d110a40f0e7308c99814399a08b1523d13687038 100644 (file)
@@ -28,8 +28,8 @@
 #define PP_FBC_BUDGET_CTL               0x038
 #define PP_FBC_LOSSY_MODE               0x03C
 
-static struct dpu_pingpong_cfg *_pingpong_offset(enum dpu_pingpong pp,
-               struct dpu_mdss_cfg *m,
+static const struct dpu_pingpong_cfg *_pingpong_offset(enum dpu_pingpong pp,
+               const struct dpu_mdss_cfg *m,
                void __iomem *addr,
                struct dpu_hw_blk_reg_map *b)
 {
@@ -195,10 +195,10 @@ static struct dpu_hw_blk_ops dpu_hw_ops;
 
 struct dpu_hw_pingpong *dpu_hw_pingpong_init(enum dpu_pingpong idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m)
+               const struct dpu_mdss_cfg *m)
 {
        struct dpu_hw_pingpong *c;
-       struct dpu_pingpong_cfg *cfg;
+       const struct dpu_pingpong_cfg *cfg;
 
        c = kzalloc(sizeof(*c), GFP_KERNEL);
        if (!c)
index 58bdb9279aa8f9a0b158c1009335f9cf8d125cd4..3d6f46b1db30810aa464ec2df6ace4a625662657 100644 (file)
@@ -106,7 +106,7 @@ struct dpu_hw_pingpong {
  */
 struct dpu_hw_pingpong *dpu_hw_pingpong_init(enum dpu_pingpong idx,
                void __iomem *addr,
-               struct dpu_mdss_cfg *m);
+               const struct dpu_mdss_cfg *m);
 
 /**
  * dpu_hw_pingpong_destroy - destroys pingpong driver context
index 4f8b813aab81019d17671cd2d845f11b575aa5c7..a315c54b5a64d15e8d6d2d24a0bf137c66e91f06 100644 (file)
@@ -666,7 +666,7 @@ static void _setup_layer_ops(struct dpu_hw_pipe *c,
                c->ops.setup_cdp = dpu_hw_sspp_setup_cdp;
 }
 
-static struct dpu_sspp_cfg *_sspp_offset(enum dpu_sspp sspp,
+static const struct dpu_sspp_cfg *_sspp_offset(enum dpu_sspp sspp,
                void __iomem *addr,
                struct dpu_mdss_cfg *catalog,
                struct dpu_hw_blk_reg_map *b)
@@ -696,7 +696,7 @@ struct dpu_hw_pipe *dpu_hw_sspp_init(enum dpu_sspp idx,
                bool is_virtual_pipe)
 {
        struct dpu_hw_pipe *hw_pipe;
-       struct dpu_sspp_cfg *cfg;
+       const struct dpu_sspp_cfg *cfg;
 
        if (!addr || !catalog)
                return ERR_PTR(-EINVAL);
index a3680b482b41b3b4267db1aa4822d03c3aa8f4ff..31ec12d03bcd6b265116376053c51a868fc5a048 100644 (file)
@@ -373,7 +373,7 @@ struct dpu_hw_pipe {
        struct dpu_hw_blk base;
        struct dpu_hw_blk_reg_map hw;
        struct dpu_mdss_cfg *catalog;
-       struct dpu_mdp_cfg *mdp;
+       const struct dpu_mdp_cfg *mdp;
 
        /* Pipe */
        enum dpu_sspp idx;
index ddc8412731afa46014dbf35ab0201495a87cfffa..23f5b1433b357d1293e2b0b80505670bb60f6f79 100644 (file)
@@ -141,11 +141,11 @@ int dpu_rm_destroy(struct dpu_rm *rm)
 
 static int _dpu_rm_hw_blk_create(
                struct dpu_rm *rm,
-               struct dpu_mdss_cfg *cat,
+               const struct dpu_mdss_cfg *cat,
                void __iomem *mmio,
                enum dpu_hw_blk_type type,
                uint32_t id,
-               void *hw_catalog_info)
+               const void *hw_catalog_info)
 {
        struct dpu_rm_hw_blk *blk;
        void *hw;
@@ -215,7 +215,7 @@ int dpu_rm_init(struct dpu_rm *rm,
 
        /* Interrogate HW catalog and create tracking items for hw blocks */
        for (i = 0; i < cat->mixer_count; i++) {
-               struct dpu_lm_cfg *lm = &cat->mixer[i];
+               const struct dpu_lm_cfg *lm = &cat->mixer[i];
 
                if (lm->pingpong == PINGPONG_MAX) {
                        DPU_DEBUG("skip mixer %d without pingpong\n", lm->id);
index 991f4c8f8a1278a83bcccb444680aa7c775ae3e6..93ab36bd8df3b46968ca76ea55933e1f39527b96 100644 (file)
@@ -299,7 +299,7 @@ void dpu_debugfs_vbif_init(struct dpu_kms *dpu_kms, struct dentry *debugfs_root)
        entry = debugfs_create_dir("vbif", debugfs_root);
 
        for (i = 0; i < dpu_kms->catalog->vbif_count; i++) {
-               struct dpu_vbif_cfg *vbif = &dpu_kms->catalog->vbif[i];
+               const struct dpu_vbif_cfg *vbif = &dpu_kms->catalog->vbif[i];
 
                snprintf(vbif_name, sizeof(vbif_name), "%d", vbif->id);
 
@@ -318,7 +318,7 @@ void dpu_debugfs_vbif_init(struct dpu_kms *dpu_kms, struct dentry *debugfs_root)
                        (u32 *)&vbif->default_ot_wr_limit);
 
                for (j = 0; j < vbif->dynamic_ot_rd_tbl.count; j++) {
-                       struct dpu_vbif_dynamic_ot_cfg *cfg =
+                       const struct dpu_vbif_dynamic_ot_cfg *cfg =
                                        &vbif->dynamic_ot_rd_tbl.cfg[j];
 
                        snprintf(vbif_name, sizeof(vbif_name),
@@ -332,7 +332,7 @@ void dpu_debugfs_vbif_init(struct dpu_kms *dpu_kms, struct dentry *debugfs_root)
                }
 
                for (j = 0; j < vbif->dynamic_ot_wr_tbl.count; j++) {
-                       struct dpu_vbif_dynamic_ot_cfg *cfg =
+                       const struct dpu_vbif_dynamic_ot_cfg *cfg =
                                        &vbif->dynamic_ot_wr_tbl.cfg[j];
 
                        snprintf(vbif_name, sizeof(vbif_name),