/* ISHARP_DELTA_LUT */
                dpp401_dscl_set_isharp_filter(dpp, scl_data->dscl_prog_data.isharp_delta);
                dpp->scl_data.dscl_prog_data.sharpness_level = scl_data->dscl_prog_data.sharpness_level;
-               dpp->scl_data.dscl_prog_data.isharp_delta = scl_data->dscl_prog_data.isharp_delta;
+               memcpy(dpp->scl_data.dscl_prog_data.isharp_delta, scl_data->dscl_prog_data.isharp_delta,
+                       sizeof(uint32_t) * ISHARP_LUT_TABLE_SIZE);
 
                if (memcmp(&dpp->scl_data, scl_data, sizeof(*scl_data)) == 0)
                        return;
 
 
        spl_build_isharp_1dlut_from_reference_curve(ratio, setup, adp_sharpness,
                scale_to_sharpness_policy);
-       dscl_prog_data->isharp_delta = spl_get_pregen_filter_isharp_1D_lut(setup);
+       memcpy(dscl_prog_data->isharp_delta, spl_get_pregen_filter_isharp_1D_lut(setup),
+               sizeof(uint32_t) * ISHARP_LUT_TABLE_SIZE);
        dscl_prog_data->sharpness_level = adp_sharpness.sharpness_level;
 
        dscl_prog_data->isharp_en = 1;  // ISHARP_EN
 
 
 #include "dc_spl_types.h"
 
-#define ISHARP_LUT_TABLE_SIZE 32
 const uint32_t *spl_get_filter_isharp_1D_lut_0(void);
 const uint32_t *spl_get_filter_isharp_1D_lut_0p5x(void);
 const uint32_t *spl_get_filter_isharp_1D_lut_1p0x(void);
 
        ISHARP_DISABLE,
        ISHARP_ENABLE
 };
+#define ISHARP_LUT_TABLE_SIZE 32
 // Below struct holds values that can be directly used to program
 // hardware registers. No conversion/clamping is required
 struct dscl_prog_data {
        uint32_t isharp_nl_en;  //      ISHARP_NL_EN ? TODO:check this
        struct isharp_lba isharp_lba;   //      ISHARP_LBA
        struct isharp_fmt isharp_fmt;   //      ISHARP_FMT
-       const uint32_t *isharp_delta;
+       uint32_t isharp_delta[ISHARP_LUT_TABLE_SIZE];
        struct isharp_nldelta_sclip isharp_nldelta_sclip;       //      ISHARP_NLDELTA_SCLIP
        /* blur and scale filter */
        const uint16_t *filter_blur_scale_v;