forked from luck/tmp_suning_uos_patched
drm/imx: ipu-v3 plane offset and IPU id fixes
- Fix U/V plane offsets for odd vertical offsets. Due to wrong operator order, the y offset was not rounded down properly for vertically chroma subsampled planar formats. - Fix IPU id number for boards that don't have an OF alias for their single IPU in the device tree. This is necessary to support imx-media on i.MX51 and i.MX53 SoCs. -----BEGIN PGP SIGNATURE----- iI0EABYIADUWIQRRO6F6WdpH1R0vGibVhaclGDdiwAUCW2RimhcccC56YWJlbEBw ZW5ndXRyb25peC5kZQAKCRDVhaclGDdiwM9hAP928KiDOQQNq4pYDTaq5pL3Tqnq Co2evjrCqq8DJpbmPwD/cilKVCZ7rY24U2kV+X/nkNvemHg0uYwnmnfLeolKMAQ= =uoGQ -----END PGP SIGNATURE----- Merge tag 'imx-drm-fixes-2018-08-03' of git://git.pengutronix.de/git/pza/linux into drm-next drm/imx: ipu-v3 plane offset and IPU id fixes - Fix U/V plane offsets for odd vertical offsets. Due to wrong operator order, the y offset was not rounded down properly for vertically chroma subsampled planar formats. - Fix IPU id number for boards that don't have an OF alias for their single IPU in the device tree. This is necessary to support imx-media on i.MX51 and i.MX53 SoCs. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Philipp Zabel <p.zabel@pengutronix.de> Link: https://patchwork.freedesktop.org/patch/msgid/1533552680.4204.14.camel@pengutronix.de
This commit is contained in:
commit
8511b7da18
|
@ -1405,6 +1405,8 @@ static int ipu_probe(struct platform_device *pdev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
ipu->id = of_alias_get_id(np, "ipu");
|
ipu->id = of_alias_get_id(np, "ipu");
|
||||||
|
if (ipu->id < 0)
|
||||||
|
ipu->id = 0;
|
||||||
|
|
||||||
if (of_device_is_compatible(np, "fsl,imx6qp-ipu") &&
|
if (of_device_is_compatible(np, "fsl,imx6qp-ipu") &&
|
||||||
IS_ENABLED(CONFIG_DRM)) {
|
IS_ENABLED(CONFIG_DRM)) {
|
||||||
|
|
|
@ -547,17 +547,17 @@ static const struct ipu_rgb def_bgra_16 = {
|
||||||
|
|
||||||
#define Y_OFFSET(pix, x, y) ((x) + pix->width * (y))
|
#define Y_OFFSET(pix, x, y) ((x) + pix->width * (y))
|
||||||
#define U_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define U_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * (y) / 4) + (x) / 2)
|
(pix->width * ((y) / 2) / 2) + (x) / 2)
|
||||||
#define V_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define V_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * pix->height / 4) + \
|
(pix->width * pix->height / 4) + \
|
||||||
(pix->width * (y) / 4) + (x) / 2)
|
(pix->width * ((y) / 2) / 2) + (x) / 2)
|
||||||
#define U2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define U2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * (y) / 2) + (x) / 2)
|
(pix->width * (y) / 2) + (x) / 2)
|
||||||
#define V2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define V2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * pix->height / 2) + \
|
(pix->width * pix->height / 2) + \
|
||||||
(pix->width * (y) / 2) + (x) / 2)
|
(pix->width * (y) / 2) + (x) / 2)
|
||||||
#define UV_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define UV_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * (y) / 2) + (x))
|
(pix->width * ((y) / 2)) + (x))
|
||||||
#define UV2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define UV2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
||||||
(pix->width * y) + (x))
|
(pix->width * y) + (x))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user