* [PATCH v5 0/2] upon streaming, check that the pipeline starts with a source entity
@ 2019-10-24 14:15 Dafna Hirschfeld
2019-10-24 14:15 ` [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev Dafna Hirschfeld
2019-10-24 14:15 ` [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
0 siblings, 2 replies; 5+ messages in thread
From: Dafna Hirschfeld @ 2019-10-24 14:15 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, skhan, hverkuil, kernel, dafna3
The first patch in this patchset moves the dev field of each
entity struct to the common struct vimc_ent_device.
The second patch fixes a crashing bug when the pipeline does not start with a
source entity.
Fixes from v4:
- NO changes in the first patch since v4
- The function vimc_streamer_pipeline_init now gets the media_entity
as parameter and I changed the while loop to "while(ent)" since this the
valid behaviour: loop until the source of the pipeline.
All other cases should return from the while loop with "goto err".
Also, after calling v4l2_subdev_call, if 'ret' is ENOIOCTCMD then
it is set to 0 to make sure that ret is 0 when no error occurred.
Dafna Hirschfeld (2):
media: vimc: move the dev field of each entity to vimc_ent_dev
media: vimc: upon streaming, check that the pipeline starts with a
source entity
drivers/media/platform/vimc/vimc-capture.c | 7 +-
drivers/media/platform/vimc/vimc-common.c | 10 +++
drivers/media/platform/vimc/vimc-common.h | 7 ++
drivers/media/platform/vimc/vimc-debayer.c | 15 ++---
drivers/media/platform/vimc/vimc-scaler.c | 11 ++--
drivers/media/platform/vimc/vimc-sensor.c | 5 +-
drivers/media/platform/vimc/vimc-streamer.c | 73 +++++++++++++--------
7 files changed, 78 insertions(+), 50 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev
2019-10-24 14:15 [PATCH v5 0/2] upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
@ 2019-10-24 14:15 ` Dafna Hirschfeld
2019-11-10 10:58 ` Hans Verkuil
2019-10-24 14:15 ` [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
1 sibling, 1 reply; 5+ messages in thread
From: Dafna Hirschfeld @ 2019-10-24 14:15 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, skhan, hverkuil, kernel, dafna3
Since the 'struct device *dev' field exists in each of the
entity structs, it can be moved to the common struct vimc_ent_devevice.
It is then used to replace 'pr_err' with 'dev_err' in the streamer
code.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
---
drivers/media/platform/vimc/vimc-capture.c | 7 +++----
drivers/media/platform/vimc/vimc-common.h | 2 ++
drivers/media/platform/vimc/vimc-debayer.c | 15 +++++++--------
drivers/media/platform/vimc/vimc-scaler.c | 11 +++++------
drivers/media/platform/vimc/vimc-sensor.c | 5 ++---
drivers/media/platform/vimc/vimc-streamer.c | 2 +-
6 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/drivers/media/platform/vimc/vimc-capture.c b/drivers/media/platform/vimc/vimc-capture.c
index 602f80323031..d9cd6525ba22 100644
--- a/drivers/media/platform/vimc/vimc-capture.c
+++ b/drivers/media/platform/vimc/vimc-capture.c
@@ -15,7 +15,6 @@
struct vimc_cap_device {
struct vimc_ent_device ved;
struct video_device vdev;
- struct device *dev;
struct v4l2_pix_format format;
struct vb2_queue queue;
struct list_head buf_list;
@@ -124,7 +123,7 @@ static int vimc_cap_s_fmt_vid_cap(struct file *file, void *priv,
if (ret)
return ret;
- dev_dbg(vcap->dev, "%s: format update: "
+ dev_dbg(vcap->ved.dev, "%s: format update: "
"old:%dx%d (0x%x, %d, %d, %d, %d) "
"new:%dx%d (0x%x, %d, %d, %d, %d)\n", vcap->vdev.name,
/* old */
@@ -300,7 +299,7 @@ static int vimc_cap_buffer_prepare(struct vb2_buffer *vb)
unsigned long size = vcap->format.sizeimage;
if (vb2_plane_size(vb, 0) < size) {
- dev_err(vcap->dev, "%s: buffer too small (%lu < %lu)\n",
+ dev_err(vcap->ved.dev, "%s: buffer too small (%lu < %lu)\n",
vcap->vdev.name, vb2_plane_size(vb, 0), size);
return -EINVAL;
}
@@ -451,7 +450,7 @@ struct vimc_ent_device *vimc_cap_add(struct vimc_device *vimc,
vcap->ved.ent = &vcap->vdev.entity;
vcap->ved.process_frame = vimc_cap_process_frame;
vcap->ved.vdev_get_format = vimc_cap_get_format;
- vcap->dev = &vimc->pdev.dev;
+ vcap->ved.dev = &vimc->pdev.dev;
/* Initialize the video_device struct */
vdev = &vcap->vdev;
diff --git a/drivers/media/platform/vimc/vimc-common.h b/drivers/media/platform/vimc/vimc-common.h
index 698db7c07645..8349e3c68a49 100644
--- a/drivers/media/platform/vimc/vimc-common.h
+++ b/drivers/media/platform/vimc/vimc-common.h
@@ -92,6 +92,7 @@ struct vimc_pix_map {
/**
* struct vimc_ent_device - core struct that represents a node in the topology
*
+ * @dev: a pointer of the device struct of the driver
* @ent: the pointer to struct media_entity for the node
* @pads: the list of pads of the node
* @process_frame: callback send a frame to that node
@@ -108,6 +109,7 @@ struct vimc_pix_map {
* media_entity
*/
struct vimc_ent_device {
+ struct device *dev;
struct media_entity *ent;
struct media_pad *pads;
void * (*process_frame)(struct vimc_ent_device *ved,
diff --git a/drivers/media/platform/vimc/vimc-debayer.c b/drivers/media/platform/vimc/vimc-debayer.c
index feac47d79449..ff7f8b763860 100644
--- a/drivers/media/platform/vimc/vimc-debayer.c
+++ b/drivers/media/platform/vimc/vimc-debayer.c
@@ -34,7 +34,6 @@ struct vimc_deb_pix_map {
struct vimc_deb_device {
struct vimc_ent_device ved;
struct v4l2_subdev sd;
- struct device *dev;
/* The active format */
struct v4l2_mbus_framefmt sink_fmt;
u32 src_code;
@@ -263,7 +262,7 @@ static int vimc_deb_set_fmt(struct v4l2_subdev *sd,
/* Set the new format in the sink pad */
vimc_deb_adjust_sink_fmt(&fmt->format);
- dev_dbg(vdeb->dev, "%s: sink format update: "
+ dev_dbg(vdeb->ved.dev, "%s: sink format update: "
"old:%dx%d (0x%x, %d, %d, %d, %d) "
"new:%dx%d (0x%x, %d, %d, %d, %d)\n", vdeb->sd.name,
/* old */
@@ -386,7 +385,7 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
/* Sum the values of the colors in the mean window */
- dev_dbg(vdeb->dev,
+ dev_dbg(vdeb->ved.dev,
"deb: %s: --- Calc pixel %dx%d, window mean %d, seek %d ---\n",
vdeb->sd.name, lin, col, vdeb->sink_fmt.height, seek);
@@ -419,7 +418,7 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
vdeb->sink_fmt.width,
vdeb->sink_bpp);
- dev_dbg(vdeb->dev,
+ dev_dbg(vdeb->ved.dev,
"deb: %s: RGB CALC: frame index %d, win pos %dx%d, color %d\n",
vdeb->sd.name, index, wlin, wcol, color);
@@ -430,21 +429,21 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
/* Save how many values we already added */
n_rgb[color]++;
- dev_dbg(vdeb->dev, "deb: %s: RGB CALC: val %d, n %d\n",
+ dev_dbg(vdeb->ved.dev, "deb: %s: RGB CALC: val %d, n %d\n",
vdeb->sd.name, rgb[color], n_rgb[color]);
}
}
/* Calculate the mean */
for (i = 0; i < 3; i++) {
- dev_dbg(vdeb->dev,
+ dev_dbg(vdeb->ved.dev,
"deb: %s: PRE CALC: %dx%d Color %d, val %d, n %d\n",
vdeb->sd.name, lin, col, i, rgb[i], n_rgb[i]);
if (n_rgb[i])
rgb[i] = rgb[i] / n_rgb[i];
- dev_dbg(vdeb->dev,
+ dev_dbg(vdeb->ved.dev,
"deb: %s: FINAL CALC: %dx%d Color %d, val %d\n",
vdeb->sd.name, lin, col, i, rgb[i]);
}
@@ -518,7 +517,7 @@ struct vimc_ent_device *vimc_deb_add(struct vimc_device *vimc,
}
vdeb->ved.process_frame = vimc_deb_process_frame;
- vdeb->dev = &vimc->pdev.dev;
+ vdeb->ved.dev = &vimc->pdev.dev;
/* Initialize the frame format */
vdeb->sink_fmt = sink_fmt_default;
diff --git a/drivers/media/platform/vimc/vimc-scaler.c b/drivers/media/platform/vimc/vimc-scaler.c
index a6a3cc5be872..9b1023525920 100644
--- a/drivers/media/platform/vimc/vimc-scaler.c
+++ b/drivers/media/platform/vimc/vimc-scaler.c
@@ -21,7 +21,6 @@ MODULE_PARM_DESC(sca_mult, " the image size multiplier");
struct vimc_sca_device {
struct vimc_ent_device ved;
struct v4l2_subdev sd;
- struct device *dev;
/* NOTE: the source fmt is the same as the sink
* with the width and hight multiplied by mult
*/
@@ -171,7 +170,7 @@ static int vimc_sca_set_fmt(struct v4l2_subdev *sd,
/* Set the new format in the sink pad */
vimc_sca_adjust_sink_fmt(&fmt->format);
- dev_dbg(vsca->dev, "%s: sink format update: "
+ dev_dbg(vsca->ved.dev, "%s: sink format update: "
"old:%dx%d (0x%x, %d, %d, %d, %d) "
"new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsca->sd.name,
/* old */
@@ -271,7 +270,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
vsca->bpp);
pixel = &sink_frame[index];
- dev_dbg(vsca->dev,
+ dev_dbg(vsca->ved.dev,
"sca: %s: --- scale_pix sink pos %dx%d, index %d ---\n",
vsca->sd.name, lin, col, index);
@@ -281,7 +280,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
index = VIMC_FRAME_INDEX(lin * sca_mult, col * sca_mult,
vsca->sink_fmt.width * sca_mult, vsca->bpp);
- dev_dbg(vsca->dev, "sca: %s: scale_pix src pos %dx%d, index %d\n",
+ dev_dbg(vsca->ved.dev, "sca: %s: scale_pix src pos %dx%d, index %d\n",
vsca->sd.name, lin * sca_mult, col * sca_mult, index);
/* Repeat this pixel mult times */
@@ -290,7 +289,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
* pixel repetition in a line
*/
for (j = 0; j < sca_mult * vsca->bpp; j += vsca->bpp) {
- dev_dbg(vsca->dev,
+ dev_dbg(vsca->ved.dev,
"sca: %s: sca: scale_pix src pos %d\n",
vsca->sd.name, index + j);
@@ -377,7 +376,7 @@ struct vimc_ent_device *vimc_sca_add(struct vimc_device *vimc,
}
vsca->ved.process_frame = vimc_sca_process_frame;
- vsca->dev = &vimc->pdev.dev;
+ vsca->ved.dev = &vimc->pdev.dev;
/* Initialize the frame format */
vsca->sink_fmt = sink_fmt_default;
diff --git a/drivers/media/platform/vimc/vimc-sensor.c b/drivers/media/platform/vimc/vimc-sensor.c
index 46dc6a535abe..9921993a2b73 100644
--- a/drivers/media/platform/vimc/vimc-sensor.c
+++ b/drivers/media/platform/vimc/vimc-sensor.c
@@ -17,7 +17,6 @@
struct vimc_sen_device {
struct vimc_ent_device ved;
struct v4l2_subdev sd;
- struct device *dev;
struct tpg_data tpg;
struct task_struct *kthread_sen;
u8 *frame;
@@ -158,7 +157,7 @@ static int vimc_sen_set_fmt(struct v4l2_subdev *sd,
/* Set the new format */
vimc_sen_adjust_fmt(&fmt->format);
- dev_dbg(vsen->dev, "%s: format update: "
+ dev_dbg(vsen->ved.dev, "%s: format update: "
"old:%dx%d (0x%x, %d, %d, %d, %d) "
"new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsen->sd.name,
/* old */
@@ -368,7 +367,7 @@ struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
goto err_free_hdl;
vsen->ved.process_frame = vimc_sen_process_frame;
- vsen->dev = &vimc->pdev.dev;
+ vsen->ved.dev = &vimc->pdev.dev;
/* Initialize the frame format */
vsen->mbus_format = fmt_default;
diff --git a/drivers/media/platform/vimc/vimc-streamer.c b/drivers/media/platform/vimc/vimc-streamer.c
index faa2879c25df..37150c919fcb 100644
--- a/drivers/media/platform/vimc/vimc-streamer.c
+++ b/drivers/media/platform/vimc/vimc-streamer.c
@@ -96,7 +96,7 @@ static int vimc_streamer_pipeline_init(struct vimc_stream *stream,
sd = media_entity_to_v4l2_subdev(ved->ent);
ret = v4l2_subdev_call(sd, video, s_stream, 1);
if (ret && ret != -ENOIOCTLCMD) {
- pr_err("subdev_call error %s\n",
+ dev_err(ved->dev, "subdev_call error %s\n",
ved->ent->name);
vimc_streamer_pipeline_terminate(stream);
return ret;
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity
2019-10-24 14:15 [PATCH v5 0/2] upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
2019-10-24 14:15 ` [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev Dafna Hirschfeld
@ 2019-10-24 14:15 ` Dafna Hirschfeld
2019-10-27 14:13 ` kbuild test robot
1 sibling, 1 reply; 5+ messages in thread
From: Dafna Hirschfeld @ 2019-10-24 14:15 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, skhan, hverkuil, kernel, dafna3
Userspace can disable links and create pipelines that
do not start with a source entity. Trying to stream
from such a pipeline should fail with -EPIPE
currently this is not handled and cause kernel crash.
Reproducing the crash:
media-ctl -d0 -l "5:1->21:0[0]" -v
v4l2-ctl -z platform:vimc -d "RGB/YUV Capture" -v width=1920,height=1440
v4l2-ctl --stream-mmap --stream-count=100 -d /dev/video2
Panic message:
[ 39.078841][ T248] BUG: kernel NULL pointer dereference, address: 0000000000000000
[ 39.079338][ T248] #PF: supervisor read access in kernel mode
[ 39.079704][ T248] #PF: error_code(0x0000) - not-present page
[ 39.080071][ T248] PGD 0 P4D 0
[ 39.080279][ T248] Oops: 0000 [#1] SMP PTI
[ 39.080546][ T248] CPU: 0 PID: 248 Comm: vimc-streamer t Not tainted 5.4.0-rc1+ #17
[ 39.081030][ T248] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
[ 39.081779][ T248] RIP: 0010:vimc_sca_process_frame+0xdb/0x210 [vimc]
[ 39.082191][ T248] Code: 44 8d 0c 28 8b 93 a4 01 00 00 48 8b 8b 98 01 00 00 85 d2 74 40 48 8b 74 24 10 8d 7a ff 4c 01 c9 31 d2 4c 01 fe eb 03 4c 89 c2 <44> 0f b6 04 16 44 88 04 11 4c 8d 42 01 48 39 fa 75 eb 8b 93 a4 01
[ 39.083436][ T248] RSP: 0018:ffffb15a005abe90 EFLAGS: 00010246
[ 39.083808][ T248] RAX: 0000000000000000 RBX: ffffa3fdc46d2e00 RCX: ffffb15a02579000
[ 39.084298][ T248] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000002
[ 39.084792][ T248] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 39.085280][ T248] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
[ 39.085770][ T248] R13: ffffa3fdc46d2ee0 R14: 0000000000000000 R15: 0000000000000000
[ 39.086258][ T248] FS: 0000000000000000(0000) GS:ffffa3fdc7800000(0000) knlGS:0000000000000000
[ 39.086806][ T248] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 39.087217][ T248] CR2: 0000000000000000 CR3: 0000000003c92005 CR4: 0000000000360ef0
[ 39.087706][ T248] Call Trace:
[ 39.087909][ T248] ? vimc_streamer_pipeline_terminate+0x90/0x90 [vimc]
[ 39.088318][ T248] vimc_streamer_thread+0x7c/0xe0 [vimc]
[ 39.088663][ T248] kthread+0x10d/0x130
[ 39.088919][ T248] ? kthread_park+0x80/0x80
[ 39.089205][ T248] ret_from_fork+0x35/0x40
[ 39.089475][ T248] Modules linked in: vimc videobuf2_vmalloc videobuf2_memops v4l2_tpg videobuf2_v4l2 videobuf2_common videodev mc
[ 39.090208][ T248] CR2: 0000000000000000
[ 39.090463][ T248] ---[ end trace 697650fefbf78bee ]---
[ 39.090796][ T248] RIP: 0010:vimc_sca_process_frame+0xdb/0x210 [vimc]
[ 39.091209][ T248] Code: 44 8d 0c 28 8b 93 a4 01 00 00 48 8b 8b 98 01 00 00 85 d2 74 40 48 8b 74 24 10 8d 7a ff 4c 01 c9 31 d2 4c 01 fe eb 03 4c 89 c2 <44> 0f b6 04 16 44 88 04 11 4c 8d 42 01 48 39 fa 75 eb 8b 93 a4 01
[ 39.092417][ T248] RSP: 0018:ffffb15a005abe90 EFLAGS: 00010246
[ 39.092789][ T248] RAX: 0000000000000000 RBX: ffffa3fdc46d2e00 RCX: ffffb15a02579000
[ 39.093278][ T248] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000002
[ 39.093766][ T248] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 39.094254][ T248] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
[ 39.094742][ T248] R13: ffffa3fdc46d2ee0 R14: 0000000000000000 R15: 0000000000000000
[ 39.095309][ T248] FS: 0000000000000000(0000) GS:ffffa3fdc7800000(0000) knlGS:0000000000000000
[ 39.095974][ T248] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 39.096372][ T248] CR2: 0000000000000000 CR3: 0000000003c92005 CR4: 0000000000360ef0
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
---
drivers/media/platform/vimc/vimc-common.c | 10 +++
drivers/media/platform/vimc/vimc-common.h | 5 ++
drivers/media/platform/vimc/vimc-streamer.c | 73 +++++++++++++--------
3 files changed, 59 insertions(+), 29 deletions(-)
diff --git a/drivers/media/platform/vimc/vimc-common.c b/drivers/media/platform/vimc/vimc-common.c
index a3120f4f7a90..e8ad3199ffbf 100644
--- a/drivers/media/platform/vimc/vimc-common.c
+++ b/drivers/media/platform/vimc/vimc-common.c
@@ -164,6 +164,16 @@ static const struct vimc_pix_map vimc_pix_map_list[] = {
},
};
+bool vimc_is_source(struct media_entity *ent)
+{
+ unsigned int i;
+
+ for (i = 0; i < ent->num_pads; i++)
+ if (ent->pads[i].flags & MEDIA_PAD_FL_SINK)
+ return false;
+ return true;
+}
+
const struct vimc_pix_map *vimc_pix_map_by_index(unsigned int i)
{
if (i >= ARRAY_SIZE(vimc_pix_map_list))
diff --git a/drivers/media/platform/vimc/vimc-common.h b/drivers/media/platform/vimc/vimc-common.h
index 8349e3c68a49..112574bc3089 100644
--- a/drivers/media/platform/vimc/vimc-common.h
+++ b/drivers/media/platform/vimc/vimc-common.h
@@ -154,6 +154,11 @@ struct vimc_ent_config {
void (*rm)(struct vimc_device *vimc, struct vimc_ent_device *ved);
};
+/**
+ * vimc_is_source - returns true iff the entity has only source pads
+ */
+bool vimc_is_source(struct media_entity *ent);
+
/* prototypes for vimc_ent_config add and rm hooks */
struct vimc_ent_device *vimc_cap_add(struct vimc_device *vimc,
const char *vcfg_name);
diff --git a/drivers/media/platform/vimc/vimc-streamer.c b/drivers/media/platform/vimc/vimc-streamer.c
index 37150c919fcb..3e2ee488b93b 100644
--- a/drivers/media/platform/vimc/vimc-streamer.c
+++ b/drivers/media/platform/vimc/vimc-streamer.c
@@ -77,51 +77,66 @@ static void vimc_streamer_pipeline_terminate(struct vimc_stream *stream)
* Return: 0 if success, error code otherwise.
*/
static int vimc_streamer_pipeline_init(struct vimc_stream *stream,
- struct vimc_ent_device *ved)
+ struct media_entity *ent)
{
- struct media_entity *entity;
+ struct vimc_ent_device *ved;
struct video_device *vdev;
struct v4l2_subdev *sd;
int ret = 0;
stream->pipe_size = 0;
- while (stream->pipe_size < VIMC_STREAMER_PIPELINE_MAX_SIZE) {
+
+ do {
+ /* Get the next device in the pipeline */
+ if (is_media_entity_v4l2_subdev(ent)) {
+ sd = media_entity_to_v4l2_subdev(ent);
+ ved = v4l2_get_subdevdata(sd);
+ } else {
+ vdev = container_of(ent,
+ struct video_device,
+ entity);
+ ved = video_get_drvdata(vdev);
+ }
+
if (!ved) {
- vimc_streamer_pipeline_terminate(stream);
- return -EINVAL;
+ pr_err("%s: could not get vimc pointer of entity",
+ __func__);
+ ret = -EPIPE;
+ goto err;
+ }
+ if (stream->pipe_size == VIMC_STREAMER_PIPELINE_MAX_SIZE) {
+ dev_err(ved->dev, "pipeline too long, max allowed is %d",
+ VIMC_STREAMER_PIPELINE_MAX_SIZE);
+ ret = -EPIPE;
+ goto err;
}
stream->ved_pipeline[stream->pipe_size++] = ved;
if (is_media_entity_v4l2_subdev(ved->ent)) {
sd = media_entity_to_v4l2_subdev(ved->ent);
ret = v4l2_subdev_call(sd, video, s_stream, 1);
- if (ret && ret != -ENOIOCTLCMD) {
- dev_err(ved->dev, "subdev_call error %s\n",
- ved->ent->name);
- vimc_streamer_pipeline_terminate(stream);
- return ret;
+ if (ret == -ENOIOCTLCMD)
+ ret = 0;
+ if (ret) {
+ dev_err(ved->dev, "s_stream of '%s' failed (%d)\n",
+ ved->ent->name, ret);
+ goto err;
}
}
-
- entity = vimc_get_source_entity(ved->ent);
- /* Check if the end of the pipeline was reached*/
- if (!entity)
- return 0;
-
- /* Get the next device in the pipeline */
- if (is_media_entity_v4l2_subdev(entity)) {
- sd = media_entity_to_v4l2_subdev(entity);
- ved = v4l2_get_subdevdata(sd);
- } else {
- vdev = container_of(entity,
- struct video_device,
- entity);
- ved = video_get_drvdata(vdev);
- }
+ ent = vimc_get_source_entity(ved->ent);
+ } while (ent);
+
+ if (!vimc_is_source(ved->ent)) {
+ dev_err(ved->dev,
+ "first entity in the pipe '%s' is not a source\n",
+ ved->ent->name);
+ ret = -EPIPE;
+ goto err;
}
-
+ return 0;
+err:
vimc_streamer_pipeline_terminate(stream);
- return -EINVAL;
+ return ret;
}
/**
@@ -191,7 +206,7 @@ int vimc_streamer_s_stream(struct vimc_stream *stream,
if (stream->kthread)
return 0;
- ret = vimc_streamer_pipeline_init(stream, ved);
+ ret = vimc_streamer_pipeline_init(stream, ved->ent);
if (ret)
return ret;
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity
2019-10-24 14:15 ` [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
@ 2019-10-27 14:13 ` kbuild test robot
0 siblings, 0 replies; 5+ messages in thread
From: kbuild test robot @ 2019-10-27 14:13 UTC (permalink / raw)
To: Dafna Hirschfeld
Cc: kbuild-all, linux-media, dafna.hirschfeld, helen.koike, skhan,
hverkuil, kernel, dafna3
[-- Attachment #1: Type: text/plain, Size: 32361 bytes --]
Hi Dafna,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linuxtv-media/master]
[cannot apply to v5.4-rc4 next-20191025]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Dafna-Hirschfeld/upon-streaming-check-that-the-pipeline-starts-with-a-source-entity/20191027-201436
base: git://linuxtv.org/media_tree.git master
reproduce: make htmldocs
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found
fs/fs-writeback.c:913: warning: Excess function parameter 'nr_pages' description in 'cgroup_writeback_by_id'
fs/direct-io.c:258: warning: Excess function parameter 'offset' description in 'dio_complete'
fs/libfs.c:496: warning: Excess function parameter 'available' description in 'simple_write_end'
fs/posix_acl.c:647: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode'
fs/posix_acl.c:647: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode'
fs/posix_acl.c:647: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode'
kernel/dma/coherent.c:1: warning: no structured comments found
include/linux/input/sparse-keymap.h:43: warning: Function parameter or member 'sw' not described in 'key_entry'
include/linux/bitmap.h:341: warning: Function parameter or member 'nbits' not described in 'bitmap_or_equal'
include/linux/rculist.h:374: warning: Excess function parameter 'cond' description in 'list_for_each_entry_rcu'
include/linux/rculist.h:651: warning: Excess function parameter 'cond' description in 'hlist_for_each_entry_rcu'
mm/util.c:1: warning: 'get_user_pages_fast' not found
mm/slab.c:4215: warning: Function parameter or member 'objp' not described in '__ksize'
drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Enum value 'DPLL_ID_TGL_MGPLL5' not described in enum 'intel_dpll_id'
drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Enum value 'DPLL_ID_TGL_MGPLL6' not described in enum 'intel_dpll_id'
drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Excess enum value 'DPLL_ID_TGL_TCPLL5' description in 'intel_dpll_id'
drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Excess enum value 'DPLL_ID_TGL_TCPLL6' description in 'intel_dpll_id'
drivers/gpu/drm/i915/display/intel_dpll_mgr.h:342: warning: Function parameter or member 'wakeref' not described in 'intel_shared_dpll'
Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c
Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c
Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c
drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information.
drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer.
drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state
drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to
drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to.
drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer
drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register,
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'pinned_ctx' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'specific_ctx_id' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'specific_ctx_id_mask' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'poll_check_timer' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'poll_wq' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'pollin' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'periodic' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'period_exponent' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'oa_buffer' not described in 'i915_perf_stream'
drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information.
drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer.
drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state
drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to
drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to.
drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer
drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register,
drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information.
drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer.
drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state
drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to
drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to.
drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer
drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register,
drivers/gpu/drm/mcde/mcde_drv.c:1: warning: 'ST-Ericsson MCDE DRM Driver' not found
include/net/cfg80211.h:1185: warning: Function parameter or member 'txpwr' not described in 'station_parameters'
include/net/mac80211.h:4056: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops'
include/net/mac80211.h:2018: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta'
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c:335: warning: Excess function parameter 'dev' description in 'amdgpu_gem_prime_export'
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c:336: warning: Excess function parameter 'dev' description in 'amdgpu_gem_prime_export'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:142: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:347: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:348: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:494: warning: Function parameter or member 'start' not described in 'amdgpu_vm_pt_first_dfs'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:823: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:2823: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute'
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:378: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch'
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Function parameter or member 'ih' not described in 'amdgpu_irq_dispatch'
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch'
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:1: warning: no structured comments found
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1: warning: no structured comments found
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c:1: warning: 'pp_dpm_sclk pp_dpm_mclk pp_dpm_pcie' not found
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:132: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:238: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source gpu_info FW provided soc bounding box struct or 0 if not
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'soc_bounding_box' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'register_hpd_handlers' not found
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'dm_crtc_high_irq' not found
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'dm_pflip_high_irq' not found
include/drm/drm_modeset_helper_vtables.h:1053: warning: Function parameter or member 'prepare_writeback_job' not described in 'drm_connector_helper_funcs'
include/drm/drm_modeset_helper_vtables.h:1053: warning: Function parameter or member 'cleanup_writeback_job' not described in 'drm_connector_helper_funcs'
include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found
include/drm/drm_gem_shmem_helper.h:87: warning: Function parameter or member 'madv' not described in 'drm_gem_shmem_object'
include/drm/drm_gem_shmem_helper.h:87: warning: Function parameter or member 'madv_list' not described in 'drm_gem_shmem_object'
>> drivers/media/platform/vimc/vimc-streamer.c:81: warning: Function parameter or member 'ent' not described in 'vimc_streamer_pipeline_init'
drivers/media/platform/vimc/vimc-streamer.c:81: warning: Excess function parameter 'ved' description in 'vimc_streamer_pipeline_init'
include/linux/skbuff.h:888: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'list' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'vlan_present' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:888: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
include/net/sock.h:233: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
include/net/sock.h:233: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
include/net/sock.h:515: warning: Function parameter or member 'sk_rx_skb_cache' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_tx_skb_cache' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock'
include/net/sock.h:515: warning: Function parameter or member 'sk_bpf_storage' not described in 'sock'
include/net/sock.h:2439: warning: Function parameter or member 'tcp_rx_skb_cache_key' not described in 'DECLARE_STATIC_KEY_FALSE'
include/net/sock.h:2439: warning: Excess function parameter 'sk' description in 'DECLARE_STATIC_KEY_FALSE'
include/net/sock.h:2439: warning: Excess function parameter 'skb' description in 'DECLARE_STATIC_KEY_FALSE'
include/linux/netdevice.h:2053: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device'
include/linux/netdevice.h:2053: warning: Function parameter or member 'xps_rxqs_map' not described in 'net_device'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'
drivers/net/phy/phylink.c:595: warning: Function parameter or member 'config' not described in 'phylink_create'
drivers/net/phy/phylink.c:595: warning: Excess function parameter 'ndev' description in 'phylink_create'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quotactl' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quota_on' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_free_mnt_opts' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_eat_lsm_opts' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_kern_mount' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_show_options' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_add_mnt_opt' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'd_instantiate' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'getprocattr' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'setprocattr' not described in 'security_list_options'
include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'locked_down' not described in 'security_list_options'
Documentation/admin-guide/perf/imx-ddr.rst:21: WARNING: Unexpected indentation.
Documentation/admin-guide/perf/imx-ddr.rst:34: WARNING: Unexpected indentation.
Documentation/admin-guide/perf/imx-ddr.rst:40: WARNING: Unexpected indentation.
Documentation/admin-guide/perf/imx-ddr.rst:45: WARNING: Unexpected indentation.
Documentation/admin-guide/perf/imx-ddr.rst:52: WARNING: Unexpected indentation.
Documentation/admin-guide/xfs.rst:257: WARNING: Block quote ends without a blank line; unexpected unindent.
Documentation/arm64/memory.rst:158: WARNING: Unexpected indentation.
Documentation/arm64/memory.rst:162: WARNING: Unexpected indentation.
include/uapi/linux/firewire-cdev.h:312: WARNING: Inline literal start-string without end-string.
drivers/firewire/core-transaction.c:606: WARNING: Inline strong start-string without end-string.
include/linux/regulator/driver.h:284: WARNING: Unknown target name: "regulator_regmap_x_voltage".
Documentation/filesystems/ubifs-authentication.rst:94: WARNING: Inline interpreted text or phrase reference start-string without end-string.
WARNING: kernel-doc 'scripts/kernel-doc -rst -enable-lineno -function Reservation Object Overview drivers/dma-buf/reservation.c' failed with return code 1
WARNING: kernel-doc 'scripts/kernel-doc -rst -enable-lineno -export drivers/dma-buf/reservation.c' failed with return code 2
WARNING: kernel-doc 'scripts/kernel-doc -rst -enable-lineno -internal include/linux/reservation.h' failed with return code 2
drivers/message/fusion/mptbase.c:5057: WARNING: Definition list ends without a blank line; unexpected unindent.
drivers/tty/serial/serial_core.c:1969: WARNING: Definition list ends without a blank line; unexpected unindent.
include/linux/spi/spi.h:382: WARNING: Unexpected indentation.
include/linux/xarray.h:232: WARNING: Unexpected indentation.
Documentation/driver-api/gpio/driver.rst:420: WARNING: Unexpected indentation.
Documentation/driver-api/gpio/driver.rst:418: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:422: WARNING: Block quote ends without a blank line; unexpected unindent.
Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:428: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:441: WARNING: Unexpected indentation.
Documentation/driver-api/gpio/driver.rst:435: WARNING: Inline emphasis start-string without end-string.
Documentation/driver-api/gpio/driver.rst:435: WARNING: Inline emphasis start-string without end-string.
vim +81 drivers/media/platform/vimc/vimc-streamer.c
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 65
ed391879dd73ce André Almeida 2019-06-24 66 /**
ed391879dd73ce André Almeida 2019-06-24 67 * vimc_streamer_pipeline_init - Initializes the stream structure
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 68 *
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 69 * @stream: the pointer to the stream structure to be initialized
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 70 * @ved: the pointer to the vimc entity initializing the stream
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 71 *
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 72 * Initializes the stream structure. Walks through the entity graph to
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 73 * construct the pipeline used later on the streamer thread.
ed391879dd73ce André Almeida 2019-06-24 74 * Calls vimc_streamer_s_stream() to enable stream in all entities of
ed391879dd73ce André Almeida 2019-06-24 75 * the pipeline.
ed391879dd73ce André Almeida 2019-06-24 76 *
ed391879dd73ce André Almeida 2019-06-24 77 * Return: 0 if success, error code otherwise.
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 78 */
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 79 static int vimc_streamer_pipeline_init(struct vimc_stream *stream,
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 80 struct media_entity *ent)
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 @81 {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 82 struct vimc_ent_device *ved;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 83 struct video_device *vdev;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 84 struct v4l2_subdev *sd;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 85 int ret = 0;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 86
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 87 stream->pipe_size = 0;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 88
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 89 do {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 90 /* Get the next device in the pipeline */
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 91 if (is_media_entity_v4l2_subdev(ent)) {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 92 sd = media_entity_to_v4l2_subdev(ent);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 93 ved = v4l2_get_subdevdata(sd);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 94 } else {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 95 vdev = container_of(ent,
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 96 struct video_device,
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 97 entity);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 98 ved = video_get_drvdata(vdev);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 99 }
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 100
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 101 if (!ved) {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 102 pr_err("%s: could not get vimc pointer of entity",
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 103 __func__);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 104 ret = -EPIPE;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 105 goto err;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 106 }
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 107 if (stream->pipe_size == VIMC_STREAMER_PIPELINE_MAX_SIZE) {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 108 dev_err(ved->dev, "pipeline too long, max allowed is %d",
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 109 VIMC_STREAMER_PIPELINE_MAX_SIZE);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 110 ret = -EPIPE;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 111 goto err;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 112 }
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 113 stream->ved_pipeline[stream->pipe_size++] = ved;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 114
6f3f3e11999b19 Helen Fornazier 2019-03-06 115 if (is_media_entity_v4l2_subdev(ved->ent)) {
6f3f3e11999b19 Helen Fornazier 2019-03-06 116 sd = media_entity_to_v4l2_subdev(ved->ent);
6f3f3e11999b19 Helen Fornazier 2019-03-06 117 ret = v4l2_subdev_call(sd, video, s_stream, 1);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 118 if (ret == -ENOIOCTLCMD)
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 119 ret = 0;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 120 if (ret) {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 121 dev_err(ved->dev, "s_stream of '%s' failed (%d)\n",
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 122 ved->ent->name, ret);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 123 goto err;
6f3f3e11999b19 Helen Fornazier 2019-03-06 124 }
6f3f3e11999b19 Helen Fornazier 2019-03-06 125 }
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 126 ent = vimc_get_source_entity(ved->ent);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 127 } while (ent);
6f3f3e11999b19 Helen Fornazier 2019-03-06 128
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 129 if (!vimc_is_source(ved->ent)) {
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 130 dev_err(ved->dev,
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 131 "first entity in the pipe '%s' is not a source\n",
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 132 ved->ent->name);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 133 ret = -EPIPE;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 134 goto err;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 135 }
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 136 return 0;
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 137 err:
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 138 vimc_streamer_pipeline_terminate(stream);
9363f41b95c7a0 Dafna Hirschfeld 2019-10-24 139 return ret;
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 140 }
adc589d2a20808 Lucas A. M. Magalhães 2019-01-21 141
:::::: The code at line 81 was first introduced by commit
:::::: adc589d2a20808fb99d46a78175cd023f2040338 media: vimc: Add vimc-streamer for stream control
:::::: TO: Lucas A. M. Magalhães <lucmaga@gmail.com>
:::::: CC: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
---
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: 7278 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev
2019-10-24 14:15 ` [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev Dafna Hirschfeld
@ 2019-11-10 10:58 ` Hans Verkuil
0 siblings, 0 replies; 5+ messages in thread
From: Hans Verkuil @ 2019-11-10 10:58 UTC (permalink / raw)
To: Dafna Hirschfeld, linux-media; +Cc: helen.koike, skhan, kernel, dafna3
Hi Dafna,
I marked this v5 series as superseded in patchwork. In v5 1/2 patch was not included
in v6, so I assume it was dropped in v6. If you think this patch is still necessary,
then just repost.
Regards,
Hans
On 10/24/19 4:15 PM, Dafna Hirschfeld wrote:
> Since the 'struct device *dev' field exists in each of the
> entity structs, it can be moved to the common struct vimc_ent_devevice.
> It is then used to replace 'pr_err' with 'dev_err' in the streamer
> code.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> ---
> drivers/media/platform/vimc/vimc-capture.c | 7 +++----
> drivers/media/platform/vimc/vimc-common.h | 2 ++
> drivers/media/platform/vimc/vimc-debayer.c | 15 +++++++--------
> drivers/media/platform/vimc/vimc-scaler.c | 11 +++++------
> drivers/media/platform/vimc/vimc-sensor.c | 5 ++---
> drivers/media/platform/vimc/vimc-streamer.c | 2 +-
> 6 files changed, 20 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/media/platform/vimc/vimc-capture.c b/drivers/media/platform/vimc/vimc-capture.c
> index 602f80323031..d9cd6525ba22 100644
> --- a/drivers/media/platform/vimc/vimc-capture.c
> +++ b/drivers/media/platform/vimc/vimc-capture.c
> @@ -15,7 +15,6 @@
> struct vimc_cap_device {
> struct vimc_ent_device ved;
> struct video_device vdev;
> - struct device *dev;
> struct v4l2_pix_format format;
> struct vb2_queue queue;
> struct list_head buf_list;
> @@ -124,7 +123,7 @@ static int vimc_cap_s_fmt_vid_cap(struct file *file, void *priv,
> if (ret)
> return ret;
>
> - dev_dbg(vcap->dev, "%s: format update: "
> + dev_dbg(vcap->ved.dev, "%s: format update: "
> "old:%dx%d (0x%x, %d, %d, %d, %d) "
> "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vcap->vdev.name,
> /* old */
> @@ -300,7 +299,7 @@ static int vimc_cap_buffer_prepare(struct vb2_buffer *vb)
> unsigned long size = vcap->format.sizeimage;
>
> if (vb2_plane_size(vb, 0) < size) {
> - dev_err(vcap->dev, "%s: buffer too small (%lu < %lu)\n",
> + dev_err(vcap->ved.dev, "%s: buffer too small (%lu < %lu)\n",
> vcap->vdev.name, vb2_plane_size(vb, 0), size);
> return -EINVAL;
> }
> @@ -451,7 +450,7 @@ struct vimc_ent_device *vimc_cap_add(struct vimc_device *vimc,
> vcap->ved.ent = &vcap->vdev.entity;
> vcap->ved.process_frame = vimc_cap_process_frame;
> vcap->ved.vdev_get_format = vimc_cap_get_format;
> - vcap->dev = &vimc->pdev.dev;
> + vcap->ved.dev = &vimc->pdev.dev;
>
> /* Initialize the video_device struct */
> vdev = &vcap->vdev;
> diff --git a/drivers/media/platform/vimc/vimc-common.h b/drivers/media/platform/vimc/vimc-common.h
> index 698db7c07645..8349e3c68a49 100644
> --- a/drivers/media/platform/vimc/vimc-common.h
> +++ b/drivers/media/platform/vimc/vimc-common.h
> @@ -92,6 +92,7 @@ struct vimc_pix_map {
> /**
> * struct vimc_ent_device - core struct that represents a node in the topology
> *
> + * @dev: a pointer of the device struct of the driver
> * @ent: the pointer to struct media_entity for the node
> * @pads: the list of pads of the node
> * @process_frame: callback send a frame to that node
> @@ -108,6 +109,7 @@ struct vimc_pix_map {
> * media_entity
> */
> struct vimc_ent_device {
> + struct device *dev;
> struct media_entity *ent;
> struct media_pad *pads;
> void * (*process_frame)(struct vimc_ent_device *ved,
> diff --git a/drivers/media/platform/vimc/vimc-debayer.c b/drivers/media/platform/vimc/vimc-debayer.c
> index feac47d79449..ff7f8b763860 100644
> --- a/drivers/media/platform/vimc/vimc-debayer.c
> +++ b/drivers/media/platform/vimc/vimc-debayer.c
> @@ -34,7 +34,6 @@ struct vimc_deb_pix_map {
> struct vimc_deb_device {
> struct vimc_ent_device ved;
> struct v4l2_subdev sd;
> - struct device *dev;
> /* The active format */
> struct v4l2_mbus_framefmt sink_fmt;
> u32 src_code;
> @@ -263,7 +262,7 @@ static int vimc_deb_set_fmt(struct v4l2_subdev *sd,
> /* Set the new format in the sink pad */
> vimc_deb_adjust_sink_fmt(&fmt->format);
>
> - dev_dbg(vdeb->dev, "%s: sink format update: "
> + dev_dbg(vdeb->ved.dev, "%s: sink format update: "
> "old:%dx%d (0x%x, %d, %d, %d, %d) "
> "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vdeb->sd.name,
> /* old */
> @@ -386,7 +385,7 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
>
> /* Sum the values of the colors in the mean window */
>
> - dev_dbg(vdeb->dev,
> + dev_dbg(vdeb->ved.dev,
> "deb: %s: --- Calc pixel %dx%d, window mean %d, seek %d ---\n",
> vdeb->sd.name, lin, col, vdeb->sink_fmt.height, seek);
>
> @@ -419,7 +418,7 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
> vdeb->sink_fmt.width,
> vdeb->sink_bpp);
>
> - dev_dbg(vdeb->dev,
> + dev_dbg(vdeb->ved.dev,
> "deb: %s: RGB CALC: frame index %d, win pos %dx%d, color %d\n",
> vdeb->sd.name, index, wlin, wcol, color);
>
> @@ -430,21 +429,21 @@ static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
> /* Save how many values we already added */
> n_rgb[color]++;
>
> - dev_dbg(vdeb->dev, "deb: %s: RGB CALC: val %d, n %d\n",
> + dev_dbg(vdeb->ved.dev, "deb: %s: RGB CALC: val %d, n %d\n",
> vdeb->sd.name, rgb[color], n_rgb[color]);
> }
> }
>
> /* Calculate the mean */
> for (i = 0; i < 3; i++) {
> - dev_dbg(vdeb->dev,
> + dev_dbg(vdeb->ved.dev,
> "deb: %s: PRE CALC: %dx%d Color %d, val %d, n %d\n",
> vdeb->sd.name, lin, col, i, rgb[i], n_rgb[i]);
>
> if (n_rgb[i])
> rgb[i] = rgb[i] / n_rgb[i];
>
> - dev_dbg(vdeb->dev,
> + dev_dbg(vdeb->ved.dev,
> "deb: %s: FINAL CALC: %dx%d Color %d, val %d\n",
> vdeb->sd.name, lin, col, i, rgb[i]);
> }
> @@ -518,7 +517,7 @@ struct vimc_ent_device *vimc_deb_add(struct vimc_device *vimc,
> }
>
> vdeb->ved.process_frame = vimc_deb_process_frame;
> - vdeb->dev = &vimc->pdev.dev;
> + vdeb->ved.dev = &vimc->pdev.dev;
>
> /* Initialize the frame format */
> vdeb->sink_fmt = sink_fmt_default;
> diff --git a/drivers/media/platform/vimc/vimc-scaler.c b/drivers/media/platform/vimc/vimc-scaler.c
> index a6a3cc5be872..9b1023525920 100644
> --- a/drivers/media/platform/vimc/vimc-scaler.c
> +++ b/drivers/media/platform/vimc/vimc-scaler.c
> @@ -21,7 +21,6 @@ MODULE_PARM_DESC(sca_mult, " the image size multiplier");
> struct vimc_sca_device {
> struct vimc_ent_device ved;
> struct v4l2_subdev sd;
> - struct device *dev;
> /* NOTE: the source fmt is the same as the sink
> * with the width and hight multiplied by mult
> */
> @@ -171,7 +170,7 @@ static int vimc_sca_set_fmt(struct v4l2_subdev *sd,
> /* Set the new format in the sink pad */
> vimc_sca_adjust_sink_fmt(&fmt->format);
>
> - dev_dbg(vsca->dev, "%s: sink format update: "
> + dev_dbg(vsca->ved.dev, "%s: sink format update: "
> "old:%dx%d (0x%x, %d, %d, %d, %d) "
> "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsca->sd.name,
> /* old */
> @@ -271,7 +270,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
> vsca->bpp);
> pixel = &sink_frame[index];
>
> - dev_dbg(vsca->dev,
> + dev_dbg(vsca->ved.dev,
> "sca: %s: --- scale_pix sink pos %dx%d, index %d ---\n",
> vsca->sd.name, lin, col, index);
>
> @@ -281,7 +280,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
> index = VIMC_FRAME_INDEX(lin * sca_mult, col * sca_mult,
> vsca->sink_fmt.width * sca_mult, vsca->bpp);
>
> - dev_dbg(vsca->dev, "sca: %s: scale_pix src pos %dx%d, index %d\n",
> + dev_dbg(vsca->ved.dev, "sca: %s: scale_pix src pos %dx%d, index %d\n",
> vsca->sd.name, lin * sca_mult, col * sca_mult, index);
>
> /* Repeat this pixel mult times */
> @@ -290,7 +289,7 @@ static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
> * pixel repetition in a line
> */
> for (j = 0; j < sca_mult * vsca->bpp; j += vsca->bpp) {
> - dev_dbg(vsca->dev,
> + dev_dbg(vsca->ved.dev,
> "sca: %s: sca: scale_pix src pos %d\n",
> vsca->sd.name, index + j);
>
> @@ -377,7 +376,7 @@ struct vimc_ent_device *vimc_sca_add(struct vimc_device *vimc,
> }
>
> vsca->ved.process_frame = vimc_sca_process_frame;
> - vsca->dev = &vimc->pdev.dev;
> + vsca->ved.dev = &vimc->pdev.dev;
>
> /* Initialize the frame format */
> vsca->sink_fmt = sink_fmt_default;
> diff --git a/drivers/media/platform/vimc/vimc-sensor.c b/drivers/media/platform/vimc/vimc-sensor.c
> index 46dc6a535abe..9921993a2b73 100644
> --- a/drivers/media/platform/vimc/vimc-sensor.c
> +++ b/drivers/media/platform/vimc/vimc-sensor.c
> @@ -17,7 +17,6 @@
> struct vimc_sen_device {
> struct vimc_ent_device ved;
> struct v4l2_subdev sd;
> - struct device *dev;
> struct tpg_data tpg;
> struct task_struct *kthread_sen;
> u8 *frame;
> @@ -158,7 +157,7 @@ static int vimc_sen_set_fmt(struct v4l2_subdev *sd,
> /* Set the new format */
> vimc_sen_adjust_fmt(&fmt->format);
>
> - dev_dbg(vsen->dev, "%s: format update: "
> + dev_dbg(vsen->ved.dev, "%s: format update: "
> "old:%dx%d (0x%x, %d, %d, %d, %d) "
> "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsen->sd.name,
> /* old */
> @@ -368,7 +367,7 @@ struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
> goto err_free_hdl;
>
> vsen->ved.process_frame = vimc_sen_process_frame;
> - vsen->dev = &vimc->pdev.dev;
> + vsen->ved.dev = &vimc->pdev.dev;
>
> /* Initialize the frame format */
> vsen->mbus_format = fmt_default;
> diff --git a/drivers/media/platform/vimc/vimc-streamer.c b/drivers/media/platform/vimc/vimc-streamer.c
> index faa2879c25df..37150c919fcb 100644
> --- a/drivers/media/platform/vimc/vimc-streamer.c
> +++ b/drivers/media/platform/vimc/vimc-streamer.c
> @@ -96,7 +96,7 @@ static int vimc_streamer_pipeline_init(struct vimc_stream *stream,
> sd = media_entity_to_v4l2_subdev(ved->ent);
> ret = v4l2_subdev_call(sd, video, s_stream, 1);
> if (ret && ret != -ENOIOCTLCMD) {
> - pr_err("subdev_call error %s\n",
> + dev_err(ved->dev, "subdev_call error %s\n",
> ved->ent->name);
> vimc_streamer_pipeline_terminate(stream);
> return ret;
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-11-10 10:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-24 14:15 [PATCH v5 0/2] upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
2019-10-24 14:15 ` [PATCH v5 1/2] media: vimc: move the dev field of each entity to vimc_ent_dev Dafna Hirschfeld
2019-11-10 10:58 ` Hans Verkuil
2019-10-24 14:15 ` [PATCH v5 2/2] media: vimc: upon streaming, check that the pipeline starts with a source entity Dafna Hirschfeld
2019-10-27 14:13 ` kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).