Commit 39b9004d authored by Philipp Zabel's avatar Philipp Zabel

gpu: ipu-v3: Move i.MX IPUv3 core driver out of staging

The i.MX Image Processing Unit (IPU) contains a number of image processing
blocks that sit right in the middle between DRM and V4L2. Some of the modules,
such as Display Controller, Processor, and Interface (DC, DP, DI) or CMOS
Sensor Interface (CSI) and their FIFOs could be assigned to either framework,
but others, such as the dma controller (IDMAC) and image converter (IC) can
be used by both.
The IPUv3 core driver provides an internal API to access the modules, to be
used by both DRM and V4L2 IPUv3 drivers.
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d1db0eea
obj-y += drm/ vga/ obj-y += drm/ vga/
obj-$(CONFIG_TEGRA_HOST1X) += host1x/ obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
config IMX_IPUV3_CORE
tristate "IPUv3 core support"
depends on SOC_IMX5 || SOC_IMX6Q || SOC_IMX6SL || ARCH_MULTIPLATFORM
depends on RESET_CONTROLLER
help
Choose this if you have a i.MX5/6 system and want to use the Image
Processing Unit. This option only enables IPU base support.
obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += imx-ipu-v3.o obj-$(CONFIG_IMX_IPUV3_CORE) += imx-ipu-v3.o
imx-ipu-v3-objs := ipu-common.o ipu-dc.o ipu-di.o ipu-dp.o ipu-dmfc.o imx-ipu-v3-objs := ipu-common.o ipu-dc.o ipu-di.o ipu-dp.o ipu-dmfc.o
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#include <drm/drm_fourcc.h> #include <drm/drm_fourcc.h>
#include "imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#include "ipu-prv.h" #include "ipu-prv.h"
static inline u32 ipu_cm_read(struct ipu_soc *ipu, unsigned offset) static inline u32 ipu_cm_read(struct ipu_soc *ipu, unsigned offset)
......
...@@ -20,8 +20,7 @@ ...@@ -20,8 +20,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/io.h> #include <linux/io.h>
#include "../imx-drm.h" #include <video/imx-ipu-v3.h>
#include "imx-ipu-v3.h"
#include "ipu-prv.h" #include "ipu-prv.h"
#define DC_MAP_CONF_PTR(n) (0x108 + ((n) & ~0x1) * 2) #define DC_MAP_CONF_PTR(n) (0x108 + ((n) & ~0x1) * 2)
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include "imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#include "ipu-prv.h" #include "ipu-prv.h"
struct ipu_di { struct ipu_di {
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/io.h> #include <linux/io.h>
#include "imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#include "ipu-prv.h" #include "ipu-prv.h"
#define DMFC_RD_CHAN 0x0000 #define DMFC_RD_CHAN 0x0000
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/err.h> #include <linux/err.h>
#include "imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#include "ipu-prv.h" #include "ipu-prv.h"
#define DP_SYNC 0 #define DP_SYNC 0
......
...@@ -22,7 +22,7 @@ struct ipu_soc; ...@@ -22,7 +22,7 @@ struct ipu_soc;
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include "imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#define IPUV3_CHANNEL_CSI0 0 #define IPUV3_CHANNEL_CSI0 0
#define IPUV3_CHANNEL_CSI1 1 #define IPUV3_CHANNEL_CSI1 1
......
...@@ -39,19 +39,10 @@ config DRM_IMX_LDB ...@@ -39,19 +39,10 @@ config DRM_IMX_LDB
Choose this to enable the internal LVDS Display Bridge (LDB) Choose this to enable the internal LVDS Display Bridge (LDB)
found on i.MX53 and i.MX6 processors. found on i.MX53 and i.MX6 processors.
config DRM_IMX_IPUV3_CORE
tristate "IPUv3 core support"
depends on DRM_IMX
depends on RESET_CONTROLLER
help
Choose this if you have a i.MX5/6 system and want
to use the IPU. This option only enables IPU base
support.
config DRM_IMX_IPUV3 config DRM_IMX_IPUV3
tristate "DRM Support for i.MX IPUv3" tristate "DRM Support for i.MX IPUv3"
depends on DRM_IMX depends on DRM_IMX
depends on DRM_IMX_IPUV3_CORE depends on IMX_IPUV3_CORE
help help
Choose this if you have a i.MX5 or i.MX6 processor. Choose this if you have a i.MX5 or i.MX6 processor.
......
...@@ -6,7 +6,6 @@ obj-$(CONFIG_DRM_IMX) += imxdrm.o ...@@ -6,7 +6,6 @@ obj-$(CONFIG_DRM_IMX) += imxdrm.o
obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o
obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o
obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o
obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/
imx-ipuv3-crtc-objs := ipuv3-crtc.o ipuv3-plane.o imx-ipuv3-crtc-objs := ipuv3-crtc.o ipuv3-plane.o
obj-$(CONFIG_DRM_IMX_IPUV3) += imx-ipuv3-crtc.o obj-$(CONFIG_DRM_IMX_IPUV3) += imx-ipuv3-crtc.o
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/drm_encoder_slave.h> #include <drm/drm_encoder_slave.h>
#include <video/imx-ipu-v3.h>
#include "ipu-v3/imx-ipu-v3.h"
#include "imx-hdmi.h" #include "imx-hdmi.h"
#include "imx-drm.h" #include "imx-drm.h"
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_fb_helper.h> #include <drm/drm_fb_helper.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <video/imx-ipu-v3.h>
#include "ipu-v3/imx-ipu-v3.h"
#include "imx-drm.h" #include "imx-drm.h"
#define TVE_COM_CONF_REG 0x00 #define TVE_COM_CONF_REG 0x00
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include <drm/drm_gem_cma_helper.h> #include <drm/drm_gem_cma_helper.h>
#include <drm/drm_fb_cma_helper.h> #include <drm/drm_fb_cma_helper.h>
#include "ipu-v3/imx-ipu-v3.h" #include <video/imx-ipu-v3.h>
#include "imx-drm.h" #include "imx-drm.h"
#include "ipuv3-plane.h" #include "ipuv3-plane.h"
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <drm/drm_fb_cma_helper.h> #include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h> #include <drm/drm_gem_cma_helper.h>
#include "ipu-v3/imx-ipu-v3.h" #include "video/imx-ipu-v3.h"
#include "ipuv3-plane.h" #include "ipuv3-plane.h"
#define to_ipu_plane(x) container_of(x, struct ipu_plane, base) #define to_ipu_plane(x) container_of(x, struct ipu_plane, base)
......
...@@ -20,6 +20,7 @@ source "drivers/char/agp/Kconfig" ...@@ -20,6 +20,7 @@ source "drivers/char/agp/Kconfig"
source "drivers/gpu/vga/Kconfig" source "drivers/gpu/vga/Kconfig"
source "drivers/gpu/host1x/Kconfig" source "drivers/gpu/host1x/Kconfig"
source "drivers/gpu/ipu-v3/Kconfig"
menu "Direct Rendering Manager" menu "Direct Rendering Manager"
source "drivers/gpu/drm/Kconfig" source "drivers/gpu/drm/Kconfig"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment