aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mxc/ipu3/ipu_ic.c
Commit message (Collapse)AuthorAge
* ENGR00293235 IPUv3: Refine register accessLiu Ying2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | The original IPUv3 driver uses readl()/writel() to access the IPUv3 registers in the following way where ipu->reg_base is a pointer which points to a 32 bit I/O memory cell of a certain IPUv3 deblock's base address: writel(value, ipu->reg_base + offset); readl(ipu->reg_base + offset); This makes the register offset values shrink 4 times, comparing to the offset values documented in the reference manual. For example, we need to change the offset value from 0x003C to 0x003C/4 so that we may access the register IPU_INT_CTRL_1 correctly. This patch redefines the type of ipu->reg_base to 'void __iomem *', then the offset values can be the same to what they are documented. Also, this patch corrects some register relevant macros by wrapping their arguments with parentheses to avoid any unsafe decipher. Reviewed-by: Robby Cai <R63905@freescale.com> Cc: Oliver Brown <oliver.brown@freescale.com> Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00272541 IPUv3 IC: Split Downsizing overflow for size greater than 1024Oliver Brown2014-04-16
| | | | | | | | | | | | | | For downscaling, it is possible that downscaler output is greater than 1024. Added a function, calc_split_resize_coeffs, based upon _calc_resize_coeffs to calculate resizing and downscaling coefficients. In ipu_ic.c, checks for the range of *_resize_ratio are no longer needed. Non split cases will always have *_resize_ratio of zero. In ipu_device, additional checks are needed to check for an error from ipu_calc_stripes_sizes if calc_split_resize_coeffs fails. Signed-off-by: Oliver Brown <oliver.brown@freescale.com>
* ENGR00280663-1 IPUv3: improve IC scale check logicLiu Ying2014-04-16
| | | | | | | | This patch improves IPU IC task scale check logic so that we may return with error code if the calculation for scale coefficients fails. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00277003 IPUv3: Update IC RGB2YUV CSC matrix parametersLiu Ying2014-04-16
| | | | | | | | | This patch updates IPUv3 IC RGB to YUV color space conversion matrix's parameters to align with the default VIV GPU CSC implementation so that we may pass relevant Android CTS test cases. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
* ENGR00240987: ipu: port ipuv3 driver from 3.5.7 kernelShawn Guo2014-04-16
This is a fast-forward porting of ipuv3 driver from 3.5.7 kernel to kernel 3.10. The change set is kept as minimum as possible with only making necessary code changes to adapt 3.10 kernel internal API and framework updates. Everything else should be same as 3.5.7 one. The change set consists of the following. * Remove unused Kconfig options MXC_IPU_V3D, MXC_IPU_V3EX and MXC_IPU_V3H * Comment out busfreq calls * Move ipu-v3.h into include/linux/, and remove all <mach/*> includes * Drop __devinit and __devexit * Remove assignment of pltfm_data->pg = imx6q_ipu_pg; * Use generic device_reset() API rather than ipu_pltfm_data->init() hook to reset IPU * Includes <linux/sched/rt.h> ipu_device.c to fix undeclared MAX_USER_RT_PRIO error * Change compatible string to "fsl,imx6q-ipu" to align with community kernel * Define irq_sync before irq_err in DTS to align with community kernel * Drop "ipu1_" and "ipu2_" from clock names to save the handling of the second parameter of devm_clk_get() * Remove the buggy csi_clk setup in ipu_clk_setup_enable() and validate the clock before operate on it in ipu_csi_enable_mclk() * Replace iram API (linux/iram_alloc.h) with generic memory pool API (linux/genalloc.h) in VDOA driver Signed-off-by: Shawn Guo <shawn.guo@freescale.com>