Hi Qiang,
I use the BSP L3.0.35_4.0.0_130424_source and find patch for MXCFB_CSC_UPDATE on 2389-ENGR00251015-2-FB-IPU-Add-mxcfb-ioctrl-to-update-IPU.patch.
But it has a bug. It needs a "break" for "case MXCFB_CSC_UPDATE";
Please refer to red line of the following.
Thanks,
Taro
----------------------------------------------------------------------------------------------------------------------------
$ cat 2389-ENGR00251015-2-FB-IPU-Add-mxcfb-ioctrl-to-update-IPU.patch
From 74dd3ca09cc25edebb59ecb698037f8aaf2743ec Mon Sep 17 00:00:00 2001
From: Wayne Zou <b36644@freescale.com>
Date: Wed, 20 Feb 2013 13:46:01 +0800
Subject: [PATCH 2389/2508] ENGR00251015-2 FB/IPU: Add mxcfb ioctrl to update
IPU DP CSC matrix
Add mxcfb ioctrl MXCFB_CSC_UPDATE to update IPU DP CSC matrix
for display adjustment.
This patch implements the ioctrl interface.
Signed-off-by: Wayne Zou <b36644@freescale.com>
---
drivers/video/mxc/mxc_ipuv3_fb.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c
index e8a3398..f8dd59e 100644
--- a/drivers/video/mxc/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc/mxc_ipuv3_fb.c
@@ -1320,6 +1320,20 @@ static int mxcfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
break;
}
+ case MXCFB_CSC_UPDATE:
+ {
+ struct mxcfb_csc_matrix csc;
+
+ if (copy_from_user(&csc, (void *) arg, sizeof(csc)))
+ return -EFAULT;
+
+ if ((mxc_fbi->ipu_ch != MEM_FG_SYNC) &&
+ (mxc_fbi->ipu_ch != MEM_BG_SYNC) &&
+ (mxc_fbi->ipu_ch != MEM_BG_ASYNC0))
+ return -EFAULT;
+ ipu_set_csc_coefficients(mxc_fbi->ipu, mxc_fbi->ipu_ch,
+ csc.param);
+ break; <- Nothing in original patch
+ }
default:
retval = -EINVAL;
}
--
1.7.7.4