* [PATCH 00/16] Make all drivers under drivers/media to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Krzysztof Kozlowski, Arvind Yadav,
Geliang Tang, Kukjin Kim, Hans Verkuil, Stanimir Varbanov,
Ramesh Shanmugasundaram, Jonathan Corbet, Bhumika Goyal,
linux-arm-kernel, Philipp Zabel, Benjamin Gaignard, Kees Cook,
Hans Verkuil, Lad, Prabhakar, linux-fbdev, Laurent Pinchart,
Al Viro, linux-samsung-soc, Sylwester Nawrocki,
Bartlomiej Zolnierkiewicz, dri-devel, Kyungmin Park,
Arnd Bergmann
The current media policy has been for a while to only accept new drivers
that compile with COMPILE_TEST.
However, there are still several drivers under drivers/media that
doesn't build with COMPILE_TEST.
So, this series makes the existing ones also compatible with it.
Not building with COMPILE_TEST is a bad thing, for several reasons.
The main ones is that:
1) the licence the Kernel community has for Coverity only builds for
x86. So, drivers that don't build on such archtecture were likely
never tested by it.
2) That affects my per-patch handling process, with should be quick
enough to not delay my patch handling process. So, I only build for one
architecture (i386).
3) When appliying a patch, I always run two static code analyzers (W=1,
smatch and sparse). Those drivers weren't checked by me. At the end
of the day, that leads to a lower quality check for the drivers that
don't build on i386.
There are two situations on this patch series that proof the lower
quality of those drivers:
- There is a case of a driver that was added broken in 2013. Only two
years later, someone noticed and "fixed" it by markin it as BROKEN!
- 5 patches in this series (about 1/3) are just to fix build issues on
those drivers, most of them due to gcc warnings.
Mauro Carvalho Chehab (16):
omap: omap-iommu.h: allow building drivers with COMPILE_TEST
media: omap3isp: allow it to build with COMPILE_TEST
media: omap3isp/isp: remove an unused static var
media: fsl-viu: mark static functions as such
media: fsl-viu: allow building it with COMPILE_TEST
media: cec_gpio: allow building CEC_GPIO with COMPILE_TEST
media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
media: mmp-camera.h: add missing platform data
media: marvel-ccic: re-enable mmp-driver build
media: mmp-driver: make two functions static
media: davinci: allow building isif code
media: davinci: allow build vpbe_display with COMPILE_TEST
media: vpbe_venc: don't store return codes if they won't be used
media: davinci: get rid of lots of kernel-doc warnings
media: omapfb_dss.h: add stubs to build with COMPILE_TEST
media: omap: allow building it with COMPILE_TEST
drivers/media/platform/Kconfig | 12 +++---
drivers/media/platform/davinci/Kconfig | 6 ++-
drivers/media/platform/davinci/isif.c | 2 -
drivers/media/platform/davinci/vpbe.c | 38 +++++++++--------
drivers/media/platform/davinci/vpbe_display.c | 21 +++++----
drivers/media/platform/davinci/vpbe_osd.c | 16 ++++---
drivers/media/platform/davinci/vpbe_venc.c | 9 ++--
drivers/media/platform/exynos4-is/Kconfig | 4 +-
drivers/media/platform/fsl-viu.c | 20 ++++++---
drivers/media/platform/marvell-ccic/Kconfig | 5 ++-
drivers/media/platform/marvell-ccic/mmp-driver.c | 4 +-
drivers/media/platform/omap/Kconfig | 6 +--
drivers/media/platform/omap3isp/isp.c | 14 +++---
include/linux/omap-iommu.h | 5 +++
include/linux/platform_data/media/mmp-camera.h | 19 +++++++++
include/video/omapfb_dss.h | 54 +++++++++++++++++++++++-
16 files changed, 162 insertions(+), 73 deletions(-)
--
2.14.3
^ permalink raw reply [flat|nested] 52+ messages in thread
* [PATCH 00/16] Make all drivers under drivers/media to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: linux-fbdev, Sylwester Nawrocki, Stanimir Varbanov, dri-devel,
Lad, Prabhakar, Laurent Pinchart, Benjamin Gaignard,
linux-samsung-soc, Jonathan Corbet, Krzysztof Kozlowski,
Mauro Carvalho Chehab, Kukjin Kim, Hans Verkuil, Arvind Yadav,
Linux Media Mailing List, Kees Cook, Arnd Bergmann,
Bartlomiej Zolnierkiewicz, Geliang Tang, Mauro Carvalho Chehab,
Al Viro, linux-a
The current media policy has been for a while to only accept new drivers
that compile with COMPILE_TEST.
However, there are still several drivers under drivers/media that
doesn't build with COMPILE_TEST.
So, this series makes the existing ones also compatible with it.
Not building with COMPILE_TEST is a bad thing, for several reasons.
The main ones is that:
1) the licence the Kernel community has for Coverity only builds for
x86. So, drivers that don't build on such archtecture were likely
never tested by it.
2) That affects my per-patch handling process, with should be quick
enough to not delay my patch handling process. So, I only build for one
architecture (i386).
3) When appliying a patch, I always run two static code analyzers (W=1,
smatch and sparse). Those drivers weren't checked by me. At the end
of the day, that leads to a lower quality check for the drivers that
don't build on i386.
There are two situations on this patch series that proof the lower
quality of those drivers:
- There is a case of a driver that was added broken in 2013. Only two
years later, someone noticed and "fixed" it by markin it as BROKEN!
- 5 patches in this series (about 1/3) are just to fix build issues on
those drivers, most of them due to gcc warnings.
Mauro Carvalho Chehab (16):
omap: omap-iommu.h: allow building drivers with COMPILE_TEST
media: omap3isp: allow it to build with COMPILE_TEST
media: omap3isp/isp: remove an unused static var
media: fsl-viu: mark static functions as such
media: fsl-viu: allow building it with COMPILE_TEST
media: cec_gpio: allow building CEC_GPIO with COMPILE_TEST
media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
media: mmp-camera.h: add missing platform data
media: marvel-ccic: re-enable mmp-driver build
media: mmp-driver: make two functions static
media: davinci: allow building isif code
media: davinci: allow build vpbe_display with COMPILE_TEST
media: vpbe_venc: don't store return codes if they won't be used
media: davinci: get rid of lots of kernel-doc warnings
media: omapfb_dss.h: add stubs to build with COMPILE_TEST
media: omap: allow building it with COMPILE_TEST
drivers/media/platform/Kconfig | 12 +++---
drivers/media/platform/davinci/Kconfig | 6 ++-
drivers/media/platform/davinci/isif.c | 2 -
drivers/media/platform/davinci/vpbe.c | 38 +++++++++--------
drivers/media/platform/davinci/vpbe_display.c | 21 +++++----
drivers/media/platform/davinci/vpbe_osd.c | 16 ++++---
drivers/media/platform/davinci/vpbe_venc.c | 9 ++--
drivers/media/platform/exynos4-is/Kconfig | 4 +-
drivers/media/platform/fsl-viu.c | 20 ++++++---
drivers/media/platform/marvell-ccic/Kconfig | 5 ++-
drivers/media/platform/marvell-ccic/mmp-driver.c | 4 +-
drivers/media/platform/omap/Kconfig | 6 +--
drivers/media/platform/omap3isp/isp.c | 14 +++---
include/linux/omap-iommu.h | 5 +++
include/linux/platform_data/media/mmp-camera.h | 19 +++++++++
include/video/omapfb_dss.h | 54 +++++++++++++++++++++++-
16 files changed, 162 insertions(+), 73 deletions(-)
--
2.14.3
^ permalink raw reply [flat|nested] 52+ messages in thread
* [PATCH 00/16] Make all drivers under drivers/media to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: linux-fbdev, Sylwester Nawrocki, Stanimir Varbanov, dri-devel,
Lad, Prabhakar, Laurent Pinchart, Benjamin Gaignard,
linux-samsung-soc, Jonathan Corbet, Krzysztof Kozlowski,
Mauro Carvalho Chehab, Kukjin Kim, Hans Verkuil, Arvind Yadav,
Linux Media Mailing List, Kees Cook, Arnd Bergmann,
Bartlomiej Zolnierkiewicz, Geliang Tang, Mauro Carvalho Chehab,
Al Viro, linux-a
The current media policy has been for a while to only accept new drivers
that compile with COMPILE_TEST.
However, there are still several drivers under drivers/media that
doesn't build with COMPILE_TEST.
So, this series makes the existing ones also compatible with it.
Not building with COMPILE_TEST is a bad thing, for several reasons.
The main ones is that:
1) the licence the Kernel community has for Coverity only builds for
x86. So, drivers that don't build on such archtecture were likely
never tested by it.
2) That affects my per-patch handling process, with should be quick
enough to not delay my patch handling process. So, I only build for one
architecture (i386).
3) When appliying a patch, I always run two static code analyzers (W=1,
smatch and sparse). Those drivers weren't checked by me. At the end
of the day, that leads to a lower quality check for the drivers that
don't build on i386.
There are two situations on this patch series that proof the lower
quality of those drivers:
- There is a case of a driver that was added broken in 2013. Only two
years later, someone noticed and "fixed" it by markin it as BROKEN!
- 5 patches in this series (about 1/3) are just to fix build issues on
those drivers, most of them due to gcc warnings.
Mauro Carvalho Chehab (16):
omap: omap-iommu.h: allow building drivers with COMPILE_TEST
media: omap3isp: allow it to build with COMPILE_TEST
media: omap3isp/isp: remove an unused static var
media: fsl-viu: mark static functions as such
media: fsl-viu: allow building it with COMPILE_TEST
media: cec_gpio: allow building CEC_GPIO with COMPILE_TEST
media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
media: mmp-camera.h: add missing platform data
media: marvel-ccic: re-enable mmp-driver build
media: mmp-driver: make two functions static
media: davinci: allow building isif code
media: davinci: allow build vpbe_display with COMPILE_TEST
media: vpbe_venc: don't store return codes if they won't be used
media: davinci: get rid of lots of kernel-doc warnings
media: omapfb_dss.h: add stubs to build with COMPILE_TEST
media: omap: allow building it with COMPILE_TEST
drivers/media/platform/Kconfig | 12 +++---
drivers/media/platform/davinci/Kconfig | 6 ++-
drivers/media/platform/davinci/isif.c | 2 -
drivers/media/platform/davinci/vpbe.c | 38 +++++++++--------
drivers/media/platform/davinci/vpbe_display.c | 21 +++++----
drivers/media/platform/davinci/vpbe_osd.c | 16 ++++---
drivers/media/platform/davinci/vpbe_venc.c | 9 ++--
drivers/media/platform/exynos4-is/Kconfig | 4 +-
drivers/media/platform/fsl-viu.c | 20 ++++++---
drivers/media/platform/marvell-ccic/Kconfig | 5 ++-
drivers/media/platform/marvell-ccic/mmp-driver.c | 4 +-
drivers/media/platform/omap/Kconfig | 6 +--
drivers/media/platform/omap3isp/isp.c | 14 +++---
include/linux/omap-iommu.h | 5 +++
include/linux/platform_data/media/mmp-camera.h | 19 +++++++++
include/video/omapfb_dss.h | 54 +++++++++++++++++++++++-
16 files changed, 162 insertions(+), 73 deletions(-)
--
2.14.3
^ permalink raw reply [flat|nested] 52+ messages in thread
* [PATCH 00/16] Make all drivers under drivers/media to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
To: linux-arm-kernel
The current media policy has been for a while to only accept new drivers
that compile with COMPILE_TEST.
However, there are still several drivers under drivers/media that
doesn't build with COMPILE_TEST.
So, this series makes the existing ones also compatible with it.
Not building with COMPILE_TEST is a bad thing, for several reasons.
The main ones is that:
1) the licence the Kernel community has for Coverity only builds for
x86. So, drivers that don't build on such archtecture were likely
never tested by it.
2) That affects my per-patch handling process, with should be quick
enough to not delay my patch handling process. So, I only build for one
architecture (i386).
3) When appliying a patch, I always run two static code analyzers (W=1,
smatch and sparse). Those drivers weren't checked by me. At the end
of the day, that leads to a lower quality check for the drivers that
don't build on i386.
There are two situations on this patch series that proof the lower
quality of those drivers:
- There is a case of a driver that was added broken in 2013. Only two
years later, someone noticed and "fixed" it by markin it as BROKEN!
- 5 patches in this series (about 1/3) are just to fix build issues on
those drivers, most of them due to gcc warnings.
Mauro Carvalho Chehab (16):
omap: omap-iommu.h: allow building drivers with COMPILE_TEST
media: omap3isp: allow it to build with COMPILE_TEST
media: omap3isp/isp: remove an unused static var
media: fsl-viu: mark static functions as such
media: fsl-viu: allow building it with COMPILE_TEST
media: cec_gpio: allow building CEC_GPIO with COMPILE_TEST
media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
media: mmp-camera.h: add missing platform data
media: marvel-ccic: re-enable mmp-driver build
media: mmp-driver: make two functions static
media: davinci: allow building isif code
media: davinci: allow build vpbe_display with COMPILE_TEST
media: vpbe_venc: don't store return codes if they won't be used
media: davinci: get rid of lots of kernel-doc warnings
media: omapfb_dss.h: add stubs to build with COMPILE_TEST
media: omap: allow building it with COMPILE_TEST
drivers/media/platform/Kconfig | 12 +++---
drivers/media/platform/davinci/Kconfig | 6 ++-
drivers/media/platform/davinci/isif.c | 2 -
drivers/media/platform/davinci/vpbe.c | 38 +++++++++--------
drivers/media/platform/davinci/vpbe_display.c | 21 +++++----
drivers/media/platform/davinci/vpbe_osd.c | 16 ++++---
drivers/media/platform/davinci/vpbe_venc.c | 9 ++--
drivers/media/platform/exynos4-is/Kconfig | 4 +-
drivers/media/platform/fsl-viu.c | 20 ++++++---
drivers/media/platform/marvell-ccic/Kconfig | 5 ++-
drivers/media/platform/marvell-ccic/mmp-driver.c | 4 +-
drivers/media/platform/omap/Kconfig | 6 +--
drivers/media/platform/omap3isp/isp.c | 14 +++---
include/linux/omap-iommu.h | 5 +++
include/linux/platform_data/media/mmp-camera.h | 19 +++++++++
include/video/omapfb_dss.h | 54 +++++++++++++++++++++++-
16 files changed, 162 insertions(+), 73 deletions(-)
--
2.14.3
^ permalink raw reply [flat|nested] 52+ messages in thread
* [PATCH 01/16] omap: omap-iommu.h: allow building drivers with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (2 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-08 10:12 ` Matthias Schwarzott
-1 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List, Mauro Carvalho Chehab
Drivers that depend on omap-iommu.h (currently, just omap3isp)
need a stub implementation in order to be built with COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/linux/omap-iommu.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/linux/omap-iommu.h b/include/linux/omap-iommu.h
index c1aede46718b..0c21fc5b002e 100644
--- a/include/linux/omap-iommu.h
+++ b/include/linux/omap-iommu.h
@@ -13,7 +13,12 @@
#ifndef _OMAP_IOMMU_H_
#define _OMAP_IOMMU_H_
+#ifdef CONFIG_OMAP_IOMMU
extern void omap_iommu_save_ctx(struct device *dev);
extern void omap_iommu_restore_ctx(struct device *dev);
+#else
+static inline void omap_iommu_save_ctx(struct device *dev) {};
+static inline void omap_iommu_restore_ctx(struct device *dev) {};
+#endif
#endif
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (3 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 18:30 ` Laurent Pinchart
2018-04-07 5:23 ` kbuild test robot
-1 siblings, 2 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Laurent Pinchart, Hans Verkuil,
Arnd Bergmann, Stanimir Varbanov, Benjamin Gaignard,
Philipp Zabel, Ramesh Shanmugasundaram
There aren't much things required for it to build with COMPILE_TEST.
It just needs to provide stub for an arm-dependent include.
Let's replicate the same solution used by ipmmu-vmsa, in order
to allow building omap3 with COMPILE_TEST.
The actual logic here came from this driver:
drivers/iommu/ipmmu-vmsa.c
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/Kconfig | 8 ++++----
drivers/media/platform/omap3isp/isp.c | 7 +++++++
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index c7a1cf8a1b01..03c9dfeb7781 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -62,12 +62,12 @@ config VIDEO_MUX
config VIDEO_OMAP3
tristate "OMAP 3 Camera support"
- depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
+ depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
depends on HAS_DMA && OF
- depends on OMAP_IOMMU
- select ARM_DMA_USE_IOMMU
+ depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
+ select ARM_DMA_USE_IOMMU if OMAP_IOMMU
select VIDEOBUF2_DMA_CONTIG
- select MFD_SYSCON
+ select MFD_SYSCON if ARCH_OMAP3
select V4L2_FWNODE
---help---
Driver for an OMAP 3 camera controller.
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 8eb000e3d8fd..2a11a709aa4f 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -61,7 +61,14 @@
#include <linux/sched.h>
#include <linux/vmalloc.h>
+#if defined(CONFIG_ARM) && !defined(CONFIG_IOMMU_DMA)
#include <asm/dma-iommu.h>
+#else
+#define arm_iommu_create_mapping(...) NULL
+#define arm_iommu_attach_device(...) -ENODEV
+#define arm_iommu_release_mapping(...) do {} while (0)
+#define arm_iommu_detach_device(...) do {} while (0)
+#endif
#include <media/v4l2-common.h>
#include <media/v4l2-fwnode.h>
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 03/16] media: omap3isp/isp: remove an unused static var
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (4 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 18:34 ` Laurent Pinchart
-1 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Laurent Pinchart
The isp_xclk_init_data const data isn't used anywere.
drivers/media/platform/omap3isp/isp.c:294:35: warning: ‘isp_xclk_init_data’ defined but not used [-Wunused-const-variable=]
static const struct clk_init_data isp_xclk_init_data = {
^~~~~~~~~~~~~~~~~~
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/omap3isp/isp.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 2a11a709aa4f..9e4b5fb8a8b5 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -291,13 +291,6 @@ static const struct clk_ops isp_xclk_ops = {
static const char *isp_xclk_parent_name = "cam_mclk";
-static const struct clk_init_data isp_xclk_init_data = {
- .name = "cam_xclk",
- .ops = &isp_xclk_ops,
- .parent_names = &isp_xclk_parent_name,
- .num_parents = 1,
-};
-
static struct clk *isp_xclk_src_get(struct of_phandle_args *clkspec, void *data)
{
unsigned int idx = clkspec->args[0];
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 04/16] media: fsl-viu: mark static functions as such
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (5 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Bhumika Goyal, Al Viro,
Geliang Tang, Arvind Yadav, Kees Cook
There are several functions that are used only inside the
driver. Stop exposing that to global symbolspace.
Get rid of the following gcc warnings:
drivers/media/platform/fsl-viu.c:240:17: warning: no previous prototype for ‘format_by_fourcc’ [-Wmissing-prototypes]
struct viu_fmt *format_by_fourcc(int fourcc)
^~~~~~~~~~~~~~~~
drivers/media/platform/fsl-viu.c:253:6: warning: no previous prototype for ‘viu_start_dma’ [-Wmissing-prototypes]
void viu_start_dma(struct viu_dev *dev)
^~~~~~~~~~~~~
drivers/media/platform/fsl-viu.c:262:6: warning: no previous prototype for ‘viu_stop_dma’ [-Wmissing-prototypes]
void viu_stop_dma(struct viu_dev *dev)
^~~~~~~~~~~~
drivers/media/platform/fsl-viu.c:807:5: warning: no previous prototype for ‘vidioc_g_fbuf’ [-Wmissing-prototypes]
int vidioc_g_fbuf(struct file *file, void *priv, struct v4l2_framebuffer *arg)
^~~~~~~~~~~~~
drivers/media/platform/fsl-viu.c:818:5: warning: no previous prototype for ‘vidioc_s_fbuf’ [-Wmissing-prototypes]
int vidioc_s_fbuf(struct file *file, void *priv, const struct v4l2_framebuffer *arg)
^~~~~~~~~~~~~
drivers/media/platform/fsl-viu.c: In function ‘viu_open’:
drivers/media/platform/fsl-viu.c:1170:6: warning: variable ‘status_cfg’ set but not used [-Wunused-but-set-variable]
u32 status_cfg;
^~~~~~~~~~
drivers/media/platform/fsl-viu.c: At top level:
drivers/media/platform/fsl-viu.c:1304:6: warning: no previous prototype for ‘viu_reset’ [-Wmissing-prototypes]
void viu_reset(struct viu_reg *reg)
^~~~~~~~~
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/fsl-viu.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 200c47c69a75..9abe79779659 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -229,7 +229,7 @@ enum status_config {
static irqreturn_t viu_intr(int irq, void *dev_id);
-struct viu_fmt *format_by_fourcc(int fourcc)
+static struct viu_fmt *format_by_fourcc(int fourcc)
{
int i;
@@ -242,7 +242,7 @@ struct viu_fmt *format_by_fourcc(int fourcc)
return NULL;
}
-void viu_start_dma(struct viu_dev *dev)
+static void viu_start_dma(struct viu_dev *dev)
{
struct viu_reg *vr = dev->vr;
@@ -253,7 +253,7 @@ void viu_start_dma(struct viu_dev *dev)
out_be32(&vr->status_cfg, INT_FIELD_EN);
}
-void viu_stop_dma(struct viu_dev *dev)
+static void viu_stop_dma(struct viu_dev *dev)
{
struct viu_reg *vr = dev->vr;
int cnt = 100;
@@ -802,7 +802,7 @@ static int vidioc_overlay(struct file *file, void *priv, unsigned int on)
return 0;
}
-int vidioc_g_fbuf(struct file *file, void *priv, struct v4l2_framebuffer *arg)
+static int vidioc_g_fbuf(struct file *file, void *priv, struct v4l2_framebuffer *arg)
{
struct viu_fh *fh = priv;
struct viu_dev *dev = fh->dev;
@@ -813,7 +813,7 @@ int vidioc_g_fbuf(struct file *file, void *priv, struct v4l2_framebuffer *arg)
return 0;
}
-int vidioc_s_fbuf(struct file *file, void *priv, const struct v4l2_framebuffer *arg)
+static int vidioc_s_fbuf(struct file *file, void *priv, const struct v4l2_framebuffer *arg)
{
struct viu_fh *fh = priv;
struct viu_dev *dev = fh->dev;
@@ -1305,7 +1305,7 @@ static int viu_release(struct file *file)
return 0;
}
-void viu_reset(struct viu_reg *reg)
+static void viu_reset(struct viu_reg *reg)
{
out_be32(®->status_cfg, 0);
out_be32(®->luminance, 0x9512a254);
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (6 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 21:35 ` Arnd Bergmann
2018-04-06 19:15 ` kbuild test robot
-1 siblings, 2 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Arnd Bergmann,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
There aren't many things that would be needed to allow it
to build with compile test.
Add the needed bits.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/Kconfig | 2 +-
drivers/media/platform/fsl-viu.c | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 03c9dfeb7781..e6eb1eb776e1 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -42,7 +42,7 @@ config VIDEO_SH_VOU
config VIDEO_VIU
tristate "Freescale VIU Video Driver"
- depends on VIDEO_V4L2 && PPC_MPC512x
+ depends on VIDEO_V4L2 && (PPC_MPC512x || COMPILE_TEST)
select VIDEOBUF_DMA_CONTIG
default y
---help---
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 9abe79779659..466053e00378 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -36,6 +36,14 @@
#define DRV_NAME "fsl_viu"
#define VIU_VERSION "0.5.1"
+/* Allow building this driver with COMPILE_TEST */
+#ifndef CONFIG_PPC_MPC512x
+#define NO_IRQ 0
+
+#define out_be32(v, a) writel(a, v)
+#define in_be32(a) readl(a)
+#endif
+
#define BUFFER_TIMEOUT msecs_to_jiffies(500) /* 0.5 seconds */
#define VIU_VID_MEM_LIMIT 4 /* Video memory limit, in Mb */
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 06/16] media: cec_gpio: allow building CEC_GPIO with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (7 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Arnd Bergmann,
Stanimir Varbanov, Benjamin Gaignard, Philipp Zabel,
Ramesh Shanmugasundaram
At least on i386, building with allyesconfig doesn't enable
PREEMPT, causing cec_gpio to not build.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index e6eb1eb776e1..e8d8bbc976af 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -558,7 +558,7 @@ config VIDEO_MESON_AO_CEC
config CEC_GPIO
tristate "Generic GPIO-based CEC driver"
- depends on PREEMPT
+ depends on PREEMPT || COMPILE_TEST
select CEC_CORE
select CEC_PIN
select GPIOLIB
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
2018-04-05 17:54 ` Mauro Carvalho Chehab
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Kyungmin Park, Sylwester Nawrocki,
Kukjin Kim, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc
There's nothing that prevents building this driver with
COMPILE_TEST. So, enable it.
While here, make the Kconfig dependency cleaner by removing
the unneeded if block.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/exynos4-is/Kconfig | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 7b2c49e5a592..c8e5ad8f8294 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -41,11 +41,10 @@ config VIDEO_S5P_MIPI_CSIS
To compile this driver as a module, choose M here: the
module will be called s5p-csis.
-if SOC_EXYNOS4412 || SOC_EXYNOS5250
-
config VIDEO_EXYNOS_FIMC_LITE
tristate "EXYNOS FIMC-LITE camera interface driver"
depends on I2C
+ depends on SOC_EXYNOS4412 || SOC_EXYNOS5250 || COMPILE_TEST
depends on HAS_DMA
select VIDEOBUF2_DMA_CONTIG
select VIDEO_EXYNOS4_IS_COMMON
@@ -55,7 +54,6 @@ config VIDEO_EXYNOS_FIMC_LITE
To compile this driver as a module, choose M here: the
module will be called exynos-fimc-lite.
-endif
config VIDEO_EXYNOS4_FIMC_IS
tristate "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: linux-samsung-soc, Krzysztof Kozlowski, Mauro Carvalho Chehab,
Mauro Carvalho Chehab, Kyungmin Park, Kukjin Kim,
Sylwester Nawrocki, linux-arm-kernel, Linux Media Mailing List
There's nothing that prevents building this driver with
COMPILE_TEST. So, enable it.
While here, make the Kconfig dependency cleaner by removing
the unneeded if block.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/exynos4-is/Kconfig | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 7b2c49e5a592..c8e5ad8f8294 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -41,11 +41,10 @@ config VIDEO_S5P_MIPI_CSIS
To compile this driver as a module, choose M here: the
module will be called s5p-csis.
-if SOC_EXYNOS4412 || SOC_EXYNOS5250
-
config VIDEO_EXYNOS_FIMC_LITE
tristate "EXYNOS FIMC-LITE camera interface driver"
depends on I2C
+ depends on SOC_EXYNOS4412 || SOC_EXYNOS5250 || COMPILE_TEST
depends on HAS_DMA
select VIDEOBUF2_DMA_CONTIG
select VIDEO_EXYNOS4_IS_COMMON
@@ -55,7 +54,6 @@ config VIDEO_EXYNOS_FIMC_LITE
To compile this driver as a module, choose M here: the
module will be called exynos-fimc-lite.
-endif
config VIDEO_EXYNOS4_FIMC_IS
tristate "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
To: linux-arm-kernel
There's nothing that prevents building this driver with
COMPILE_TEST. So, enable it.
While here, make the Kconfig dependency cleaner by removing
the unneeded if block.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/exynos4-is/Kconfig | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 7b2c49e5a592..c8e5ad8f8294 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -41,11 +41,10 @@ config VIDEO_S5P_MIPI_CSIS
To compile this driver as a module, choose M here: the
module will be called s5p-csis.
-if SOC_EXYNOS4412 || SOC_EXYNOS5250
-
config VIDEO_EXYNOS_FIMC_LITE
tristate "EXYNOS FIMC-LITE camera interface driver"
depends on I2C
+ depends on SOC_EXYNOS4412 || SOC_EXYNOS5250 || COMPILE_TEST
depends on HAS_DMA
select VIDEOBUF2_DMA_CONTIG
select VIDEO_EXYNOS4_IS_COMMON
@@ -55,7 +54,6 @@ config VIDEO_EXYNOS_FIMC_LITE
To compile this driver as a module, choose M here: the
module will be called exynos-fimc-lite.
-endif
config VIDEO_EXYNOS4_FIMC_IS
tristate "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 08/16] media: mmp-camera.h: add missing platform data
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (9 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List, Mauro Carvalho Chehab
Those definitions used to be part of the original patch:
https://patchwork.kernel.org/patch/2815221/
But, somehow, nobody ever noticed until today. Years later,
Arnd discovered that mmp-camera driver doesn't build and make
it depend on BROKEN.
Add the missing bits here, in order to remove BROKEN dependency.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/linux/platform_data/media/mmp-camera.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/include/linux/platform_data/media/mmp-camera.h b/include/linux/platform_data/media/mmp-camera.h
index 83804028115c..d2d3a443eedf 100644
--- a/include/linux/platform_data/media/mmp-camera.h
+++ b/include/linux/platform_data/media/mmp-camera.h
@@ -3,8 +3,27 @@
* Information for the Marvell Armada MMP camera
*/
+#include <media/v4l2-mediabus.h>
+
+enum dphy3_algo {
+ DPHY3_ALGO_DEFAULT = 0,
+ DPHY3_ALGO_PXA910,
+ DPHY3_ALGO_PXA2128
+};
+
struct mmp_camera_platform_data {
struct platform_device *i2c_device;
int sensor_power_gpio;
int sensor_reset_gpio;
+ enum v4l2_mbus_type bus_type;
+ int mclk_min; /* The minimal value of MCLK */
+ int mclk_src; /* which clock source the MCLK derives from */
+ int mclk_div; /* Clock Divider Value for MCLK */
+ /*
+ * MIPI support
+ */
+ int dphy[3]; /* DPHY: CSI2_DPHY3, CSI2_DPHY5, CSI2_DPHY6 */
+ enum dphy3_algo dphy3_algo; /* algos for calculate CSI2_DPHY3 */
+ int lane; /* ccic used lane number; 0 means DVP mode */
+ int lane_clk;
};
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 09/16] media: marvel-ccic: re-enable mmp-driver build
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (10 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Jonathan Corbet
This driver was disabled back in 2015 from builds because
of some troubles with the platform_data definition. Now
that this got fixed, re-enable it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/marvell-ccic/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/marvell-ccic/Kconfig b/drivers/media/platform/marvell-ccic/Kconfig
index 4bf5bd1e90d6..21dacef7c2fc 100644
--- a/drivers/media/platform/marvell-ccic/Kconfig
+++ b/drivers/media/platform/marvell-ccic/Kconfig
@@ -13,8 +13,9 @@ config VIDEO_CAFE_CCIC
config VIDEO_MMP_CAMERA
tristate "Marvell Armada 610 integrated camera controller support"
- depends on ARCH_MMP && I2C && VIDEO_V4L2
- depends on HAS_DMA && BROKEN
+ depends on I2C && VIDEO_V4L2
+ depends on HAS_DMA
+ depends on ARCH_MMP || COMPILE_TEST
select VIDEO_OV7670
select I2C_GPIO
select VIDEOBUF2_DMA_SG
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 10/16] media: mmp-driver: make two functions static
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (11 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Jonathan Corbet
Those functions are used only internally:
CC drivers/media/platform/marvell-ccic/mmp-driver.o
drivers/media/platform/marvell-ccic/mmp-driver.c:186:6: warning: no previous prototype for ‘mcam_ctlr_reset’ [-Wmissing-prototypes]
void mcam_ctlr_reset(struct mcam_camera *mcam)
^~~~~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mmp-driver.c:217:6: warning: no previous prototype for ‘mmpcam_calc_dphy’ [-Wmissing-prototypes]
void mmpcam_calc_dphy(struct mcam_camera *mcam)
^~~~~~~~~~~~~~~~
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/marvell-ccic/mmp-driver.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c
index 816f4b6a7b8e..17d79480e75c 100644
--- a/drivers/media/platform/marvell-ccic/mmp-driver.c
+++ b/drivers/media/platform/marvell-ccic/mmp-driver.c
@@ -183,7 +183,7 @@ static void mmpcam_power_down(struct mcam_camera *mcam)
mcam_clk_disable(mcam);
}
-void mcam_ctlr_reset(struct mcam_camera *mcam)
+static void mcam_ctlr_reset(struct mcam_camera *mcam)
{
unsigned long val;
struct mmp_camera *cam = mcam_to_cam(mcam);
@@ -214,7 +214,7 @@ void mcam_ctlr_reset(struct mcam_camera *mcam)
* CSI2_DPHY3 and CSI2_DPHY6 can be set with a default value
* or be calculated dynamically
*/
-void mmpcam_calc_dphy(struct mcam_camera *mcam)
+static void mmpcam_calc_dphy(struct mcam_camera *mcam)
{
struct mmp_camera *cam = mcam_to_cam(mcam);
struct mmp_camera_platform_data *pdata = cam->pdev->dev.platform_data;
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 11/16] media: davinci: allow building isif code
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (12 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Lad, Prabhakar
The only reason why this driver doesn't build with COMPILE_TEST
is because it includes mach/mux.h. It turns that none of the
macros defined there are used.
So, get rid of it, in order to allow it to build with
COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/davinci/Kconfig | 3 ++-
drivers/media/platform/davinci/isif.c | 2 --
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/davinci/Kconfig b/drivers/media/platform/davinci/Kconfig
index 55982e681d77..babdb4877b3f 100644
--- a/drivers/media/platform/davinci/Kconfig
+++ b/drivers/media/platform/davinci/Kconfig
@@ -67,7 +67,8 @@ config VIDEO_DM355_CCDC
config VIDEO_DM365_ISIF
tristate "TI DM365 ISIF video capture driver"
- depends on VIDEO_V4L2 && ARCH_DAVINCI
+ depends on VIDEO_V4L2
+ depends on ARCH_DAVINCI || COMPILE_TEST
depends on HAS_DMA
depends on I2C
select VIDEOBUF_DMA_CONTIG
diff --git a/drivers/media/platform/davinci/isif.c b/drivers/media/platform/davinci/isif.c
index d5ff58494c1e..b14caadcd0df 100644
--- a/drivers/media/platform/davinci/isif.c
+++ b/drivers/media/platform/davinci/isif.c
@@ -31,8 +31,6 @@
#include <linux/err.h>
#include <linux/module.h>
-#include <mach/mux.h>
-
#include <media/davinci/isif.h>
#include <media/davinci/vpss.h>
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 12/16] media: davinci: allow build vpbe_display with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (13 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Lad, Prabhakar
Except for some includes (with doesn't seem to be used), this
driver builds fine with COMPILE_TEST.
So, add checks there to avoid building it if ARCH_DAVINCI
is not selected.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/davinci/Kconfig | 3 ++-
drivers/media/platform/davinci/vpbe_display.c | 3 +++
drivers/media/platform/davinci/vpbe_osd.c | 2 ++
drivers/media/platform/davinci/vpbe_venc.c | 3 +++
4 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/davinci/Kconfig b/drivers/media/platform/davinci/Kconfig
index babdb4877b3f..b463d1726335 100644
--- a/drivers/media/platform/davinci/Kconfig
+++ b/drivers/media/platform/davinci/Kconfig
@@ -82,7 +82,8 @@ config VIDEO_DM365_ISIF
config VIDEO_DAVINCI_VPBE_DISPLAY
tristate "TI DaVinci VPBE V4L2-Display driver"
- depends on VIDEO_V4L2 && ARCH_DAVINCI
+ depends on VIDEO_V4L2
+ depends on ARCH_DAVINCI || COMPILE_TEST
depends on HAS_DMA
depends on I2C
select VIDEOBUF2_DMA_CONTIG
diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
index 6aabd21fe69f..7b6cd4b3ccc4 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -26,7 +26,10 @@
#include <linux/slab.h>
#include <asm/pgtable.h>
+
+#ifdef CONFIG_ARCH_DAVINCI
#include <mach/cputype.h>
+#endif
#include <media/v4l2-dev.h>
#include <media/v4l2-common.h>
diff --git a/drivers/media/platform/davinci/vpbe_osd.c b/drivers/media/platform/davinci/vpbe_osd.c
index 66449791c70c..10f2bf11edf3 100644
--- a/drivers/media/platform/davinci/vpbe_osd.c
+++ b/drivers/media/platform/davinci/vpbe_osd.c
@@ -24,8 +24,10 @@
#include <linux/clk.h>
#include <linux/slab.h>
+#ifdef CONFIG_ARCH_DAVINCI
#include <mach/cputype.h>
#include <mach/hardware.h>
+#endif
#include <media/davinci/vpss.h>
#include <media/v4l2-device.h>
diff --git a/drivers/media/platform/davinci/vpbe_venc.c b/drivers/media/platform/davinci/vpbe_venc.c
index 3a4e78595149..add72a39ef2d 100644
--- a/drivers/media/platform/davinci/vpbe_venc.c
+++ b/drivers/media/platform/davinci/vpbe_venc.c
@@ -21,8 +21,11 @@
#include <linux/videodev2.h>
#include <linux/slab.h>
+#ifdef CONFIG_ARCH_DAVINCI
#include <mach/hardware.h>
#include <mach/mux.h>
+#endif
+
#include <linux/platform_data/i2c-davinci.h>
#include <linux/io.h>
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 13/16] media: vpbe_venc: don't store return codes if they won't be used
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (14 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Lad, Prabhakar
Fix those two warnings
drivers/media/platform/davinci/vpbe_venc.c: In function ‘venc_set_ntsc’:
drivers/media/platform/davinci/vpbe_venc.c:230:6: warning: variable ‘val’ set but not used [-Wunused-but-set-variable]
u32 val;
^~~
drivers/media/platform/davinci/vpbe_venc.c: In function ‘venc_sub_dev_init’:
drivers/media/platform/davinci/vpbe_venc.c:611:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err;
^~~
AR drivers/media/platform/davinci/built-in.a
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/davinci/vpbe_venc.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/davinci/vpbe_venc.c b/drivers/media/platform/davinci/vpbe_venc.c
index add72a39ef2d..5c255de3b3f8 100644
--- a/drivers/media/platform/davinci/vpbe_venc.c
+++ b/drivers/media/platform/davinci/vpbe_venc.c
@@ -227,7 +227,6 @@ venc_enable_vpss_clock(int venc_type,
*/
static int venc_set_ntsc(struct v4l2_subdev *sd)
{
- u32 val;
struct venc_state *venc = to_state(sd);
struct venc_platform_data *pdata = venc->pdata;
@@ -244,7 +243,7 @@ static int venc_set_ntsc(struct v4l2_subdev *sd)
if (venc->venc_type == VPBE_VERSION_3) {
venc_write(sd, VENC_CLKCTL, 0x01);
venc_write(sd, VENC_VIDCTL, 0);
- val = vdaccfg_write(sd, VDAC_CONFIG_SD_V3);
+ vdaccfg_write(sd, VDAC_CONFIG_SD_V3);
} else if (venc->venc_type == VPBE_VERSION_2) {
venc_write(sd, VENC_CLKCTL, 0x01);
venc_write(sd, VENC_VIDCTL, 0);
@@ -608,9 +607,8 @@ struct v4l2_subdev *venc_sub_dev_init(struct v4l2_device *v4l2_dev,
const char *venc_name)
{
struct venc_state *venc;
- int err;
- err = bus_for_each_dev(&platform_bus_type, NULL, &venc,
+ bus_for_each_dev(&platform_bus_type, NULL, &venc,
venc_device_get);
if (venc == NULL)
return NULL;
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 14/16] media: davinci: get rid of lots of kernel-doc warnings
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (15 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Lad, Prabhakar
Driver build produce lots of warnings due to wrong kernel-doc markups:
drivers/media/platform/davinci/vpbe.c:60: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_current_encoder_info'
drivers/media/platform/davinci/vpbe.c:78: warning: Function parameter or member 'cfg' not described in 'vpbe_find_encoder_sd_index'
drivers/media/platform/davinci/vpbe.c:78: warning: Function parameter or member 'index' not described in 'vpbe_find_encoder_sd_index'
drivers/media/platform/davinci/vpbe.c:105: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_g_cropcap'
drivers/media/platform/davinci/vpbe.c:105: warning: Function parameter or member 'cropcap' not described in 'vpbe_g_cropcap'
drivers/media/platform/davinci/vpbe.c:127: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_enum_outputs'
drivers/media/platform/davinci/vpbe.c:127: warning: Function parameter or member 'output' not described in 'vpbe_enum_outputs'
drivers/media/platform/davinci/vpbe.c:221: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_set_output'
drivers/media/platform/davinci/vpbe.c:221: warning: Function parameter or member 'index' not described in 'vpbe_set_output'
drivers/media/platform/davinci/vpbe.c:316: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_get_output'
drivers/media/platform/davinci/vpbe.c:328: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_s_dv_timings'
drivers/media/platform/davinci/vpbe.c:328: warning: Function parameter or member 'dv_timings' not described in 'vpbe_s_dv_timings'
drivers/media/platform/davinci/vpbe.c:380: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_g_dv_timings'
drivers/media/platform/davinci/vpbe.c:380: warning: Function parameter or member 'dv_timings' not described in 'vpbe_g_dv_timings'
drivers/media/platform/davinci/vpbe.c:405: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_enum_dv_timings'
drivers/media/platform/davinci/vpbe.c:405: warning: Function parameter or member 'timings' not described in 'vpbe_enum_dv_timings'
drivers/media/platform/davinci/vpbe.c:436: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_s_std'
drivers/media/platform/davinci/vpbe.c:436: warning: Function parameter or member 'std_id' not described in 'vpbe_s_std'
drivers/media/platform/davinci/vpbe.c:475: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_g_std'
drivers/media/platform/davinci/vpbe.c:475: warning: Function parameter or member 'std_id' not described in 'vpbe_g_std'
drivers/media/platform/davinci/vpbe.c:500: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_set_mode'
drivers/media/platform/davinci/vpbe.c:500: warning: Function parameter or member 'mode_info' not described in 'vpbe_set_mode'
drivers/media/platform/davinci/vpbe.c:585: warning: Function parameter or member 'dev' not described in 'vpbe_initialize'
drivers/media/platform/davinci/vpbe.c:585: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_initialize'
drivers/media/platform/davinci/vpbe.c:779: warning: Function parameter or member 'dev' not described in 'vpbe_deinitialize'
drivers/media/platform/davinci/vpbe.c:779: warning: Function parameter or member 'vpbe_dev' not described in 'vpbe_deinitialize'
drivers/media/platform/davinci/vpbe_osd.c:144: warning: Function parameter or member 'sd' not described in '_osd_dm6446_vid0_pingpong'
drivers/media/platform/davinci/vpbe_osd.c:144: warning: Function parameter or member 'field_inversion' not described in '_osd_dm6446_vid0_pingpong'
drivers/media/platform/davinci/vpbe_osd.c:144: warning: Function parameter or member 'fb_base_phys' not described in '_osd_dm6446_vid0_pingpong'
drivers/media/platform/davinci/vpbe_osd.c:144: warning: Function parameter or member 'lconfig' not described in '_osd_dm6446_vid0_pingpong'
drivers/media/platform/davinci/vpbe_osd.c:799: warning: Function parameter or member 'sd' not described in 'try_layer_config'
drivers/media/platform/davinci/vpbe_osd.c:799: warning: Function parameter or member 'layer' not described in 'try_layer_config'
drivers/media/platform/davinci/vpbe_osd.c:799: warning: Function parameter or member 'lconfig' not described in 'try_layer_config'
drivers/media/platform/davinci/vpbe_display.c:578: warning: Function parameter or member 'disp_dev' not described in 'vpbe_try_format'
drivers/media/platform/davinci/vpbe_display.c:578: warning: Function parameter or member 'pixfmt' not described in 'vpbe_try_format'
drivers/media/platform/davinci/vpbe_display.c:578: warning: Function parameter or member 'check' not described in 'vpbe_try_format'
drivers/media/platform/davinci/vpbe_display.c:943: warning: Function parameter or member 'file' not described in 'vpbe_display_s_std'
drivers/media/platform/davinci/vpbe_display.c:943: warning: Function parameter or member 'priv' not described in 'vpbe_display_s_std'
drivers/media/platform/davinci/vpbe_display.c:943: warning: Function parameter or member 'std_id' not described in 'vpbe_display_s_std'
drivers/media/platform/davinci/vpbe_display.c:975: warning: Function parameter or member 'file' not described in 'vpbe_display_g_std'
drivers/media/platform/davinci/vpbe_display.c:975: warning: Function parameter or member 'priv' not described in 'vpbe_display_g_std'
drivers/media/platform/davinci/vpbe_display.c:975: warning: Function parameter or member 'std_id' not described in 'vpbe_display_g_std'
drivers/media/platform/davinci/vpbe_display.c:998: warning: Function parameter or member 'file' not described in 'vpbe_display_enum_output'
drivers/media/platform/davinci/vpbe_display.c:998: warning: Function parameter or member 'priv' not described in 'vpbe_display_enum_output'
drivers/media/platform/davinci/vpbe_display.c:998: warning: Function parameter or member 'output' not described in 'vpbe_display_enum_output'
drivers/media/platform/davinci/vpbe_display.c:1025: warning: Function parameter or member 'file' not described in 'vpbe_display_s_output'
drivers/media/platform/davinci/vpbe_display.c:1025: warning: Function parameter or member 'priv' not described in 'vpbe_display_s_output'
drivers/media/platform/davinci/vpbe_display.c:1025: warning: Function parameter or member 'i' not described in 'vpbe_display_s_output'
drivers/media/platform/davinci/vpbe_display.c:1054: warning: Function parameter or member 'file' not described in 'vpbe_display_g_output'
drivers/media/platform/davinci/vpbe_display.c:1054: warning: Function parameter or member 'priv' not described in 'vpbe_display_g_output'
drivers/media/platform/davinci/vpbe_display.c:1054: warning: Function parameter or member 'i' not described in 'vpbe_display_g_output'
drivers/media/platform/davinci/vpbe_display.c:1074: warning: Function parameter or member 'file' not described in 'vpbe_display_enum_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1074: warning: Function parameter or member 'priv' not described in 'vpbe_display_enum_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1074: warning: Function parameter or member 'timings' not described in 'vpbe_display_enum_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1104: warning: Function parameter or member 'file' not described in 'vpbe_display_s_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1104: warning: Function parameter or member 'priv' not described in 'vpbe_display_s_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1104: warning: Function parameter or member 'timings' not described in 'vpbe_display_s_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1137: warning: Function parameter or member 'file' not described in 'vpbe_display_g_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1137: warning: Function parameter or member 'priv' not described in 'vpbe_display_g_dv_timings'
drivers/media/platform/davinci/vpbe_display.c:1137: warning: Function parameter or member 'dv_timings' not described in 'vpbe_display_g_dv_timings'
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/davinci/vpbe.c | 38 ++++++++++++++-------------
drivers/media/platform/davinci/vpbe_display.c | 18 ++++++-------
drivers/media/platform/davinci/vpbe_osd.c | 14 +++++-----
3 files changed, 36 insertions(+), 34 deletions(-)
diff --git a/drivers/media/platform/davinci/vpbe.c b/drivers/media/platform/davinci/vpbe.c
index 7f6462562579..18c035ef84cf 100644
--- a/drivers/media/platform/davinci/vpbe.c
+++ b/drivers/media/platform/davinci/vpbe.c
@@ -51,7 +51,7 @@ MODULE_AUTHOR("Texas Instruments");
/**
* vpbe_current_encoder_info - Get config info for current encoder
- * @vpbe_dev - vpbe device ptr
+ * @vpbe_dev: vpbe device ptr
*
* Return ptr to current encoder config info
*/
@@ -68,8 +68,8 @@ vpbe_current_encoder_info(struct vpbe_device *vpbe_dev)
/**
* vpbe_find_encoder_sd_index - Given a name find encoder sd index
*
- * @vpbe_config - ptr to vpbe cfg
- * @output_index - index used by application
+ * @cfg: ptr to vpbe cfg
+ * @index: index used by application
*
* Return sd index of the encoder
*/
@@ -94,8 +94,8 @@ static int vpbe_find_encoder_sd_index(struct vpbe_config *cfg,
/**
* vpbe_g_cropcap - Get crop capabilities of the display
- * @vpbe_dev - vpbe device ptr
- * @cropcap - cropcap is a ptr to struct v4l2_cropcap
+ * @vpbe_dev: vpbe device ptr
+ * @cropcap: cropcap is a ptr to struct v4l2_cropcap
*
* Update the crop capabilities in crop cap for current
* mode
@@ -116,8 +116,8 @@ static int vpbe_g_cropcap(struct vpbe_device *vpbe_dev,
/**
* vpbe_enum_outputs - enumerate outputs
- * @vpbe_dev - vpbe device ptr
- * @output - ptr to v4l2_output structure
+ * @vpbe_dev: vpbe device ptr
+ * @output: ptr to v4l2_output structure
*
* Enumerates the outputs available at the vpbe display
* returns the status, -EINVAL if end of output list
@@ -212,8 +212,8 @@ static int vpbe_get_std_info_by_name(struct vpbe_device *vpbe_dev,
/**
* vpbe_set_output - Set output
- * @vpbe_dev - vpbe device ptr
- * @index - index of output
+ * @vpbe_dev: vpbe device ptr
+ * @index: index of output
*
* Set vpbe output to the output specified by the index
*/
@@ -308,7 +308,7 @@ static int vpbe_set_default_output(struct vpbe_device *vpbe_dev)
/**
* vpbe_get_output - Get output
- * @vpbe_dev - vpbe device ptr
+ * @vpbe_dev: vpbe device ptr
*
* return current vpbe output to the the index
*/
@@ -317,7 +317,7 @@ static unsigned int vpbe_get_output(struct vpbe_device *vpbe_dev)
return vpbe_dev->current_out_index;
}
-/**
+/*
* vpbe_s_dv_timings - Set the given preset timings in the encoder
*
* Sets the timings if supported by the current encoder. Return the status.
@@ -369,7 +369,7 @@ static int vpbe_s_dv_timings(struct vpbe_device *vpbe_dev,
return ret;
}
-/**
+/*
* vpbe_g_dv_timings - Get the timings in the current encoder
*
* Get the timings in the current encoder. Return the status. 0 - success
@@ -394,7 +394,7 @@ static int vpbe_g_dv_timings(struct vpbe_device *vpbe_dev,
return -EINVAL;
}
-/**
+/*
* vpbe_enum_dv_timings - Enumerate the dv timings in the current encoder
*
* Get the timings in the current encoder. Return the status. 0 - success
@@ -426,7 +426,7 @@ static int vpbe_enum_dv_timings(struct vpbe_device *vpbe_dev,
return 0;
}
-/**
+/*
* vpbe_s_std - Set the given standard in the encoder
*
* Sets the standard if supported by the current encoder. Return the status.
@@ -465,7 +465,7 @@ static int vpbe_s_std(struct vpbe_device *vpbe_dev, v4l2_std_id std_id)
return ret;
}
-/**
+/*
* vpbe_g_std - Get the standard in the current encoder
*
* Get the standard in the current encoder. Return the status. 0 - success
@@ -488,7 +488,7 @@ static int vpbe_g_std(struct vpbe_device *vpbe_dev, v4l2_std_id *std_id)
return -EINVAL;
}
-/**
+/*
* vpbe_set_mode - Set mode in the current encoder using mode info
*
* Use the mode string to decide what timings to set in the encoder
@@ -572,7 +572,8 @@ static int platform_device_get(struct device *dev, void *data)
/**
* vpbe_initialize() - Initialize the vpbe display controller
- * @vpbe_dev - vpbe device ptr
+ * @dev: Master and slave device ptr
+ * @vpbe_dev: vpbe device ptr
*
* Master frame buffer device drivers calls this to initialize vpbe
* display controller. This will then registers v4l2 device and the sub
@@ -769,7 +770,8 @@ static int vpbe_initialize(struct device *dev, struct vpbe_device *vpbe_dev)
/**
* vpbe_deinitialize() - de-initialize the vpbe display controller
- * @dev - Master and slave device ptr
+ * @dev: Master and slave device ptr
+ * @vpbe_dev: vpbe device ptr
*
* vpbe_master and slave frame buffer devices calls this to de-initialize
* the display controller. It is called when master and slave device
diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
index 7b6cd4b3ccc4..9849e4405a6a 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -567,7 +567,7 @@ static void vpbe_disp_check_window_params(struct vpbe_display *disp_dev,
}
-/**
+/*
* vpbe_try_format()
* If user application provides width and height, and have bytesperline set
* to zero, driver calculates bytesperline and sizeimage based on hardware
@@ -932,7 +932,7 @@ static int vpbe_display_try_fmt(struct file *file, void *priv,
}
-/**
+/*
* vpbe_display_s_std - Set the given standard in the encoder
*
* Sets the standard if supported by the current encoder. Return the status.
@@ -964,7 +964,7 @@ static int vpbe_display_s_std(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_g_std - Get the standard in the current encoder
*
* Get the standard in the current encoder. Return the status. 0 - success
@@ -987,7 +987,7 @@ static int vpbe_display_g_std(struct file *file, void *priv,
return -EINVAL;
}
-/**
+/*
* vpbe_display_enum_output - enumerate outputs
*
* Enumerates the outputs available at the vpbe display
@@ -1016,7 +1016,7 @@ static int vpbe_display_enum_output(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_s_output - Set output to
* the output specified by the index
*/
@@ -1045,7 +1045,7 @@ static int vpbe_display_s_output(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_g_output - Get output from subdevice
* for a given by the index
*/
@@ -1062,7 +1062,7 @@ static int vpbe_display_g_output(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_enum_dv_timings - Enumerate the dv timings
*
* enum the timings in the current encoder. Return the status. 0 - success
@@ -1092,7 +1092,7 @@ vpbe_display_enum_dv_timings(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_s_dv_timings - Set the dv timings
*
* Set the timings in the current encoder. Return the status. 0 - success
@@ -1125,7 +1125,7 @@ vpbe_display_s_dv_timings(struct file *file, void *priv,
return 0;
}
-/**
+/*
* vpbe_display_g_dv_timings - Set the dv timings
*
* Get the timings in the current encoder. Return the status. 0 - success
diff --git a/drivers/media/platform/davinci/vpbe_osd.c b/drivers/media/platform/davinci/vpbe_osd.c
index 10f2bf11edf3..99a4ec183ba9 100644
--- a/drivers/media/platform/davinci/vpbe_osd.c
+++ b/drivers/media/platform/davinci/vpbe_osd.c
@@ -124,10 +124,10 @@ static inline u32 osd_modify(struct osd_state *sd, u32 mask, u32 val,
/**
* _osd_dm6446_vid0_pingpong() - field inversion fix for DM6446
- * @sd - ptr to struct osd_state
- * @field_inversion - inversion flag
- * @fb_base_phys - frame buffer address
- * @lconfig - ptr to layer config
+ * @sd: ptr to struct osd_state
+ * @field_inversion: inversion flag
+ * @fb_base_phys: frame buffer address
+ * @lconfig: ptr to layer config
*
* This routine implements a workaround for the field signal inversion silicon
* erratum described in Advisory 1.3.8 for the DM6446. The fb_base_phys and
@@ -784,9 +784,9 @@ static void osd_get_layer_config(struct osd_state *sd, enum osd_layer layer,
/**
* try_layer_config() - Try a specific configuration for the layer
- * @sd - ptr to struct osd_state
- * @layer - layer to configure
- * @lconfig - layer configuration to try
+ * @sd: ptr to struct osd_state
+ * @layer: layer to configure
+ * @lconfig: layer configuration to try
*
* If the requested lconfig is completely rejected and the value of lconfig on
* exit is the current lconfig, then try_layer_config() returns 1. Otherwise,
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Bartlomiej Zolnierkiewicz, dri-devel,
linux-fbdev
Add stubs for omapfb_dss.h, in the case it is included by
some driver when CONFIG_FB_OMAP2 is not defined.
That allows building such driver(s) with COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/video/omapfb_dss.h | 54 ++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 2 deletions(-)
diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
index 1d38901d599d..e9775144ff3b 100644
--- a/include/video/omapfb_dss.h
+++ b/include/video/omapfb_dss.h
@@ -774,6 +774,12 @@ struct omap_dss_driver {
const struct hdmi_avi_infoframe *avi);
};
+#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
+
+typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
+
+#ifdef CONFIG_FB_OMAP2
+
enum omapdss_version omapdss_get_version(void);
bool omapdss_is_initialized(void);
@@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev);
struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev);
void omap_dss_put_device(struct omap_dss_device *dssdev);
-#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from);
struct omap_dss_device *omap_dss_find_device(void *data,
int (*match)(struct omap_dss_device *dssdev, void *data));
@@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev);
void omapdss_default_get_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
-typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
@@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node *parent);
struct omap_dss_device *
omapdss_of_find_source_for_first_ep(struct device_node *node);
+#else
+
+static inline enum omapdss_version omapdss_get_version(void)
+{ return OMAPDSS_VER_UNKNOWN; };
+
+static inline bool omapdss_is_initialized(void)
+{ return false; };
+
+static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline struct omap_dss_device
+*omap_dss_get_device(struct omap_dss_device *dssdev)
+{ return NULL; };
+
+static inline struct omap_dss_device
+*omap_dss_get_next_device(struct omap_dss_device *from)
+{return NULL; };
+
+static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
+
+static inline int omapdss_compat_init(void)
+{ return 0; };
+
+static inline void omapdss_compat_uninit(void) {};
+
+static inline int omap_dss_get_num_overlay_managers(void)
+{ return 0; };
+
+static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int num)
+{ return NULL; };
+
+static inline int omap_dss_get_num_overlays(void)
+{ return 0; };
+
+static inline struct omap_overlay *omap_dss_get_overlay(int num)
+{ return NULL; };
+
+
+#endif /* FB_OMAP2 */
+
#endif /* __OMAPFB_DSS_H */
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, dri-devel,
Mauro Carvalho Chehab, Mauro Carvalho Chehab,
Linux Media Mailing List
Add stubs for omapfb_dss.h, in the case it is included by
some driver when CONFIG_FB_OMAP2 is not defined.
That allows building such driver(s) with COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/video/omapfb_dss.h | 54 ++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 2 deletions(-)
diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
index 1d38901d599d..e9775144ff3b 100644
--- a/include/video/omapfb_dss.h
+++ b/include/video/omapfb_dss.h
@@ -774,6 +774,12 @@ struct omap_dss_driver {
const struct hdmi_avi_infoframe *avi);
};
+#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
+
+typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
+
+#ifdef CONFIG_FB_OMAP2
+
enum omapdss_version omapdss_get_version(void);
bool omapdss_is_initialized(void);
@@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev);
struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev);
void omap_dss_put_device(struct omap_dss_device *dssdev);
-#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from);
struct omap_dss_device *omap_dss_find_device(void *data,
int (*match)(struct omap_dss_device *dssdev, void *data));
@@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev);
void omapdss_default_get_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
-typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
@@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node *parent);
struct omap_dss_device *
omapdss_of_find_source_for_first_ep(struct device_node *node);
+#else
+
+static inline enum omapdss_version omapdss_get_version(void)
+{ return OMAPDSS_VER_UNKNOWN; };
+
+static inline bool omapdss_is_initialized(void)
+{ return false; };
+
+static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline struct omap_dss_device
+*omap_dss_get_device(struct omap_dss_device *dssdev)
+{ return NULL; };
+
+static inline struct omap_dss_device
+*omap_dss_get_next_device(struct omap_dss_device *from)
+{return NULL; };
+
+static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
+
+static inline int omapdss_compat_init(void)
+{ return 0; };
+
+static inline void omapdss_compat_uninit(void) {};
+
+static inline int omap_dss_get_num_overlay_managers(void)
+{ return 0; };
+
+static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int num)
+{ return NULL; };
+
+static inline int omap_dss_get_num_overlays(void)
+{ return 0; };
+
+static inline struct omap_overlay *omap_dss_get_overlay(int num)
+{ return NULL; };
+
+
+#endif /* FB_OMAP2 */
+
#endif /* __OMAPFB_DSS_H */
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: linux-fbdev, Bartlomiej Zolnierkiewicz, dri-devel,
Mauro Carvalho Chehab, Mauro Carvalho Chehab,
Linux Media Mailing List
Add stubs for omapfb_dss.h, in the case it is included by
some driver when CONFIG_FB_OMAP2 is not defined.
That allows building such driver(s) with COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/video/omapfb_dss.h | 54 ++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 2 deletions(-)
diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
index 1d38901d599d..e9775144ff3b 100644
--- a/include/video/omapfb_dss.h
+++ b/include/video/omapfb_dss.h
@@ -774,6 +774,12 @@ struct omap_dss_driver {
const struct hdmi_avi_infoframe *avi);
};
+#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
+
+typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
+
+#ifdef CONFIG_FB_OMAP2
+
enum omapdss_version omapdss_get_version(void);
bool omapdss_is_initialized(void);
@@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device *dssdev);
struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev);
void omap_dss_put_device(struct omap_dss_device *dssdev);
-#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) != NULL)
struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from);
struct omap_dss_device *omap_dss_find_device(void *data,
int (*match)(struct omap_dss_device *dssdev, void *data));
@@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev);
void omapdss_default_get_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings);
-typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
@@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node *parent);
struct omap_dss_device *
omapdss_of_find_source_for_first_ep(struct device_node *node);
+#else
+
+static inline enum omapdss_version omapdss_get_version(void)
+{ return OMAPDSS_VER_UNKNOWN; };
+
+static inline bool omapdss_is_initialized(void)
+{ return false; };
+
+static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
+ void *arg, u32 mask)
+{ return 0; };
+
+static inline struct omap_dss_device
+*omap_dss_get_device(struct omap_dss_device *dssdev)
+{ return NULL; };
+
+static inline struct omap_dss_device
+*omap_dss_get_next_device(struct omap_dss_device *from)
+{return NULL; };
+
+static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
+
+static inline int omapdss_compat_init(void)
+{ return 0; };
+
+static inline void omapdss_compat_uninit(void) {};
+
+static inline int omap_dss_get_num_overlay_managers(void)
+{ return 0; };
+
+static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int num)
+{ return NULL; };
+
+static inline int omap_dss_get_num_overlays(void)
+{ return 0; };
+
+static inline struct omap_overlay *omap_dss_get_overlay(int num)
+{ return NULL; };
+
+
+#endif /* FB_OMAP2 */
+
#endif /* __OMAPFB_DSS_H */
--
2.14.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [PATCH 16/16] media: omap: allow building it with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
` (17 preceding siblings ...)
(?)
@ 2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 18:15 ` Mauro Carvalho Chehab
-1 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 17:54 UTC (permalink / raw)
Cc: Mauro Carvalho Chehab, Linux Media Mailing List, Mauro Carvalho Chehab
Now that we have stubs for omap FB driver, let it build with
COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/platform/omap/Kconfig | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/omap/Kconfig b/drivers/media/platform/omap/Kconfig
index e8e2db181a7a..e6b486c5ddfc 100644
--- a/drivers/media/platform/omap/Kconfig
+++ b/drivers/media/platform/omap/Kconfig
@@ -4,11 +4,11 @@ config VIDEO_OMAP2_VOUT_VRFB
config VIDEO_OMAP2_VOUT
tristate "OMAP2/OMAP3 V4L2-Display driver"
depends on MMU
- depends on ARCH_OMAP2 || ARCH_OMAP3
- depends on FB_OMAP2
+ depends on ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
+ depends on FB_OMAP2 || COMPILE_TEST
select VIDEOBUF_GEN
select VIDEOBUF_DMA_CONTIG
- select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
+ select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
select VIDEO_OMAP2_VOUT_VRFB if VIDEO_OMAP2_VOUT && OMAP2_VRFB
select FRAME_VECTOR
default n
--
2.14.3
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 16/16] media: omap: allow building it with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 16/16] media: omap: allow building it " Mauro Carvalho Chehab
@ 2018-04-05 18:15 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 18:15 UTC (permalink / raw)
Cc: Linux Media Mailing List, Mauro Carvalho Chehab
Em Thu, 5 Apr 2018 13:54:16 -0400
Mauro Carvalho Chehab <mchehab@s-opensource.com> escreveu:
> Now that we have stubs for omap FB driver, let it build with
> COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> drivers/media/platform/omap/Kconfig | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/platform/omap/Kconfig b/drivers/media/platform/omap/Kconfig
> index e8e2db181a7a..e6b486c5ddfc 100644
> --- a/drivers/media/platform/omap/Kconfig
> +++ b/drivers/media/platform/omap/Kconfig
> @@ -4,11 +4,11 @@ config VIDEO_OMAP2_VOUT_VRFB
> config VIDEO_OMAP2_VOUT
> tristate "OMAP2/OMAP3 V4L2-Display driver"
> depends on MMU
> - depends on ARCH_OMAP2 || ARCH_OMAP3
> - depends on FB_OMAP2
> + depends on ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
> + depends on FB_OMAP2 || COMPILE_TEST
> select VIDEOBUF_GEN
> select VIDEOBUF_DMA_CONTIG
> - select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
> + select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
> select VIDEO_OMAP2_VOUT_VRFB if VIDEO_OMAP2_VOUT && OMAP2_VRFB
> select FRAME_VECTOR
> default n
This actually produces a warning:
WARNING: unmet direct dependencies detected for OMAP2_VRFB
Depends on [n]: HAS_IOMEM [=y] && ARCH_OMAP2PLUS
Selected by [y]:
- VIDEO_OMAP2_VOUT [=y] && MEDIA_SUPPORT [=y] && V4L_PLATFORM_DRIVERS [=y] && MMU [=y] && (FB_OMAP2 [=n] || COMPILE_TEST [=y]) && (ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST [=y])
I'm folding this one with the enclosed change:
diff --git a/drivers/media/platform/omap/Kconfig b/drivers/media/platform/omap/Kconfig
index e6b486c5ddfc..ff051958d675 100644
--- a/drivers/media/platform/omap/Kconfig
+++ b/drivers/media/platform/omap/Kconfig
@@ -4,11 +4,10 @@ config VIDEO_OMAP2_VOUT_VRFB
config VIDEO_OMAP2_VOUT
tristate "OMAP2/OMAP3 V4L2-Display driver"
depends on MMU
- depends on ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
- depends on FB_OMAP2 || COMPILE_TEST
+ depends on ((ARCH_OMAP2 || ARCH_OMAP3) && FB_OMAP2) || COMPILE_TEST
select VIDEOBUF_GEN
select VIDEOBUF_DMA_CONTIG
- select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
+ select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
select VIDEO_OMAP2_VOUT_VRFB if VIDEO_OMAP2_VOUT && OMAP2_VRFB
select FRAME_VECTOR
default n
Thanks,
Mauro
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 02/16] media: omap3isp: allow it to build " Mauro Carvalho Chehab
@ 2018-04-05 18:30 ` Laurent Pinchart
2018-04-05 19:44 ` Mauro Carvalho Chehab
2018-04-07 5:23 ` kbuild test robot
1 sibling, 1 reply; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-05 18:30 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Arnd Bergmann, Stanimir Varbanov, Benjamin Gaignard,
Philipp Zabel, Ramesh Shanmugasundaram
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 20:54:02 EEST Mauro Carvalho Chehab wrote:
> There aren't much things required for it to build with COMPILE_TEST.
> It just needs to provide stub for an arm-dependent include.
>
> Let's replicate the same solution used by ipmmu-vmsa, in order
> to allow building omap3 with COMPILE_TEST.
>
> The actual logic here came from this driver:
>
> drivers/iommu/ipmmu-vmsa.c
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> drivers/media/platform/Kconfig | 8 ++++----
> drivers/media/platform/omap3isp/isp.c | 7 +++++++
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> index c7a1cf8a1b01..03c9dfeb7781 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -62,12 +62,12 @@ config VIDEO_MUX
>
> config VIDEO_OMAP3
> tristate "OMAP 3 Camera support"
> - depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
> + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
> depends on HAS_DMA && OF
> - depends on OMAP_IOMMU
> - select ARM_DMA_USE_IOMMU
> + depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
> + select ARM_DMA_USE_IOMMU if OMAP_IOMMU
> select VIDEOBUF2_DMA_CONTIG
> - select MFD_SYSCON
> + select MFD_SYSCON if ARCH_OMAP3
> select V4L2_FWNODE
> ---help---
> Driver for an OMAP 3 camera controller.
> diff --git a/drivers/media/platform/omap3isp/isp.c
> b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..2a11a709aa4f
> 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -61,7 +61,14 @@
> #include <linux/sched.h>
> #include <linux/vmalloc.h>
>
> +#if defined(CONFIG_ARM) && !defined(CONFIG_IOMMU_DMA)
> #include <asm/dma-iommu.h>
> +#else
> +#define arm_iommu_create_mapping(...) NULL
> +#define arm_iommu_attach_device(...) -ENODEV
> +#define arm_iommu_release_mapping(...) do {} while (0)
> +#define arm_iommu_detach_device(...) do {} while (0)
> +#endif
I don't think it's the job of a driver to define those stubs, sorry. Otherwise
where do you stop ? If you have half of the code that is architecture-
dependent, would you stub it ? And what if the stubs you define here generate
warnings in static analyzers ?
If you want to make drivers compile for all architectures, the APIs they use
must be defined in linux/, not in asm/. They can be stubbed there when not
implemented in a particular architecture, but not in the driver.
> #include <media/v4l2-common.h>
> #include <media/v4l2-fwnode.h>
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 03/16] media: omap3isp/isp: remove an unused static var
2018-04-05 17:54 ` [PATCH 03/16] media: omap3isp/isp: remove an unused static var Mauro Carvalho Chehab
@ 2018-04-05 18:34 ` Laurent Pinchart
0 siblings, 0 replies; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-05 18:34 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List, Mauro Carvalho Chehab
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 20:54:03 EEST Mauro Carvalho Chehab wrote:
> The isp_xclk_init_data const data isn't used anywere.
>
> drivers/media/platform/omap3isp/isp.c:294:35: warning: ‘isp_xclk_init_data’
> defined but not used [-Wunused-const-variable=] static const struct
> clk_init_data isp_xclk_init_data = {
> ^~~~~~~~~~~~~~~~~~
I believe you, no need for a compiler warning message to prove this :-)
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
I really wonder why my compiler has never warned me. The problem has been
there from the start :-/
You should add a fixes tag:
Fixes: 9b28ee3c9122 ("[media] omap3isp: Use the common clock framework")
Apart from that,
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
I think Sakari is planning a pull request for the omap3isp driver so I'll let
him handle this patch.
> ---
> drivers/media/platform/omap3isp/isp.c | 7 -------
> 1 file changed, 7 deletions(-)
>
> diff --git a/drivers/media/platform/omap3isp/isp.c
> b/drivers/media/platform/omap3isp/isp.c index 2a11a709aa4f..9e4b5fb8a8b5
> 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -291,13 +291,6 @@ static const struct clk_ops isp_xclk_ops = {
>
> static const char *isp_xclk_parent_name = "cam_mclk";
>
> -static const struct clk_init_data isp_xclk_init_data = {
> - .name = "cam_xclk",
> - .ops = &isp_xclk_ops,
> - .parent_names = &isp_xclk_parent_name,
> - .num_parents = 1,
> -};
> -
> static struct clk *isp_xclk_src_get(struct of_phandle_args *clkspec, void
> *data) {
> unsigned int idx = clkspec->args[0];
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
2018-04-05 17:54 ` Mauro Carvalho Chehab
(?)
@ 2018-04-05 18:41 ` Laurent Pinchart
-1 siblings, 0 replies; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-05 18:41 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab,
Bartlomiej Zolnierkiewicz, dri-devel, linux-fbdev
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> Add stubs for omapfb_dss.h, in the case it is included by
> some driver when CONFIG_FB_OMAP2 is not defined.
The omapfb driver doesn't include any asm/ header, so it should probably build
fine on non-ARM architectures. Instead of adding stubs here, you can enable
compilation of the driver on all platforms, in which case the omap_vout driver
could keep depending on FB_OMAP2 as it should.
> That allows building such driver(s) with COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> include/video/omapfb_dss.h | 54 +++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 52 insertions(+), 2 deletions(-)
>
> diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
> index 1d38901d599d..e9775144ff3b 100644
> --- a/include/video/omapfb_dss.h
> +++ b/include/video/omapfb_dss.h
> @@ -774,6 +774,12 @@ struct omap_dss_driver {
> const struct hdmi_avi_infoframe *avi);
> };
>
> +#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !=
> NULL) +
> +typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> +
> +#ifdef CONFIG_FB_OMAP2
> +
> enum omapdss_version omapdss_get_version(void);
> bool omapdss_is_initialized(void);
>
> @@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device
> *dssdev);
>
> struct omap_dss_device *omap_dss_get_device(struct omap_dss_device
> *dssdev); void omap_dss_put_device(struct omap_dss_device *dssdev);
> -#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !=
> NULL) struct omap_dss_device *omap_dss_get_next_device(struct
> omap_dss_device *from); struct omap_dss_device *omap_dss_find_device(void
> *data,
> int (*match)(struct omap_dss_device *dssdev, void *data));
> @@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct
> omap_dss_device *dssdev); void omapdss_default_get_timings(struct
> omap_dss_device *dssdev,
> struct omap_video_timings *timings);
>
> -typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
> int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
>
> @@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node
> *parent);
>
> struct omap_dss_device *
> omapdss_of_find_source_for_first_ep(struct device_node *node);
> +#else
> +
> +static inline enum omapdss_version omapdss_get_version(void)
> +{ return OMAPDSS_VER_UNKNOWN; };
> +
> +static inline bool omapdss_is_initialized(void)
> +{ return false; };
> +
> +static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_device(struct omap_dss_device *dssdev)
> +{ return NULL; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_next_device(struct omap_dss_device *from)
> +{return NULL; };
> +
> +static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
> +
> +static inline int omapdss_compat_init(void)
> +{ return 0; };
> +
> +static inline void omapdss_compat_uninit(void) {};
> +
> +static inline int omap_dss_get_num_overlay_managers(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int
> num) +{ return NULL; };
> +
> +static inline int omap_dss_get_num_overlays(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay *omap_dss_get_overlay(int num)
> +{ return NULL; };
> +
> +
> +#endif /* FB_OMAP2 */
> +
>
> #endif /* __OMAPFB_DSS_H */
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 18:41 ` Laurent Pinchart
0 siblings, 0 replies; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-05 18:41 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Bartlomiej Zolnierkiewicz, Mauro Carvalho Chehab, linux-fbdev,
dri-devel, Linux Media Mailing List
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> Add stubs for omapfb_dss.h, in the case it is included by
> some driver when CONFIG_FB_OMAP2 is not defined.
The omapfb driver doesn't include any asm/ header, so it should probably build
fine on non-ARM architectures. Instead of adding stubs here, you can enable
compilation of the driver on all platforms, in which case the omap_vout driver
could keep depending on FB_OMAP2 as it should.
> That allows building such driver(s) with COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> include/video/omapfb_dss.h | 54 +++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 52 insertions(+), 2 deletions(-)
>
> diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
> index 1d38901d599d..e9775144ff3b 100644
> --- a/include/video/omapfb_dss.h
> +++ b/include/video/omapfb_dss.h
> @@ -774,6 +774,12 @@ struct omap_dss_driver {
> const struct hdmi_avi_infoframe *avi);
> };
>
> +#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !> NULL) +
> +typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> +
> +#ifdef CONFIG_FB_OMAP2
> +
> enum omapdss_version omapdss_get_version(void);
> bool omapdss_is_initialized(void);
>
> @@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device
> *dssdev);
>
> struct omap_dss_device *omap_dss_get_device(struct omap_dss_device
> *dssdev); void omap_dss_put_device(struct omap_dss_device *dssdev);
> -#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !> NULL) struct omap_dss_device *omap_dss_get_next_device(struct
> omap_dss_device *from); struct omap_dss_device *omap_dss_find_device(void
> *data,
> int (*match)(struct omap_dss_device *dssdev, void *data));
> @@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct
> omap_dss_device *dssdev); void omapdss_default_get_timings(struct
> omap_dss_device *dssdev,
> struct omap_video_timings *timings);
>
> -typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
> int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
>
> @@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node
> *parent);
>
> struct omap_dss_device *
> omapdss_of_find_source_for_first_ep(struct device_node *node);
> +#else
> +
> +static inline enum omapdss_version omapdss_get_version(void)
> +{ return OMAPDSS_VER_UNKNOWN; };
> +
> +static inline bool omapdss_is_initialized(void)
> +{ return false; };
> +
> +static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_device(struct omap_dss_device *dssdev)
> +{ return NULL; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_next_device(struct omap_dss_device *from)
> +{return NULL; };
> +
> +static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
> +
> +static inline int omapdss_compat_init(void)
> +{ return 0; };
> +
> +static inline void omapdss_compat_uninit(void) {};
> +
> +static inline int omap_dss_get_num_overlay_managers(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int
> num) +{ return NULL; };
> +
> +static inline int omap_dss_get_num_overlays(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay *omap_dss_get_overlay(int num)
> +{ return NULL; };
> +
> +
> +#endif /* FB_OMAP2 */
> +
>
> #endif /* __OMAPFB_DSS_H */
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 18:41 ` Laurent Pinchart
0 siblings, 0 replies; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-05 18:41 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Bartlomiej Zolnierkiewicz, Mauro Carvalho Chehab, linux-fbdev,
dri-devel, Linux Media Mailing List
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> Add stubs for omapfb_dss.h, in the case it is included by
> some driver when CONFIG_FB_OMAP2 is not defined.
The omapfb driver doesn't include any asm/ header, so it should probably build
fine on non-ARM architectures. Instead of adding stubs here, you can enable
compilation of the driver on all platforms, in which case the omap_vout driver
could keep depending on FB_OMAP2 as it should.
> That allows building such driver(s) with COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> include/video/omapfb_dss.h | 54 +++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 52 insertions(+), 2 deletions(-)
>
> diff --git a/include/video/omapfb_dss.h b/include/video/omapfb_dss.h
> index 1d38901d599d..e9775144ff3b 100644
> --- a/include/video/omapfb_dss.h
> +++ b/include/video/omapfb_dss.h
> @@ -774,6 +774,12 @@ struct omap_dss_driver {
> const struct hdmi_avi_infoframe *avi);
> };
>
> +#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !=
> NULL) +
> +typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> +
> +#ifdef CONFIG_FB_OMAP2
> +
> enum omapdss_version omapdss_get_version(void);
> bool omapdss_is_initialized(void);
>
> @@ -785,7 +791,6 @@ void omapdss_unregister_display(struct omap_dss_device
> *dssdev);
>
> struct omap_dss_device *omap_dss_get_device(struct omap_dss_device
> *dssdev); void omap_dss_put_device(struct omap_dss_device *dssdev);
> -#define for_each_dss_dev(d) while ((d = omap_dss_get_next_device(d)) !=
> NULL) struct omap_dss_device *omap_dss_get_next_device(struct
> omap_dss_device *from); struct omap_dss_device *omap_dss_find_device(void
> *data,
> int (*match)(struct omap_dss_device *dssdev, void *data));
> @@ -826,7 +831,6 @@ int omapdss_default_get_recommended_bpp(struct
> omap_dss_device *dssdev); void omapdss_default_get_timings(struct
> omap_dss_device *dssdev,
> struct omap_video_timings *timings);
>
> -typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
> int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
> int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
>
> @@ -856,5 +860,51 @@ omapdss_of_get_first_endpoint(const struct device_node
> *parent);
>
> struct omap_dss_device *
> omapdss_of_find_source_for_first_ep(struct device_node *node);
> +#else
> +
> +static inline enum omapdss_version omapdss_get_version(void)
> +{ return OMAPDSS_VER_UNKNOWN; };
> +
> +static inline bool omapdss_is_initialized(void)
> +{ return false; };
> +
> +static inline int omap_dispc_register_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline int omap_dispc_unregister_isr(omap_dispc_isr_t isr,
> + void *arg, u32 mask)
> +{ return 0; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_device(struct omap_dss_device *dssdev)
> +{ return NULL; };
> +
> +static inline struct omap_dss_device
> +*omap_dss_get_next_device(struct omap_dss_device *from)
> +{return NULL; };
> +
> +static inline void omap_dss_put_device(struct omap_dss_device *dssdev) {};
> +
> +static inline int omapdss_compat_init(void)
> +{ return 0; };
> +
> +static inline void omapdss_compat_uninit(void) {};
> +
> +static inline int omap_dss_get_num_overlay_managers(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int
> num) +{ return NULL; };
> +
> +static inline int omap_dss_get_num_overlays(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay *omap_dss_get_overlay(int num)
> +{ return NULL; };
> +
> +
> +#endif /* FB_OMAP2 */
> +
>
> #endif /* __OMAPFB_DSS_H */
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
2018-04-05 18:41 ` Laurent Pinchart
(?)
@ 2018-04-05 19:32 ` Mauro Carvalho Chehab
-1 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 19:32 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Linux Media Mailing List, Mauro Carvalho Chehab,
Bartlomiej Zolnierkiewicz, dri-devel, linux-fbdev
Em Thu, 05 Apr 2018 21:41:18 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> Thank you for the patch.
>
> On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> > Add stubs for omapfb_dss.h, in the case it is included by
> > some driver when CONFIG_FB_OMAP2 is not defined.
>
> The omapfb driver doesn't include any asm/ header, so it should probably build
> fine on non-ARM architectures. Instead of adding stubs here, you can enable
> compilation of the driver on all platforms, in which case the omap_vout driver
> could keep depending on FB_OMAP2 as it should.
True. The patch for that is simple.
Patch enclosed. Please notice that, now with W=1, several new warnings
will popup. I'll let to the others to touch there, as I don't have any
clue about what's there under omapfb.
Those are the new warnings:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c: In function ‘omapfb_setup_overlay’:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:891:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
^
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:896:2: note: here
default:
^~~~~~~
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c: In function ‘tpd_probe’:
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c:221:26: warning: variable ‘in’ set but not used [-Wunused-but-set-variable]
struct omap_dss_device *in, *dssdev;
^~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c: In function ‘calc_vrfb_rotation_offset’:
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1905:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode == OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1908:2: note: here
case OMAP_DSS_ROT_90:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1927:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode == OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1930:2: note: here
case OMAP_DSS_ROT_90 + 4:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/venc.c:223:33: warning: ‘venc_config_pal_bdghi’ defined but not used [-Wunused-const-variable=]
static const struct venc_config venc_config_pal_bdghi = {
^~~~~~~~~~~~~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘_dsi_print_reset_status’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:1189:6: warning: variable ‘l’ set but not used [-Wunused-but-set-variable]
u32 l;
^
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_proto_timings’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:3638:42: warning: variable ‘tclk_trail’ set but not used [-Wunused-but-set-variable]
unsigned tlpx, tclk_zero, tclk_prepare, tclk_trail;
^~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_update’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:10: warning: variable ‘dh’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:6: warning: variable ‘dw’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c: In function ‘hdmi4_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c:693:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c: In function ‘hdmi5_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c:804:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
Thanks,
Mauro
---
[PATCH] omap2: omapfb: allow building it with COMPILE_TEST
This driver builds cleanly with COMPILE_TEST, and it is
needed in order to allow building drivers/media omap2
driver.
So, change the logic there to allow building it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/video/fbdev/omap2/Kconfig b/drivers/video/fbdev/omap2/Kconfig
index 0921c4de8407..82008699d253 100644
--- a/drivers/video/fbdev/omap2/Kconfig
+++ b/drivers/video/fbdev/omap2/Kconfig
@@ -1,4 +1,4 @@
-if ARCH_OMAP2PLUS
+if ARCH_OMAP2PLUS || COMPILE_TEST
source "drivers/video/fbdev/omap2/omapfb/Kconfig"
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 19:32 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 19:32 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Bartlomiej Zolnierkiewicz, Mauro Carvalho Chehab, linux-fbdev,
dri-devel, Linux Media Mailing List
Em Thu, 05 Apr 2018 21:41:18 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> Thank you for the patch.
>
> On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> > Add stubs for omapfb_dss.h, in the case it is included by
> > some driver when CONFIG_FB_OMAP2 is not defined.
>
> The omapfb driver doesn't include any asm/ header, so it should probably build
> fine on non-ARM architectures. Instead of adding stubs here, you can enable
> compilation of the driver on all platforms, in which case the omap_vout driver
> could keep depending on FB_OMAP2 as it should.
True. The patch for that is simple.
Patch enclosed. Please notice that, now with W=1, several new warnings
will popup. I'll let to the others to touch there, as I don't have any
clue about what's there under omapfb.
Those are the new warnings:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c: In function ‘omapfb_setup_overlay’:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:891:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (ofbi->rotation_type = OMAP_DSS_ROT_VRFB) {
^
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:896:2: note: here
default:
^~~~~~~
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c: In function ‘tpd_probe’:
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c:221:26: warning: variable ‘in’ set but not used [-Wunused-but-set-variable]
struct omap_dss_device *in, *dssdev;
^~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c: In function ‘calc_vrfb_rotation_offset’:
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1905:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode = OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1908:2: note: here
case OMAP_DSS_ROT_90:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1927:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode = OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1930:2: note: here
case OMAP_DSS_ROT_90 + 4:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/venc.c:223:33: warning: ‘venc_config_pal_bdghi’ defined but not used [-Wunused-const-variable=]
static const struct venc_config venc_config_pal_bdghi = {
^~~~~~~~~~~~~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘_dsi_print_reset_status’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:1189:6: warning: variable ‘l’ set but not used [-Wunused-but-set-variable]
u32 l;
^
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_proto_timings’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:3638:42: warning: variable ‘tclk_trail’ set but not used [-Wunused-but-set-variable]
unsigned tlpx, tclk_zero, tclk_prepare, tclk_trail;
^~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_update’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:10: warning: variable ‘dh’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:6: warning: variable ‘dw’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c: In function ‘hdmi4_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c:693:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c: In function ‘hdmi5_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c:804:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
Thanks,
Mauro
---
[PATCH] omap2: omapfb: allow building it with COMPILE_TEST
This driver builds cleanly with COMPILE_TEST, and it is
needed in order to allow building drivers/media omap2
driver.
So, change the logic there to allow building it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/video/fbdev/omap2/Kconfig b/drivers/video/fbdev/omap2/Kconfig
index 0921c4de8407..82008699d253 100644
--- a/drivers/video/fbdev/omap2/Kconfig
+++ b/drivers/video/fbdev/omap2/Kconfig
@@ -1,4 +1,4 @@
-if ARCH_OMAP2PLUS
+if ARCH_OMAP2PLUS || COMPILE_TEST
source "drivers/video/fbdev/omap2/omapfb/Kconfig"
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST
@ 2018-04-05 19:32 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 19:32 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Bartlomiej Zolnierkiewicz, Mauro Carvalho Chehab, linux-fbdev,
dri-devel, Linux Media Mailing List
Em Thu, 05 Apr 2018 21:41:18 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> Thank you for the patch.
>
> On Thursday, 5 April 2018 20:54:15 EEST Mauro Carvalho Chehab wrote:
> > Add stubs for omapfb_dss.h, in the case it is included by
> > some driver when CONFIG_FB_OMAP2 is not defined.
>
> The omapfb driver doesn't include any asm/ header, so it should probably build
> fine on non-ARM architectures. Instead of adding stubs here, you can enable
> compilation of the driver on all platforms, in which case the omap_vout driver
> could keep depending on FB_OMAP2 as it should.
True. The patch for that is simple.
Patch enclosed. Please notice that, now with W=1, several new warnings
will popup. I'll let to the others to touch there, as I don't have any
clue about what's there under omapfb.
Those are the new warnings:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c: In function ‘omapfb_setup_overlay’:
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:891:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
^
drivers/video/fbdev/omap2/omapfb/omapfb-main.c:896:2: note: here
default:
^~~~~~~
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c: In function ‘tpd_probe’:
drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c:221:26: warning: variable ‘in’ set but not used [-Wunused-but-set-variable]
struct omap_dss_device *in, *dssdev;
^~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c: In function ‘calc_vrfb_rotation_offset’:
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1905:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode == OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1908:2: note: here
case OMAP_DSS_ROT_90:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1927:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (color_mode == OMAP_DSS_COLOR_YUV2 ||
^
drivers/video/fbdev/omap2/omapfb/dss/dispc.c:1930:2: note: here
case OMAP_DSS_ROT_90 + 4:
^~~~
drivers/video/fbdev/omap2/omapfb/dss/venc.c:223:33: warning: ‘venc_config_pal_bdghi’ defined but not used [-Wunused-const-variable=]
static const struct venc_config venc_config_pal_bdghi = {
^~~~~~~~~~~~~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘_dsi_print_reset_status’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:1189:6: warning: variable ‘l’ set but not used [-Wunused-but-set-variable]
u32 l;
^
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_proto_timings’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:3638:42: warning: variable ‘tclk_trail’ set but not used [-Wunused-but-set-variable]
unsigned tlpx, tclk_zero, tclk_prepare, tclk_trail;
^~~~~~~~~~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function ‘dsi_update’:
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:10: warning: variable ‘dh’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:4051:6: warning: variable ‘dw’ set but not used [-Wunused-but-set-variable]
u16 dw, dh;
^~
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c: In function ‘hdmi4_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c:693:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c: In function ‘hdmi5_audio_config’:
drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c:804:6: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
int err, n, cts, channel_count;
^~~
Thanks,
Mauro
---
[PATCH] omap2: omapfb: allow building it with COMPILE_TEST
This driver builds cleanly with COMPILE_TEST, and it is
needed in order to allow building drivers/media omap2
driver.
So, change the logic there to allow building it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/video/fbdev/omap2/Kconfig b/drivers/video/fbdev/omap2/Kconfig
index 0921c4de8407..82008699d253 100644
--- a/drivers/video/fbdev/omap2/Kconfig
+++ b/drivers/video/fbdev/omap2/Kconfig
@@ -1,4 +1,4 @@
-if ARCH_OMAP2PLUS
+if ARCH_OMAP2PLUS || COMPILE_TEST
source "drivers/video/fbdev/omap2/omapfb/Kconfig"
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-05 18:30 ` Laurent Pinchart
@ 2018-04-05 19:44 ` Mauro Carvalho Chehab
2018-04-07 11:56 ` Laurent Pinchart
0 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-05 19:44 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Arnd Bergmann, Stanimir Varbanov, Benjamin Gaignard,
Philipp Zabel, Ramesh Shanmugasundaram
Em Thu, 05 Apr 2018 21:30:27 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> Thank you for the patch.
>
> On Thursday, 5 April 2018 20:54:02 EEST Mauro Carvalho Chehab wrote:
> > There aren't much things required for it to build with COMPILE_TEST.
> > It just needs to provide stub for an arm-dependent include.
> >
> > Let's replicate the same solution used by ipmmu-vmsa, in order
> > to allow building omap3 with COMPILE_TEST.
> >
> > The actual logic here came from this driver:
> >
> > drivers/iommu/ipmmu-vmsa.c
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > ---
> > drivers/media/platform/Kconfig | 8 ++++----
> > drivers/media/platform/omap3isp/isp.c | 7 +++++++
> > 2 files changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> > index c7a1cf8a1b01..03c9dfeb7781 100644
> > --- a/drivers/media/platform/Kconfig
> > +++ b/drivers/media/platform/Kconfig
> > @@ -62,12 +62,12 @@ config VIDEO_MUX
> >
> > config VIDEO_OMAP3
> > tristate "OMAP 3 Camera support"
> > - depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
> > + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
> > depends on HAS_DMA && OF
> > - depends on OMAP_IOMMU
> > - select ARM_DMA_USE_IOMMU
> > + depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
> > + select ARM_DMA_USE_IOMMU if OMAP_IOMMU
> > select VIDEOBUF2_DMA_CONTIG
> > - select MFD_SYSCON
> > + select MFD_SYSCON if ARCH_OMAP3
> > select V4L2_FWNODE
> > ---help---
> > Driver for an OMAP 3 camera controller.
> > diff --git a/drivers/media/platform/omap3isp/isp.c
> > b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..2a11a709aa4f
> > 100644
> > --- a/drivers/media/platform/omap3isp/isp.c
> > +++ b/drivers/media/platform/omap3isp/isp.c
> > @@ -61,7 +61,14 @@
> > #include <linux/sched.h>
> > #include <linux/vmalloc.h>
> >
> > +#if defined(CONFIG_ARM) && !defined(CONFIG_IOMMU_DMA)
> > #include <asm/dma-iommu.h>
> > +#else
> > +#define arm_iommu_create_mapping(...) NULL
> > +#define arm_iommu_attach_device(...) -ENODEV
> > +#define arm_iommu_release_mapping(...) do {} while (0)
> > +#define arm_iommu_detach_device(...) do {} while (0)
> > +#endif
>
> I don't think it's the job of a driver to define those stubs, sorry. Otherwise
> where do you stop ? If you have half of the code that is architecture-
> dependent, would you stub it ? And what if the stubs you define here generate
> warnings in static analyzers ?
I agree that we should avoid doing that as a general case, but see
below.
> If you want to make drivers compile for all architectures, the APIs they use
> must be defined in linux/, not in asm/. They can be stubbed there when not
> implemented in a particular architecture, but not in the driver.
In this specific case, the same approach taken here is already needed
by the Renesas VMSA-compatible IPMMU driver, with, btw, is inside
drivers/iommu:
drivers/iommu/ipmmu-vmsa.c
Also, this API is used only by 3 drivers [1]:
drivers/iommu/ipmmu-vmsa.c
drivers/iommu/mtk_iommu_v1.c
drivers/media/platform/omap3isp/isp.c
[1] as blamed by
git grep -l arm_iommu_create_mapping
That hardly seems to be an arch-specific iommu solution, but, instead, some
hack used by only three drivers or some legacy iommu binding.
The omap3isp is, btw, the only driver outside drivers/iommu that needs it.
So, it sounds that other driver uses some other approach, but hardly
it would be worth to change this driver to use something else.
So, better to stick with the same solution the Renesas driver used.
Thanks,
Mauro
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST Mauro Carvalho Chehab
@ 2018-04-05 21:35 ` Arnd Bergmann
2018-04-06 9:47 ` Mauro Carvalho Chehab
2018-04-06 19:15 ` kbuild test robot
1 sibling, 1 reply; 52+ messages in thread
From: Arnd Bergmann @ 2018-04-05 21:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
On Thu, Apr 5, 2018 at 7:54 PM, Mauro Carvalho Chehab
<mchehab@s-opensource.com> wrote:
> There aren't many things that would be needed to allow it
> to build with compile test.
> +/* Allow building this driver with COMPILE_TEST */
> +#ifndef CONFIG_PPC_MPC512x
> +#define NO_IRQ 0
The NO_IRQ usage here really needs to die. The portable way to do this
is the simpler
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 200c47c69a75..707bda89b4f7 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -1407,7 +1407,7 @@ static int viu_of_probe(struct platform_device *op)
}
viu_irq = irq_of_parse_and_map(op->dev.of_node, 0);
- if (viu_irq == NO_IRQ) {
+ if (!viu_irq) {
dev_err(&op->dev, "Error while mapping the irq\n");
return -EINVAL;
}
> +#define out_be32(v, a) writel(a, v)
> +#define in_be32(a) readl(a)
This does get it to compile, but looks confusing because it mixes up the
endianess. I'd suggest doing it like
#ifndef CONFIG_PPC
#define out_be32(v, a) iowrite32be(a, v)
#define in_be32(a) ioread32be(a)
#endif
Arnd
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-05 21:35 ` Arnd Bergmann
@ 2018-04-06 9:47 ` Mauro Carvalho Chehab
2018-04-06 9:51 ` Arnd Bergmann
0 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-06 9:47 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
Em Thu, 5 Apr 2018 23:35:06 +0200
Arnd Bergmann <arnd@arndb.de> escreveu:
> On Thu, Apr 5, 2018 at 7:54 PM, Mauro Carvalho Chehab
> <mchehab@s-opensource.com> wrote:
> > There aren't many things that would be needed to allow it
> > to build with compile test.
>
> > +/* Allow building this driver with COMPILE_TEST */
> > +#ifndef CONFIG_PPC_MPC512x
> > +#define NO_IRQ 0
>
> The NO_IRQ usage here really needs to die. The portable way to do this
> is the simpler
>
> diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
> index 200c47c69a75..707bda89b4f7 100644
> --- a/drivers/media/platform/fsl-viu.c
> +++ b/drivers/media/platform/fsl-viu.c
> @@ -1407,7 +1407,7 @@ static int viu_of_probe(struct platform_device *op)
> }
>
> viu_irq = irq_of_parse_and_map(op->dev.of_node, 0);
> - if (viu_irq == NO_IRQ) {
> + if (!viu_irq) {
> dev_err(&op->dev, "Error while mapping the irq\n");
> return -EINVAL;
> }
>
> > +#define out_be32(v, a) writel(a, v)
> > +#define in_be32(a) readl(a)
>
> This does get it to compile, but looks confusing because it mixes up the
> endianess. I'd suggest doing it like
>
> #ifndef CONFIG_PPC
> #define out_be32(v, a) iowrite32be(a, v)
> #define in_be32(a) ioread32be(a)
> #endif
>
> Arnd
Thanks for the review. Yeah, that looks better. Patch enclosed.
Thanks,
Mauro
[PATCH] media: fsl-viu: allow building it with COMPILE_TEST
There aren't many things that would be needed to allow it
to build with compile test.
Add the needed bits.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 03c9dfeb7781..e6eb1eb776e1 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -42,7 +42,7 @@ config VIDEO_SH_VOU
config VIDEO_VIU
tristate "Freescale VIU Video Driver"
- depends on VIDEO_V4L2 && PPC_MPC512x
+ depends on VIDEO_V4L2 && (PPC_MPC512x || COMPILE_TEST)
select VIDEOBUF_DMA_CONTIG
default y
---help---
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 9abe79779659..f54592c431d3 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -36,6 +36,12 @@
#define DRV_NAME "fsl_viu"
#define VIU_VERSION "0.5.1"
+/* Allow building this driver with COMPILE_TEST */
+#ifndef CONFIG_PPC
+#define out_be32(v, a) iowrite32be(a, v)
+#define in_be32(a) ioread32be(a)
+#endif
+
#define BUFFER_TIMEOUT msecs_to_jiffies(500) /* 0.5 seconds */
#define VIU_VID_MEM_LIMIT 4 /* Video memory limit, in Mb */
@@ -1407,7 +1413,7 @@ static int viu_of_probe(struct platform_device *op)
}
viu_irq = irq_of_parse_and_map(op->dev.of_node, 0);
- if (viu_irq == NO_IRQ) {
+ if (!viu_irq) {
dev_err(&op->dev, "Error while mapping the irq\n");
return -EINVAL;
}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 9:47 ` Mauro Carvalho Chehab
@ 2018-04-06 9:51 ` Arnd Bergmann
2018-04-06 14:15 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Arnd Bergmann @ 2018-04-06 9:51 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
<mchehab@s-opensource.com> wrote:
> [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
>
> There aren't many things that would be needed to allow it
> to build with compile test.
>
> Add the needed bits.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 9:51 ` Arnd Bergmann
@ 2018-04-06 14:15 ` Mauro Carvalho Chehab
2018-04-06 14:16 ` Arnd Bergmann
0 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-06 14:15 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
Em Fri, 6 Apr 2018 11:51:16 +0200
Arnd Bergmann <arnd@arndb.de> escreveu:
> On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
> <mchehab@s-opensource.com> wrote:
>
> > [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
> >
> > There aren't many things that would be needed to allow it
> > to build with compile test.
> >
> > Add the needed bits.
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
>
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Actually, in order to avoid warnings with smatch, the COMPILE_TEST
macros should be declared as:
+#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
+#define in_be32(a) ioread32be((void __iomem *)a)
Thanks,
Mauro
[PATCH] media: fsl-viu: allow building it with COMPILE_TEST
There aren't many things that would be needed to allow it
to build with compile test.
Add the needed bits.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 03c9dfeb7781..e6eb1eb776e1 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -42,7 +42,7 @@ config VIDEO_SH_VOU
config VIDEO_VIU
tristate "Freescale VIU Video Driver"
- depends on VIDEO_V4L2 && PPC_MPC512x
+ depends on VIDEO_V4L2 && (PPC_MPC512x || COMPILE_TEST)
select VIDEOBUF_DMA_CONTIG
default y
---help---
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 9abe79779659..6fd1c8f66047 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -36,6 +36,12 @@
#define DRV_NAME "fsl_viu"
#define VIU_VERSION "0.5.1"
+/* Allow building this driver with COMPILE_TEST */
+#ifndef CONFIG_PPC
+#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
+#define in_be32(a) ioread32be((void __iomem *)a)
+#endif
+
#define BUFFER_TIMEOUT msecs_to_jiffies(500) /* 0.5 seconds */
#define VIU_VID_MEM_LIMIT 4 /* Video memory limit, in Mb */
@@ -1407,7 +1413,7 @@ static int viu_of_probe(struct platform_device *op)
}
viu_irq = irq_of_parse_and_map(op->dev.of_node, 0);
- if (viu_irq == NO_IRQ) {
+ if (!viu_irq) {
dev_err(&op->dev, "Error while mapping the irq\n");
return -EINVAL;
}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 14:15 ` Mauro Carvalho Chehab
@ 2018-04-06 14:16 ` Arnd Bergmann
2018-04-06 14:26 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Arnd Bergmann @ 2018-04-06 14:16 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
On Fri, Apr 6, 2018 at 4:15 PM, Mauro Carvalho Chehab
<mchehab@s-opensource.com> wrote:
> Em Fri, 6 Apr 2018 11:51:16 +0200
> Arnd Bergmann <arnd@arndb.de> escreveu:
>
>> On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
>> <mchehab@s-opensource.com> wrote:
>>
>> > [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
>> >
>> > There aren't many things that would be needed to allow it
>> > to build with compile test.
>> >
>> > Add the needed bits.
>> >
>> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
>>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>
> Actually, in order to avoid warnings with smatch, the COMPILE_TEST
> macros should be declared as:
>
> +#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
> +#define in_be32(a) ioread32be((void __iomem *)a)
I would just add the correct annotations, I think they've always been missing.
2 patches coming in a few minutes.
Arnd
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 14:16 ` Arnd Bergmann
@ 2018-04-06 14:26 ` Mauro Carvalho Chehab
2018-04-06 14:37 ` Arnd Bergmann
0 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-06 14:26 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
Em Fri, 6 Apr 2018 16:16:46 +0200
Arnd Bergmann <arnd@arndb.de> escreveu:
> On Fri, Apr 6, 2018 at 4:15 PM, Mauro Carvalho Chehab
> <mchehab@s-opensource.com> wrote:
> > Em Fri, 6 Apr 2018 11:51:16 +0200
> > Arnd Bergmann <arnd@arndb.de> escreveu:
> >
> >> On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
> >> <mchehab@s-opensource.com> wrote:
> >>
> >> > [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
> >> >
> >> > There aren't many things that would be needed to allow it
> >> > to build with compile test.
> >> >
> >> > Add the needed bits.
> >> >
> >> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> >>
> >> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> >
> > Actually, in order to avoid warnings with smatch, the COMPILE_TEST
> > macros should be declared as:
> >
> > +#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
> > +#define in_be32(a) ioread32be((void __iomem *)a)
>
> I would just add the correct annotations, I think they've always been missing.
> 2 patches coming in a few minutes.
I corrected the annotations too. Now, it gives the same results
building for both arm and x86.
If you want to double check, the full tree is at:
https://git.linuxtv.org/mchehab/experimental.git/log/?h=compile_test
>
> Arnd
Thanks,
Mauro
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 14:26 ` Mauro Carvalho Chehab
@ 2018-04-06 14:37 ` Arnd Bergmann
2018-04-06 14:47 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Arnd Bergmann @ 2018-04-06 14:37 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
On Fri, Apr 6, 2018 at 4:26 PM, Mauro Carvalho Chehab
<mchehab@s-opensource.com> wrote:
> Em Fri, 6 Apr 2018 16:16:46 +0200
> Arnd Bergmann <arnd@arndb.de> escreveu:
>
>> On Fri, Apr 6, 2018 at 4:15 PM, Mauro Carvalho Chehab
>> <mchehab@s-opensource.com> wrote:
>> > Em Fri, 6 Apr 2018 11:51:16 +0200
>> > Arnd Bergmann <arnd@arndb.de> escreveu:
>> >
>> >> On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
>> >> <mchehab@s-opensource.com> wrote:
>> >>
>> >> > [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
>> >> >
>> >> > There aren't many things that would be needed to allow it
>> >> > to build with compile test.
>> >> >
>> >> > Add the needed bits.
>> >> >
>> >> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
>> >>
>> >> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> >
>> > Actually, in order to avoid warnings with smatch, the COMPILE_TEST
>> > macros should be declared as:
>> >
>> > +#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
>> > +#define in_be32(a) ioread32be((void __iomem *)a)
>>
>> I would just add the correct annotations, I think they've always been missing.
>> 2 patches coming in a few minutes.
>
> I corrected the annotations too. Now, it gives the same results
> building for both arm and x86.
>
> If you want to double check, the full tree is at:
>
> https://git.linuxtv.org/mchehab/experimental.git/log/?h=compile_test
The __iomem annotations look good, my other patch is still needed to
get a clean build with "make C=1" but doesn't apply cleanly on top of your
version. I assume you'll just fix it up accordingly.
Arnd
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-06 14:37 ` Arnd Bergmann
@ 2018-04-06 14:47 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-06 14:47 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
Em Fri, 6 Apr 2018 16:37:15 +0200
Arnd Bergmann <arnd@arndb.de> escreveu:
> On Fri, Apr 6, 2018 at 4:26 PM, Mauro Carvalho Chehab
> <mchehab@s-opensource.com> wrote:
> > Em Fri, 6 Apr 2018 16:16:46 +0200
> > Arnd Bergmann <arnd@arndb.de> escreveu:
> >
> >> On Fri, Apr 6, 2018 at 4:15 PM, Mauro Carvalho Chehab
> >> <mchehab@s-opensource.com> wrote:
> >> > Em Fri, 6 Apr 2018 11:51:16 +0200
> >> > Arnd Bergmann <arnd@arndb.de> escreveu:
> >> >
> >> >> On Fri, Apr 6, 2018 at 11:47 AM, Mauro Carvalho Chehab
> >> >> <mchehab@s-opensource.com> wrote:
> >> >>
> >> >> > [PATCH] media: fsl-viu: allow building it with COMPILE_TEST
> >> >> >
> >> >> > There aren't many things that would be needed to allow it
> >> >> > to build with compile test.
> >> >> >
> >> >> > Add the needed bits.
> >> >> >
> >> >> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> >> >>
> >> >> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> >> >
> >> > Actually, in order to avoid warnings with smatch, the COMPILE_TEST
> >> > macros should be declared as:
> >> >
> >> > +#define out_be32(v, a) iowrite32be(a, (void __iomem *)v)
> >> > +#define in_be32(a) ioread32be((void __iomem *)a)
> >>
> >> I would just add the correct annotations, I think they've always been missing.
> >> 2 patches coming in a few minutes.
> >
> > I corrected the annotations too. Now, it gives the same results
> > building for both arm and x86.
> >
> > If you want to double check, the full tree is at:
> >
> > https://git.linuxtv.org/mchehab/experimental.git/log/?h=compile_test
>
> The __iomem annotations look good, my other patch is still needed to
> get a clean build with "make C=1" but doesn't apply cleanly on top of your
> version. I assume you'll just fix it up accordingly.
Heh, another duplicated patch:
https://git.linuxtv.org/mchehab/experimental.git/commit/?h=compile_test&id=687520dc31a88c82c694492423c5d9c503cbdebb
That's why it didn't apply cleanly:
$ patch -p1 -i /tmp/media\:\ platform\:\ fsl-viu\:\ mark\ local\ functions\ \'static\'.patch --merge
patching file drivers/media/platform/fsl-viu.c
Hunk #1 already applied at 238.
Hunk #2 already applied at 251.
Hunk #3 already applied at 262.
Hunk #4 already applied at 806.
Hunk #5 already applied at 817.
Hunk #6 already applied at 1305.
Great minds think alike :-)
Thanks,
Mauro
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST Mauro Carvalho Chehab
2018-04-05 21:35 ` Arnd Bergmann
@ 2018-04-06 19:15 ` kbuild test robot
1 sibling, 0 replies; 52+ messages in thread
From: kbuild test robot @ 2018-04-06 19:15 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: kbuild-all, Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Arnd Bergmann,
Stanimir Varbanov, Benjamin Gaignard, Ramesh Shanmugasundaram,
Al Viro, Bhumika Goyal, Arvind Yadav, Kees Cook, Geliang Tang
[-- Attachment #1: Type: text/plain, Size: 2788 bytes --]
Hi Mauro,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on v4.16 next-20180406]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/Make-all-drivers-under-drivers-media-to-build-with-COMPILE_TEST/20180406-164215
base: git://linuxtv.org/media_tree.git master
config: m68k-allyesconfig (attached as .config)
compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m68k
All warnings (new ones prefixed by >>):
>> drivers/media//platform/fsl-viu.c:43:0: warning: "out_be32" redefined
#define out_be32(v, a) writel(a, v)
In file included from arch/m68k/include/asm/io_mm.h:27:0,
from arch/m68k/include/asm/io.h:5,
from include/linux/io.h:25,
from drivers/media//platform/fsl-viu.c:23:
arch/m68k/include/asm/raw_io.h:46:0: note: this is the location of the previous definition
#define out_be32(addr,l) (void)((*(__force volatile u32 *) (addr)) = (l))
>> drivers/media//platform/fsl-viu.c:44:0: warning: "in_be32" redefined
#define in_be32(a) readl(a)
In file included from arch/m68k/include/asm/io_mm.h:27:0,
from arch/m68k/include/asm/io.h:5,
from include/linux/io.h:25,
from drivers/media//platform/fsl-viu.c:23:
arch/m68k/include/asm/raw_io.h:37:0: note: this is the location of the previous definition
#define in_be32(addr) \
vim +/out_be32 +43 drivers/media//platform/fsl-viu.c
> 23 #include <linux/io.h>
24 #include <linux/of_address.h>
25 #include <linux/of_irq.h>
26 #include <linux/of_platform.h>
27 #include <linux/slab.h>
28 #include <media/v4l2-common.h>
29 #include <media/v4l2-device.h>
30 #include <media/v4l2-ioctl.h>
31 #include <media/v4l2-ctrls.h>
32 #include <media/v4l2-fh.h>
33 #include <media/v4l2-event.h>
34 #include <media/videobuf-dma-contig.h>
35
36 #define DRV_NAME "fsl_viu"
37 #define VIU_VERSION "0.5.1"
38
39 /* Allow building this driver with COMPILE_TEST */
40 #ifndef CONFIG_PPC_MPC512x
41 #define NO_IRQ 0
42
> 43 #define out_be32(v, a) writel(a, v)
> 44 #define in_be32(a) readl(a)
45 #endif
46
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 45133 bytes --]
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 02/16] media: omap3isp: allow it to build " Mauro Carvalho Chehab
2018-04-05 18:30 ` Laurent Pinchart
@ 2018-04-07 5:23 ` kbuild test robot
1 sibling, 0 replies; 52+ messages in thread
From: kbuild test robot @ 2018-04-07 5:23 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: kbuild-all, Mauro Carvalho Chehab, Linux Media Mailing List,
Mauro Carvalho Chehab, Laurent Pinchart, Hans Verkuil,
Arnd Bergmann, Stanimir Varbanov, Benjamin Gaignard,
Philipp Zabel, Ramesh Shanmugasundaram
[-- Attachment #1: Type: text/plain, Size: 23169 bytes --]
Hi Mauro,
I love your patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.16 next-20180406]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/Make-all-drivers-under-drivers-media-to-build-with-COMPILE_TEST/20180406-164215
base: git://linuxtv.org/media_tree.git master
config: openrisc-allyesconfig (attached as .config)
compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental)
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=openrisc
All errors (new ones prefixed by >>):
In file included from drivers/media/platform/omap3isp/isp.c:78:0:
drivers/media/platform/omap3isp/isp.h:130:16: error: field 'hw' has incomplete type
struct clk_hw hw;
^~
In file included from include/asm-generic/bug.h:5:0,
from ./arch/openrisc/include/generated/asm/bug.h:1,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/mm.h:9,
from arch/openrisc/include/asm/cacheflush.h:21,
from drivers/media/platform/omap3isp/isp.c:45:
drivers/media/platform/omap3isp/isp.c: In function 'isp_xclk_prepare':
include/linux/kernel.h:938:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:316:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:339:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:45:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:938:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:938:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:167:26: note: in expansion of macro 'container_of'
#define to_isp_xclk(_hw) container_of(_hw, struct isp_xclk, hw)
^~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:187:26: note: in expansion of macro 'to_isp_xclk'
struct isp_xclk *xclk = to_isp_xclk(hw);
^~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c: At top level:
drivers/media/platform/omap3isp/isp.c:282:21: error: variable 'isp_xclk_ops' has initializer but incomplete type
static const struct clk_ops isp_xclk_ops = {
^~~~~~~
>> drivers/media/platform/omap3isp/isp.c:283:2: error: unknown field 'prepare' specified in initializer
.prepare = isp_xclk_prepare,
^
drivers/media/platform/omap3isp/isp.c:283:13: warning: excess elements in struct initializer
.prepare = isp_xclk_prepare,
^~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:283:13: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:284:2: error: unknown field 'unprepare' specified in initializer
.unprepare = isp_xclk_unprepare,
^
drivers/media/platform/omap3isp/isp.c:284:15: warning: excess elements in struct initializer
.unprepare = isp_xclk_unprepare,
^~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:284:15: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:285:2: error: unknown field 'enable' specified in initializer
.enable = isp_xclk_enable,
^
drivers/media/platform/omap3isp/isp.c:285:12: warning: excess elements in struct initializer
.enable = isp_xclk_enable,
^~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:285:12: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:286:2: error: unknown field 'disable' specified in initializer
.disable = isp_xclk_disable,
^
drivers/media/platform/omap3isp/isp.c:286:13: warning: excess elements in struct initializer
.disable = isp_xclk_disable,
^~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:286:13: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:287:2: error: unknown field 'recalc_rate' specified in initializer
.recalc_rate = isp_xclk_recalc_rate,
^
drivers/media/platform/omap3isp/isp.c:287:17: warning: excess elements in struct initializer
.recalc_rate = isp_xclk_recalc_rate,
^~~~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:287:17: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:288:2: error: unknown field 'round_rate' specified in initializer
.round_rate = isp_xclk_round_rate,
^
drivers/media/platform/omap3isp/isp.c:288:16: warning: excess elements in struct initializer
.round_rate = isp_xclk_round_rate,
^~~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:288:16: note: (near initialization for 'isp_xclk_ops')
>> drivers/media/platform/omap3isp/isp.c:289:2: error: unknown field 'set_rate' specified in initializer
.set_rate = isp_xclk_set_rate,
^
drivers/media/platform/omap3isp/isp.c:289:14: warning: excess elements in struct initializer
.set_rate = isp_xclk_set_rate,
^~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:289:14: note: (near initialization for 'isp_xclk_ops')
drivers/media/platform/omap3isp/isp.c:294:21: error: variable 'isp_xclk_init_data' has initializer but incomplete type
static const struct clk_init_data isp_xclk_init_data = {
^~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:295:2: error: unknown field 'name' specified in initializer
.name = "cam_xclk",
^
drivers/media/platform/omap3isp/isp.c:295:10: warning: excess elements in struct initializer
.name = "cam_xclk",
^~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:295:10: note: (near initialization for 'isp_xclk_init_data')
drivers/media/platform/omap3isp/isp.c:296:2: error: unknown field 'ops' specified in initializer
.ops = &isp_xclk_ops,
^
drivers/media/platform/omap3isp/isp.c:296:9: warning: excess elements in struct initializer
.ops = &isp_xclk_ops,
^
drivers/media/platform/omap3isp/isp.c:296:9: note: (near initialization for 'isp_xclk_init_data')
drivers/media/platform/omap3isp/isp.c:297:2: error: unknown field 'parent_names' specified in initializer
.parent_names = &isp_xclk_parent_name,
^
drivers/media/platform/omap3isp/isp.c:297:18: warning: excess elements in struct initializer
.parent_names = &isp_xclk_parent_name,
^
drivers/media/platform/omap3isp/isp.c:297:18: note: (near initialization for 'isp_xclk_init_data')
drivers/media/platform/omap3isp/isp.c:298:2: error: unknown field 'num_parents' specified in initializer
.num_parents = 1,
^
drivers/media/platform/omap3isp/isp.c:298:17: warning: excess elements in struct initializer
.num_parents = 1,
^
drivers/media/platform/omap3isp/isp.c:298:17: note: (near initialization for 'isp_xclk_init_data')
drivers/media/platform/omap3isp/isp.c: In function 'isp_xclk_init':
drivers/media/platform/omap3isp/isp.c:315:23: error: storage size of 'init' isn't known
struct clk_init_data init;
^~~~
>> drivers/media/platform/omap3isp/isp.c:341:15: error: implicit declaration of function 'clk_register' [-Werror=implicit-function-declaration]
xclk->clk = clk_register(NULL, &xclk->hw);
^~~~~~~~~~~~
>> drivers/media/platform/omap3isp/isp.c:347:3: error: implicit declaration of function 'of_clk_add_provider' [-Werror=implicit-function-declaration]
of_clk_add_provider(np, isp_xclk_src_get, isp);
^~~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:315:23: warning: unused variable 'init' [-Wunused-variable]
struct clk_init_data init;
^~~~
drivers/media/platform/omap3isp/isp.c: In function 'isp_xclk_cleanup':
>> drivers/media/platform/omap3isp/isp.c:358:3: error: implicit declaration of function 'of_clk_del_provider' [-Werror=implicit-function-declaration]
of_clk_del_provider(np);
^~~~~~~~~~~~~~~~~~~
>> drivers/media/platform/omap3isp/isp.c:364:4: error: implicit declaration of function 'clk_unregister' [-Werror=implicit-function-declaration]
clk_unregister(xclk->clk);
^~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c: At top level:
drivers/media/platform/omap3isp/isp.c:282:29: error: storage size of 'isp_xclk_ops' isn't known
static const struct clk_ops isp_xclk_ops = {
^~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:294:35: error: storage size of 'isp_xclk_init_data' isn't known
static const struct clk_init_data isp_xclk_init_data = {
^~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:1020:13: warning: 'isp_resume_modules' defined but not used [-Wunused-function]
static void isp_resume_modules(struct isp_device *isp)
^~~~~~~~~~~~~~~~~~
drivers/media/platform/omap3isp/isp.c:986:12: warning: 'isp_suspend_modules' defined but not used [-Wunused-function]
static int isp_suspend_modules(struct isp_device *isp)
^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/prepare +283 drivers/media/platform/omap3isp/isp.c
9b28ee3c Laurent Pinchart 2012-10-22 184
9b28ee3c Laurent Pinchart 2012-10-22 185 static int isp_xclk_prepare(struct clk_hw *hw)
9b28ee3c Laurent Pinchart 2012-10-22 186 {
9b28ee3c Laurent Pinchart 2012-10-22 @187 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 188
9b28ee3c Laurent Pinchart 2012-10-22 189 omap3isp_get(xclk->isp);
9b28ee3c Laurent Pinchart 2012-10-22 190
9b28ee3c Laurent Pinchart 2012-10-22 191 return 0;
9b28ee3c Laurent Pinchart 2012-10-22 192 }
9b28ee3c Laurent Pinchart 2012-10-22 193
9b28ee3c Laurent Pinchart 2012-10-22 194 static void isp_xclk_unprepare(struct clk_hw *hw)
9b28ee3c Laurent Pinchart 2012-10-22 195 {
9b28ee3c Laurent Pinchart 2012-10-22 196 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 197
9b28ee3c Laurent Pinchart 2012-10-22 198 omap3isp_put(xclk->isp);
9b28ee3c Laurent Pinchart 2012-10-22 199 }
9b28ee3c Laurent Pinchart 2012-10-22 200
9b28ee3c Laurent Pinchart 2012-10-22 201 static int isp_xclk_enable(struct clk_hw *hw)
9b28ee3c Laurent Pinchart 2012-10-22 202 {
9b28ee3c Laurent Pinchart 2012-10-22 203 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 204 unsigned long flags;
9b28ee3c Laurent Pinchart 2012-10-22 205
9b28ee3c Laurent Pinchart 2012-10-22 206 spin_lock_irqsave(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 207 isp_xclk_update(xclk, xclk->divider);
9b28ee3c Laurent Pinchart 2012-10-22 208 xclk->enabled = true;
9b28ee3c Laurent Pinchart 2012-10-22 209 spin_unlock_irqrestore(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 210
9b28ee3c Laurent Pinchart 2012-10-22 211 return 0;
9b28ee3c Laurent Pinchart 2012-10-22 212 }
9b28ee3c Laurent Pinchart 2012-10-22 213
9b28ee3c Laurent Pinchart 2012-10-22 214 static void isp_xclk_disable(struct clk_hw *hw)
9b28ee3c Laurent Pinchart 2012-10-22 215 {
9b28ee3c Laurent Pinchart 2012-10-22 216 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 217 unsigned long flags;
9b28ee3c Laurent Pinchart 2012-10-22 218
9b28ee3c Laurent Pinchart 2012-10-22 219 spin_lock_irqsave(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 220 isp_xclk_update(xclk, 0);
9b28ee3c Laurent Pinchart 2012-10-22 221 xclk->enabled = false;
9b28ee3c Laurent Pinchart 2012-10-22 222 spin_unlock_irqrestore(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 223 }
9b28ee3c Laurent Pinchart 2012-10-22 224
9b28ee3c Laurent Pinchart 2012-10-22 225 static unsigned long isp_xclk_recalc_rate(struct clk_hw *hw,
9b28ee3c Laurent Pinchart 2012-10-22 226 unsigned long parent_rate)
9b28ee3c Laurent Pinchart 2012-10-22 227 {
9b28ee3c Laurent Pinchart 2012-10-22 228 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 229
9b28ee3c Laurent Pinchart 2012-10-22 230 return parent_rate / xclk->divider;
9b28ee3c Laurent Pinchart 2012-10-22 231 }
9b28ee3c Laurent Pinchart 2012-10-22 232
9b28ee3c Laurent Pinchart 2012-10-22 233 static u32 isp_xclk_calc_divider(unsigned long *rate, unsigned long parent_rate)
9b28ee3c Laurent Pinchart 2012-10-22 234 {
9b28ee3c Laurent Pinchart 2012-10-22 235 u32 divider;
9b28ee3c Laurent Pinchart 2012-10-22 236
9b28ee3c Laurent Pinchart 2012-10-22 237 if (*rate >= parent_rate) {
9b28ee3c Laurent Pinchart 2012-10-22 238 *rate = parent_rate;
9b28ee3c Laurent Pinchart 2012-10-22 239 return ISPTCTRL_CTRL_DIV_BYPASS;
9b28ee3c Laurent Pinchart 2012-10-22 240 }
9b28ee3c Laurent Pinchart 2012-10-22 241
aadec012 Laurent Pinchart 2014-09-25 242 if (*rate == 0)
aadec012 Laurent Pinchart 2014-09-25 243 *rate = 1;
aadec012 Laurent Pinchart 2014-09-25 244
9b28ee3c Laurent Pinchart 2012-10-22 245 divider = DIV_ROUND_CLOSEST(parent_rate, *rate);
9b28ee3c Laurent Pinchart 2012-10-22 246 if (divider >= ISPTCTRL_CTRL_DIV_BYPASS)
9b28ee3c Laurent Pinchart 2012-10-22 247 divider = ISPTCTRL_CTRL_DIV_BYPASS - 1;
9b28ee3c Laurent Pinchart 2012-10-22 248
9b28ee3c Laurent Pinchart 2012-10-22 249 *rate = parent_rate / divider;
9b28ee3c Laurent Pinchart 2012-10-22 250 return divider;
9b28ee3c Laurent Pinchart 2012-10-22 251 }
9b28ee3c Laurent Pinchart 2012-10-22 252
9b28ee3c Laurent Pinchart 2012-10-22 253 static long isp_xclk_round_rate(struct clk_hw *hw, unsigned long rate,
9b28ee3c Laurent Pinchart 2012-10-22 254 unsigned long *parent_rate)
9b28ee3c Laurent Pinchart 2012-10-22 255 {
9b28ee3c Laurent Pinchart 2012-10-22 256 isp_xclk_calc_divider(&rate, *parent_rate);
9b28ee3c Laurent Pinchart 2012-10-22 257 return rate;
9b28ee3c Laurent Pinchart 2012-10-22 258 }
9b28ee3c Laurent Pinchart 2012-10-22 259
9b28ee3c Laurent Pinchart 2012-10-22 260 static int isp_xclk_set_rate(struct clk_hw *hw, unsigned long rate,
9b28ee3c Laurent Pinchart 2012-10-22 261 unsigned long parent_rate)
9b28ee3c Laurent Pinchart 2012-10-22 262 {
9b28ee3c Laurent Pinchart 2012-10-22 263 struct isp_xclk *xclk = to_isp_xclk(hw);
9b28ee3c Laurent Pinchart 2012-10-22 264 unsigned long flags;
9b28ee3c Laurent Pinchart 2012-10-22 265 u32 divider;
9b28ee3c Laurent Pinchart 2012-10-22 266
9b28ee3c Laurent Pinchart 2012-10-22 267 divider = isp_xclk_calc_divider(&rate, parent_rate);
9b28ee3c Laurent Pinchart 2012-10-22 268
9b28ee3c Laurent Pinchart 2012-10-22 269 spin_lock_irqsave(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 270
9b28ee3c Laurent Pinchart 2012-10-22 271 xclk->divider = divider;
9b28ee3c Laurent Pinchart 2012-10-22 272 if (xclk->enabled)
9b28ee3c Laurent Pinchart 2012-10-22 273 isp_xclk_update(xclk, divider);
9b28ee3c Laurent Pinchart 2012-10-22 274
9b28ee3c Laurent Pinchart 2012-10-22 275 spin_unlock_irqrestore(&xclk->lock, flags);
9b28ee3c Laurent Pinchart 2012-10-22 276
9b28ee3c Laurent Pinchart 2012-10-22 277 dev_dbg(xclk->isp->dev, "%s: cam_xclk%c set to %lu Hz (div %u)\n",
9b28ee3c Laurent Pinchart 2012-10-22 278 __func__, xclk->id == ISP_XCLK_A ? 'a' : 'b', rate, divider);
9b28ee3c Laurent Pinchart 2012-10-22 279 return 0;
9b28ee3c Laurent Pinchart 2012-10-22 280 }
9b28ee3c Laurent Pinchart 2012-10-22 281
9b28ee3c Laurent Pinchart 2012-10-22 282 static const struct clk_ops isp_xclk_ops = {
9b28ee3c Laurent Pinchart 2012-10-22 @283 .prepare = isp_xclk_prepare,
9b28ee3c Laurent Pinchart 2012-10-22 @284 .unprepare = isp_xclk_unprepare,
9b28ee3c Laurent Pinchart 2012-10-22 @285 .enable = isp_xclk_enable,
9b28ee3c Laurent Pinchart 2012-10-22 @286 .disable = isp_xclk_disable,
9b28ee3c Laurent Pinchart 2012-10-22 @287 .recalc_rate = isp_xclk_recalc_rate,
9b28ee3c Laurent Pinchart 2012-10-22 @288 .round_rate = isp_xclk_round_rate,
9b28ee3c Laurent Pinchart 2012-10-22 @289 .set_rate = isp_xclk_set_rate,
9b28ee3c Laurent Pinchart 2012-10-22 290 };
9b28ee3c Laurent Pinchart 2012-10-22 291
9b28ee3c Laurent Pinchart 2012-10-22 292 static const char *isp_xclk_parent_name = "cam_mclk";
9b28ee3c Laurent Pinchart 2012-10-22 293
9b28ee3c Laurent Pinchart 2012-10-22 294 static const struct clk_init_data isp_xclk_init_data = {
9b28ee3c Laurent Pinchart 2012-10-22 295 .name = "cam_xclk",
9b28ee3c Laurent Pinchart 2012-10-22 296 .ops = &isp_xclk_ops,
9b28ee3c Laurent Pinchart 2012-10-22 297 .parent_names = &isp_xclk_parent_name,
9b28ee3c Laurent Pinchart 2012-10-22 @298 .num_parents = 1,
9b28ee3c Laurent Pinchart 2012-10-22 299 };
9b28ee3c Laurent Pinchart 2012-10-22 300
64904b57 Laurent Pinchart 2015-03-25 301 static struct clk *isp_xclk_src_get(struct of_phandle_args *clkspec, void *data)
64904b57 Laurent Pinchart 2015-03-25 302 {
64904b57 Laurent Pinchart 2015-03-25 303 unsigned int idx = clkspec->args[0];
64904b57 Laurent Pinchart 2015-03-25 304 struct isp_device *isp = data;
64904b57 Laurent Pinchart 2015-03-25 305
64904b57 Laurent Pinchart 2015-03-25 306 if (idx >= ARRAY_SIZE(isp->xclks))
64904b57 Laurent Pinchart 2015-03-25 307 return ERR_PTR(-ENOENT);
64904b57 Laurent Pinchart 2015-03-25 308
64904b57 Laurent Pinchart 2015-03-25 309 return isp->xclks[idx].clk;
64904b57 Laurent Pinchart 2015-03-25 310 }
64904b57 Laurent Pinchart 2015-03-25 311
9b28ee3c Laurent Pinchart 2012-10-22 312 static int isp_xclk_init(struct isp_device *isp)
9b28ee3c Laurent Pinchart 2012-10-22 313 {
64904b57 Laurent Pinchart 2015-03-25 314 struct device_node *np = isp->dev->of_node;
9b28ee3c Laurent Pinchart 2012-10-22 @315 struct clk_init_data init;
9b28ee3c Laurent Pinchart 2012-10-22 316 unsigned int i;
9b28ee3c Laurent Pinchart 2012-10-22 317
f8e2ff26 Sylwester Nawrocki 2013-12-04 318 for (i = 0; i < ARRAY_SIZE(isp->xclks); ++i)
f8e2ff26 Sylwester Nawrocki 2013-12-04 319 isp->xclks[i].clk = ERR_PTR(-EINVAL);
f8e2ff26 Sylwester Nawrocki 2013-12-04 320
9b28ee3c Laurent Pinchart 2012-10-22 321 for (i = 0; i < ARRAY_SIZE(isp->xclks); ++i) {
9b28ee3c Laurent Pinchart 2012-10-22 322 struct isp_xclk *xclk = &isp->xclks[i];
9b28ee3c Laurent Pinchart 2012-10-22 323
9b28ee3c Laurent Pinchart 2012-10-22 324 xclk->isp = isp;
9b28ee3c Laurent Pinchart 2012-10-22 325 xclk->id = i == 0 ? ISP_XCLK_A : ISP_XCLK_B;
9b28ee3c Laurent Pinchart 2012-10-22 326 xclk->divider = 1;
9b28ee3c Laurent Pinchart 2012-10-22 327 spin_lock_init(&xclk->lock);
9b28ee3c Laurent Pinchart 2012-10-22 328
9b28ee3c Laurent Pinchart 2012-10-22 329 init.name = i == 0 ? "cam_xclka" : "cam_xclkb";
9b28ee3c Laurent Pinchart 2012-10-22 330 init.ops = &isp_xclk_ops;
9b28ee3c Laurent Pinchart 2012-10-22 331 init.parent_names = &isp_xclk_parent_name;
9b28ee3c Laurent Pinchart 2012-10-22 332 init.num_parents = 1;
9b28ee3c Laurent Pinchart 2012-10-22 333
9b28ee3c Laurent Pinchart 2012-10-22 334 xclk->hw.init = &init;
f8e2ff26 Sylwester Nawrocki 2013-12-04 335 /*
f8e2ff26 Sylwester Nawrocki 2013-12-04 336 * The first argument is NULL in order to avoid circular
f8e2ff26 Sylwester Nawrocki 2013-12-04 337 * reference, as this driver takes reference on the
f8e2ff26 Sylwester Nawrocki 2013-12-04 338 * sensor subdevice modules and the sensors would take
f8e2ff26 Sylwester Nawrocki 2013-12-04 339 * reference on this module through clk_get().
f8e2ff26 Sylwester Nawrocki 2013-12-04 340 */
f8e2ff26 Sylwester Nawrocki 2013-12-04 @341 xclk->clk = clk_register(NULL, &xclk->hw);
f8e2ff26 Sylwester Nawrocki 2013-12-04 342 if (IS_ERR(xclk->clk))
f8e2ff26 Sylwester Nawrocki 2013-12-04 343 return PTR_ERR(xclk->clk);
9b28ee3c Laurent Pinchart 2012-10-22 344 }
9b28ee3c Laurent Pinchart 2012-10-22 345
64904b57 Laurent Pinchart 2015-03-25 346 if (np)
64904b57 Laurent Pinchart 2015-03-25 @347 of_clk_add_provider(np, isp_xclk_src_get, isp);
64904b57 Laurent Pinchart 2015-03-25 348
9b28ee3c Laurent Pinchart 2012-10-22 349 return 0;
9b28ee3c Laurent Pinchart 2012-10-22 350 }
9b28ee3c Laurent Pinchart 2012-10-22 351
9b28ee3c Laurent Pinchart 2012-10-22 352 static void isp_xclk_cleanup(struct isp_device *isp)
9b28ee3c Laurent Pinchart 2012-10-22 353 {
64904b57 Laurent Pinchart 2015-03-25 354 struct device_node *np = isp->dev->of_node;
9b28ee3c Laurent Pinchart 2012-10-22 355 unsigned int i;
9b28ee3c Laurent Pinchart 2012-10-22 356
64904b57 Laurent Pinchart 2015-03-25 357 if (np)
64904b57 Laurent Pinchart 2015-03-25 @358 of_clk_del_provider(np);
64904b57 Laurent Pinchart 2015-03-25 359
9b28ee3c Laurent Pinchart 2012-10-22 360 for (i = 0; i < ARRAY_SIZE(isp->xclks); ++i) {
9b28ee3c Laurent Pinchart 2012-10-22 361 struct isp_xclk *xclk = &isp->xclks[i];
9b28ee3c Laurent Pinchart 2012-10-22 362
f8e2ff26 Sylwester Nawrocki 2013-12-04 363 if (!IS_ERR(xclk->clk))
f8e2ff26 Sylwester Nawrocki 2013-12-04 @364 clk_unregister(xclk->clk);
9b28ee3c Laurent Pinchart 2012-10-22 365 }
9b28ee3c Laurent Pinchart 2012-10-22 366 }
9b28ee3c Laurent Pinchart 2012-10-22 367
:::::: The code at line 283 was first introduced by commit
:::::: 9b28ee3c9122cea62f2db02f5bb1e1606bb343a6 [media] omap3isp: Use the common clock framework
:::::: TO: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
:::::: CC: Mauro Carvalho Chehab <mchehab@redhat.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44108 bytes --]
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-05 19:44 ` Mauro Carvalho Chehab
@ 2018-04-07 11:56 ` Laurent Pinchart
2018-04-07 13:14 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Laurent Pinchart @ 2018-04-07 11:56 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Arnd Bergmann, Stanimir Varbanov, Benjamin Gaignard,
Philipp Zabel, Ramesh Shanmugasundaram
Hi Mauro,
On Thursday, 5 April 2018 22:44:44 EEST Mauro Carvalho Chehab wrote:
> Em Thu, 05 Apr 2018 21:30:27 +0300 Laurent Pinchart escreveu:
> > On Thursday, 5 April 2018 20:54:02 EEST Mauro Carvalho Chehab wrote:
> > > There aren't much things required for it to build with COMPILE_TEST.
> > > It just needs to provide stub for an arm-dependent include.
> > >
> > > Let's replicate the same solution used by ipmmu-vmsa, in order
> > > to allow building omap3 with COMPILE_TEST.
> > >
> > > The actual logic here came from this driver:
> > > drivers/iommu/ipmmu-vmsa.c
> > >
> > > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > > ---
> > >
> > > drivers/media/platform/Kconfig | 8 ++++----
> > > drivers/media/platform/omap3isp/isp.c | 7 +++++++
> > > 2 files changed, 11 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/media/platform/Kconfig
> > > b/drivers/media/platform/Kconfig index c7a1cf8a1b01..03c9dfeb7781
> > > 100644
> > > --- a/drivers/media/platform/Kconfig
> > > +++ b/drivers/media/platform/Kconfig
> > > @@ -62,12 +62,12 @@ config VIDEO_MUX
> > >
> > > config VIDEO_OMAP3
> > > tristate "OMAP 3 Camera support"
> > > - depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
> > > + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
> > > depends on HAS_DMA && OF
> > > - depends on OMAP_IOMMU
> > > - select ARM_DMA_USE_IOMMU
> > > + depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
> > > + select ARM_DMA_USE_IOMMU if OMAP_IOMMU
> > > select VIDEOBUF2_DMA_CONTIG
> > > - select MFD_SYSCON
> > > + select MFD_SYSCON if ARCH_OMAP3
> > > select V4L2_FWNODE
> > > ---help---
> > > Driver for an OMAP 3 camera controller.
> > > diff --git a/drivers/media/platform/omap3isp/isp.c
> > > b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..2a11a709aa4f
> > > 100644
> > > --- a/drivers/media/platform/omap3isp/isp.c
> > > +++ b/drivers/media/platform/omap3isp/isp.c
> > > @@ -61,7 +61,14 @@
> > > #include <linux/sched.h>
> > > #include <linux/vmalloc.h>
> > >
> > > +#if defined(CONFIG_ARM) && !defined(CONFIG_IOMMU_DMA)
> > > #include <asm/dma-iommu.h>
> > > +#else
> > > +#define arm_iommu_create_mapping(...) NULL
> > > +#define arm_iommu_attach_device(...) -ENODEV
> > > +#define arm_iommu_release_mapping(...) do {} while (0)
> > > +#define arm_iommu_detach_device(...) do {} while (0)
> > > +#endif
> >
> > I don't think it's the job of a driver to define those stubs, sorry.
> > Otherwise where do you stop ? If you have half of the code that is
> > architecture- dependent, would you stub it ? And what if the stubs you
> > define here generate warnings in static analyzers ?
>
> I agree that we should avoid doing that as a general case, but see
> below.
>
> > If you want to make drivers compile for all architectures, the APIs they
> > use must be defined in linux/, not in asm/. They can be stubbed there
> > when not implemented in a particular architecture, but not in the driver.
>
> In this specific case, the same approach taken here is already needed
> by the Renesas VMSA-compatible IPMMU driver, with, btw, is inside
> drivers/iommu:
>
> drivers/iommu/ipmmu-vmsa.c
The reason there is different, the driver is shared by ARM32 and ARM64
platforms. Furthermore, there's an effort (or at least there was) to move away
from those APIs in the driver, but I think it has stalled.
> Also, this API is used only by 3 drivers [1]:
>
> drivers/iommu/ipmmu-vmsa.c
> drivers/iommu/mtk_iommu_v1.c
> drivers/media/platform/omap3isp/isp.c
>
> [1] as blamed by
> git grep -l arm_iommu_create_mapping
The exynos driver also uses it.
> That hardly seems to be an arch-specific iommu solution, but, instead, some
> hack used by only three drivers or some legacy iommu binding.
It's more complex than that. There are multiple IOMMU-related APIs on ARM, so
more recent than others, with different feature sets. While I agree that
drivers should move away from arm_iommu_create_mapping(), doing so requires
coordination between the IOMMU driver and the bus master driver (for instance
the omap3isp driver). It's not a trivial matter, but I'd love if someone
submitted patches :-)
> The omap3isp is, btw, the only driver outside drivers/iommu that needs it.
>
> So, it sounds that other driver uses some other approach, but hardly
> it would be worth to change this driver to use something else.
>
> So, better to stick with the same solution the Renesas driver used.
I'm not responsible for that solution and I didn't think it was a good one at
the time it was introduced, but in any case it is not meant at all to support
COMPILE_TEST. I still don't think the omap3isp driver should declare stubs for
these functions for the purpose of supporting compile-testing on x86.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-07 11:56 ` Laurent Pinchart
@ 2018-04-07 13:14 ` Mauro Carvalho Chehab
2018-04-09 8:50 ` Arnd Bergmann
0 siblings, 1 reply; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-07 13:14 UTC (permalink / raw)
To: Laurent Pinchart, Arnd Bergmann
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Stanimir Varbanov, Benjamin Gaignard, Philipp Zabel,
Ramesh Shanmugasundaram
Em Sat, 07 Apr 2018 14:56:59 +0300
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> On Thursday, 5 April 2018 22:44:44 EEST Mauro Carvalho Chehab wrote:
> > Em Thu, 05 Apr 2018 21:30:27 +0300 Laurent Pinchart escreveu:
> > > On Thursday, 5 April 2018 20:54:02 EEST Mauro Carvalho Chehab wrote:
> > > > There aren't much things required for it to build with COMPILE_TEST.
> > > > It just needs to provide stub for an arm-dependent include.
> > > >
> > > > Let's replicate the same solution used by ipmmu-vmsa, in order
> > > > to allow building omap3 with COMPILE_TEST.
> > > >
> > > > The actual logic here came from this driver:
> > > > drivers/iommu/ipmmu-vmsa.c
> > > >
> > > > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > > > ---
> > > >
> > > > drivers/media/platform/Kconfig | 8 ++++----
> > > > drivers/media/platform/omap3isp/isp.c | 7 +++++++
> > > > 2 files changed, 11 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/drivers/media/platform/Kconfig
> > > > b/drivers/media/platform/Kconfig index c7a1cf8a1b01..03c9dfeb7781
> > > > 100644
> > > > --- a/drivers/media/platform/Kconfig
> > > > +++ b/drivers/media/platform/Kconfig
> > > > @@ -62,12 +62,12 @@ config VIDEO_MUX
> > > >
> > > > config VIDEO_OMAP3
> > > > tristate "OMAP 3 Camera support"
> > > > - depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
> > > > + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
> > > > depends on HAS_DMA && OF
> > > > - depends on OMAP_IOMMU
> > > > - select ARM_DMA_USE_IOMMU
> > > > + depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
> > > > + select ARM_DMA_USE_IOMMU if OMAP_IOMMU
> > > > select VIDEOBUF2_DMA_CONTIG
> > > > - select MFD_SYSCON
> > > > + select MFD_SYSCON if ARCH_OMAP3
> > > > select V4L2_FWNODE
> > > > ---help---
> > > > Driver for an OMAP 3 camera controller.
> > > > diff --git a/drivers/media/platform/omap3isp/isp.c
> > > > b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..2a11a709aa4f
> > > > 100644
> > > > --- a/drivers/media/platform/omap3isp/isp.c
> > > > +++ b/drivers/media/platform/omap3isp/isp.c
> > > > @@ -61,7 +61,14 @@
> > > > #include <linux/sched.h>
> > > > #include <linux/vmalloc.h>
> > > >
> > > > +#if defined(CONFIG_ARM) && !defined(CONFIG_IOMMU_DMA)
> > > > #include <asm/dma-iommu.h>
> > > > +#else
> > > > +#define arm_iommu_create_mapping(...) NULL
> > > > +#define arm_iommu_attach_device(...) -ENODEV
> > > > +#define arm_iommu_release_mapping(...) do {} while (0)
> > > > +#define arm_iommu_detach_device(...) do {} while (0)
> > > > +#endif
> > >
> > > I don't think it's the job of a driver to define those stubs, sorry.
> > > Otherwise where do you stop ? If you have half of the code that is
> > > architecture- dependent, would you stub it ? And what if the stubs you
> > > define here generate warnings in static analyzers ?
> >
> > I agree that we should avoid doing that as a general case, but see
> > below.
> >
> > > If you want to make drivers compile for all architectures, the APIs they
> > > use must be defined in linux/, not in asm/. They can be stubbed there
> > > when not implemented in a particular architecture, but not in the driver.
> >
> > In this specific case, the same approach taken here is already needed
> > by the Renesas VMSA-compatible IPMMU driver, with, btw, is inside
> > drivers/iommu:
> >
> > drivers/iommu/ipmmu-vmsa.c
>
> The reason there is different, the driver is shared by ARM32 and ARM64
> platforms. Furthermore, there's an effort (or at least there was) to move away
> from those APIs in the driver, but I think it has stalled.
Anyway, the approach sticks at the driver. As this was accepted even
inside drivers/iommu, I fail to see why not doing the same on media,
specially since it really helps us to find bugs at omap3isp driver.
Even without pushing upstream (where Coverity would analyze it),
we got lots of problems by simply letting omap3isp to use the
usual tools we use for all other drivers.
> > Also, this API is used only by 3 drivers [1]:
> >
> > drivers/iommu/ipmmu-vmsa.c
> > drivers/iommu/mtk_iommu_v1.c
> > drivers/media/platform/omap3isp/isp.c
> >
> > [1] as blamed by
> > git grep -l arm_iommu_create_mapping
>
> The exynos driver also uses it.
>
> > That hardly seems to be an arch-specific iommu solution, but, instead, some
> > hack used by only three drivers or some legacy iommu binding.
>
> It's more complex than that. There are multiple IOMMU-related APIs on ARM, so
> more recent than others, with different feature sets. While I agree that
> drivers should move away from arm_iommu_create_mapping(), doing so requires
> coordination between the IOMMU driver and the bus master driver (for instance
> the omap3isp driver). It's not a trivial matter, but I'd love if someone
> submitted patches :-)
If someone steps up to do that, it would be really helpful, but we
should not trust that this will happen. OMAP3 is an old hardware,
and not many developers are working on improving its support.
> > The omap3isp is, btw, the only driver outside drivers/iommu that needs it.
> >
> > So, it sounds that other driver uses some other approach, but hardly
> > it would be worth to change this driver to use something else.
> >
> > So, better to stick with the same solution the Renesas driver used.
>
> I'm not responsible for that solution and I didn't think it was a good one at
> the time it was introduced, but in any case it is not meant at all to support
> COMPILE_TEST. I still don't think the omap3isp driver should declare stubs for
> these functions for the purpose of supporting compile-testing on x86.
Well, there is another alternative. We could do add this to its Makefile:
ifndef CONFIG_ARCH_ARM
ccflags-y += -I./arch/arm/include/
endif
And add those stubs to arch/arm/include/asm/dma-iommu.h,
in order to be used when CONFIG_IOMMU_DMA isn't defined:
#define arm_iommu_create_mapping(...) NULL
#define arm_iommu_attach_device(...) -ENODEV
#define arm_iommu_release_mapping(...) do {} while (0)
#define arm_iommu_detach_device(...) do {} while (0)
If done right, such solution could also be used to remove
the #ifdef inside drivers/iommu/ipmmu-vmsa.c.
Yet, I think that the approach I proposed before is better,
but maybe arm maintainers may have a different opinion.
Arnd,
What do you think?
Thanks,
Mauro
omap3isp: another approach to enable COMPILE_TEST
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/arch/arm/include/asm/dma-iommu.h b/arch/arm/include/asm/dma-iommu.h
index 6821f1249300..68dadbee0016 100644
--- a/arch/arm/include/asm/dma-iommu.h
+++ b/arch/arm/include/asm/dma-iommu.h
@@ -26,6 +26,7 @@ struct dma_iommu_mapping {
struct kref kref;
};
+#ifdef CONFIG_IOMMU_DMA
struct dma_iommu_mapping *
arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
@@ -35,6 +36,13 @@ int arm_iommu_attach_device(struct device *dev,
struct dma_iommu_mapping *mapping);
void arm_iommu_detach_device(struct device *dev);
+#else
+#define arm_iommu_create_mapping(...) NULL
+#define arm_iommu_attach_device(...) -ENODEV
+#define arm_iommu_release_mapping(...) do {} while (0)
+#define arm_iommu_detach_device(...) do {} while (0)
+#endif
+
int arm_dma_supported(struct device *dev, u64 mask);
#endif /* __KERNEL__ */
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 91b0c7324afb..e8d8bbc976af 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -62,12 +62,12 @@ config VIDEO_MUX
config VIDEO_OMAP3
tristate "OMAP 3 Camera support"
- depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
+ depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
depends on HAS_DMA && OF
- depends on OMAP_IOMMU
- select ARM_DMA_USE_IOMMU
+ depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
+ select ARM_DMA_USE_IOMMU if OMAP_IOMMU
select VIDEOBUF2_DMA_CONTIG
- select MFD_SYSCON
+ select MFD_SYSCON if ARCH_OMAP3
select V4L2_FWNODE
---help---
Driver for an OMAP 3 camera controller.
diff --git a/drivers/media/platform/omap3isp/Makefile b/drivers/media/platform/omap3isp/Makefile
index 56e99b4f7d23..6874c4f53838 100644
--- a/drivers/media/platform/omap3isp/Makefile
+++ b/drivers/media/platform/omap3isp/Makefile
@@ -10,3 +10,7 @@ omap3-isp-objs += \
ispstat.o isph3a_aewb.o isph3a_af.o isphist.o
obj-$(CONFIG_VIDEO_OMAP3) += omap3-isp.o
+
+ifndef CONFIG_ARCH_ARM
+ccflags-y += -I./arch/arm/include/
+endif
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 01/16] omap: omap-iommu.h: allow building drivers with COMPILE_TEST
2018-04-05 17:54 ` [PATCH 01/16] omap: omap-iommu.h: allow building drivers " Mauro Carvalho Chehab
@ 2018-04-08 10:12 ` Matthias Schwarzott
2018-04-17 8:52 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Matthias Schwarzott @ 2018-04-08 10:12 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List, Mauro Carvalho Chehab
Am 05.04.2018 um 19:54 schrieb Mauro Carvalho Chehab:
> Drivers that depend on omap-iommu.h (currently, just omap3isp)
> need a stub implementation in order to be built with COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> include/linux/omap-iommu.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/include/linux/omap-iommu.h b/include/linux/omap-iommu.h
> index c1aede46718b..0c21fc5b002e 100644
> --- a/include/linux/omap-iommu.h
> +++ b/include/linux/omap-iommu.h
> @@ -13,7 +13,12 @@
> #ifndef _OMAP_IOMMU_H_
> #define _OMAP_IOMMU_H_
>
> +#ifdef CONFIG_OMAP_IOMMU
> extern void omap_iommu_save_ctx(struct device *dev);
> extern void omap_iommu_restore_ctx(struct device *dev);
> +#else
> +static inline void omap_iommu_save_ctx(struct device *dev) {};
> +static inline void omap_iommu_restore_ctx(struct device *dev) {};
The semicolons at end of line are unnecessary.
> +#endif
>
> #endif
>
Regards
Matthias
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-07 13:14 ` Mauro Carvalho Chehab
@ 2018-04-09 8:50 ` Arnd Bergmann
2018-04-09 9:48 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 52+ messages in thread
From: Arnd Bergmann @ 2018-04-09 8:50 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Laurent Pinchart, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Stanimir Varbanov,
Benjamin Gaignard, Philipp Zabel, Ramesh Shanmugasundaram
On Sat, Apr 7, 2018 at 3:14 PM, Mauro Carvalho Chehab
<mchehab@s-opensource.com> wrote:
> Em Sat, 07 Apr 2018 14:56:59 +0300
> Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
>> On Thursday, 5 April 2018 22:44:44 EEST Mauro Carvalho Chehab wrote:
>> > Em Thu, 05 Apr 2018 21:30:27 +0300 Laurent Pinchart escreveu:
>> > > If you want to make drivers compile for all architectures, the APIs they
>> > > use must be defined in linux/, not in asm/. They can be stubbed there
>> > > when not implemented in a particular architecture, but not in the driver.
>> >
>> > In this specific case, the same approach taken here is already needed
>> > by the Renesas VMSA-compatible IPMMU driver, with, btw, is inside
>> > drivers/iommu:
>> >
>> > drivers/iommu/ipmmu-vmsa.c
>>
>> The reason there is different, the driver is shared by ARM32 and ARM64
>> platforms. Furthermore, there's an effort (or at least there was) to move away
>> from those APIs in the driver, but I think it has stalled.
>
> Anyway, the approach sticks at the driver. As this was accepted even
> inside drivers/iommu, I fail to see why not doing the same on media,
> specially since it really helps us to find bugs at omap3isp driver.
>
> Even without pushing upstream (where Coverity would analyze it),
> we got lots of problems by simply letting omap3isp to use the
> usual tools we use for all other drivers.
>
>> > Also, this API is used only by 3 drivers [1]:
>> >
>> > drivers/iommu/ipmmu-vmsa.c
>> > drivers/iommu/mtk_iommu_v1.c
>> > drivers/media/platform/omap3isp/isp.c
>> >
>> > [1] as blamed by
>> > git grep -l arm_iommu_create_mapping
>>
>> The exynos driver also uses it.
>>
>> > That hardly seems to be an arch-specific iommu solution, but, instead, some
>> > hack used by only three drivers or some legacy iommu binding.
>>
>> It's more complex than that. There are multiple IOMMU-related APIs on ARM, so
>> more recent than others, with different feature sets. While I agree that
>> drivers should move away from arm_iommu_create_mapping(), doing so requires
>> coordination between the IOMMU driver and the bus master driver (for instance
>> the omap3isp driver). It's not a trivial matter, but I'd love if someone
>> submitted patches :-)
>
> If someone steps up to do that, it would be really helpful, but we
> should not trust that this will happen. OMAP3 is an old hardware,
> and not many developers are working on improving its support.
Considering its age, I still see a lot of changes on the arch/arm side of
it, so I wouldn't give up the hope yet.
>> > The omap3isp is, btw, the only driver outside drivers/iommu that needs it.
>> >
>> > So, it sounds that other driver uses some other approach, but hardly
>> > it would be worth to change this driver to use something else.
>> >
>> > So, better to stick with the same solution the Renesas driver used.
>>
>> I'm not responsible for that solution and I didn't think it was a good one at
>> the time it was introduced, but in any case it is not meant at all to support
>> COMPILE_TEST. I still don't think the omap3isp driver should declare stubs for
>> these functions for the purpose of supporting compile-testing on x86.
>
> Well, there is another alternative. We could do add this to its Makefile:
>
> ifndef CONFIG_ARCH_ARM
> ccflags-y += -I./arch/arm/include/
> endif
>
> And add those stubs to arch/arm/include/asm/dma-iommu.h,
> in order to be used when CONFIG_IOMMU_DMA isn't defined:
>
> #define arm_iommu_create_mapping(...) NULL
> #define arm_iommu_attach_device(...) -ENODEV
> #define arm_iommu_release_mapping(...) do {} while (0)
> #define arm_iommu_detach_device(...) do {} while (0)
>
> If done right, such solution could also be used to remove
> the #ifdef inside drivers/iommu/ipmmu-vmsa.c.
>
> Yet, I think that the approach I proposed before is better,
> but maybe arm maintainers may have a different opinion.
>
> Arnd,
>
> What do you think?
I think including a foreign architecture header is worse than your
earlier patch, I'd rather see a local hack in the driver.
I haven't tried it, but how about something simpler like what
I have below.
Arnd
(in case it works and you want to pick it up with a proper
changelog):
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/drivers/media/platform/omap3isp/isp.c
b/drivers/media/platform/omap3isp/isp.c
index 8eb000e3d8fd..625f2e407929 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -1945,12 +1945,15 @@ static int isp_initialize_modules(struct
isp_device *isp)
static void isp_detach_iommu(struct isp_device *isp)
{
+#ifdef CONFIG_ARM
arm_iommu_release_mapping(isp->mapping);
isp->mapping = NULL;
+#endif
}
static int isp_attach_iommu(struct isp_device *isp)
{
+#ifdef CONFIG_ARM
struct dma_iommu_mapping *mapping;
int ret;
@@ -1979,6 +1982,9 @@ static int isp_attach_iommu(struct isp_device *isp)
error:
isp_detach_iommu(isp);
return ret;
+#else
+ return -ENODEV;
+#endif
}
/*
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 02/16] media: omap3isp: allow it to build with COMPILE_TEST
2018-04-09 8:50 ` Arnd Bergmann
@ 2018-04-09 9:48 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-09 9:48 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Laurent Pinchart, Linux Media Mailing List,
Mauro Carvalho Chehab, Hans Verkuil, Stanimir Varbanov,
Benjamin Gaignard, Philipp Zabel, Ramesh Shanmugasundaram
HI Arnd,
Em Mon, 9 Apr 2018 10:50:13 +0200
Arnd Bergmann <arnd@arndb.de> escreveu:
> >> > That hardly seems to be an arch-specific iommu solution, but, instead, some
> >> > hack used by only three drivers or some legacy iommu binding.
> >>
> >> It's more complex than that. There are multiple IOMMU-related APIs on ARM, so
> >> more recent than others, with different feature sets. While I agree that
> >> drivers should move away from arm_iommu_create_mapping(), doing so requires
> >> coordination between the IOMMU driver and the bus master driver (for instance
> >> the omap3isp driver). It's not a trivial matter, but I'd love if someone
> >> submitted patches :-)
> >
> > If someone steps up to do that, it would be really helpful, but we
> > should not trust that this will happen. OMAP3 is an old hardware,
> > and not many developers are working on improving its support.
>
> Considering its age, I still see a lot of changes on the arch/arm side of
> it, so I wouldn't give up the hope yet.
Yeah, someone might still work on such fix.
> > Arnd,
> >
> > What do you think?
>
> I think including a foreign architecture header is worse than your
> earlier patch, I'd rather see a local hack in the driver.
>
> I haven't tried it, but how about something simpler like what
> I have below.
Actually, another #ifdef was needed, before include arch-specifi
header :-)
>
> Arnd
>
> (in case it works and you want to pick it up with a proper
> changelog):
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Sounds a reasonable approach. Instead of using CONFIG_ARM, I would,
instead check for CONFIG_ARM_DMA_USE_IOMMU, with is the actual
dependency for such code, as otherwise it could cause some
compilation breakages on ARM with COMPILE_TEST and some randconfig.
An advantage is that it properly annotates the part of the code
that depends on ARM_DMA_USE_IOMMU.
Thanks,
Mauro
From: Arnd Bergmann <arnd@arndb.de>
media: omap3isp: allow it to build with COMPILE_TEST
There aren't much things required for it to build with COMPILE_TEST.
It just needs to not compile the code that depends on arm-specific
iommu implementation.
Co-developed-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 1ee915b794c0..2757b621091c 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -63,12 +63,10 @@ config VIDEO_MUX
config VIDEO_OMAP3
tristate "OMAP 3 Camera support"
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
- depends on ARCH_OMAP3 || COMPILE_TEST
- depends on ARM
+ depends on ((ARCH_OMAP3 && OMAP_IOMMU) || COMPILE_TEST)
depends on COMMON_CLK
depends on HAS_DMA && OF
- depends on OMAP_IOMMU
- select ARM_DMA_USE_IOMMU
+ select ARM_DMA_USE_IOMMU if OMAP_IOMMU
select VIDEOBUF2_DMA_CONTIG
select MFD_SYSCON
select V4L2_FWNODE
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 16c50099cccd..b8c8761a76b6 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -61,7 +61,9 @@
#include <linux/sched.h>
#include <linux/vmalloc.h>
+#ifdef CONFIG_ARM_DMA_USE_IOMMU
#include <asm/dma-iommu.h>
+#endif
#include <media/v4l2-common.h>
#include <media/v4l2-fwnode.h>
@@ -1938,12 +1940,15 @@ static int isp_initialize_modules(struct isp_device *isp)
static void isp_detach_iommu(struct isp_device *isp)
{
+#ifdef CONFIG_ARM_DMA_USE_IOMMU
arm_iommu_release_mapping(isp->mapping);
isp->mapping = NULL;
+#endif
}
static int isp_attach_iommu(struct isp_device *isp)
{
+#ifdef CONFIG_ARM_DMA_USE_IOMMU
struct dma_iommu_mapping *mapping;
int ret;
@@ -1972,6 +1977,9 @@ static int isp_attach_iommu(struct isp_device *isp)
error:
isp_detach_iommu(isp);
return ret;
+#else
+ return -ENODEV;
+#endif
}
/*
^ permalink raw reply related [flat|nested] 52+ messages in thread
* Re: [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
[not found] ` <CGME20180409094946epcas1p1db108f4fcd018081c90787478004d907@epcas1p1.samsung.com>
@ 2018-04-09 9:49 ` Sylwester Nawrocki
0 siblings, 0 replies; 52+ messages in thread
From: Sylwester Nawrocki @ 2018-04-09 9:49 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: linux-samsung-soc, Krzysztof Kozlowski, Mauro Carvalho Chehab,
Kyungmin Park, Kukjin Kim, linux-arm-kernel,
Linux Media Mailing List
On 04/05/2018 07:54 PM, Mauro Carvalho Chehab wrote:
> There's nothing that prevents building this driver with
> COMPILE_TEST. So, enable it.
>
> While here, make the Kconfig dependency cleaner by removing
> the unneeded if block.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
With s/exymos4-is/exynos4-is in the subject
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
--
Regards,
Sylwester
^ permalink raw reply [flat|nested] 52+ messages in thread
* [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE
@ 2018-04-09 9:49 ` Sylwester Nawrocki
0 siblings, 0 replies; 52+ messages in thread
From: Sylwester Nawrocki @ 2018-04-09 9:49 UTC (permalink / raw)
To: linux-arm-kernel
On 04/05/2018 07:54 PM, Mauro Carvalho Chehab wrote:
> There's nothing that prevents building this driver with
> COMPILE_TEST. So, enable it.
>
> While here, make the Kconfig dependency cleaner by removing
> the unneeded if block.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
With s/exymos4-is/exynos4-is in the subject
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
--
Regards,
Sylwester
^ permalink raw reply [flat|nested] 52+ messages in thread
* Re: [PATCH 01/16] omap: omap-iommu.h: allow building drivers with COMPILE_TEST
2018-04-08 10:12 ` Matthias Schwarzott
@ 2018-04-17 8:52 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 52+ messages in thread
From: Mauro Carvalho Chehab @ 2018-04-17 8:52 UTC (permalink / raw)
To: Matthias Schwarzott; +Cc: Linux Media Mailing List, Mauro Carvalho Chehab
Em Sun, 8 Apr 2018 12:12:17 +0200
Matthias Schwarzott <zzam@gentoo.org> escreveu:
> Am 05.04.2018 um 19:54 schrieb Mauro Carvalho Chehab:
> > Drivers that depend on omap-iommu.h (currently, just omap3isp)
> > need a stub implementation in order to be built with COMPILE_TEST.
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > ---
> > include/linux/omap-iommu.h | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/include/linux/omap-iommu.h b/include/linux/omap-iommu.h
> > index c1aede46718b..0c21fc5b002e 100644
> > --- a/include/linux/omap-iommu.h
> > +++ b/include/linux/omap-iommu.h
> > @@ -13,7 +13,12 @@
> > #ifndef _OMAP_IOMMU_H_
> > #define _OMAP_IOMMU_H_
> >
> > +#ifdef CONFIG_OMAP_IOMMU
> > extern void omap_iommu_save_ctx(struct device *dev);
> > extern void omap_iommu_restore_ctx(struct device *dev);
> > +#else
> > +static inline void omap_iommu_save_ctx(struct device *dev) {};
> > +static inline void omap_iommu_restore_ctx(struct device *dev) {};
>
> The semicolons at end of line are unnecessary.
>
> > +#endif
> >
> > #endif
> >
Hi Matthias,
Somehow, I missed your comment.
New version enclosed.
Thanks,
Mauro
[PATCH v3] omap: omap-iommu.h: allow building drivers with COMPILE_TEST
Drivers that depend on omap-iommu.h (currently, just omap3isp)
need a stub implementation in order to be built with COMPILE_TEST.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/linux/omap-iommu.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/linux/omap-iommu.h b/include/linux/omap-iommu.h
index c1aede46718b..0c21fc5b002e 100644
--- a/include/linux/omap-iommu.h
+++ b/include/linux/omap-iommu.h
@@ -13,7 +13,12 @@
#ifndef _OMAP_IOMMU_H_
#define _OMAP_IOMMU_H_
+#ifdef CONFIG_OMAP_IOMMU
extern void omap_iommu_save_ctx(struct device *dev);
extern void omap_iommu_restore_ctx(struct device *dev);
+#else
+static inline void omap_iommu_save_ctx(struct device *dev) {}
+static inline void omap_iommu_restore_ctx(struct device *dev) {}
+#endif
#endif
^ permalink raw reply related [flat|nested] 52+ messages in thread
end of thread, other threads:[~2018-04-17 8:52 UTC | newest]
Thread overview: 52+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-05 17:54 [PATCH 00/16] Make all drivers under drivers/media to build with COMPILE_TEST Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 01/16] omap: omap-iommu.h: allow building drivers " Mauro Carvalho Chehab
2018-04-08 10:12 ` Matthias Schwarzott
2018-04-17 8:52 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 02/16] media: omap3isp: allow it to build " Mauro Carvalho Chehab
2018-04-05 18:30 ` Laurent Pinchart
2018-04-05 19:44 ` Mauro Carvalho Chehab
2018-04-07 11:56 ` Laurent Pinchart
2018-04-07 13:14 ` Mauro Carvalho Chehab
2018-04-09 8:50 ` Arnd Bergmann
2018-04-09 9:48 ` Mauro Carvalho Chehab
2018-04-07 5:23 ` kbuild test robot
2018-04-05 17:54 ` [PATCH 03/16] media: omap3isp/isp: remove an unused static var Mauro Carvalho Chehab
2018-04-05 18:34 ` Laurent Pinchart
2018-04-05 17:54 ` [PATCH 04/16] media: fsl-viu: mark static functions as such Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 05/16] media: fsl-viu: allow building it with COMPILE_TEST Mauro Carvalho Chehab
2018-04-05 21:35 ` Arnd Bergmann
2018-04-06 9:47 ` Mauro Carvalho Chehab
2018-04-06 9:51 ` Arnd Bergmann
2018-04-06 14:15 ` Mauro Carvalho Chehab
2018-04-06 14:16 ` Arnd Bergmann
2018-04-06 14:26 ` Mauro Carvalho Chehab
2018-04-06 14:37 ` Arnd Bergmann
2018-04-06 14:47 ` Mauro Carvalho Chehab
2018-04-06 19:15 ` kbuild test robot
2018-04-05 17:54 ` [PATCH 06/16] media: cec_gpio: allow building CEC_GPIO " Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 07/16] media: exymos4-is: allow compile test for EXYNOS FIMC-LITE Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
[not found] ` <CGME20180409094946epcas1p1db108f4fcd018081c90787478004d907@epcas1p1.samsung.com>
2018-04-09 9:49 ` Sylwester Nawrocki
2018-04-09 9:49 ` Sylwester Nawrocki
2018-04-05 17:54 ` [PATCH 08/16] media: mmp-camera.h: add missing platform data Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 09/16] media: marvel-ccic: re-enable mmp-driver build Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 10/16] media: mmp-driver: make two functions static Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 11/16] media: davinci: allow building isif code Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 12/16] media: davinci: allow build vpbe_display with COMPILE_TEST Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 13/16] media: vpbe_venc: don't store return codes if they won't be used Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 14/16] media: davinci: get rid of lots of kernel-doc warnings Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 15/16] media: omapfb_dss.h: add stubs to build with COMPILE_TEST Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` Mauro Carvalho Chehab
2018-04-05 18:41 ` Laurent Pinchart
2018-04-05 18:41 ` Laurent Pinchart
2018-04-05 18:41 ` Laurent Pinchart
2018-04-05 19:32 ` Mauro Carvalho Chehab
2018-04-05 19:32 ` Mauro Carvalho Chehab
2018-04-05 19:32 ` Mauro Carvalho Chehab
2018-04-05 17:54 ` [PATCH 16/16] media: omap: allow building it " Mauro Carvalho Chehab
2018-04-05 18:15 ` Mauro Carvalho Chehab
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.