+ /*spin_unlock(&lcdc_dev->reg_lock);*/
+}
+
+static int rk3036_lcdc_set_hwc_lut(struct rk_lcdc_driver *dev_drv,
+ int *hwc_lut, int mode)
+{
+ int i = 0;
+ int __iomem *c;
+ int v;
+ int len = 256*4;
+
+ struct lcdc_device *lcdc_dev =
+ container_of(dev_drv, struct lcdc_device, driver);
+ if (dev_drv->hwc_lut == NULL)
+ dev_drv->hwc_lut = devm_kzalloc(lcdc_dev->dev, len, GFP_KERNEL);
+
+ spin_lock(&lcdc_dev->reg_lock);
+ lcdc_msk_reg(lcdc_dev, SYS_CTRL, m_HWC_LUT_EN, v_HWC_LUT_EN(0));
+ lcdc_cfg_done(lcdc_dev);
+ mdelay(25);
+ for (i = 0; i < 256; i++) {
+ if (mode == 1)
+ dev_drv->hwc_lut[i] = hwc_lut[i];
+ v = dev_drv->hwc_lut[i];
+ c = lcdc_dev->hwc_lut_addr_base + i;
+ writel_relaxed(v, c);
+ }
+ lcdc_msk_reg(lcdc_dev, SYS_CTRL, m_HWC_LUT_EN, v_HWC_LUT_EN(1));
+ lcdc_cfg_done(lcdc_dev);