Commit Graph

36 Commits

Author SHA1 Message Date
Marek Vasut 7d0a66c0cc staging: video: imx: Add BGR666 support for parallel display
Support the BGR666 format on the IPUv3 parallel display.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-23 10:38:49 -07:00
Sascha Hauer bc38967837 staging: drm/imx: update TODO file
One of the main things to do to the driver is to support
the common display famework (CDF) to hit mainline. As this will
make some changes to the devicetree bindings necessary it makes
sense to do it before we move out of staging.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-11 12:56:10 -07:00
Philipp Zabel fcbc51e54d staging: drm/imx: Add support for Television Encoder (TVEv2)
This driver adds support for the Television Encoder integrated
on i.MX53 SoCs (TVEv2).

Currently only the VGA output mode is supported, which only uses
the TVDAC to generate RGB levels. HSYNC and VSYNC signals are
routed directly from the IPU signal generator pins through IOMUXC.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:17 -07:00
Philipp Zabel da0cedecae staging: drm/imx: ipu-dc: force black output during blanking
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:17 -07:00
Philipp Zabel 85eacb0626 staging: drm/imx: ipu-dc: add WCLK/WRG opcodes
Add WRG and WCLK opcodes to the display controller microcode,
and allow multi instruction codes.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:16 -07:00
Philipp Zabel 2ea42608ba staging: drm/imx: Add support for VGA via TVE on i.MX53
This adds display interface timings for the Television Encoder
connected to IPU DI1 on i.MX53 and adds some configuration
glue code to select which IPU signal generators / pins are to
be used for HSYNC/VSYNC signals.

The default configuration is pin2/pin3 for hsync/vsync. The
VGA connector on i.MX53-QSB uses pin7/pin8, and the analog
part of the DVI-I connector on MBa53 connects to pin4/pin6.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:16 -07:00
Philipp Zabel db5225d405 staging: drm/imx: ipu-di: add comments explaining signal generator configuration
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:16 -07:00
Philipp Zabel b60b5bcb18 staging: drm/imx: ipuv3-crtc: use external clock for TV Encoder
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:16 -07:00
Philipp Zabel eeb14ec8da staging: drm/imx: ipu-dc: add 24-bit GBR support to DC
24-bit GBR order is needed on the display interface connected
to the Television Encoder (TVEv2) on i.MX53.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-09 16:16:16 -07:00
Marek Vasut afb12edf94 staging: imx-drm: Make IPU KMS parse display-timings
This patch adds support for parsing of the DT display-timings prop
to IPU KMS driver.

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-03 11:04:08 -07:00
Fabio Estevam 6cadd88ad0 staging: imx-drm: ipu-common: Fix sparse warnings
Fix the following sparse warnings:

drivers/staging/imx-drm/ipu-v3/ipu-common.c:232:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:232:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:232:42:    got struct ipu_ch_param *p
drivers/staging/imx-drm/ipu-v3/ipu-common.c:233:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:233:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:233:42:    got struct ipu_ch_param *p
drivers/staging/imx-drm/ipu-v3/ipu-common.c:234:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:234:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:234:42:    got struct ipu_ch_param *p
drivers/staging/imx-drm/ipu-v3/ipu-common.c:237:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:237:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:237:42:    got struct ipu_ch_param *p
drivers/staging/imx-drm/ipu-v3/ipu-common.c:238:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:238:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:238:42:    got struct ipu_ch_param *p
drivers/staging/imx-drm/ipu-v3/ipu-common.c:239:42: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/imx-drm/ipu-v3/ipu-common.c:239:42:    expected struct ipu_ch_param [noderef] <asn:2>*base
drivers/staging/imx-drm/ipu-v3/ipu-common.c:239:42:    got struct ipu_ch_param *p

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-25 11:17:33 -07:00
Silviu-Mihai Popescu b4446865bc imx_drm: ipu_v3: fix invalid free of devm_* allocated data
The objects allocated by devm_* APIs are managed by devres and are freed
when the device is detached. There is no need to use kfree() explicitly.

Signed-off-by: Silviu-Mihai Popescu <silviupopescu1990@gmail.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-25 11:02:55 -07:00
Philipp Zabel 47b1be5c0f staging: imx/drm: request irq only after adding the crtc
If the bootloader already enabled the display, the interrupt handler
will be called as soon as it is registered. If the CRTC is not already
added at this time, the call to imx_drm_handle_vblank will result in
a NULL pointer dereference.

The patch fixes a kernel panic [1], which has been on linux-next since
Jan 8 [2].

[1] http://thread.gmane.org/gmane.linux.ports.arm.kernel/218858
[2] http://thread.gmane.org/gmane.linux.ports.arm.kernel/208192

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-11 09:31:48 -07:00
Fabio Estevam ed73591a5c staging: ipu-di: Change DI address info to dev_dbg
Currently when ipuv3 is probed we have:

imx-ipuv3 40000000.ipu: DI0 base: 0x5e040000 remapped to a08aa000
imx-ipuv3 40000000.ipu: DI1 base: 0x5e048000 remapped to a08ac000
imx-ipuv3 40000000.ipu: IPUv3EX probed

The DI base address and the remapped address are more interesting for debug
purposes, so mark this message as dev_dbg instead.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-17 13:52:37 -08:00
Fabio Estevam 4ee723a96f staging: imx-drm: ipu-common: Remove unused variable
Fix the following warning when building with W=1 option:

drivers/staging/imx-drm/ipu-v3/ipu-common.c: In function 'ipu_remove':
drivers/staging/imx-drm/ipu-v3/ipu-common.c:1145:19: warning: variable 'res' set but not used [-Wunused-but-set-variable]

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-17 13:19:55 -08:00
Lothar Waßmann efe57d5977 staging: drm/imx: fix double free bug in error path
kfree(imx_drm_encoder) is already being called at the label
'err_register'.

Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-07 12:27:52 -08:00
Lothar Waßmann 9a8f3f4490 staging: drm/imx: several bug fixes
- convert bogus IS_ERR_OR_NULL() to IS_ERR()
- fix copy/paste error
- check return value of ipu_crtc_init()

Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-07 12:27:51 -08:00
Lothar Waßmann 4d27b2ca15 staging: drm/imx: check return value of ipu_reset()
ipu_reset() can fail with a timeout. Check the return value and act
appropriately.

Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-07 12:27:51 -08:00
Bill Pemberton 8aa1be45f9 staging: imx-drm: remove use of __devexit
CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-21 15:05:02 -08:00
Bill Pemberton c4aabf8d32 staging: imx-drm: remove use of __devinit
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-21 15:05:02 -08:00
Bill Pemberton 99c28f1091 staging: drm/imx: remove use of __devexit_p
CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
needed.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-21 15:04:59 -08:00
Sachin Kamat 30aeee29f6 staging: drm/imx: Remove duplicate inclusion of linux/videodev2.h
linux/videodev2.h was included twice.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-21 14:18:40 -08:00
Philipp Zabel 2d8f46f286 staging: drm/imx: Remove 300ms delay after memory reset
This has been added once, but does not seem to be necessary. Tested
on i.MX51 and i.MX6.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:33 -08:00
Sascha Hauer 87e31a0795 staging: drm/imx: Add pinctrl support to parallel display driver
To allow the iomux to be configured for the display.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:33 -08:00
Philipp Zabel 0125f21b2b staging: drm/imx: Add ipu_cpmem_set_yuv_interleaved()
For configuring interleaved formats.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:32 -08:00
Philipp Zabel a8e4e232ba staging: drm/imx: silence ipu_crtc_dpms debug message
It's for debugging only, so use dev_dbg.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:32 -08:00
Philipp Zabel d3e4e610a1 staging: drm/imx: Add YVU420 support to i.MX IPUv3 base driver
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:32 -08:00
Michael Olbrich c096ae130e staging: drm/imx: Fix YUYV support in i.MX IPUv3 base driver
YVYU is not supported by the IPU, so remove partial handling
of this format and replace it with YUYV which is supported.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-13 15:07:32 -08:00
Rob Clark c4ff7ef5cf staging: drm/imx: add support for ARCH_MULTIPLATFORM
No dependency on plat headers, so only needs Kconfig update to
build for ARCH_MULTIPLATFORM.

Signed-off-by: Rob Clark <rob@ti.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-10-30 11:10:05 -07:00
Fabio Estevam 9c2c438cee staging: ipu-v3: ipu-common: Indicate succesful probe
Indication of succesful probe is more useful than stating that the
driver is about to be probed.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-10-25 12:02:11 -07:00
Fabio Estevam fd563dbb4f staging: ipu-v3: ipu-common: Make it less verbose
IPU Interrupt numbers and the various IPU submodules base addresses are
more interesting for debugging purposes rather than normal use, so use
dev_dbg instead.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-10-25 12:02:11 -07:00
Sascha Hauer effef787a9 staging: drm/imx: Add TODO
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-21 09:17:07 -07:00
Sascha Hauer f326f7995b staging: drm/imx: Add i.MX IPUv3 crtc support
This adds a i.MX51/53/6 IPU (Image Processing Unit) KMS driver. The
driver has been tested on the i.MX51 babbage board, the i.MX53 LOCO
board and the i.MX6q sabrelite board in different clone mode and dual
head setups.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-21 09:17:06 -07:00
Sascha Hauer aecfbdb180 staging: drm/imx: add i.MX IPUv3 base driver
The IPU is the Image Processing Unit found on i.MX51/53/6 SoCs. It
features several units for image processing, this patch adds support
for the units needed for Framebuffer support, namely:

- Display Controller (dc)
- Display Interface (di)
- Display Multi Fifo Controller (dmfc)
- Display Processor (dp)
- Image DMA Controller (idmac)

This patch is based on the Freescale driver, but follows a different
approach. The Freescale code implements logical idmac channels and
the handling of the subunits is hidden in common idmac code pathes
in big switch/case statements. This patch instead just provides code
and resource management for the different subunits. The user, in this
case the framebuffer driver, decides how the different units play
together.

The IPU has other units missing in this patch:

- CMOS Sensor Interface (csi)
- Video Deinterlacer (vdi)
- Sensor Multi FIFO Controler (smfc)
- Image Converter (ic)
- Image Rotator (irt)

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-21 09:17:06 -07:00
Sascha Hauer 19022aaae6 staging: drm/imx: Add parallel display support
This adds support for parallel displays for i.MX. It consists
of a drm encoder/connector pair which eventually passes EDID
data from the devicetree to the drm core.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-21 09:17:06 -07:00
Sascha Hauer e692da4d0e staging: drm/imx: Add i.MX drm core support
This patch adds the i.MX glue stuff between i.MX and drm.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-21 09:15:00 -07:00