Message ID | 1387561966-31758-2-git-send-email-p.zabel@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Dec 20, 2013 at 6:52 PM, Philipp Zabel <p.zabel@pengutronix.de> wrote: > 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: Lucas Stach <l.stach@pengutronix.de> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> > --- > drivers/gpu/Makefile | 1 + > drivers/gpu/ipu-v3/Kconfig | 7 +++++++ > drivers/{staging/imx-drm => gpu}/ipu-v3/Makefile | 2 +- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-common.c | 3 ++- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dc.c | 3 +-- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-di.c | 2 +- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dmfc.c | 2 +- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dp.c | 2 +- > drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-prv.h | 2 +- The posted diff only shows the changes made during the move. Has the actual code been reviewed here? If not, please post it here (e.g. diff against /dev/null). If yes, please ignore my comments. Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile index d8a22c2..70da9eb 100644 --- a/drivers/gpu/Makefile +++ b/drivers/gpu/Makefile @@ -1,2 +1,3 @@ obj-y += drm/ vga/ obj-$(CONFIG_TEGRA_HOST1X) += host1x/ +obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/ diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig new file mode 100644 index 0000000..2f228a2 --- /dev/null +++ b/drivers/gpu/ipu-v3/Kconfig @@ -0,0 +1,7 @@ +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. diff --git a/drivers/staging/imx-drm/ipu-v3/Makefile b/drivers/gpu/ipu-v3/Makefile similarity index 59% rename from drivers/staging/imx-drm/ipu-v3/Makefile rename to drivers/gpu/ipu-v3/Makefile index 28ed72e..d21cc37 100644 --- a/drivers/staging/imx-drm/ipu-v3/Makefile +++ b/drivers/gpu/ipu-v3/Makefile @@ -1,3 +1,3 @@ -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 diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-common.c rename to drivers/gpu/ipu-v3/ipu-common.c index 96b1135..a59cc6c 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-common.c +++ b/drivers/gpu/ipu-v3/ipu-common.c @@ -32,7 +32,7 @@ #include <drm/drm_fourcc.h> -#include "imx-ipu-v3.h" +#include <video/imx-ipu-v3.h> #include "ipu-prv.h" static inline u32 ipu_cm_read(struct ipu_soc *ipu, unsigned offset) @@ -539,6 +539,7 @@ enum ipu_color_space ipu_pixelformat_to_colorspace(u32 pixelformat) case V4L2_PIX_FMT_RGB24: case V4L2_PIX_FMT_BGR24: case V4L2_PIX_FMT_RGB565: + case V4L2_PIX_FMT_BGR666: return IPUV3_COLORSPACE_RGB; default: return IPUV3_COLORSPACE_UNKNOWN; diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c b/drivers/gpu/ipu-v3/ipu-dc.c similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-dc.c rename to drivers/gpu/ipu-v3/ipu-dc.c index d0e3bc3..e4c0daf 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c +++ b/drivers/gpu/ipu-v3/ipu-dc.c @@ -20,8 +20,7 @@ #include <linux/delay.h> #include <linux/io.h> -#include "../imx-drm.h" -#include "imx-ipu-v3.h" +#include <video/imx-ipu-v3.h> #include "ipu-prv.h" #define DC_MAP_CONF_PTR(n) (0x108 + ((n) & ~0x1) * 2) diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-di.c b/drivers/gpu/ipu-v3/ipu-di.c similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-di.c rename to drivers/gpu/ipu-v3/ipu-di.c index 948a49b..3ab5204 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-di.c +++ b/drivers/gpu/ipu-v3/ipu-di.c @@ -23,7 +23,7 @@ #include <linux/clk-provider.h> #include <linux/clkdev.h> -#include "imx-ipu-v3.h" +#include <video/imx-ipu-v3.h> #include "ipu-prv.h" struct ipu_di { diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c b/drivers/gpu/ipu-v3/ipu-dmfc.c similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c rename to drivers/gpu/ipu-v3/ipu-dmfc.c index 98070dd..d46de73 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c +++ b/drivers/gpu/ipu-v3/ipu-dmfc.c @@ -17,7 +17,7 @@ #include <linux/errno.h> #include <linux/io.h> -#include "imx-ipu-v3.h" +#include <video/imx-ipu-v3.h> #include "ipu-prv.h" #define DMFC_RD_CHAN 0x0000 diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c b/drivers/gpu/ipu-v3/ipu-dp.c similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-dp.c rename to drivers/gpu/ipu-v3/ipu-dp.c index 58f87c8..e17fa3f 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c +++ b/drivers/gpu/ipu-v3/ipu-dp.c @@ -19,7 +19,7 @@ #include <linux/io.h> #include <linux/err.h> -#include "imx-ipu-v3.h" +#include <video/imx-ipu-v3.h> #include "ipu-prv.h" #define DP_SYNC 0 diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h b/drivers/gpu/ipu-v3/ipu-prv.h similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/ipu-prv.h rename to drivers/gpu/ipu-v3/ipu-prv.h index 4df0050..5cb075f 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h +++ b/drivers/gpu/ipu-v3/ipu-prv.h @@ -22,7 +22,7 @@ struct ipu_soc; #include <linux/clk.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_CSI1 1 diff --git a/drivers/staging/imx-drm/Kconfig b/drivers/staging/imx-drm/Kconfig index 5032ff7..dba241f 100644 --- a/drivers/staging/imx-drm/Kconfig +++ b/drivers/staging/imx-drm/Kconfig @@ -38,18 +38,9 @@ config DRM_IMX_LDB Choose this to enable the internal LVDS Display Bridge (LDB) 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 tristate "DRM Support for i.MX IPUv3" depends on DRM_IMX - depends on DRM_IMX_IPUV3_CORE + depends on IMX_IPUV3_CORE help Choose this if you have a i.MX5 or i.MX6 processor. diff --git a/drivers/staging/imx-drm/Makefile b/drivers/staging/imx-drm/Makefile index 8742432..4d4a506 100644 --- a/drivers/staging/imx-drm/Makefile +++ b/drivers/staging/imx-drm/Makefile @@ -7,7 +7,6 @@ obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o obj-$(CONFIG_DRM_IMX_FB_HELPER) += imx-fbdev.o -obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/ imx-ipuv3-crtc-objs := ipuv3-crtc.o ipuv3-plane.o obj-$(CONFIG_DRM_IMX_IPUV3) += imx-ipuv3-crtc.o diff --git a/drivers/staging/imx-drm/imx-drm.h b/drivers/staging/imx-drm/imx-drm.h index ae90c9c..6188948 100644 --- a/drivers/staging/imx-drm/imx-drm.h +++ b/drivers/staging/imx-drm/imx-drm.h @@ -1,10 +1,6 @@ #ifndef _IMX_DRM_H_ #define _IMX_DRM_H_ -#include <linux/videodev2.h> - -#define IPU_PIX_FMT_GBR24 v4l2_fourcc('G', 'B', 'R', '3') - struct drm_crtc; struct drm_connector; struct drm_device; diff --git a/drivers/staging/imx-drm/imx-tve.c b/drivers/staging/imx-drm/imx-tve.c index 2c44fef..7b668b0 100644 --- a/drivers/staging/imx-drm/imx-tve.c +++ b/drivers/staging/imx-drm/imx-tve.c @@ -29,6 +29,7 @@ #include <drm/drmP.h> #include <drm/drm_fb_helper.h> #include <drm/drm_crtc_helper.h> +#include <video/imx-ipu-v3.h> #include "imx-drm.h" diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c index ce6ba98..e4d96f2 100644 --- a/drivers/staging/imx-drm/ipuv3-crtc.c +++ b/drivers/staging/imx-drm/ipuv3-crtc.c @@ -29,7 +29,7 @@ #include <drm/drm_gem_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 "ipuv3-plane.h" diff --git a/drivers/staging/imx-drm/ipuv3-plane.c b/drivers/staging/imx-drm/ipuv3-plane.c index d97454a..2dde959 100644 --- a/drivers/staging/imx-drm/ipuv3-plane.c +++ b/drivers/staging/imx-drm/ipuv3-plane.c @@ -17,7 +17,7 @@ #include <drm/drm_fb_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" #define to_ipu_plane(x) container_of(x, struct ipu_plane, base) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 4f2e1b3..2195ff3 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -20,6 +20,7 @@ source "drivers/char/agp/Kconfig" source "drivers/gpu/vga/Kconfig" source "drivers/gpu/host1x/Kconfig" +source "drivers/gpu/ipu-v3/Kconfig" source "drivers/gpu/drm/Kconfig" diff --git a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h b/include/video/imx-ipu-v3.h similarity index 99% rename from drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h rename to include/video/imx-ipu-v3.h index 7b879ac..fb13823 100644 --- a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h +++ b/include/video/imx-ipu-v3.h @@ -25,6 +25,8 @@ enum ipuv3_type { IPUV3H, }; +#define IPU_PIX_FMT_GBR24 v4l2_fourcc('G', 'B', 'R', '3') + /* * Bitfield of Display Interface signal polarities. */