* Re: atomisp current issues
From: Laurent Pinchart @ 2021-11-04 9:53 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Tsuchiya Yuto, Hans de Goede,
Patrik Gfeller, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, Hans Verkuil, Kaixu Xia, Yang Li,
Tomi Valkeinen, Alex Dewar, Aline Santana Cordeiro, Arnd Bergmann,
Alan, Peter Zijlstra, Ingo Molnar, linux-staging,
Linux Kernel Mailing List, Andy Shevchenko
In-Reply-To: <20211103135418.496f75d5@sal.lan>
Hi Mauro,
On Wed, Nov 03, 2021 at 01:54:18PM +0000, Mauro Carvalho Chehab wrote:
> Hi,
>
> From what I've seen so far, those are the main issues with regards to V4L2 API,
> in order to allow a generic V4L2 application to work with it.
>
> MMAP support
> ============
>
> Despite having some MMAP code on it, the current implementation is broken.
> Fixing it is not trivial, as it would require fixing the HMM support on it,
> which does several tricks.
>
> The best would be to replace it by something simpler. If this is similar
> enough to IPU3, perhaps one idea would be to replace the HMM code on it by
> videodev2 + IPU3 HMM code.
>
> As this is not trivial, I'm postponing such task. If someone has enough
> time, it would be great to have this fixed.
>
> From my side, I opted to add support for USERPTR on camorama:
>
> https://github.com/alessio/camorama
We should *really* phase out USERPTR support. Worst case you may support
DMABUF only if MMAP is problematic, but I don't really see why it could
be easy to map an imported buffer and difficult to map a buffer
allocated by the driver. videobuf2 should be used.
> As this is something I wanted to do anyway, and it allowed me to cleanup
> several things in camorama's code.
>
> Support for USERPTR is not autodetected. So, this should be selected
> via a command line parameter. Here (Fedora), I installed the build
> dependencies on my test device with:
>
> $ sudo dnf builddep camorama
> $ sudo dnf install gnome-common # for gnome-autogen.sh
>
> Testing it with atomisp would be:
>
> $ git clone https://github.com/alessio/camorama
> $ cd camorama && ./autogen.sh
> $ make && ./src/camorama -d /dev/video2 --debug -U -D
>
> In time:
> --------
>
> Camorama currently doesn't work due to some other API bugs. See below.
>
>
> VIDIOC_G_FMT/VIDIOC_S_FMT/VIDIOC_TRY_FMT issues
> ===============================================
>
> The implementation for VIDIOC_G_FMT/VIDIOC_S_FMT/VIDIOC_TRY_FMT are not
> properly implemented. It has several issues.
>
> The main one is related to padding. Based on the comments inside the code,
> the ISP 2 seems to require padding to work, both vertically an horizontally.
>
> Those are controlled by two modprobe parameters: pad_h and pad_w.
> The default for both is 16.
>
> There are some other padding logic inside the function which sets the
> video formats at atomisp_cmd: atomisp_set_fmt(). This function is quite
> complex, being big and it calls several other atomisp kAPIs.
>
> It basically queries the sensor, and then it mounts a pipeline that
> will have the sensor + ISP blocks. Those ISP blocks convert the format
> from Bayer into YUYV or RGB and scale down the resolution in order to
> match the request.
>
> It also adjusts the padding. The padding code there is very complex,
> as it not only uses pad_h/pad_w, having things like:
>
> if (!atomisp_subdev_format_conversion(asd, source_pad)) {
> padding_w = 0;
> padding_h = 0;
> } else if (IS_BYT) {
> padding_w = 12;
> padding_h = 12;
> }
> ...
> atomisp_get_dis_envelop(asd, f->fmt.pix.width, f->fmt.pix.height,
> &dvs_env_w, &dvs_env_h);
> ...
> /*
> * set format info to sensor
> * In continuous mode, resolution is set only if it is higher than
> * existing value. This because preview pipe will be configured after
> * capture pipe and usually has lower resolution than capture pipe.
> */
> if (!asd->continuous_mode->val ||
> isp_sink_fmt->width < (f->fmt.pix.width + padding_w + dvs_env_w) ||
> isp_sink_fmt->height < (f->fmt.pix.height + padding_h +
> dvs_env_h)) {
>
> Due to that, the sensors are set to have those extra 16 columns/lines.
> Those extra data are consumed internally at the driver, so the output
> buffer won't contain those.
>
> Yet, the buffer size to be allocated by userspace on USERPTR mode is not just
> width x height x bpp, but it may need extra space for such pads and/or other
> things.
>
> In practice, when VIDIOC_S_FMT asks for a 1600x1200 resolution, it
> actually sets 1616x1216 at the sensor (at the pad source), but the
> pad sink provides the requested resolution: 1600x1200.
>
> However, the resolution returned by VIDIOC_G_FMT/VIDIOC_S_FMT/VIDIOC_TRY_FMT
> is not always the sink resolution. Sometimes, it returns the sensor format.
>
> Fixing it has been challenging.
>
> -
>
> Another related issue is that, when a resolution bigger than the maximum
> resolution is requested, the driver doesn't return 1600x1200, but, instead,
> a smaller one.
>
> On other words, setting to YUYV 1600x1200 gives:
>
> $ v4l2-ctl --set-fmt-video pixelformat=YUYV,width=1600,height=1200 -d /dev/video2 --verbose
> VIDIOC_QUERYCAP: ok
> VIDIOC_G_FMT: ok
> VIDIOC_S_FMT: ok
> Format Video Capture:
> Width/Height : 1600/1200
> Pixel Format : 'YUYV' (YUYV 4:2:2)
> Field : None
> Bytes per Line : 3200
> Size Image : 3842048
> Colorspace : Rec. 709
> Transfer Function : Rec. 709
> YCbCr/HSV Encoding: Rec. 709
> Quantization : Default (maps to Limited Range)
> Flags :
>
> Setting to a higher resolution (which is a method that some apps use to test
> for the max resolution, when VIDIOC_ENUM_FRAMESIZES is not available or
> broken) produces:
>
> $ v4l2-ctl --set-fmt-video pixelformat=YUYV,width=10000,height=10000 -d /dev/video2 --verbose
> VIDIOC_QUERYCAP: ok
> VIDIOC_G_FMT: ok
> VIDIOC_S_FMT: ok
> Format Video Capture:
> Width/Height : 1600/900
> Pixel Format : 'YUYV' (YUYV 4:2:2)
> Field : None
> Bytes per Line : 3200
> Size Image : 2883584
> Colorspace : Rec. 709
> Transfer Function : Rec. 709
> YCbCr/HSV Encoding: Rec. 709
> Quantization : Default (maps to Limited Range)
> Flags :
>
> Trying to set to the sensor resolution is even worse, as it returns EINVAL:
>
> $ v4l2-ctl --set-fmt-video pixelformat=YUYV,width=1616,height=1216 -d /dev/video2 --verbose
> VIDIOC_QUERYCAP: ok
> VIDIOC_G_FMT: ok
> VIDIOC_S_FMT: failed: Invalid argument
>
> The logs for such case are:
>
> [ 4799.594724] atomisp-isp2 0000:00:03.0: can't create streams
> [ 4799.594757] atomisp-isp2 0000:00:03.0: __get_frame_info 1616x1216 (padded to 0) returned -22
> [ 4799.594781] atomisp-isp2 0000:00:03.0: Can't set format on ISP. Error -22
>
> Video devices
> =============
>
> Currently, 10 video? devices are created:
>
> $ for i in $(ls /dev/video*|sort -k2 -to -n); do echo -n $i:; v4l2-ctl -D -d $i|grep Name; done
> /dev/video0: Name : ATOMISP ISP CAPTURE output
> /dev/video1: Name : ATOMISP ISP VIEWFINDER output
> /dev/video2: Name : ATOMISP ISP PREVIEW output
> /dev/video3: Name : ATOMISP ISP VIDEO output
> /dev/video4: Name : ATOMISP ISP ACC
> /dev/video5: Name : ATOMISP ISP MEMORY input
> /dev/video6: Name : ATOMISP ISP CAPTURE output
> /dev/video7: Name : ATOMISP ISP VIEWFINDER output
> /dev/video8: Name : ATOMISP ISP PREVIEW output
> /dev/video9: Name : ATOMISP ISP VIDEO output
> /dev/video10: Name : ATOMISP ISP ACC
>
> That seems to be written to satisfy some Android-based app, but we don't
> really need all of those.
>
> I'm thinking to comment out the part of the code which creates all of those,
> keeping just "ATOMISP ISP PREVIEW output", as I don't think we need all
> of those.
Why is that ? Being able to capture multiple streams in different
resolutions is important for lots of applications, the viewfinder
resolution is often different than the video streaming and/or still
capture resolution. Scaling after capture is often expensive (and there
are memory bandwidth and power constraints to take into account too). A
single-stream device may be better than nothing, but it's time to move
to the 21st century.
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: atomisp current issues
From: Mauro Carvalho Chehab @ 2021-11-04 10:50 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Linux Media Mailing List, Tsuchiya Yuto, Hans de Goede,
Patrik Gfeller, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, Hans Verkuil, Kaixu Xia, Yang Li,
Tomi Valkeinen, Alex Dewar, Aline Santana Cordeiro, Arnd Bergmann,
Alan, Peter Zijlstra, Ingo Molnar, linux-staging,
Linux Kernel Mailing List, Andy Shevchenko
In-Reply-To: <YYOts0aoD/Quo5r6@pendragon.ideasonboard.com>
Em Thu, 4 Nov 2021 11:53:55 +0200
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:
> Hi Mauro,
>
> On Wed, Nov 03, 2021 at 01:54:18PM +0000, Mauro Carvalho Chehab wrote:
> > Hi,
> >
> > From what I've seen so far, those are the main issues with regards to V4L2 API,
> > in order to allow a generic V4L2 application to work with it.
> >
> > MMAP support
> > ============
> >
> > Despite having some MMAP code on it, the current implementation is broken.
> > Fixing it is not trivial, as it would require fixing the HMM support on it,
> > which does several tricks.
> >
> > The best would be to replace it by something simpler. If this is similar
> > enough to IPU3, perhaps one idea would be to replace the HMM code on it by
> > videodev2 + IPU3 HMM code.
> >
> > As this is not trivial, I'm postponing such task. If someone has enough
> > time, it would be great to have this fixed.
> >
> > From my side, I opted to add support for USERPTR on camorama:
> >
> > https://github.com/alessio/camorama
>
> We should *really* phase out USERPTR support.
I'm not a big fan of userptr, buy why do we phase it out?
> Worst case you may support
> DMABUF only if MMAP is problematic, but I don't really see why it could
> be easy to map an imported buffer and difficult to map a buffer
> allocated by the driver. videobuf2 should be used.
Yeah, atomisp should be migrated to VB2, and such migration is listed at
its TODO file. However, this is a complex task, as its memory management
code is very complex. Maybe we could try to use the ISP3 code on it,
replacing the current HMM logic, but not sure if the implementation there
would be compatible.
In any case, the current priority is to make the driver to work, fixing
the V4L2 API implementation, which has several issues.
...
> > Video devices
> > =============
> >
> > Currently, 10 video? devices are created:
> >
> > $ for i in $(ls /dev/video*|sort -k2 -to -n); do echo -n $i:; v4l2-ctl -D -d $i|grep Name; done
> > /dev/video0: Name : ATOMISP ISP CAPTURE output
> > /dev/video1: Name : ATOMISP ISP VIEWFINDER output
> > /dev/video2: Name : ATOMISP ISP PREVIEW output
> > /dev/video3: Name : ATOMISP ISP VIDEO output
> > /dev/video4: Name : ATOMISP ISP ACC
> > /dev/video5: Name : ATOMISP ISP MEMORY input
> > /dev/video6: Name : ATOMISP ISP CAPTURE output
> > /dev/video7: Name : ATOMISP ISP VIEWFINDER output
> > /dev/video8: Name : ATOMISP ISP PREVIEW output
> > /dev/video9: Name : ATOMISP ISP VIDEO output
> > /dev/video10: Name : ATOMISP ISP ACC
> >
> > That seems to be written to satisfy some Android-based app, but we don't
> > really need all of those.
> >
> > I'm thinking to comment out the part of the code which creates all of those,
> > keeping just "ATOMISP ISP PREVIEW output", as I don't think we need all
> > of those.
>
> Why is that ? Being able to capture multiple streams in different
> resolutions is important for lots of applications, the viewfinder
> resolution is often different than the video streaming and/or still
> capture resolution. Scaling after capture is often expensive (and there
> are memory bandwidth and power constraints to take into account too). A
> single-stream device may be better than nothing, but it's time to move
> to the 21st century.
True, but having multiple videonodes at this moment is not helping,
specially since only one of such modes (PREVIEW) is actually working at
the moment.
So, this is more a strategy to help focusing on making this work
properly, and not a statement that those modules would be dropped.
I'd say that the "final" version of atomisp - once it gets
fixed, cleaned up and started being MC-controlled - should support
all such features, and have the pipelines setup via libcamera.
Regards,
Mauro
^ permalink raw reply
* [PATCH v4 2/5] media: imx: Store the type of hardware implementation
From: Dorota Czaplejewicz @ 2021-11-04 11:43 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211104113631.206899-1-dorota.czaplejewicz@puri.sm>
[-- Attachment #1: Type: text/plain, Size: 4623 bytes --]
The driver covers i.MX5/6, as well as i.MX7/8 hardware.
Those implementations differ, e.g. in the sizes of buffers they accept.
Some functionality should be abstracted, and storing type achieves that.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++-
drivers/staging/media/imx/imx-media-capture.c | 5 ++++-
drivers/staging/media/imx/imx-media-csi.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 8 +++++++-
drivers/staging/media/imx/imx7-media-csi.c | 3 ++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
index d990553de87b..e06f5fbe5174 100644
--- a/drivers/staging/media/imx/imx-ic-prpencvf.c
+++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
@@ -1265,7 +1265,8 @@ static int prp_registered(struct v4l2_subdev *sd)
priv->vdev = imx_media_capture_device_init(ic_priv->ipu_dev,
&ic_priv->sd,
- PRPENCVF_SRC_PAD, true);
+ PRPENCVF_SRC_PAD, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev))
return PTR_ERR(priv->vdev);
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index 93ba09236010..65dc95a48ecc 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -34,6 +34,7 @@ struct capture_priv {
struct imx_media_video_dev vdev; /* Video device */
struct media_pad vdev_pad; /* Video device pad */
+ enum imx_media_device_type type; /* Type of hardware implementation */
struct v4l2_subdev *src_sd; /* Source subdev */
int src_sd_pad; /* Source subdev pad */
@@ -957,7 +958,8 @@ EXPORT_SYMBOL_GPL(imx_media_capture_device_unregister);
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api)
+ int pad, bool legacy_api,
+ enum imx_media_device_type type)
{
struct capture_priv *priv;
struct video_device *vfd;
@@ -972,6 +974,7 @@ imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
priv->src_sd_pad = pad;
priv->dev = dev;
priv->legacy_api = legacy_api;
+ priv->type = type;
mutex_init(&priv->mutex);
INIT_LIST_HEAD(&priv->ready_q);
diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index 6a94fff49bf6..b6758c3787c7 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -1794,7 +1794,8 @@ static int csi_registered(struct v4l2_subdev *sd)
}
priv->vdev = imx_media_capture_device_init(priv->sd.dev, &priv->sd,
- CSI_SRC_PAD_IDMAC, true);
+ CSI_SRC_PAD_IDMAC, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev)) {
ret = PTR_ERR(priv->vdev);
goto free_fim;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index d2a150aac6cd..08e0c94e2de1 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -96,6 +96,11 @@ enum imx_pixfmt_sel {
PIXFMT_SEL_ANY = PIXFMT_SEL_YUV | PIXFMT_SEL_RGB | PIXFMT_SEL_BAYER,
};
+enum imx_media_device_type {
+ DEVICE_TYPE_IMX56,
+ DEVICE_TYPE_IMX78,
+};
+
struct imx_media_buffer {
struct vb2_v4l2_buffer vbuf; /* v4l buffer must be first */
struct list_head list;
@@ -282,7 +287,8 @@ int imx_media_ic_unregister(struct v4l2_subdev *sd);
/* imx-media-capture.c */
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api);
+ int pad, bool legacy_api,
+ enum imx_media_device_type type);
void imx_media_capture_device_remove(struct imx_media_video_dev *vdev);
int imx_media_capture_device_register(struct imx_media_video_dev *vdev,
u32 link_flags);
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
index d7dc0d8edf50..1a11f07620e9 100644
--- a/drivers/staging/media/imx/imx7-media-csi.c
+++ b/drivers/staging/media/imx/imx7-media-csi.c
@@ -1012,7 +1012,8 @@ static int imx7_csi_registered(struct v4l2_subdev *sd)
}
csi->vdev = imx_media_capture_device_init(csi->sd.dev, &csi->sd,
- IMX7_CSI_PAD_SRC, false);
+ IMX7_CSI_PAD_SRC, false,
+ DEVICE_TYPE_IMX78);
if (IS_ERR(csi->vdev))
return PTR_ERR(csi->vdev);
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related
* [PATCH v4 4/5] media: imx: Use dedicated format handler for i.MX7/8
From: Dorota Czaplejewicz @ 2021-11-04 11:43 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211104113631.206899-1-dorota.czaplejewicz@puri.sm>
[-- Attachment #1: Type: text/plain, Size: 3003 bytes --]
This splits out a format handler which takes into account
the capabilities of the i.MX7/8 video device,
as opposed to the default handler compatible with both i.MX5/6 and i.MX7/8.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-media-utils.c | 58 +++++++++++++++++++--
1 file changed, 54 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index 8b5c6bcfd4fa..c0a84c79947e 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -516,10 +516,9 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
}
EXPORT_SYMBOL_GPL(imx_media_try_colorimetry);
-int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
- const struct v4l2_mbus_framefmt *mbus,
- const struct imx_media_pixfmt *cc,
- enum imx_media_device_type type)
+static int imx56_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
+ const struct v4l2_mbus_framefmt *mbus,
+ const struct imx_media_pixfmt *cc)
{
u32 width;
u32 stride;
@@ -568,6 +567,57 @@ int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
return 0;
}
+
+static int imx78_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
+ const struct v4l2_mbus_framefmt *mbus,
+ const struct imx_media_pixfmt *cc)
+{
+ int ret;
+
+ if (!cc)
+ cc = imx_media_find_mbus_format(mbus->code, PIXFMT_SEL_ANY);
+
+ if (!cc)
+ return -EINVAL;
+ /*
+ * The hardware can handle line lengths divisible by 4 pixels
+ * as long as the whole buffer size ends up divisible by 8 bytes.
+ * If not, use the value of 8 pixels recommended in the datasheet.
+ */
+ ret = v4l2_fill_pixfmt(pix, cc->fourcc,
+ round_up(mbus->width, 4), mbus->height);
+ if (ret)
+ return ret;
+
+ /* Only 8bits-per-pixel formats may need to get aligned to 8 pixels,
+ * because both 10-bit and 16-bit pixels occupy 2 bytes.
+ * In those, 4-pixel aligmnent is equal to 8-byte alignment.
+ */
+ if (pix->sizeimage % 8 != 0)
+ ret = v4l2_fill_pixfmt(pix, cc->fourcc,
+ round_up(mbus->width, 8), mbus->height);
+
+ pix->colorspace = mbus->colorspace;
+ pix->xfer_func = mbus->xfer_func;
+ pix->ycbcr_enc = mbus->ycbcr_enc;
+ pix->quantization = mbus->quantization;
+ pix->field = mbus->field;
+
+ return ret;
+}
+
+int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
+ const struct v4l2_mbus_framefmt *mbus,
+ const struct imx_media_pixfmt *cc,
+ enum imx_media_device_type type) {
+ switch (type) {
+ case DEVICE_TYPE_IMX56:
+ return imx56_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
+ case DEVICE_TYPE_IMX78:
+ return imx78_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
+ }
+ return -EINVAL;
+}
EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
void imx_media_free_dma_buf(struct device *dev,
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related
* [PATCH v4 3/5] media: imx: Forward type of hardware implementation
From: Dorota Czaplejewicz @ 2021-11-04 11:43 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211104113631.206899-1-dorota.czaplejewicz@puri.sm>
[-- Attachment #1: Type: text/plain, Size: 3904 bytes --]
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-media-capture.c | 15 +++++++++------
drivers/staging/media/imx/imx-media-utils.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 3 ++-
3 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index 65dc95a48ecc..7a6384b3e5e6 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -139,7 +139,8 @@ static int capture_g_fmt_vid_cap(struct file *file, void *fh,
}
static const struct imx_media_pixfmt *
-__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
+__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose,
+ enum imx_media_device_type type)
{
struct v4l2_mbus_framefmt fmt_src;
const struct imx_media_pixfmt *cc;
@@ -171,7 +172,7 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
}
v4l2_fill_mbus_format(&fmt_src, pixfmt, 0);
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc, type);
if (compose) {
compose->width = fmt_src.width;
@@ -184,7 +185,9 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
static int capture_try_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
- __capture_try_fmt(&f->fmt.pix, NULL);
+ struct capture_priv *priv = video_drvdata(file);
+
+ __capture_try_fmt(&f->fmt.pix, NULL, priv->type);
return 0;
}
@@ -199,7 +202,7 @@ static int capture_s_fmt_vid_cap(struct file *file, void *fh,
return -EBUSY;
}
- cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose);
+ cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose, priv->type);
priv->vdev.cc = cc;
priv->vdev.fmt = f->fmt.pix;
@@ -418,7 +421,7 @@ __capture_legacy_try_fmt(struct capture_priv *priv,
}
}
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc, priv->type);
return cc;
}
@@ -889,7 +892,7 @@ static int capture_init_format(struct capture_priv *priv)
fmt_src.format.height = IMX_MEDIA_DEF_PIX_HEIGHT;
}
- imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL);
+ imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL, priv->type);
vdev->compose.width = fmt_src.format.width;
vdev->compose.height = fmt_src.format.height;
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index afa96e05ea7f..8b5c6bcfd4fa 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -518,7 +518,8 @@ EXPORT_SYMBOL_GPL(imx_media_try_colorimetry);
int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
const struct v4l2_mbus_framefmt *mbus,
- const struct imx_media_pixfmt *cc)
+ const struct imx_media_pixfmt *cc,
+ enum imx_media_device_type type)
{
u32 width;
u32 stride;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index 08e0c94e2de1..79adab775739 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -203,7 +203,8 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
bool ic_route);
int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
const struct v4l2_mbus_framefmt *mbus,
- const struct imx_media_pixfmt *cc);
+ const struct imx_media_pixfmt *cc,
+ enum imx_media_device_type type);
void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
u32 grp_id, int ipu_id);
struct v4l2_subdev *
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related
* [PATCH v4 5/5] media: imx: Fail conversion if pixel format not supported
From: Dorota Czaplejewicz @ 2021-11-04 11:43 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211104113631.206899-1-dorota.czaplejewicz@puri.sm>
[-- Attachment #1: Type: text/plain, Size: 820 bytes --]
imx_media_find_mbus_format has NULL as a valid return value,
therefore the caller should take it into account.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-media-utils.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index c0a84c79947e..8646f6ba1108 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -544,6 +544,9 @@ static int imx56_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
}
+ if (!cc)
+ return -EINVAL;
+
/* Round up width for minimum burst size */
width = round_up(mbus->width, 8);
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
From: Dorota Czaplejewicz @ 2021-11-04 11:45 UTC (permalink / raw)
To: Dan Carpenter
Cc: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211103104100.GM2794@kadam>
[-- Attachment #1: Type: text/plain, Size: 2511 bytes --]
Hi,
On Wed, 3 Nov 2021 13:41:00 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:
> On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> > +static int imx78_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > + const struct v4l2_mbus_framefmt *mbus,
> > + const struct imx_media_pixfmt *cc)
> > +{
> > + u32 width;
> > + u32 stride;
> > + u8 divisor;
> > +
> > + if (!cc) {
> > + cc = imx_media_find_ipu_format(mbus->code,
> > + PIXFMT_SEL_YUV_RGB);
> > + if (!cc)
> > + cc = imx_media_find_mbus_format(mbus->code,
> > + PIXFMT_SEL_ANY);
> > + if (!cc)
> > + return -EINVAL;
> > + }
> > +
> > + /*
> > + * TODO: the IPU currently does not support the AYUV32 format,
> > + * so until it does convert to a supported YUV format.
> > + */
> > + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> > + u32 code;
> > +
> > + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> > + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
>
> Do we need a if (!cc) NULL check after this assignment?
In v3 of this series, this statement is only present in the IMX56 code path, which is unmodified compared to the original.
However, there's a missing check in the IMX78. I'm not sure if those can fail in practice, but for the sake of correctness, I rolled out an updated v4 series, where both checks are present. Message-id: 20211104113631.206899-1-dorota.czaplejewicz@puri.sm
Cheers,
Dorota
>
> > + }
> > +
> > + /*
> > + * The hardware can handle line lengths divisible by 4 bytes,
> > + * as long as the number of lines is even.
> > + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> > + */
> > + divisor = 4 << (mbus->height % 2);
> > +
> > + width = round_up(mbus->width, divisor);
> > +
> > + if (cc->planar)
> > + stride = round_up(width, 16);
> > + else
> > + stride = round_up((width * cc->bpp) >> 3, divisor);
> > +
> > + pix->width = width;
> > + pix->height = mbus->height;
> > + pix->pixelformat = cc->fourcc;
> > + pix->colorspace = mbus->colorspace;
> > + pix->xfer_func = mbus->xfer_func;
> > + pix->ycbcr_enc = mbus->ycbcr_enc;
> > + pix->quantization = mbus->quantization;
> > + pix->field = mbus->field;
> > + pix->bytesperline = stride;
> > + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> > + stride * pix->height;
> > +
> > + return 0;
> > +}
>
> regards,
> dan carpenter
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* [PATCH v4 1/5] media: imx: Remove unused functions
From: Dorota Czaplejewicz @ 2021-11-04 11:41 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1: Type: text/plain, Size: 2952 bytes --]
Neither imx_media_mbus_fmt_to_ipu_image nor imx_media_ipu_image_to_mbus_fmt
were used anywhere.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
Hi,
Compared to v3, this patch series introduces the checks of imx_media_find_mbus_format return values in patch 4 and 5.
Cheers,
Dorota
drivers/staging/media/imx/imx-media-utils.c | 42 ---------------------
drivers/staging/media/imx/imx-media.h | 4 --
2 files changed, 46 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index 5128915a5d6f..afa96e05ea7f 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -569,48 +569,6 @@ int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
}
EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
-int imx_media_mbus_fmt_to_ipu_image(struct ipu_image *image,
- const struct v4l2_mbus_framefmt *mbus)
-{
- int ret;
-
- memset(image, 0, sizeof(*image));
-
- ret = imx_media_mbus_fmt_to_pix_fmt(&image->pix, mbus, NULL);
- if (ret)
- return ret;
-
- image->rect.width = mbus->width;
- image->rect.height = mbus->height;
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_ipu_image);
-
-int imx_media_ipu_image_to_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
- const struct ipu_image *image)
-{
- const struct imx_media_pixfmt *fmt;
-
- fmt = imx_media_find_pixel_format(image->pix.pixelformat,
- PIXFMT_SEL_ANY);
- if (!fmt || !fmt->codes || !fmt->codes[0])
- return -EINVAL;
-
- memset(mbus, 0, sizeof(*mbus));
- mbus->width = image->pix.width;
- mbus->height = image->pix.height;
- mbus->code = fmt->codes[0];
- mbus->field = image->pix.field;
- mbus->colorspace = image->pix.colorspace;
- mbus->xfer_func = image->pix.xfer_func;
- mbus->ycbcr_enc = image->pix.ycbcr_enc;
- mbus->quantization = image->pix.quantization;
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(imx_media_ipu_image_to_mbus_fmt);
-
void imx_media_free_dma_buf(struct device *dev,
struct imx_media_dma_buf *buf)
{
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index 492d9a64e704..d2a150aac6cd 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -199,10 +199,6 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
const struct v4l2_mbus_framefmt *mbus,
const struct imx_media_pixfmt *cc);
-int imx_media_mbus_fmt_to_ipu_image(struct ipu_image *image,
- const struct v4l2_mbus_framefmt *mbus);
-int imx_media_ipu_image_to_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
- const struct ipu_image *image);
void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
u32 grp_id, int ipu_id);
struct v4l2_subdev *
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related
* [PATCH 0/7] Address issues preventing camorama to work with atomisp
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Sakari Ailus,
linux-kernel, linux-media, linux-staging
This patch series address some issues at atomisp that are preventing camorama
to work with atomisp driver.
After this series, I can use camorama just like on any other device. The frame
rate is slow (~7fps), though. Not sure if this is due to some sensor limitation or
because of some other issue.
Anyway this is a start :-)
Some notes:
1. Patch 1 fixes an issue at ov2680 logic. It probably needs to be reflected at the
other supported sensors;
2. MMAP is not working. So, it requires a newer version of camorama that has
support for USERPTR.
3. There's nothing special on Camorama for atomisp, except that it has support
for USERPTR.
4. Camorama currently doesn't allow changing the resolution of the camera.
That's because of several things:
a. The driver has a scaler, supporting resolutions from 32x16 to 1600x1200
on Asus T101HA.
b. The atomisp driver doesn't implement ENUM_FRAMEINTERVALS;
c. camorama is not prepared for cameras with scalers on it. It just lets one to
select the resolutions enumerated by ENUM_FRAMEINTERVALS.
Mauro Carvalho Chehab (7):
media: atomisp-ov2680: use v4l2_find_nearest_size()
media: atomisp: move a debug printf to a better place
media: atomisp: fix VIDIOC_S_FMT logic
media: atomisp: fix enum_fmt logic
media: atomisp: move atomisp_g_fmt_cap()
media: atomisp: fix try_fmt logic
media: atomisp: fix g_fmt logic
.../media/atomisp/i2c/atomisp-ov2680.c | 127 +++-----------
drivers/staging/media/atomisp/i2c/ov2680.h | 3 +-
.../staging/media/atomisp/pci/atomisp_cmd.c | 59 +++++--
.../staging/media/atomisp/pci/atomisp_ioctl.c | 157 ++++++++++--------
4 files changed, 162 insertions(+), 184 deletions(-)
--
2.31.1
^ permalink raw reply
* [PATCH 3/7] media: atomisp: fix VIDIOC_S_FMT logic
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Alex Dewar,
Aline Santana Cordeiro, Arnd Bergmann, Greg Kroah-Hartman,
Hans Verkuil, Mauro Carvalho Chehab, Sakari Ailus, Tomi Valkeinen,
Tsuchiya Yuto, Yang Li, linux-kernel, linux-media, linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
There are several issues on S_FMT implementation:
- it doesn't properly handle pad_h/pad_w;
- it reports a wrong visible size to userspace;
- it allows setting the format to a raw mode, which
currently causes the pipeline to break.
Address such issues, for it to start working with generic
apps.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
.../staging/media/atomisp/pci/atomisp_cmd.c | 46 ++++++++++++++++++-
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index 76c9e89afb48..851046ecbdbf 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -5635,13 +5635,17 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
const struct atomisp_format_bridge *format_bridge;
const struct atomisp_format_bridge *snr_format_bridge;
struct ia_css_frame_info output_info, raw_output_info;
- struct v4l2_pix_format snr_fmt = f->fmt.pix;
- struct v4l2_pix_format backup_fmt = snr_fmt, s_fmt;
+ struct v4l2_pix_format snr_fmt;
+ struct v4l2_pix_format backup_fmt, s_fmt;
unsigned int dvs_env_w = 0, dvs_env_h = 0;
unsigned int padding_w = pad_w, padding_h = pad_h;
bool res_overflow = false, crop_needs_override = false;
struct v4l2_mbus_framefmt *isp_sink_fmt;
struct v4l2_mbus_framefmt isp_source_fmt = {0};
+ struct v4l2_subdev_format vformat = {
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+ struct v4l2_mbus_framefmt *ffmt = &vformat.format;
struct v4l2_rect isp_sink_crop;
u16 source_pad = atomisp_subdev_source_pad(vdev);
struct v4l2_subdev_fh fh;
@@ -5672,9 +5676,38 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
if (!format_bridge)
return -EINVAL;
+ /* Currently, raw formats are broken!!! */
+
+ if (format_bridge->sh_fmt == IA_CSS_FRAME_FORMAT_RAW) {
+ f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
+
+ format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
+ if (!format_bridge)
+ return -EINVAL;
+ }
pipe->sh_fmt = format_bridge->sh_fmt;
pipe->pix.pixelformat = f->fmt.pix.pixelformat;
+ /* Ensure that the resolution is equal or below the maximum supported */
+
+ vformat.which = V4L2_SUBDEV_FORMAT_ACTIVE;
+ v4l2_fill_mbus_format(ffmt, &f->fmt.pix, format_bridge->mbus_code);
+ ffmt->height += padding_h;
+ ffmt->width += padding_w;
+
+ ret = v4l2_subdev_call(isp->inputs[asd->input_curr].camera, pad,
+ set_fmt, NULL, &vformat);
+ if (ret)
+ return ret;
+
+ f->fmt.pix.width = ffmt->width - padding_w;
+ f->fmt.pix.height = ffmt->height - padding_h;
+
+ snr_fmt = f->fmt.pix;
+ backup_fmt = snr_fmt;
+
+ /**********************************************************************/
+
if (source_pad == ATOMISP_SUBDEV_PAD_SOURCE_VF ||
(source_pad == ATOMISP_SUBDEV_PAD_SOURCE_PREVIEW
&& asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO)) {
@@ -6080,6 +6113,15 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
else
isp->need_gfx_throttle = true;
+ /* Report the needed sizes */
+ f->fmt.pix.sizeimage = pipe->pix.sizeimage;
+ f->fmt.pix.bytesperline = pipe->pix.bytesperline;
+
+ dev_dbg(isp->dev, "%s: %dx%d, image size: %d, %d bytes per line\n",
+ __func__,
+ f->fmt.pix.width, f->fmt.pix.height,
+ f->fmt.pix.sizeimage, f->fmt.pix.bytesperline);
+
return 0;
}
--
2.31.1
^ permalink raw reply related
* [PATCH 4/7] media: atomisp: fix enum_fmt logic
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Andy Shevchenko,
Dan Carpenter, Greg Kroah-Hartman, Kaixu Xia,
Mauro Carvalho Chehab, Peter Zijlstra, Sakari Ailus,
Thomas Gleixner, Tsuchiya Yuto, linux-kernel, linux-media,
linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
Currently, the enum lists the sensor's native format as a
supported format. However, trying to setup a pipeline using
it doesn't work.
So, exclude such formats from the enum.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
drivers/staging/media/atomisp/pci/atomisp_ioctl.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
index 8df052f6190d..30483a84ed80 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
@@ -775,6 +775,7 @@ static int atomisp_enum_fmt_cap(struct file *file, void *fh,
struct v4l2_subdev_mbus_code_enum code = {
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
};
+ const struct atomisp_format_bridge *format;
struct v4l2_subdev *camera;
unsigned int i, fi = 0;
int rval;
@@ -806,15 +807,15 @@ static int atomisp_enum_fmt_cap(struct file *file, void *fh,
return rval;
for (i = 0; i < ARRAY_SIZE(atomisp_output_fmts); i++) {
- const struct atomisp_format_bridge *format =
- &atomisp_output_fmts[i];
+ format = &atomisp_output_fmts[i];
/*
* Is the atomisp-supported format is valid for the
* sensor (configuration)? If not, skip it.
+ *
+ * FIXME: fix the pipeline to allow sensor format too.
*/
- if (format->sh_fmt == IA_CSS_FRAME_FORMAT_RAW
- && format->mbus_code != code.code)
+ if (format->sh_fmt == IA_CSS_FRAME_FORMAT_RAW)
continue;
/* Found a match. Now let's pick f->index'th one. */
--
2.31.1
^ permalink raw reply related
* [PATCH 5/7] media: atomisp: move atomisp_g_fmt_cap()
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Arnd Bergmann,
Dan Carpenter, Greg Kroah-Hartman, Ingo Molnar,
Mauro Carvalho Chehab, Peter Zijlstra, Sakari Ailus,
Tsuchiya Yuto, linux-kernel, linux-media, linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
move atomisp_g_fmt_cap() for it to be after try_fmt, as we'll
re-use try_fmt there.
No functional changes.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
.../staging/media/atomisp/pci/atomisp_ioctl.c | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
index 30483a84ed80..84ff97dabbed 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
@@ -833,6 +833,34 @@ static int atomisp_enum_fmt_cap(struct file *file, void *fh,
return -EINVAL;
}
+static int atomisp_g_fmt_file(struct file *file, void *fh,
+ struct v4l2_format *f)
+{
+ struct video_device *vdev = video_devdata(file);
+ struct atomisp_device *isp = video_get_drvdata(vdev);
+ struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
+
+ rt_mutex_lock(&isp->mutex);
+ f->fmt.pix = pipe->pix;
+ rt_mutex_unlock(&isp->mutex);
+
+ return 0;
+}
+
+/* This function looks up the closest available resolution. */
+static int atomisp_try_fmt_cap(struct file *file, void *fh,
+ struct v4l2_format *f)
+{
+ struct video_device *vdev = video_devdata(file);
+ struct atomisp_device *isp = video_get_drvdata(vdev);
+ int ret;
+
+ rt_mutex_lock(&isp->mutex);
+ ret = atomisp_try_fmt(vdev, &f->fmt.pix, NULL);
+ rt_mutex_unlock(&isp->mutex);
+ return ret;
+}
+
static int atomisp_g_fmt_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
@@ -907,34 +935,6 @@ static int atomisp_g_fmt_cap(struct file *file, void *fh,
return 0;
}
-static int atomisp_g_fmt_file(struct file *file, void *fh,
- struct v4l2_format *f)
-{
- struct video_device *vdev = video_devdata(file);
- struct atomisp_device *isp = video_get_drvdata(vdev);
- struct atomisp_video_pipe *pipe = atomisp_to_video_pipe(vdev);
-
- rt_mutex_lock(&isp->mutex);
- f->fmt.pix = pipe->pix;
- rt_mutex_unlock(&isp->mutex);
-
- return 0;
-}
-
-/* This function looks up the closest available resolution. */
-static int atomisp_try_fmt_cap(struct file *file, void *fh,
- struct v4l2_format *f)
-{
- struct video_device *vdev = video_devdata(file);
- struct atomisp_device *isp = video_get_drvdata(vdev);
- int ret;
-
- rt_mutex_lock(&isp->mutex);
- ret = atomisp_try_fmt(vdev, &f->fmt.pix, NULL);
- rt_mutex_unlock(&isp->mutex);
- return ret;
-}
-
static int atomisp_s_fmt_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
--
2.31.1
^ permalink raw reply related
* [PATCH 7/7] media: atomisp: fix g_fmt logic
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Arnd Bergmann,
Dan Carpenter, Greg Kroah-Hartman, Kaixu Xia,
Mauro Carvalho Chehab, Peter Zijlstra, Sakari Ailus,
Tsuchiya Yuto, linux-kernel, linux-media, linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
The g_fmt logic is currently broken, as it is not returning
the same imagesize as previoulsy calculated by s_fmt.
Fix it by just re-using whatever it was defined at s_fmt,
if this was called before.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
.../staging/media/atomisp/pci/atomisp_ioctl.c | 64 ++-----------------
1 file changed, 7 insertions(+), 57 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
index 1e6da6116a06..2fb64d5cbead 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
@@ -934,75 +934,25 @@ static int atomisp_try_fmt_cap(struct file *file, void *fh,
static int atomisp_g_fmt_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
- struct v4l2_subdev_format fmt = {
- .which = V4L2_SUBDEV_FORMAT_ACTIVE
- };
struct video_device *vdev = video_devdata(file);
struct atomisp_device *isp = video_get_drvdata(vdev);
- struct v4l2_fmtdesc fmtdesc = { 0 };
struct atomisp_video_pipe *pipe;
- struct atomisp_sub_device *asd;
- struct v4l2_subdev *camera;
- u32 depth;
- int ret;
rt_mutex_lock(&isp->mutex);
pipe = atomisp_to_video_pipe(vdev);
rt_mutex_unlock(&isp->mutex);
f->fmt.pix = pipe->pix;
- if (!f->fmt.pix.width) {
- asd = atomisp_to_video_pipe(vdev)->asd;
- if (!asd)
- return -EINVAL;
- camera = isp->inputs[asd->input_curr].camera;
- if(!camera)
- return -EINVAL;
+ /* If s_fmt was issued, just return whatever is was previouly set */
+ if (f->fmt.pix.sizeimage)
+ return 0;
- ret = atomisp_enum_fmt_cap(file, fh, &fmtdesc);
- if (ret)
- return ret;
+ f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
+ f->fmt.pix.width = 10000;
+ f->fmt.pix.height = 10000;
- rt_mutex_lock(&isp->mutex);
- ret = v4l2_subdev_call(isp->inputs[asd->input_curr].camera,
- pad, get_fmt, NULL, &fmt);
- rt_mutex_unlock(&isp->mutex);
- if (ret)
- return ret;
-
- v4l2_fill_pix_format(&f->fmt.pix, &fmt.format);
-
- f->fmt.pix.pixelformat = fmtdesc.pixelformat;
-
- /*
- * HACK: The atomisp does something different here, as it
- * seems to set the sensor to a slightly higher resolution than
- * the visible ones. That seems to be needed by atomisp's ISP
- * in order to properly handle the frames. So, s_fmt adds 16
- * extra columns/lines. See atomisp_subdev_set_selection().
- *
- * Yet, the V4L2 userspace API doesn't expect those, so it
- * needs to be decremented when reporting the visible
- * resolution to userspace.
- */
- f->fmt.pix.width -= pad_w;
- f->fmt.pix.height -= pad_h;
- }
-
- depth = atomisp_get_pixel_depth(f->fmt.pix.pixelformat);
- f->fmt.pix.bytesperline = DIV_ROUND_UP(f->fmt.pix.width * depth, 8);
- f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height * f->fmt.pix.bytesperline);
-
- /*
- * FIXME: do we need to setup this differently, depending on the
- * sensor or the pipeline?
- */
- f->fmt.pix.colorspace = V4L2_COLORSPACE_REC709;
- f->fmt.pix.ycbcr_enc = V4L2_YCBCR_ENC_709;
- f->fmt.pix.xfer_func = V4L2_XFER_FUNC_709;
-
- return 0;
+ return atomisp_try_fmt_cap(file, fh, f);
}
static int atomisp_s_fmt_cap(struct file *file, void *fh,
--
2.31.1
^ permalink raw reply related
* [PATCH 2/7] media: atomisp: move a debug printf to a better place
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Alex Dewar,
Aline Santana Cordeiro, Arnd Bergmann, Greg Kroah-Hartman,
Hans Verkuil, Laurent Pinchart, Mauro Carvalho Chehab,
Sakari Ailus, Tomi Valkeinen, Tsuchiya Yuto, Yang Li,
linux-kernel, linux-media, linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
The sensor width/height report is alread being printed after
its calculus. The only reason for an extra debug printk is
when dis is used. So, change its message to reflect and move
it to be inside the if checks.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
drivers/staging/media/atomisp/pci/atomisp_cmd.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index feb75491a273..76c9e89afb48 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -5583,6 +5583,10 @@ static int atomisp_set_fmt_to_snr(struct video_device *vdev,
pad, set_fmt, &pad_state, &vformat);
if (ret)
return ret;
+
+ dev_dbg(isp->dev, "video dis: sensor width: %d, height: %d\n",
+ ffmt->width, ffmt->height);
+
if (ffmt->width < req_ffmt->width ||
ffmt->height < req_ffmt->height) {
req_ffmt->height -= dvs_env_h;
@@ -5593,8 +5597,6 @@ static int atomisp_set_fmt_to_snr(struct video_device *vdev,
asd->params.video_dis_en = false;
}
}
- dev_dbg(isp->dev, "sensor width: %d, height: %d\n",
- ffmt->width, ffmt->height);
vformat.which = V4L2_SUBDEV_FORMAT_ACTIVE;
ret = v4l2_subdev_call(isp->inputs[asd->input_curr].camera, pad,
set_fmt, NULL, &vformat);
--
2.31.1
^ permalink raw reply related
* [PATCH 1/7] media: atomisp-ov2680: use v4l2_find_nearest_size()
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Bhaskar Chowdhury,
Deepak R Varma, Greg Kroah-Hartman, Hans Verkuil,
Laurent Pinchart, Mauro Carvalho Chehab, Randy Dunlap,
Sakari Ailus, Tomi Valkeinen, linux-kernel, linux-media,
linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
Instead of reinventing the wheel, use v4l2_find_nearest_size()
in order to get the closest resolution.
This should address a bug where the wrong resolution was
selected.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
.../media/atomisp/i2c/atomisp-ov2680.c | 127 ++++--------------
drivers/staging/media/atomisp/i2c/ov2680.h | 3 +-
2 files changed, 25 insertions(+), 105 deletions(-)
diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
index 2111e4a478c1..160efa432934 100644
--- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
+++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
@@ -147,7 +147,7 @@ static int ov2680_g_bin_factor_x(struct v4l2_subdev *sd, s32 *val)
struct i2c_client *client = v4l2_get_subdevdata(sd);
dev_dbg(&client->dev, "++++ov2680_g_bin_factor_x\n");
- *val = ov2680_res[dev->fmt_idx].bin_factor_x;
+ *val = dev->res->bin_factor_x;
return 0;
}
@@ -157,7 +157,7 @@ static int ov2680_g_bin_factor_y(struct v4l2_subdev *sd, s32 *val)
struct ov2680_device *dev = to_ov2680_sensor(sd);
struct i2c_client *client = v4l2_get_subdevdata(sd);
- *val = ov2680_res[dev->fmt_idx].bin_factor_y;
+ *val = dev->res->bin_factor_y;
dev_dbg(&client->dev, "++++ov2680_g_bin_factor_y\n");
return 0;
}
@@ -254,7 +254,7 @@ static long __ov2680_set_exposure(struct v4l2_subdev *sd, int coarse_itg,
"+++++++__ov2680_set_exposure coarse_itg %d, gain %d, digitgain %d++\n",
coarse_itg, gain, digitgain);
- vts = ov2680_res[dev->fmt_idx].lines_per_frame;
+ vts = dev->res->lines_per_frame;
/* group hold */
ret = ov2680_write_reg(client, 1,
@@ -843,76 +843,6 @@ static int ov2680_s_power(struct v4l2_subdev *sd, int on)
return ret;
}
-/*
- * distance - calculate the distance
- * @res: resolution
- * @w: width
- * @h: height
- *
- * Get the gap between resolution and w/h.
- * res->width/height smaller than w/h wouldn't be considered.
- * Returns the value of gap or -1 if fail.
- */
-#define LARGEST_ALLOWED_RATIO_MISMATCH 600
-static int distance(struct ov2680_resolution *res, u32 w, u32 h)
-{
- unsigned int w_ratio = (res->width << 13) / w;
- unsigned int h_ratio;
- int match;
-
- if (h == 0)
- return -1;
- h_ratio = (res->height << 13) / h;
- if (h_ratio == 0)
- return -1;
- match = abs(((w_ratio << 13) / h_ratio) - 8192);
-
- if ((w_ratio < 8192) || (h_ratio < 8192) ||
- (match > LARGEST_ALLOWED_RATIO_MISMATCH))
- return -1;
-
- return w_ratio + h_ratio;
-}
-
-/* Return the nearest higher resolution index */
-static int nearest_resolution_index(int w, int h)
-{
- int i;
- int idx = -1;
- int dist;
- int min_dist = INT_MAX;
- struct ov2680_resolution *tmp_res = NULL;
-
- for (i = 0; i < N_RES; i++) {
- tmp_res = &ov2680_res[i];
- dist = distance(tmp_res, w, h);
- if (dist == -1)
- continue;
- if (dist < min_dist) {
- min_dist = dist;
- idx = i;
- }
- }
-
- return idx;
-}
-
-static int get_resolution_index(int w, int h)
-{
- int i;
-
- for (i = 0; i < N_RES; i++) {
- if (w != ov2680_res[i].width)
- continue;
- if (h != ov2680_res[i].height)
- continue;
-
- return i;
- }
-
- return -1;
-}
-
static int ov2680_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
@@ -921,8 +851,8 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
struct ov2680_device *dev = to_ov2680_sensor(sd);
struct i2c_client *client = v4l2_get_subdevdata(sd);
struct camera_mipi_info *ov2680_info = NULL;
+ static struct ov2680_resolution *res;
int ret = 0;
- int idx = 0;
dev_dbg(&client->dev, "%s: %s: pad: %d, fmt: %p\n",
__func__,
@@ -940,41 +870,34 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
return -EINVAL;
mutex_lock(&dev->input_lock);
- idx = nearest_resolution_index(fmt->width, fmt->height);
- if (idx == -1) {
- /* return the largest resolution */
- fmt->width = ov2680_res[N_RES - 1].width;
- fmt->height = ov2680_res[N_RES - 1].height;
- } else {
- fmt->width = ov2680_res[idx].width;
- fmt->height = ov2680_res[idx].height;
- }
+
+ res = v4l2_find_nearest_size(ov2680_res_preview,
+ ARRAY_SIZE(ov2680_res_preview), width,
+ height, fmt->width, fmt->height);
+ if (!res)
+ res = &ov2680_res[N_RES - 1];
+
+ fmt->width = res->width;
+ fmt->height = res->height;
+
fmt->code = MEDIA_BUS_FMT_SBGGR10_1X10;
if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
sd_state->pads->try_fmt = *fmt;
mutex_unlock(&dev->input_lock);
return 0;
}
- dev->fmt_idx = get_resolution_index(fmt->width, fmt->height);
- dev_dbg(&client->dev, "%s: Resolution index: %d\n",
- __func__, dev->fmt_idx);
- if (dev->fmt_idx == -1) {
- dev_err(&client->dev, "get resolution fail\n");
- mutex_unlock(&dev->input_lock);
- return -EINVAL;
- }
- dev_dbg(&client->dev, "%s: i=%d, w=%d, h=%d\n",
- __func__, dev->fmt_idx, fmt->width, fmt->height);
+
+ dev_dbg(&client->dev, "%s: %dx%d\n",
+ __func__, fmt->width, fmt->height);
// IS IT NEEDED?
power_up(sd);
- ret = ov2680_write_reg_array(client, ov2680_res[dev->fmt_idx].regs);
+ ret = ov2680_write_reg_array(client, dev->res->regs);
if (ret)
dev_err(&client->dev,
"ov2680 write resolution register err: %d\n", ret);
- ret = ov2680_get_intg_factor(client, ov2680_info,
- &ov2680_res[dev->fmt_idx]);
+ ret = ov2680_get_intg_factor(client, ov2680_info, res);
if (ret) {
dev_err(&client->dev, "failed to get integration factor\n");
goto err;
@@ -989,8 +912,6 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
if (v_flag)
ov2680_v_flip(sd, v_flag);
- v4l2_info(client, "\n%s idx %d\n", __func__, dev->fmt_idx);
-
/*
* ret = startup(sd);
* if (ret)
@@ -1014,8 +935,8 @@ static int ov2680_get_fmt(struct v4l2_subdev *sd,
if (!fmt)
return -EINVAL;
- fmt->width = ov2680_res[dev->fmt_idx].width;
- fmt->height = ov2680_res[dev->fmt_idx].height;
+ fmt->width = dev->res->width;
+ fmt->height = dev->res->height;
fmt->code = MEDIA_BUS_FMT_SBGGR10_1X10;
return 0;
@@ -1155,7 +1076,7 @@ static int ov2680_g_frame_interval(struct v4l2_subdev *sd,
struct ov2680_device *dev = to_ov2680_sensor(sd);
interval->interval.numerator = 1;
- interval->interval.denominator = ov2680_res[dev->fmt_idx].fps;
+ interval->interval.denominator = dev->res->fps;
return 0;
}
@@ -1193,7 +1114,7 @@ static int ov2680_g_skip_frames(struct v4l2_subdev *sd, u32 *frames)
struct ov2680_device *dev = to_ov2680_sensor(sd);
mutex_lock(&dev->input_lock);
- *frames = ov2680_res[dev->fmt_idx].skip_frames;
+ *frames = dev->res->skip_frames;
mutex_unlock(&dev->input_lock);
return 0;
@@ -1257,7 +1178,7 @@ static int ov2680_probe(struct i2c_client *client)
mutex_init(&dev->input_lock);
- dev->fmt_idx = 0;
+ dev->res = &ov2680_res_preview[0];
v4l2_i2c_subdev_init(&dev->sd, client, &ov2680_ops);
pdata = gmin_camera_platform_data(&dev->sd,
diff --git a/drivers/staging/media/atomisp/i2c/ov2680.h b/drivers/staging/media/atomisp/i2c/ov2680.h
index 874115f35fca..535440ed14d7 100644
--- a/drivers/staging/media/atomisp/i2c/ov2680.h
+++ b/drivers/staging/media/atomisp/i2c/ov2680.h
@@ -172,11 +172,10 @@ struct ov2680_device {
struct v4l2_mbus_framefmt format;
struct mutex input_lock;
struct v4l2_ctrl_handler ctrl_handler;
+ struct ov2680_resolution *res;
struct camera_sensor_platform_data *platform_data;
int vt_pix_clk_freq_mhz;
- int fmt_idx;
int run_mode;
- u8 res;
u8 type;
};
--
2.31.1
^ permalink raw reply related
* [PATCH 6/7] media: atomisp: fix try_fmt logic
From: Mauro Carvalho Chehab @ 2021-11-04 12:05 UTC (permalink / raw)
Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Alex Dewar,
Aline Santana Cordeiro, Arnd Bergmann, Greg Kroah-Hartman,
Hans Verkuil, Kaixu Xia, Mauro Carvalho Chehab, Peter Zijlstra,
Sakari Ailus, Thomas Gleixner, Tomi Valkeinen, Tsuchiya Yuto,
linux-kernel, linux-media, linux-staging
In-Reply-To: <cover.1636026959.git.mchehab+huawei@kernel.org>
The internal try_fmt logic is not meant to provide everything
that the V4L2 API should provide. Also, it doesn't decrement
the pads that are used only internally by the driver, but aren't
part of the device's output.
Fix it.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/7] at: https://lore.kernel.org/all/cover.1636026959.git.mchehab+huawei@kernel.org/
.../staging/media/atomisp/pci/atomisp_cmd.c | 7 --
.../staging/media/atomisp/pci/atomisp_ioctl.c | 72 ++++++++++++++++++-
2 files changed, 71 insertions(+), 8 deletions(-)
diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index 851046ecbdbf..0ddee36cdcd7 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -4918,13 +4918,6 @@ int atomisp_try_fmt(struct video_device *vdev, struct v4l2_pix_format *f,
}
f->pixelformat = fmt->pixelformat;
- /*
- * FIXME: do we need to setup this differently, depending on the
- * sensor or the pipeline?
- */
- f->colorspace = V4L2_COLORSPACE_REC709;
- f->ycbcr_enc = V4L2_YCBCR_ENC_709;
- f->xfer_func = V4L2_XFER_FUNC_709;
/*
* If the format is jpeg or custom RAW, then the width and height will
diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
index 84ff97dabbed..1e6da6116a06 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c
@@ -847,6 +847,72 @@ static int atomisp_g_fmt_file(struct file *file, void *fh,
return 0;
}
+static int atomisp_adjust_fmt(struct v4l2_format *f)
+{
+ const struct atomisp_format_bridge *format_bridge;
+ u32 padded_width;
+
+ format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
+
+ padded_width = f->fmt.pix.width + pad_w;
+
+ if (format_bridge->planar) {
+ f->fmt.pix.bytesperline = padded_width;
+ f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height *
+ DIV_ROUND_UP(format_bridge->depth *
+ padded_width, 8));
+ } else {
+ f->fmt.pix.bytesperline = DIV_ROUND_UP(format_bridge->depth *
+ padded_width, 8);
+ f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height * f->fmt.pix.bytesperline);
+ }
+
+ if (f->fmt.pix.field == V4L2_FIELD_ANY)
+ f->fmt.pix.field = V4L2_FIELD_NONE;
+
+ format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
+ if (!format_bridge)
+ return -EINVAL;
+
+ /* Currently, raw formats are broken!!! */
+ if (format_bridge->sh_fmt == IA_CSS_FRAME_FORMAT_RAW) {
+ f->fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
+
+ format_bridge = atomisp_get_format_bridge(f->fmt.pix.pixelformat);
+ if (!format_bridge)
+ return -EINVAL;
+ }
+
+ padded_width = f->fmt.pix.width + pad_w;
+
+ if (format_bridge->planar) {
+ f->fmt.pix.bytesperline = padded_width;
+ f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height *
+ DIV_ROUND_UP(format_bridge->depth *
+ padded_width, 8));
+ } else {
+ f->fmt.pix.bytesperline = DIV_ROUND_UP(format_bridge->depth *
+ padded_width, 8);
+ f->fmt.pix.sizeimage = PAGE_ALIGN(f->fmt.pix.height * f->fmt.pix.bytesperline);
+ }
+
+ if (f->fmt.pix.field == V4L2_FIELD_ANY)
+ f->fmt.pix.field = V4L2_FIELD_NONE;
+
+ /*
+ * FIXME: do we need to setup this differently, depending on the
+ * sensor or the pipeline?
+ */
+ f->fmt.pix.colorspace = V4L2_COLORSPACE_REC709;
+ f->fmt.pix.ycbcr_enc = V4L2_YCBCR_ENC_709;
+ f->fmt.pix.xfer_func = V4L2_XFER_FUNC_709;
+
+ f->fmt.pix.width -= pad_w;
+ f->fmt.pix.height -= pad_h;
+
+ return 0;
+}
+
/* This function looks up the closest available resolution. */
static int atomisp_try_fmt_cap(struct file *file, void *fh,
struct v4l2_format *f)
@@ -858,7 +924,11 @@ static int atomisp_try_fmt_cap(struct file *file, void *fh,
rt_mutex_lock(&isp->mutex);
ret = atomisp_try_fmt(vdev, &f->fmt.pix, NULL);
rt_mutex_unlock(&isp->mutex);
- return ret;
+
+ if (ret)
+ return ret;
+
+ return atomisp_adjust_fmt(f);
}
static int atomisp_g_fmt_cap(struct file *file, void *fh,
--
2.31.1
^ permalink raw reply related
* Re: [PATCH 1/7] staging: vt6655: Introduce `idx` temporary variable
From: Dan Carpenter @ 2021-11-04 12:05 UTC (permalink / raw)
To: Karolina Drobnik
Cc: outreachy-kernel, gregkh, forest, linux-staging, linux-kernel
In-Reply-To: <34bd0e8f42597edf006a950d420345befc4e0bc2.1635415820.git.karolinadrobnik@gmail.com>
On Thu, Oct 28, 2021 at 11:35:31AM +0100, Karolina Drobnik wrote:
> Add a local variable to store `MISCFIFO_SYNDATA_IDX` offset.
> This change helps in shortening the lines in `rf.c` that
> are deemed too long by checkpatch.pl.
>
No, this just makes the code harder to read. Don't introduce a local
variable which only holds a global constant. Variables should be
variable and constants should be constants. No one wants to have to
look up things for no reason.
regards,
dan carpenter
^ permalink raw reply
* Re: [PATCH v4 1/5] media: imx: Remove unused functions
From: Dorota Czaplejewicz @ 2021-11-04 12:07 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
In-Reply-To: <20211104113631.206899-1-dorota.czaplejewicz@puri.sm>
[-- Attachment #1: Type: text/plain, Size: 856 bytes --]
On Thu, 4 Nov 2021 12:41:53 +0100
Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> wrote:
> Neither imx_media_mbus_fmt_to_ipu_image nor imx_media_ipu_image_to_mbus_fmt
> were used anywhere.
>
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> ---
>
> Hi,
>
> Compared to v3, this patch series introduces the checks of imx_media_find_mbus_format return values in patch 4 and 5.
>
> Cheers,
> Dorota
>
I should mention that this part from v3 still applies:
> The use of `v4l2_fill_pixfmt` comes with the downside of breaking 10-bit Bayer formats, or at least until my other series gets accepted
The other series is:
Message-id: 20211019114718.827400-1-dorota.czaplejewicz@puri.sm
https://lore.kernel.org/linux-media/20211019114718.827400-1-dorota.czaplejewicz@puri.sm/
Regards,
Dorota Czaplejewicz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH v2 1/8] staging: vt6655: Introduce `idx` temporary variable
From: Dan Carpenter @ 2021-11-04 12:09 UTC (permalink / raw)
To: Karolina Drobnik
Cc: outreachy-kernel, gregkh, forest, linux-staging, linux-kernel
In-Reply-To: <34bd0e8f42597edf006a950d420345befc4e0bc2.1635773680.git.karolinadrobnik@gmail.com>
On Mon, Nov 01, 2021 at 02:31:59PM +0000, Karolina Drobnik wrote:
> Add a local variable to store `MISCFIFO_SYNDATA_IDX` offset.
> This change helps in shortening the lines in `rf.c` that
> are deemed too long by checkpatch.pl.
>
I started reviewing the v1 patch but I should have been reviewing this
patchset. Please don't do this. Leave the constant as a constant so
we don't have to look it up.
regards,
dan carpenter
^ permalink raw reply
* Re: [PATCH v2 2/8] staging: vt6655: Use incrementation in `idx`
From: Dan Carpenter @ 2021-11-04 12:15 UTC (permalink / raw)
To: Karolina Drobnik
Cc: outreachy-kernel, gregkh, forest, linux-staging, linux-kernel
In-Reply-To: <c569952d92ba51f32679c2fd87fd48ad8e49e3fc.1635773680.git.karolinadrobnik@gmail.com>
On Mon, Nov 01, 2021 at 02:32:00PM +0000, Karolina Drobnik wrote:
> Increment `idx` in a loop instead of adding the loop counter
> `i` to do so. Thanks to this change, the cast to unsigned short
> can be removed.
>
> Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
> ---
> drivers/staging/vt6655/rf.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/vt6655/rf.c b/drivers/staging/vt6655/rf.c
> index f195dafb6e63..c07653566d17 100644
> --- a/drivers/staging/vt6655/rf.c
> +++ b/drivers/staging/vt6655/rf.c
> @@ -700,11 +700,11 @@ bool RFvWriteWakeProgSyn(struct vnt_private *priv, unsigned char rf_type,
> return false;
>
> for (i = 0; i < CB_AL2230_INIT_SEQ; i++)
> - MACvSetMISCFifo(priv, (unsigned short)(idx + i), al2230_init_table[i]);
> + MACvSetMISCFifo(priv, idx++, al2230_init_table[i]);
The cast was always pointless. You can remove it without any other
changes.
regards,
dan carpenter
^ permalink raw reply
* Re: atomisp current issues
From: Mauro Carvalho Chehab @ 2021-11-04 12:46 UTC (permalink / raw)
To: Linux Media Mailing List
Cc: Tsuchiya Yuto, Hans de Goede, Patrik Gfeller, Sakari Ailus,
Greg Kroah-Hartman, Hans Verkuil, Kaixu Xia, Laurent Pinchart,
Yang Li, Tomi Valkeinen, Alex Dewar, Aline Santana Cordeiro,
Arnd Bergmann, Alan, Peter Zijlstra, Ingo Molnar, linux-staging,
Linux Kernel Mailing List, Andy Shevchenko
In-Reply-To: <20211103135418.496f75d5@sal.lan>
As an update on that:
Em Wed, 3 Nov 2021 13:54:18 +0000
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> escreveu:
> Hi,
>
> From what I've seen so far, those are the main issues with regards to V4L2 API,
> in order to allow a generic V4L2 application to work with it.
>
> MMAP support
This issue still needs to be addressed...
> From my side, I opted to add support for USERPTR on camorama:
>
> https://github.com/alessio/camorama
...
> In time:
> --------
>
> Camorama currently doesn't work due to some other API bugs. See below.
But now camorama has gained support for autodetecting problems with
MMAP support.
At least for Asus T101HA, camorama is now working with atomisp.
> VIDIOC_G_FMT/VIDIOC_S_FMT/VIDIOC_TRY_FMT issues
> ===============================================
I addressed those issues. The implementation is not 100%, but it is good
enough for camorama to start working.
>
> Video devices
> =============
>
> Currently, 10 video? devices are created:
I didn't touch it. So, camorama should be called the first time with:
camorama -d /dev/video2
in order for it to work. As camorama memorizes the last used camera,
it will pick /dev/video2 if called later without any parameters.
Regards,
Mauro
^ permalink raw reply
* Re: atomisp current issues
From: Laurent Pinchart @ 2021-11-04 12:47 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Media Mailing List, Tsuchiya Yuto, Hans de Goede,
Patrik Gfeller, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, Hans Verkuil, Kaixu Xia, Yang Li,
Tomi Valkeinen, Alex Dewar, Aline Santana Cordeiro, Arnd Bergmann,
Alan, Peter Zijlstra, Ingo Molnar, linux-staging,
Linux Kernel Mailing List, Andy Shevchenko
In-Reply-To: <20211104105051.4836fafb@sal.lan>
Hi Mauro,
On Thu, Nov 04, 2021 at 10:50:51AM +0000, Mauro Carvalho Chehab wrote:
> Em Thu, 4 Nov 2021 11:53:55 +0200 Laurent Pinchart escreveu:
> > On Wed, Nov 03, 2021 at 01:54:18PM +0000, Mauro Carvalho Chehab wrote:
> > > Hi,
> > >
> > > From what I've seen so far, those are the main issues with regards to V4L2 API,
> > > in order to allow a generic V4L2 application to work with it.
> > >
> > > MMAP support
> > > ============
> > >
> > > Despite having some MMAP code on it, the current implementation is broken.
> > > Fixing it is not trivial, as it would require fixing the HMM support on it,
> > > which does several tricks.
> > >
> > > The best would be to replace it by something simpler. If this is similar
> > > enough to IPU3, perhaps one idea would be to replace the HMM code on it by
> > > videodev2 + IPU3 HMM code.
> > >
> > > As this is not trivial, I'm postponing such task. If someone has enough
> > > time, it would be great to have this fixed.
> > >
> > > From my side, I opted to add support for USERPTR on camorama:
> > >
> > > https://github.com/alessio/camorama
> >
> > We should *really* phase out USERPTR support.
>
> I'm not a big fan of userptr, buy why do we phase it out?
Because USERPTR is broken by design. It gives a false promise to
userspace that a user pointer can be DMA'ed to, and this isn't generally
true. Even if buffer are carefully allocated to be compatible with the
device requirements, there are corner cases that prevent making a
mechanism based on get_user_pages() a first class citizen. In any case,
USERPTR makes life more difficult for the kernel.
There may be some use cases for which USERPTR could be an appropriate
solution, but now that we have DMABUF (and of course MMAP), I see no
reason to continue supporting USERPTR forever, and certainly not adding
new users.
> > Worst case you may support
> > DMABUF only if MMAP is problematic, but I don't really see why it could
> > be easy to map an imported buffer and difficult to map a buffer
> > allocated by the driver. videobuf2 should be used.
>
> Yeah, atomisp should be migrated to VB2, and such migration is listed at
> its TODO file. However, this is a complex task, as its memory management
> code is very complex.
Have a look at GPU memory management, and you'll find the atomisp driver
very simple in comparison :-)
I'm also pretty sure that drivers/staging/media/atomisp/pci/hmm/ could
be rewritten to use more of the existing kernel frameworks.
> Maybe we could try to use the ISP3 code on it,
> replacing the current HMM logic, but not sure if the implementation there
> would be compatible.
I'd be surprised if the IPU3 was compatible.
> In any case, the current priority is to make the driver to work, fixing
> the V4L2 API implementation, which has several issues.
>
> ...
>
> > > Video devices
> > > =============
> > >
> > > Currently, 10 video? devices are created:
> > >
> > > $ for i in $(ls /dev/video*|sort -k2 -to -n); do echo -n $i:; v4l2-ctl -D -d $i|grep Name; done
> > > /dev/video0: Name : ATOMISP ISP CAPTURE output
> > > /dev/video1: Name : ATOMISP ISP VIEWFINDER output
> > > /dev/video2: Name : ATOMISP ISP PREVIEW output
> > > /dev/video3: Name : ATOMISP ISP VIDEO output
> > > /dev/video4: Name : ATOMISP ISP ACC
> > > /dev/video5: Name : ATOMISP ISP MEMORY input
> > > /dev/video6: Name : ATOMISP ISP CAPTURE output
> > > /dev/video7: Name : ATOMISP ISP VIEWFINDER output
> > > /dev/video8: Name : ATOMISP ISP PREVIEW output
> > > /dev/video9: Name : ATOMISP ISP VIDEO output
> > > /dev/video10: Name : ATOMISP ISP ACC
> > >
> > > That seems to be written to satisfy some Android-based app, but we don't
> > > really need all of those.
> > >
> > > I'm thinking to comment out the part of the code which creates all of those,
> > > keeping just "ATOMISP ISP PREVIEW output", as I don't think we need all
> > > of those.
> >
> > Why is that ? Being able to capture multiple streams in different
> > resolutions is important for lots of applications, the viewfinder
> > resolution is often different than the video streaming and/or still
> > capture resolution. Scaling after capture is often expensive (and there
> > are memory bandwidth and power constraints to take into account too). A
> > single-stream device may be better than nothing, but it's time to move
> > to the 21st century.
>
> True, but having multiple videonodes at this moment is not helping,
> specially since only one of such modes (PREVIEW) is actually working at
> the moment.
>
> So, this is more a strategy to help focusing on making this work
> properly, and not a statement that those modules would be dropped.
>
> I'd say that the "final" version of atomisp - once it gets
> fixed, cleaned up and started being MC-controlled - should support
> all such features, and have the pipelines setup via libcamera.
I have no issue with phasing development (I have few issues with the
atomisp driver in general actually, as it's in staging), but the goal
should be kept in mind to make sure development goes in the right
direction.
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH v2 2/8] staging: vt6655: Use incrementation in `idx`
From: Dan Carpenter @ 2021-11-04 13:00 UTC (permalink / raw)
To: Karolina Drobnik
Cc: outreachy-kernel, gregkh, forest, linux-staging, linux-kernel
In-Reply-To: <c569952d92ba51f32679c2fd87fd48ad8e49e3fc.1635773680.git.karolinadrobnik@gmail.com>
On Mon, Nov 01, 2021 at 02:32:00PM +0000, Karolina Drobnik wrote:
> Increment `idx` in a loop instead of adding the loop counter
> `i` to do so. Thanks to this change, the cast to unsigned short
> can be removed.
>
> Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
> ---
> drivers/staging/vt6655/rf.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/vt6655/rf.c b/drivers/staging/vt6655/rf.c
> index f195dafb6e63..c07653566d17 100644
> --- a/drivers/staging/vt6655/rf.c
> +++ b/drivers/staging/vt6655/rf.c
> @@ -700,11 +700,11 @@ bool RFvWriteWakeProgSyn(struct vnt_private *priv, unsigned char rf_type,
> return false;
>
> for (i = 0; i < CB_AL2230_INIT_SEQ; i++)
> - MACvSetMISCFifo(priv, (unsigned short)(idx + i), al2230_init_table[i]);
> + MACvSetMISCFifo(priv, idx++, al2230_init_table[i]);
Of course, idx is no longer a constant so declaring it as a variable
makes sense here. But maybe just do it in the same patch because the
patch 1/1 doesn't make sense as a stand alone patch.
Also don't declare idx as an unsigned short. It's better to declare it
as a int so it just works like a normal number and you don't have to
think about signedness bugs and wrapping and edge cases.
regards,
dan carpenter
^ permalink raw reply
* [GIT PULL] Staging driver changes for 5.16-rc1
From: Greg KH @ 2021-11-04 13:06 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton, Stephen Rothwell
Cc: linux-kernel, linux-staging
The following changes since commit 519d81956ee277b4419c723adfb154603c2565ba:
Linux 5.15-rc6 (2021-10-17 20:00:13 -1000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git tags/staging-5.16-rc1
for you to fetch changes up to 10508ae08ed8ce8794785194ad7309f1437d43fd:
staging: r8188eu: hal: remove goto statement and local variable (2021-10-30 11:15:55 +0200)
----------------------------------------------------------------
Staging driver update for 5.16-rc1
Here is the big set of staging driver updates and cleanups for 5.16-rc1.
Overall we ended up removing a lot of code this time, a bit over 20,000
lines are now gone thanks to a lot of cleanup work by many developers.
Nothing huge in here functionality wise, just loads of cleanups:
- r8188eu driver major cleanups and removal of unused and dead
code
- wlan-ng minor cleanups
- fbtft driver cleanups
- most driver cleanups
- rtl8* drivers cleanups
- rts5208 driver cleanups
- vt6655 driver cleanups
- vc04_services drivers cleanups
- wfx cleanups on the way to almost getting this merged out of
staging (it's close!)
- tiny mips changes needed for the mt7621 drivers, they have
been acked by the respective subsystem maintainers to go
through this tree.
All of these have been in linux-next for a while with no reported
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----------------------------------------------------------------
Ajith P V (1):
staging: fieldbus: anybus: reframe comment to avoid warning
Aldas Taraškevičius (1):
staging: wlan-ng: Remove filenames from files
Benjamin Philip (9):
staging: rts5208: remove unnecessary parentheses in ms.c
staging: rts5208: remove unnecessary parentheses in rtsx_card.c
staging: rts5208: remove unnecessary parentheses in rtsx.c
staging: rts5208: remove unnecessary parentheses in rtsx_chip.c
staging: rts5208: remove unnecessary parentheses in rtsx_transport.c
staging: rts5208: remove unnecessary parentheses in sd.c
staging: rts5208: remove unnecessary parentheses in xd.c
staging: rts5208: remove unnecessary parentheses in rtsx_scsi.c
staging: rts5208: remove parentheses pair in sd.c
Bryan Brattlof (1):
staging: rtl8723bs: ignore unused wiphy_wowlan object warnings
Changcheng Deng (1):
staging: r8188eu: use swap()
Colin Ian King (1):
staging: r8188eu: remove redundant variable hoffset
Dawid Esterhuizen (1):
staging: rtl8712: Statements should start on a tabstop
Fabio Aiuto (5):
staging: rtl8723bs: unwrap initialization of queues
staging: rtl8723bs: remove unnecessary parentheses
staging: rtl8723bs: remove unused _rtw_init_queue() function
staging: rtl8723bs: remove possible deadlock when disconnect
staging: rtl8723bs: remove possible deadlock when disconnect (v2)
Fabio M. De Francesco (23):
staging: r8188eu: Remove _enter/_exit_critical_mutex()
staging: r8188eu: remove unnedeed parentheses in usbctrl_vendorreq()
staging: r8188eu: remove unnecessary space in usbctrl_vendorreq()
staging: r8188eu: clean up symbols in usbctrl_vendorreq()
staging: r8188eu: reorder declarations in usbctrl_vendorreq()
staging: r8188eu: remove test in usbctrl_vendorreq()
staging: r8188eu: reorder comments in usbctrl_vendorreq()
staging: r8188eu: remove a comment from usbctrl_vendorreq()
staging: r8188eu: rename symbols in rtw_read*() and rtw_write*()
staging: r8188eu: remove casts from rtw_{read,write}*()
staging: r8188eu: change the type of a variable in rtw_write16()
staging: r8188eu: remove a buffer from rtw_writeN()
staging: r8188eu: remove a bitwise AND from rtw_writeN()
staging: r8188eu: change the type of a variable in rtw_read16()
staging: r8188eu: Remove a test from usbctrl_vendorreq()
staging: r8188eu: call new usb_read() from rtw_read{8,16,32}()
staging: r8188eu: call new usb_write() from rtw_write{8,16,32,N}()
staging: r8188eu: Use completions for signaling start / end kthread
staging: r8188eu: Use completions for signaling enqueueing
staging: r8188eu: Remove redundant 'if' statement
staging: r8188eu: Remove initialized but unused semaphore
staging: r8188eu: Remove unused semaphore "io_retevt"
staging: r8188eu: Use a Mutex instead of a binary Semaphore
Gaston Gonzalez (21):
staging: vchiq_dev: remove braces from if block
staging: vchiq_dev: cleanup code alignment issues
staging: vchiq: remove braces from if block
staging: vchiq: add braces to if block
staging: vchiq: cleanup code alignment issues
staging: vchiq_arm: cleanup code alignment issues
staging: vchiq_arm: remove unnecessary space in cast
staging: vchiq_arm: clarify multiplication expressions
staging: vchiq_arm: cleanup blank lines
staging: vchiq_arm: fix quoted strings split across lines
staging: vchiq_arm: remove extra blank line
staging: vchiq_arm: use __func__ to get function name in debug message
staging: vchiq_core: cleanup blank lines
staging: vchiq_core: cleanup code alignment issues
staging: vchiq_core.h: fix CamelCase in function declaration
staging: vchiq_core.h: use preferred kernel types
staging: vchiq: drop trailing semicolon in macro definition
staging: vchiq_core: drop extern prefix in function declarations
staging: vchiq_core: cleanup lines that end with '(' or '['
staging: vchiq_core: fix quoted strings split across lines
staging: vchiq_core: get rid of typedef
Greg Kroah-Hartman (5):
staging: vchiq: convert to use a miscdevice
staging: axis-fifo: convert to use miscdevice
Revert "staging: rtl8723bs: remove possible deadlock when disconnect"
Merge branch 5.15-rc3 into staging-next
Merge 5.15-rc6 into staging-next
Gustavo A. R. Silva (3):
staging: rtl8723bs: Replace zero-length array with flexible-array member
staging: r8188eu: Replace zero-length array with flexible-array member
staging: r8188eu: Use zeroing allocator in wpa_set_encryption()
Hans de Goede (2):
staging: rtl8723bs: remove a second possible deadlock
staging: rtl8723bs: remove a third possible deadlock
Jakub Kicinski (8):
staging: use eth_hw_addr_set()
staging: use eth_hw_addr_set() instead of ether_addr_copy()
staging: use eth_hw_addr_set() for dev->addr_len cases
staging: qlge: use eth_hw_addr_set()
staging: rtl8712: prepare for const netdev->dev_addr
staging: unisys: use eth_hw_addr_set()
staging: rtl: use eth_hw_addr_set()
staging: use eth_hw_addr_set() in orphan drivers
Johan Hovold (2):
staging: rtl8192u: fix control-message timeouts
staging: r8712u: fix control-message timeout
Julian Braha (1):
staging: rtl8723bs: fix unmet dependency on CRYPTO for CRYPTO_LIB_ARC4
Jérôme Pouiller (32):
staging: wfx: use abbreviated message for "incorrect sequence"
staging: wfx: do not send CAB while scanning
staging: wfx: ignore PS when STA/AP share same channel
staging: wfx: wait for SCAN_CMPL after a SCAN_STOP
staging: wfx: avoid possible lock-up during scan
staging: wfx: drop unused argument from hif_scan()
staging: wfx: fix atomic accesses in wfx_tx_queue_empty()
staging: wfx: take advantage of wfx_tx_queue_empty()
staging: wfx: declare support for TDLS
staging: wfx: fix support for CSA
staging: wfx: relax the PDS existence constraint
staging: wfx: simplify API coherency check
staging: wfx: update with the firmware API 3.8
staging: wfx: uniformize counter names
staging: wfx: fix misleading 'rate_id' usage
staging: wfx: declare variables at beginning of functions
staging: wfx: simplify hif_join()
staging: wfx: reorder function for slightly better eye candy
staging: wfx: fix error names
staging: wfx: apply naming rules in hif_tx_mib.c
staging: wfx: remove unused definition
staging: wfx: remove useless debug statement
staging: wfx: fix space after cast operator
staging: wfx: remove references to WFxxx in comments
staging: wfx: update files descriptions
staging: wfx: reformat comment
staging: wfx: avoid c99 comments
staging: wfx: fix comments styles
staging: wfx: remove useless comments after #endif
staging: wfx: explain the purpose of wfx_send_pds()
staging: wfx: indent functions arguments
staging: wfx: ensure IRQ is ready before enabling it
Kai Song (1):
staging: r8188eu: Use kmemdup() to replace kmalloc + memcpy
Karolina Drobnik (17):
staging: vt6655: Rename byPreambleType field
staging: vt6655: Rename `by_preamble_type` parameter
staging: vt6655: Rename `dwAL2230InitTable` array
staging: vt6655: Use named constants when checking preamble type
staging: vt6655: Rename `ii` variable
staging: vt6655: Rename `byInitCount` variable
staging: vt6655: Rename `bySleepCount` variable
staging: vt6655: Rename `uChannel` variable
staging: vt6655: Rename `byRFType` variable
staging: vt6655: Rename `dwAL2230ChannelTable0` array
staging: vt6655: Rename `dwAL2230ChannelTable1` array
staging: vt6655: Rename `dwAL7230ChannelTable0` array
staging: vt6655: Rename `dwAL7230ChannelTable1` array
staging: vt6655: Rename `dwAL7230ChannelTable2` array
staging: vt6655: Rename `dwAL7230InitTableAMode` array
staging: vt6655: Rename `dwAL2230PowerTable` array
staging: vt6655: Rename `dwAL7230InitTable` array
Krish Jain (1):
staging/mt7621-dma: Format lines in "hsdma-mt7621.c" ending with an open parenthesis
Krzysztof Kozlowski (1):
staging; wlan-ng: remove duplicate USB device ID
Kushal Kothari (5):
staging: rtl8723bs: core: Remove true and false comparison
staging: rtl8723bs: core: Remove true and false comparison
staging: rtl8723bs: core: Remove unnecessary parentheses
staging: rtl8723bs: core: Remove unnecessary space after a cast
staging: rtl8723bs: core: Remove unnecessary blank lines
Larry Finger (3):
staging: r8188eu: Remove conditionals CONFIG_88EU_{AP_MODE,P2P}
staging: r8188eu: Remove mp, a.k.a. manufacturing process, code
staging: r8188eu: Remove unused macros and defines from odm.h
Longji Guo (1):
staging: rtl8723bs: remove meaningless pstat->passoc_req check in OnAssocReq()
Martin Kaiser (85):
staging: r8188eu: remove unused function prototype
staging: r8188eu: remove unused define
staging: r8188eu: this endless loop is executed only once
staging: r8188eu: remove write-only variable bLCKInProgress
staging: r8188eu: remove unused function usb_endpoint_is_int
staging: r8188eu: remove unused function RT_usb_endpoint_is_bulk_in
staging: r8188eu: remove unused function RT_usb_endpoint_num
staging: r8188eu: remove the remaining usb endpoint functions
staging: r8188eu: btcoex_rfon is always false
staging: r8188eu: setting HW_VAR_SET_RPWM does nothing
staging: r8188eu: remove write-only variable cpwm
staging: r8188eu: remove write-only variable tog
staging: r8188eu: bHWPwrPindetect is always false
staging: r8188eu: remove rtw_hw_suspend
staging: r8188eu: remove rtw_set_rpwm
staging: r8188eu: remove unused power state defines
staging: r8188eu: _free_pwrlock is empty
staging: r8188eu: remove unused pwrctrl definitions
staging: r8188eu: remove unused enum and array
staging: r8188eu: rtw_set_ips_deny is not used
staging: r8188eu: remove unused variable cpwm_tog
staging: r8188eu: remove unused variable b_hw_radio_off
staging: r8188eu: brfoffbyhw is always false
staging: r8188eu: remove rtw_hw_resume
staging: r8188eu: remove rtw_free_pwrctrl_priv prototype
staging: r8188eu: remove the HW_VAR_CHECK_TXBUF "hal variable"
staging: r8188eu: do not write past the end of an array
staging: r8188eu: remove an obsolete comment
staging: r8188eu: remove unused led component
staging: r8188eu: remove write-only HwRxPageSize
staging: r8188eu: remove unused IntrMask
staging: r8188eu: remove two write-only hal components
staging: r8188eu: HardwareType is write-only
staging: r8188eu: chip_type is write-only
staging: r8188eu: interface type is always usb
staging: r8188eu: support interface is always usb
staging: r8188eu: hal data's customer id is always 0
staging: r8188eu: Odm PatchID is always 0
staging: r8188eu: merge two signal scale mapping functions
staging: r8188eu: remove an unused define
staging: r8188eu: remove specific device table
staging: r8188eu: RfOnOffDetect is unused
staging: r8188eu: remove odm fab version info
staging: r8188eu: remove odm cut version info
staging: r8188eu: remove odm dualmac smart concurrent info
staging: r8188eu: remove odm wifi test info
staging: r8188eu: remove odm hct test info
staging: r8188eu: remove odm ext trsw info
staging: r8188eu: remove odm ext pa info
staging: r8188eu: remove odm ext lna info
staging: r8188eu: remove dm_CheckStatistics
staging: r8188eu: simplify rtl8188e_HalDmWatchDog
staging: r8188eu: remove rtl8188e_deinit_dm_priv
staging: r8188eu: remove LastMinUndecoratedPWDBForDM
staging: r8188eu: SupportICType is always ODM_RTL8188E
staging: r8188eu: remove odm_SwAntDivInit
staging: r8188eu: odm BoardType is never set
staging: r8188eu: odm SupportPlatform is always ODM_CE
staging: r8188eu: remove empty trigger gpio code
staging: r8188eu: interface type is always usb
staging: r8188eu: remove two checks that are always false
staging: r8188eu: remove unused function prototypes
staging: r8188eu: PHY_SetRFPathSwitch_8188E is not used
staging: r8188eu: clean up Hal8188EPhyCfg.h
staging: r8188eu: remove procfs functions
staging: r8188eu: CurrentWirelessMode is not used
staging: r8188eu: remove unused components in pwrctrl_priv
staging: r8188eu: remove BT_COEXIST settings from Makefile
staging: r8188eu: res_to_status is unused
staging: r8188eu: daemonize is not defined
staging: r8188eu: don't accept SIGTERM for cmd thread
staging: r8188eu: Makefile: remove unused driver config
staging: r8188eu: Makefile: don't overwrite global settings
staging: r8188eu: Makefile: use one file list
staging: r8188eu: fix memleak in rtw_wx_set_enc_ext
staging: r8188eu: remove unused dm_priv components
staging: r8188eu: odm_rate_adapt Type is constant
staging: r8188eu: use helper to check for broadcast address
staging: r8188eu: use helper to set broadcast address
staging: r8188eu: remove unused defines and enums
staging: r8188eu: silent_reset_inprogress is never read
staging: r8188eu: wifi_error_status is write-only
staging: r8188eu: silentreset_mutex is unused
staging: r8188eu: remove last_tx_complete_time
staging: r8188eu: remove the sreset_priv structure
Michael Straube (285):
staging: rtl8723bs: clean up comparsions to NULL
staging: r8188eu: remove rtl8188e_PHY_ConfigRFWithHeaderFile()
staging: r8188eu: remove rtl8188e_PHY_ConfigRFWithParaFile()
staging: r8188eu: remove rtw_get_oper_bw()
staging: r8188eu: remove rtw_get_oper_choffset()
staging: r8188eu: remove get_bsstype()
staging: r8188eu: remove CAM_empty_entry()
staging: r8188eu: remove is_ap_in_wep()
staging: r8188eu: remove should_forbid_n_rate()
staging: r8188eu: convert type of second parameter of rtw_*_encrypt()
staging: r8188eu: convert type of second parameter of rtw_*_decrypt()
staging: r8188eu: remove unnecessary type casts
staging: r8188eu: remove local variable Indexforchannel
staging: r8188eu: refactor field of struct odm_rf_cal
staging: r8188eu: remove unused constants from wifi.h
staging: r8188eu: remove commented constants from wifi.h
staging: r8188eu: remove Hal_MPT_CCKTxPowerAdjustbyIndex()
staging: r8188eu: remove set but unused variable
staging: r8188eu: remove ICType from struct HAL_VERSION
staging: r8188eu: remove unused function SetBcnCtrlReg()
staging: r8188eu: use mac_pton() in rtw_macaddr_cfg()
staging: r8188eu: ensure mac address buffer is properly aligned
staging: r8188eu: use ETH_ALEN
staging: r8188eu: use is_*_ether_addr() in rtw_macaddr_cfg()
staging: r8188eu: use random default mac address
staging: r8188eu: use ether_addr_copy() in rtw_macaddr_cfg()
staging: r8188eu: add missing blank line after declarations
staging: r8188eu: remove unnecessary parentheses
staging: r8188eu: remove header file rtw_ioctl_rtl.h
staging: r8188eu: remove unused defines from mp_custom_oid.h
staging: r8188eu: remove unused enum from ieee80211.h.
staging: r8188eu: remove unused enum rt_eeprom_type
staging: r8188eu: remove IS_HARDWARE_TYPE_8188* macros
staging: r8188eu: remove enum hardware_type
staging: r8188eu: remove unused constant CRC32_POLY
staging: r8188eu: use in-kernel arc4 encryption
staging: r8188eu: remove rtw_use_tkipkey_handler()
staging: r8188eu: remove intf_chip_configure from hal_ops
staging: r8188eu: remove read_adapter_info from hal_ops
staging: r8188eu: remove read_chip_version from hal_ops
staging: r8188eu: remove wrapper around ReadChipVersion8188E()
staging: r8188eu: remove GetHalODMVarHandler from hal_ops
staging: r8188eu: remove init_default_value from hal_ops
staging: r8188eu: remove InitSwLeds from hal_ops
staging: r8188eu: remove DeInitSwLeds from hal_ops
staging: r8188eu: remove dm_init from hal_ops
staging: r8188eu: remove dm_deinit from hal_ops
staging: r8188eu: remove SetHalODMVarHandler from hal_ops
staging: r8188eu: remove empty functions
staging: r8188eu: remove unused function rtw_interface_ps_func()
staging: r8188eu: remove interface_ps_func from hal_ops
staging: r8188eu: remove hal_dm_watchdog from hal_ops
staging: r8188eu: remove set_bwmode_handler from hal_ops
staging: r8188eu: remove set_channel_handler from hal_ops
staging: r8188eu: remove unused enum hal_intf_ps_func
staging: r8188eu: remove Add_RateATid from hal_ops
staging: r8188eu: remove hal_power_on from hal_ops
staging: r8188eu: remove sreset_init_value from hal_ops
staging: r8188eu: remove sreset_reset_value from hal_ops
staging: r8188eu: remove silentreset from hal_ops
staging: r8188eu: remove sreset_xmit_status_check from hal_ops
staging: r8188eu: remove sreset_linked_status_check from hal_ops
staging: r8188eu: remove sreset_get_wifi_status from hal_ops
staging: r8188eu: remove EfusePowerSwitch from hal_ops
staging: r8188eu: rename hal_EfusePowerSwitch_RTL8188E()
staging: r8188eu: remove wrapper Efuse_PowerSwitch()
staging: r8188eu: remove ReadEFuse from hal_ops
staging: r8188eu: remove EFUSEGetEfuseDefinition from hal_ops
staging: r8188eu: remove EfuseGetCurrentSize from hal_ops
staging: r8188eu: remove empty comments
staging: r8188eu: remove Efuse_PgPacketRead from hal_ops
staging: r8188eu: remove Efuse_PgPacketWrite from hal_ops
staging: r8188eu: remove Efuse_WordEnableDataWrite from hal_ops
staging: r8188eu: remove useless assignment
staging: r8188eu: remove AntDivBeforeLinkHandler from hal_ops
staging: r8188eu: remove AntDivCompareHandler from hal_ops
staging: r8188eu: remove empty function rtl8188e_start_thread()
staging: r8188eu: remove empty function rtl8188e_stop_thread()
staging: r8188eu: remove hal_notch_filter from hal_ops
staging: r8188eu: remove free_hal_data from hal_ops
staging: r8188eu: remove unused function rtl8188e_clone_haldata()
staging: r8188eu: remove SetBeaconRelatedRegistersHandler from hal_ops
staging: r8188eu: remove UpdateHalRAMask8188EUsb from hal_ops
staging: r8188eu: remove unused function Hal_ProSetCrystalCap()
staging: r8188eu: remove unused PHY_GetTxPowerLevel8188E()
staging: r8188eu: remove unused PHY_ScanOperationBackup8188E()
staging: r8188eu: remove unused PHY_UpdateTxPowerDbm8188E()
staging: r8188eu: remove unused rtl8192c_PHY_GetHWRegOriginalValue()
staging: r8188eu: remove unused odm_Init_RSSIForDM()
staging: r8188eu: remove unused ODM_MacStatusQuery()
staging: r8188eu: remove unused macro READ_AND_CONFIG_TC
staging: r8188eu: remove unused macro ROUND
staging: rtl8723bs: remove unused macros from ioctl_linux.c
staging: r8188eu: remove IOL_exec_cmds_sync() from struct hal_ops
staging: r8188eu: remove wrapper rtw_IOL_exec_cmds_sync()
staging: r8188eu: remove rtw_IOL_append_LLT_cmd()
staging: r8188eu: remove empty ODM_ReleaseTimer()
staging: r8188eu: remove unused ODM_AcquireSpinLock()
staging: r8188eu: remove unused ODM_ReleaseSpinLock()
staging: r8188eu: remove unused ODM_FillH2CCmd()
staging: r8188eu: remove unused ODM_sleep_us()
staging: r8188eu: remove unused ODM_InitializeWorkItem()
staging: r8188eu: remove unused ODM_StartWorkItem()
staging: r8188eu: remove unused ODM_StopWorkItem()
staging: r8188eu: remove unused ODM_FreeWorkItem()
staging: r8188eu: remove unused ODM_ScheduleWorkItem()
staging: r8188eu: remove unused ODM_IsWorkItemScheduled()
staging: r8188eu: remove unused ODM_SetTimer()
staging: r8188eu: remove unused ODM_Read2Byte()
staging: r8188eu: remove unused ODM_FreeMemory()
staging: r8188eu: remove unused ODM_AllocateMemory()
staging: r8188eu: remove unused prototype ODM_InitializeTimer()
staging: r8188eu: remove unused ODM_CancelAllTimers()
staging: r8188eu: remove unused ODM_InitAllTimers()
staging: r8188eu: remove mgnt_xmit from struct hal_ops
staging: r8188eu: remove hal_xmit from struct hal_ops
staging: r8188eu: remove read_bbreg from struct hal_ops
staging: r8188eu: remove write_bbreg from struct hal_ops
staging: r8188eu: remove read_rfreg from struct hal_ops
staging: r8188eu: remove write_rfreg from struct hal_ops
staging: r8188eu: remove rtl8188e_set_hal_ops()
staging: r8188eu: remove header file HalHWImg8188E_FW.h
staging: r8188eu: remove macro GET_EEPROM_EFUSE_PRIV
staging: r8188eu: remove unused register definitions from odm_reg.h
staging: r8188eu: remove header file odm_reg.h
staging: r8188eu: remove unused enum RT_SPINLOCK_TYPE
staging: r8188eu: remove unused defines from odm_types.h
staging: r8188eu: remove unnecessary include from odm_types.h
staging: r8188eu: remove unused enum odm_bt_coexist
staging: r8188eu: remove unused ODM_RASupport_Init()
staging: r8188eu: remove RaSupport88E from struct odm_dm_struct
staging: r8188eu: remove dead code from odm_RxPhyStatus92CSeries_Parsing()
staging: r8188eu: remove unused macros from rtl8188e_hal.h
staging: r8188eu: remove write-only fields from struct hal_data_8188e
staging: r8188eu: remove unused enums from rtl8188e_hal.h
staging: r8188eu: remove unused field from struct hal_data_8188e
staging: r8188eu: remove IS_1T1R, IS_1T2R, IS_2T2R macros
staging: r8188eu: remove if test that is always true
staging: r8188eu: remove NumTotalRFPath from struct hal_data_8188e
staging: r8188eu: remove switches from phy_RF6052_Config_ParaFile()
staging: r8188eu: remove ap_sta_info_defer_update()
staging: r8188eu: remove rtw_acl_add_sta()
staging: r8188eu: remove rtw_acl_remove_sta()
staging: r8188eu: remove rtw_ap_inform_ch_switch()
staging: r8188eu: remove rtw_check_beacon_data()
staging: r8188eu: remove rtw_set_macaddr_acl()
staging: r8188eu: remove odm_ConfigRF_RadioB_8188E()
staging: r8188eu: remove ODM_DIG_LowerBound_88E()
staging: r8188eu: remove rtl8188e_RF_ChangeTxPath()
staging: r8188eu: remove unused struct rf_shadow
staging: r8188eu: remove HalDetectPwrDownMode88E()
staging: r8188eu: remove rtw_IOL_cmd_tx_pkt_buf_dump()
staging: r8188eu: remove rtl8188e_set_rssi_cmd()
staging: r8188eu: remove EFUSE_Read1Byte()
staging: r8188eu: remove comments from odm_interface.h
staging: r8188eu: remove unused macros from odm_interface.h
staging: r8188eu: remove _ic_type from macro _cat in odm_interface.h
staging: r8188eu: remove dead code from ODM_Write_DIG()
staging: r8188eu: remove unnecessary if statement
staging: r8188eu: remove more dead code from ODM_Write_DIG()
staging: r8188eu: remove macro ODM_REG
staging: r8188eu: remove macro ODM_BIT
staging: r8188eu: remove unnecessary if statements
staging: r8188eu: remove dead code from odm.c
staging: r8188eu: remove macros ODM_IC_11{N,AC}_SERIES
staging: r8188eu: remove header file odm_RegDefine11AC.h
staging: r8188eu: remove unused defines from odm_RegDefine11N.h
staging: r8188eu: clean up indentation in odm_RegDefine11N.h
staging: r8188eu: remove ODM_SingleDualAntennaDetection()
staging: r8188eu: remove EFUSE_ShadowRead()
staging: r8188eu: remove efuse_GetCurrentSize()
staging: r8188eu: remove efuse_GetMaxSize()
staging: r8188eu: remove rtw_BT_efuse_map_write()
staging: r8188eu: remove rtw_efuse_access()
staging: r8188eu: remove rtw_efuse_map_write()
staging: r8188eu: remove rtw_BT_efuse_map_read()
staging: r8188eu: remove rtw_efuse_map_read()
staging: r8188eu: remove _rtw_dequeue_network()
staging: r8188eu: remove _rtw_enqueue_network()
staging: r8188eu: remove rtw_get_timestampe_from_ie()
staging: r8188eu: remove rtw_scan_abort()
staging: r8188eu: remove issue_action_spct_ch_switch()
staging: r8188eu: remove issue_probereq_p2p_ex()
staging: r8188eu: remove sreset_get_wifi_status()
staging: r8188eu: remove build_deauth_p2p_ie()
staging: r8188eu: remove rtw_freq2ch()
staging: r8188eu: remove rtw_set_802_11_add_key()
staging: r8188eu: remove rtw_set_802_11_remove_key()
staging: r8188eu: remove rtw_set_802_11_remove_wep()
staging: r8188eu: remove rtw_set_country()
staging: r8188eu: remove rtw_set_scan_mode()
staging: r8188eu: remove rtw_validate_ssid()
staging: r8188eu: remove rtw_set_channel_plan()
staging: r8188eu: remove rtw_atoi()
staging: r8188eu: remove rtw_cbuf_push()
staging: r8188eu: remove rtw_cbuf_full()
staging: r8188eu: remove rtw_os_read_port()
staging: r8188eu: remove rtw_IOL_cmd_buf_dump()
staging: r8188eu: remove action_public_str()
staging: r8188eu: remove dump_ies()
staging: r8188eu: remove hal_ch_offset_to_secondary_ch_offset()
staging: r8188eu: remove secondary_ch_offset_to_hal_ch_offset()
staging: r8188eu: remove ieee80211_get_hdrlen()
staging: r8188eu: remove ieee80211_is_empty_essid()
staging: r8188eu: remove rtw_action_frame_parse()
staging: r8188eu: remove rtw_ies_remove_ie()
staging: r8188eu: remove rtw_set_ie_ch_switch()
staging: r8188eu: remove rtw_set_ie_mesh_ch_switch_parm()
staging: r8188eu: remove rtw_set_ie_secondary_ch_offset()
staging: r8188eu: remove enum secondary_ch_offset
staging: r8188eu: remove rtw_dequeue_recvbuf()
staging: r8188eu: remove rtw_enqueue_recvbuf()
staging: r8188eu: remove rtw_enqueue_recvbuf_to_head()
staging: r8188eu: remove rtw_init_recvframe()
staging: r8188eu: remove rtw_calculate_wlan_pkt_size_by_attribue()
staging: r8188eu: remove rtw_sctx_done()
staging: r8188eu: remove odm_DynamicTxPowerNIC()
staging: r8188eu: remove odm_DynamicTxPowerAP()
staging: r8188eu: remove odm_DynamicTxPower()
staging: r8188eu: remove write-only fields from struct dm_priv
staging: r8188eu: remove PowerIndex_backup from struct dm_priv
staging: r8188eu: remove dead code from rtl8188e_rf6052.c
staging: r8188eu: remove DynamicTxHighPowerLvl from struct dm_priv
staging: r8188eu: remove odm_DynamicTxPowerInit()
staging: r8188eu: remove rtw_proc_{init,remove}_one()
staging: r8188eu: remove rtw_cmd_clr_isr()
staging: r8188eu: remove rtw_createbss_cmd_ex()
staging: r8188eu: remove rtw_getbbreg_cmd()
staging: r8188eu: remove rtw_getrfreg_cmd()
staging: r8188eu: remove rtw_getrttbl_cmd()
staging: r8188eu: remove rtw_led_blink_cmd()
staging: r8188eu: remove rtw_readtssi_cmdrsp_callback()
staging: r8188eu: remove rtw_set_ch_cmd()
staging: r8188eu: remove rtw_set_csa_cmd()
staging: r8188eu: remove rtw_setassocsta_cmd()
staging: r8188eu: remove rtw_setbasicrate_cmd()
staging: r8188eu: remove rtw_setbbreg_cmd()
staging: r8188eu: remove rtw_setphy_cmd()
staging: r8188eu: remove rtw_setrfreg_cmd()
staging: r8188eu: remove rtw_setrttbl_cmd()
staging: r8188eu: remove rtw_setstandby_cmd()
staging: r8188eu: remove rtw_tdls_cmd()
staging: r8188eu: remove dead led blink functions
staging: r8188eu: remove dead led control functions
staging: r8188eu: remove unnecessary comments
staging: r8188eu: remove _InitHWLed()
staging: r8188eu: remove LedStrategy from struct led_priv
staging: r8188eu: remove ODM_CheckPowerStatus()
staging: r8188eu: remove odm_DynamicBBPowerSaving()
staging: r8188eu: remove odm_GlobalAdapterCheck()
staging: r8188eu: remove SetHalDefVarHandler from struct hal_ops
staging: r8188eu: remove GetHalDefVarHandler from struct hal_ops
staging: r8188eu: remove init_xmit_priv from struct hal_ops
staging: r8188eu: remove init_recv_priv from struct hal_ops
staging: r8188eu: remove free_recv_priv from struct hal_ops
staging: r8188eu: remove inirp_init from struct hal_ops
staging: r8188eu: remove inirp_deinit from struct hal_ops
staging: r8188eu: remove rtl8188e_silentreset_for_specific_platform()
staging: r8188eu: remove SetHwRegHandler from hal_ops
staging: r8188eu: remove GetHwRegHandler from hal_ops
staging: r8188eu: remove hal_init from hal_ops
staging: r8188eu: remove hal_ops
staging: r8188eu: rename rtl8188eu_set_hal_ops()
staging: r8188eu: remove unused defines from rtw_sreset.h
staging: r8188eu: remove some dead code
staging: r8188eu: remove unused macros and defines from rtl8188e_hal.h
staging: r8188eu: replace MACADDRLEN with ETH_ALEN
staging: r8188eu: remove enum _RTL8712_RF_MIMO_CONFIG_
staging: r8188eu: remove empty functions from odm.c
staging: r8188eu: remove ODM_SingleDualAntennaDefaultSetting()
staging: r8188eu: remove GetPSDData()
staging: r8188eu: remove ODM_AntselStatistics_88C()
staging: r8188eu: pBandType is never set
staging: r8188eu: pMacPhyMode is not used
staging: r8188eu: remove ODM_CmnInfoPtrArrayHook()
staging: r8188eu: remove unused constants and variables
staging: r8188eu: remove unnecessary assignment
staging: r8188eu: fix a gcc warning
staging: r8188eu: remove duplicate structure
staging: r8188eu: BTRxRSSIPercentage is set but never used
staging: r8188eu: rename ODM_PhyStatusQuery_92CSeries()
staging: r8188eu: remove unused cases from ODM_CmnInfo{Hook,Update}
staging: r8188eu: remove unused fields from enum odm_common_info_def
staging: r8188eu: remove unused enums and defines from odm.h
staging: r8188eu: RFType type is always ODM_1T1R
Nathan Chancellor (1):
staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn()
Nikita Yushchenko (4):
staging: most: dim2: force fcnt=3 on Renesas GEN3
staging: most: dim2: use if statements instead of ?: expressions
staging: most: dim2: do not double-register the same device
staging: most: dim2: use device release method
Ojaswin Mujoo (1):
staging: vchiq: Replace function typedefs with equivalent declaration
Paulo Miguel Almeida (1):
staging: pi433: fix docs typos and references to previous struct names
Pavel Skripkin (22):
staging: r8188eu: fix memory leak in rtw_set_key
staging: r8188eu: remove useless memset
staging: r8188eu: remove useless check
staging: r8188eu: remove _rtw_mutex_{init,free}
staging: r8188eu: make _rtw_init_queue a macro
staging: r8188eu: remove usb_{read,write}_mem()
staging: r8188eu: remove the helpers of rtw_read8()
staging: r8188eu: remove the helpers of rtw_read16()
staging: r8188eu: remove the helpers of rtw_read32()
staging: r8188eu: remove the helpers of usb_write8()
staging: r8188eu: remove the helpers of usb_write16()
staging: r8188eu: remove the helpers of usb_write32()
staging: r8188eu: remove the helpers of usb_writeN()
staging: r8188eu: remove the helpers of usb_read_port()
staging: r8188eu: remove the helpers of usb_write_port()
staging: r8188eu: remove the helpers of usb_read_port_cancel()
staging: r8188eu: remove the helpers of usb_write_port_cancel()
staging: r8188eu: remove core/rtw_io.c
staging: r8188eu: remove struct _io_ops
staging: r8188eu: remove shared buffer for USB requests
staging: r8188eu: remove mutex 'usb_vendor_req_mutex'
staging: rtl8712: fix use-after-free in rtl8712_dl_fw
Phillip Potter (18):
staging: r8188eu: remove c2h_handler field from struct hal_ops
staging: r8188eu: simplify c2h_evt_hdl function
staging: r8188eu: remove rtw_hal_c2h_handler function
staging: r8188eu: remove rtw_hal_reset_security_engine function
staging: r8188eu: remove hal_reset_security_engine from struct hal_ops
staging: r8188eu: remove rtw_hal_enable_interrupt function
staging: r8188eu: remove enable_interrupt from struct hal_ops
staging: r8188eu: remove rtw_hal_disable_interrupt function
staging: r8188eu: remove disable_interrupt from struct hal_ops
staging: r8188eu: remove rtw_hal_interrupt_handler function
staging: r8188eu: remove interrupt_handler from struct hal_ops
staging: r8188eu: remove rtw_hal_xmitframe_enqueue function
staging: r8188eu: remove hal_xmitframe_enqueue from struct hal_ops
staging: r8188eu: remove Efuse_PgPacketWrite_BT function
staging: r8188eu: remove Efuse_PgPacketWrite_BT from struct hal_ops
staging: r8188eu: remove rtw_hal_c2h_id_filter_ccx function
staging: r8188eu: remove c2h_id_filter_ccx from struct hal_ops
staging: r8188eu: remove MSG_88E calls from hal/usb_halinit.c
Saurav Girepunje (27):
staging: r8188eu: core: remove null check before vfree
staging: r8188eu: os_dep: remove unused static variable
staging: r8188eu: core: remove unused function
staging: r8188eu: core: remove condition with no effect
staging: r8188eu: os_dep: use kmemdup instead of kzalloc and memcpy
staging: r8188eu: hal: remove condition with no effect
staging: r8188eu: core: remove condition never execute
staging: r8188eu: include: remove duplicate declaration.
staging: r8188eu: core: remove unused variable padapter
staging: r8188eu: core: remove unused variable Adapter
staging: r8188eu: os_dep: simplifiy the rtw_resume function
staging: r8188eu: core: remove unused function rtw_set_tx_chksum_offload
staging: rtl8723bs: core: remove condition never execute
staging: rtl8723bs: core: remove reassignment of same value to variable
staging: rtl8192e: remove unused variable ieee
staging: rtl8192u: remove unused static variable
staging: r8188eu: core: remove power_saving_wk_hdl function
staging: r8188eu: core: remove unused variable pAdapter
staging: r8188eu: core: remove unused variable local variable
staging: r8188eu: hal: remove assignment to itself
staging: r8188eu: core: remove duplicate condition check
staging: rtl8723bs: hal: remove duplicate check
staging: r8188eu: remove unused local variable
staging: r8188eu: core: remove goto statement
staging: r8188eu: core: remove the goto from rtw_IOL_accquire_xmit_frame
staging: rtl8723bs: hal remove the assignment to itself
staging: r8188eu: hal: remove goto statement and local variable
Sergio Paracuellos (16):
MIPS: ralink: don't define PC_IOBASE but increase IO_SPACE_LIMIT
staging: mt7621-pci: set end limit for 'ioport_resource'
Revert "MIPS: ralink: don't define PC_IOBASE but increase IO_SPACE_LIMIT"
Revert "staging: mt7621-pci: set end limit for 'ioport_resource'"
MIPS: ralink: set PCI_IOBASE to 'mips_io_port_base'
PCI: Allow architecture-specific pci_remap_iospace()
MIPS: implement architecture-specific 'pci_remap_iospace()'
staging: mt7621-pci: properly adjust base address for the IO window
staging: mt7621-dts: properly define 'cpc' and 'mc' nodes
MIPS: asm: pci: define arch-specific 'pci_remap_iospace()' dependent on 'CONFIG_PCI_DRIVERS_GENERIC'
staging: mt7621-dts: change some node hex addresses to lower case
staging: mt7621-dts: get rid of nodes with no in-tree driver
staging: mt7621-dts: change palmbus address to lower case
staging: mt7621-dts: make use of 'IRQ_TYPE_LEVEL_HIGH' instead of magic numbers
staging: mt7621-dts: complete 'cpus' node
staging: mt7621-dts: add missing SPDX license to files
Sidong Yang (1):
staging: pi433: goto abort when setting failed in tx_thread
Siou-Jhih, Guo (1):
staging: r8188eu: Fix misspelling in comment
Srivathsa Dara (2):
staging: fbtft: fbtft-core: fix 'trailing statements should be on next line' coding style error
staging: wfx: sta: Fix 'else' coding style warning
Stefan Wahren (3):
staging: vchiq_arm: re-order vchiq_arm_init_state
staging: vchiq_arm: drop unnecessary declarations
staging: vchiq_arm: move platform structs to vchiq_arm.c
Tommaso Merciai (6):
staging: vt6655: fix camelcase in pbyCxtBuf
staging: vt6655: fix camelcase in bShortSlotTime
staging: vt6655: fix camelcase in ldBmThreshold
staging: vt6655: fix camelcase in PortOffset
staging: vt6655: fix camelcase in byLocalID
staging: vt6655: fix camelcase in byRate
Uwe Kleine-König (1):
staging: fbtft: Make fbtft_remove_common() return void
Vegard Nossum (1):
staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC
Wan Jiabing (1):
staging: r8188eu: Use memdup_user instead of kmalloc/copy_from_user
Yang Yingliang (1):
staging: r8188eu: fix missing unlock in rtw_resume()
xu xin (1):
staging: r8118eu: remove useless parts of judgements from os_dep/ioctl_linux.
arch/mips/include/asm/mach-ralink/spaces.h | 4 +-
arch/mips/include/asm/pci.h | 4 +
arch/mips/pci/pci-generic.c | 14 +
drivers/pci/pci.c | 2 +
drivers/staging/axis-fifo/axis-fifo.c | 88 +-
drivers/staging/fbtft/fbtft-core.c | 11 +-
drivers/staging/fbtft/fbtft.h | 8 +-
drivers/staging/fieldbus/anybuss/host.c | 8 +-
drivers/staging/gdm724x/gdm_lte.c | 4 +-
drivers/staging/ks7010/Kconfig | 3 +
drivers/staging/ks7010/ks_hostif.c | 2 +-
drivers/staging/ks7010/ks_wlan_net.c | 4 +-
drivers/staging/most/dim2/Makefile | 2 +-
drivers/staging/most/dim2/dim2.c | 115 +-
drivers/staging/most/dim2/sysfs.c | 49 -
drivers/staging/most/dim2/sysfs.h | 11 -
drivers/staging/most/net/net.c | 2 +-
drivers/staging/mt7621-dma/hsdma-mt7621.c | 6 +-
drivers/staging/mt7621-dts/gbpc1.dts | 3 +-
drivers/staging/mt7621-dts/gbpc2.dts | 1 +
drivers/staging/mt7621-dts/mt7621.dtsi | 74 +-
drivers/staging/mt7621-pci/pci-mt7621.c | 2 +-
drivers/staging/octeon/ethernet.c | 2 +-
drivers/staging/pi433/pi433_if.c | 18 +-
drivers/staging/pi433/pi433_if.h | 23 +-
drivers/staging/qlge/qlge_main.c | 18 +-
drivers/staging/qlge/qlge_mpi.c | 2 +-
drivers/staging/r8188eu/Kconfig | 10 -
drivers/staging/r8188eu/Makefile | 155 +-
drivers/staging/r8188eu/core/rtw_ap.c | 607 +----
drivers/staging/r8188eu/core/rtw_br_ext.c | 3 +-
drivers/staging/r8188eu/core/rtw_cmd.c | 618 +-----
drivers/staging/r8188eu/core/rtw_debug.c | 904 --------
drivers/staging/r8188eu/core/rtw_efuse.c | 582 +----
drivers/staging/r8188eu/core/rtw_ieee80211.c | 339 +--
drivers/staging/r8188eu/core/rtw_io.c | 299 ---
drivers/staging/r8188eu/core/rtw_ioctl_set.c | 397 +---
drivers/staging/r8188eu/core/rtw_iol.c | 34 +-
drivers/staging/r8188eu/core/rtw_led.c | 1365 +-----------
drivers/staging/r8188eu/core/rtw_mlme.c | 126 +-
drivers/staging/r8188eu/core/rtw_mlme_ext.c | 386 +---
drivers/staging/r8188eu/core/rtw_mp.c | 935 --------
drivers/staging/r8188eu/core/rtw_mp_ioctl.c | 1170 ----------
drivers/staging/r8188eu/core/rtw_p2p.c | 43 +-
drivers/staging/r8188eu/core/rtw_pwrctrl.c | 140 +-
drivers/staging/r8188eu/core/rtw_recv.c | 116 +-
drivers/staging/r8188eu/core/rtw_rf.c | 17 -
drivers/staging/r8188eu/core/rtw_security.c | 197 +-
drivers/staging/r8188eu/core/rtw_sreset.c | 62 -
drivers/staging/r8188eu/core/rtw_sta_mgt.c | 34 +-
drivers/staging/r8188eu/core/rtw_wlan_util.c | 157 +-
drivers/staging/r8188eu/core/rtw_xmit.c | 121 +-
drivers/staging/r8188eu/hal/Hal8188ERateAdaptive.c | 22 +-
drivers/staging/r8188eu/hal/HalHWImg8188E_BB.c | 32 +-
drivers/staging/r8188eu/hal/HalHWImg8188E_MAC.c | 10 +-
drivers/staging/r8188eu/hal/HalHWImg8188E_RF.c | 15 +-
drivers/staging/r8188eu/hal/HalPhyRf_8188e.c | 171 +-
drivers/staging/r8188eu/hal/hal_com.c | 26 +-
drivers/staging/r8188eu/hal/hal_intf.c | 391 +---
drivers/staging/r8188eu/hal/odm.c | 1188 +---------
drivers/staging/r8188eu/hal/odm_HWConfig.c | 393 +---
drivers/staging/r8188eu/hal/odm_RTL8188E.c | 31 +-
drivers/staging/r8188eu/hal/odm_RegConfig8188E.c | 8 -
drivers/staging/r8188eu/hal/odm_interface.c | 85 -
drivers/staging/r8188eu/hal/rtl8188e_cmd.c | 48 +-
drivers/staging/r8188eu/hal/rtl8188e_dm.c | 93 +-
drivers/staging/r8188eu/hal/rtl8188e_hal_init.c | 310 +--
drivers/staging/r8188eu/hal/rtl8188e_mp.c | 798 -------
drivers/staging/r8188eu/hal/rtl8188e_phycfg.c | 215 +-
drivers/staging/r8188eu/hal/rtl8188e_rf6052.c | 226 +-
drivers/staging/r8188eu/hal/rtl8188e_rxdesc.c | 2 +-
drivers/staging/r8188eu/hal/rtl8188e_sreset.c | 27 -
drivers/staging/r8188eu/hal/rtl8188eu_recv.c | 4 +-
drivers/staging/r8188eu/hal/rtl8188eu_xmit.c | 60 +-
drivers/staging/r8188eu/hal/usb_halinit.c | 328 +--
drivers/staging/r8188eu/hal/usb_ops_linux.c | 256 +--
drivers/staging/r8188eu/include/Hal8188EPhyCfg.h | 91 -
.../staging/r8188eu/include/Hal8188ERateAdaptive.h | 2 -
drivers/staging/r8188eu/include/HalHWImg8188E_FW.h | 16 -
drivers/staging/r8188eu/include/HalVerDef.h | 70 -
drivers/staging/r8188eu/include/drv_types.h | 37 +-
drivers/staging/r8188eu/include/hal_intf.h | 312 +--
drivers/staging/r8188eu/include/ieee80211.h | 71 -
drivers/staging/r8188eu/include/ioctl_cfg80211.h | 2 -
drivers/staging/r8188eu/include/mp_custom_oid.h | 333 ---
drivers/staging/r8188eu/include/odm.h | 457 +---
drivers/staging/r8188eu/include/odm_HWConfig.h | 11 +-
drivers/staging/r8188eu/include/odm_RTL8188E.h | 2 -
.../staging/r8188eu/include/odm_RegConfig8188E.h | 3 -
.../staging/r8188eu/include/odm_RegDefine11AC.h | 29 -
drivers/staging/r8188eu/include/odm_RegDefine11N.h | 112 +-
drivers/staging/r8188eu/include/odm_interface.h | 88 -
drivers/staging/r8188eu/include/odm_precomp.h | 22 -
drivers/staging/r8188eu/include/odm_reg.h | 89 -
drivers/staging/r8188eu/include/odm_types.h | 24 -
drivers/staging/r8188eu/include/osdep_intf.h | 5 -
drivers/staging/r8188eu/include/osdep_service.h | 42 +-
drivers/staging/r8188eu/include/recv_osdep.h | 2 -
drivers/staging/r8188eu/include/rtl8188e_cmd.h | 16 -
drivers/staging/r8188eu/include/rtl8188e_dm.h | 13 -
drivers/staging/r8188eu/include/rtl8188e_hal.h | 102 +-
drivers/staging/r8188eu/include/rtl8188e_led.h | 2 -
drivers/staging/r8188eu/include/rtl8188e_recv.h | 2 +-
drivers/staging/r8188eu/include/rtl8188e_rf.h | 1 -
drivers/staging/r8188eu/include/rtl8188e_spec.h | 4 -
drivers/staging/r8188eu/include/rtl8188e_sreset.h | 2 -
drivers/staging/r8188eu/include/rtw_ap.h | 11 -
drivers/staging/r8188eu/include/rtw_br_ext.h | 3 +-
drivers/staging/r8188eu/include/rtw_cmd.h | 27 +-
drivers/staging/r8188eu/include/rtw_debug.h | 156 --
drivers/staging/r8188eu/include/rtw_eeprom.h | 57 +-
drivers/staging/r8188eu/include/rtw_efuse.h | 21 -
drivers/staging/r8188eu/include/rtw_io.h | 87 +-
drivers/staging/r8188eu/include/rtw_ioctl_rtl.h | 63 -
drivers/staging/r8188eu/include/rtw_ioctl_set.h | 8 -
drivers/staging/r8188eu/include/rtw_iol.h | 5 -
drivers/staging/r8188eu/include/rtw_led.h | 20 -
drivers/staging/r8188eu/include/rtw_mlme.h | 11 -
drivers/staging/r8188eu/include/rtw_mlme_ext.h | 14 -
drivers/staging/r8188eu/include/rtw_mp.h | 474 ----
drivers/staging/r8188eu/include/rtw_mp_ioctl.h | 242 --
.../staging/r8188eu/include/rtw_mp_phy_regdef.h | 1063 ---------
drivers/staging/r8188eu/include/rtw_p2p.h | 1 -
drivers/staging/r8188eu/include/rtw_pwrctrl.h | 130 +-
drivers/staging/r8188eu/include/rtw_recv.h | 6 -
drivers/staging/r8188eu/include/rtw_rf.h | 12 -
drivers/staging/r8188eu/include/rtw_security.h | 20 +-
drivers/staging/r8188eu/include/rtw_sreset.h | 34 -
drivers/staging/r8188eu/include/rtw_xmit.h | 6 -
drivers/staging/r8188eu/include/sta_info.h | 7 -
drivers/staging/r8188eu/include/usb_ops.h | 5 -
drivers/staging/r8188eu/include/usb_ops_linux.h | 8 -
drivers/staging/r8188eu/include/usb_osintf.h | 5 +-
drivers/staging/r8188eu/include/wifi.h | 52 -
drivers/staging/r8188eu/include/xmit_osdep.h | 2 -
drivers/staging/r8188eu/os_dep/ioctl_linux.c | 2331 +-------------------
drivers/staging/r8188eu/os_dep/mlme_linux.c | 6 -
drivers/staging/r8188eu/os_dep/os_intfs.c | 399 +---
drivers/staging/r8188eu/os_dep/osdep_service.c | 82 +-
drivers/staging/r8188eu/os_dep/recv_linux.c | 14 -
drivers/staging/r8188eu/os_dep/usb_intf.c | 285 +--
drivers/staging/r8188eu/os_dep/usb_ops_linux.c | 40 +-
drivers/staging/r8188eu/os_dep/xmit_linux.c | 4 -
drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c | 7 +-
drivers/staging/rtl8192e/rtl8192e/rtl_cam.c | 4 +-
drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 2 +-
drivers/staging/rtl8192e/rtl819x_BAProc.c | 9 +-
drivers/staging/rtl8192u/r8192U.h | 3 +-
drivers/staging/rtl8192u/r8192U_core.c | 36 +-
drivers/staging/rtl8712/os_intfs.c | 9 +-
drivers/staging/rtl8712/rtl871x_cmd.c | 2 +-
drivers/staging/rtl8712/rtl871x_cmd.h | 2 +-
drivers/staging/rtl8712/rtl871x_xmit.h | 10 +-
drivers/staging/rtl8712/usb_intf.c | 6 +-
drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
drivers/staging/rtl8723bs/Kconfig | 1 +
drivers/staging/rtl8723bs/core/rtw_ap.c | 23 +-
drivers/staging/rtl8723bs/core/rtw_cmd.c | 210 +-
drivers/staging/rtl8723bs/core/rtw_ioctl_set.c | 4 +-
drivers/staging/rtl8723bs/core/rtw_mlme.c | 24 +-
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 79 +-
drivers/staging/rtl8723bs/core/rtw_recv.c | 22 +-
drivers/staging/rtl8723bs/core/rtw_security.c | 6 +-
drivers/staging/rtl8723bs/core/rtw_sta_mgt.c | 48 +-
drivers/staging/rtl8723bs/core/rtw_xmit.c | 49 +-
drivers/staging/rtl8723bs/hal/odm_DIG.c | 2 +-
drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c | 12 -
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 6 +-
drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c | 2 -
drivers/staging/rtl8723bs/include/osdep_service.h | 2 +-
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 26 +-
drivers/staging/rtl8723bs/os_dep/ioctl_linux.c | 34 +-
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 8 +-
drivers/staging/rtl8723bs/os_dep/osdep_service.c | 11 +-
drivers/staging/rts5208/ms.c | 42 +-
drivers/staging/rts5208/rtsx.c | 2 +-
drivers/staging/rts5208/rtsx_card.c | 8 +-
drivers/staging/rts5208/rtsx_chip.c | 16 +-
drivers/staging/rts5208/rtsx_scsi.c | 106 +-
drivers/staging/rts5208/rtsx_transport.c | 6 +-
drivers/staging/rts5208/sd.c | 68 +-
drivers/staging/rts5208/xd.c | 48 +-
drivers/staging/unisys/visornic/visornic_main.c | 5 +-
.../vc04_services/interface/vchiq_arm/vchiq_arm.c | 298 ++-
.../vc04_services/interface/vchiq_arm/vchiq_arm.h | 52 -
.../interface/vchiq_arm/vchiq_connected.c | 20 +-
.../interface/vchiq_arm/vchiq_connected.h | 4 +-
.../vc04_services/interface/vchiq_arm/vchiq_core.c | 771 +++----
.../vc04_services/interface/vchiq_arm/vchiq_core.h | 107 +-
.../vc04_services/interface/vchiq_arm/vchiq_dev.c | 182 +-
drivers/staging/vt6655/baseband.c | 74 +-
drivers/staging/vt6655/baseband.h | 2 +-
drivers/staging/vt6655/card.c | 98 +-
drivers/staging/vt6655/channel.c | 12 +-
drivers/staging/vt6655/device.h | 10 +-
drivers/staging/vt6655/device_main.c | 162 +-
drivers/staging/vt6655/dpc.c | 2 +-
drivers/staging/vt6655/key.c | 2 +-
drivers/staging/vt6655/mac.c | 50 +-
drivers/staging/vt6655/mac.h | 6 +-
drivers/staging/vt6655/power.c | 24 +-
drivers/staging/vt6655/rf.c | 140 +-
drivers/staging/vt6655/rf.h | 2 +-
drivers/staging/vt6655/rxtx.c | 64 +-
drivers/staging/wfx/bh.c | 37 +-
drivers/staging/wfx/bh.h | 4 +-
drivers/staging/wfx/bus_sdio.c | 25 +-
drivers/staging/wfx/bus_spi.c | 22 +-
drivers/staging/wfx/data_rx.c | 7 +-
drivers/staging/wfx/data_rx.h | 4 +-
drivers/staging/wfx/data_tx.c | 87 +-
drivers/staging/wfx/data_tx.h | 6 +-
drivers/staging/wfx/debug.c | 56 +-
drivers/staging/wfx/debug.h | 2 +-
drivers/staging/wfx/fwio.c | 26 +-
drivers/staging/wfx/fwio.h | 2 +-
drivers/staging/wfx/hif_api_cmd.h | 14 +-
drivers/staging/wfx/hif_api_general.h | 25 +-
drivers/staging/wfx/hif_api_mib.h | 85 +-
drivers/staging/wfx/hif_rx.c | 23 +-
drivers/staging/wfx/hif_rx.h | 3 +-
drivers/staging/wfx/hif_tx.c | 60 +-
drivers/staging/wfx/hif_tx.h | 6 +-
drivers/staging/wfx/hif_tx_mib.c | 14 +-
drivers/staging/wfx/hif_tx_mib.h | 2 +-
drivers/staging/wfx/hwio.c | 6 +-
drivers/staging/wfx/hwio.h | 20 +-
drivers/staging/wfx/key.c | 30 +-
drivers/staging/wfx/key.h | 4 +-
drivers/staging/wfx/main.c | 37 +-
drivers/staging/wfx/main.h | 3 +-
drivers/staging/wfx/queue.c | 43 +-
drivers/staging/wfx/queue.h | 6 +-
drivers/staging/wfx/scan.c | 51 +-
drivers/staging/wfx/scan.h | 4 +-
drivers/staging/wfx/sta.c | 118 +-
drivers/staging/wfx/sta.h | 8 +-
drivers/staging/wfx/traces.h | 2 +-
drivers/staging/wfx/wfx.h | 14 +-
drivers/staging/wlan-ng/hfa384x.h | 2 +-
drivers/staging/wlan-ng/hfa384x_usb.c | 24 +-
drivers/staging/wlan-ng/p80211conv.c | 2 +-
drivers/staging/wlan-ng/p80211conv.h | 2 +-
drivers/staging/wlan-ng/p80211hdr.h | 2 +-
drivers/staging/wlan-ng/p80211ioctl.h | 2 +-
drivers/staging/wlan-ng/p80211mgmt.h | 2 +-
drivers/staging/wlan-ng/p80211msg.h | 2 +-
drivers/staging/wlan-ng/p80211netdev.c | 4 +-
drivers/staging/wlan-ng/p80211netdev.h | 2 +-
drivers/staging/wlan-ng/p80211req.c | 2 +-
drivers/staging/wlan-ng/p80211req.h | 2 +-
drivers/staging/wlan-ng/p80211types.h | 2 +-
drivers/staging/wlan-ng/p80211wep.c | 2 +-
drivers/staging/wlan-ng/prism2mgmt.c | 2 +-
drivers/staging/wlan-ng/prism2mgmt.h | 2 +-
drivers/staging/wlan-ng/prism2mib.c | 2 +-
drivers/staging/wlan-ng/prism2sta.c | 6 +-
drivers/staging/wlan-ng/prism2usb.c | 3 +-
258 files changed, 3323 insertions(+), 22353 deletions(-)
delete mode 100644 drivers/staging/most/dim2/sysfs.c
delete mode 100644 drivers/staging/r8188eu/core/rtw_debug.c
delete mode 100644 drivers/staging/r8188eu/core/rtw_io.c
delete mode 100644 drivers/staging/r8188eu/core/rtw_mp.c
delete mode 100644 drivers/staging/r8188eu/core/rtw_mp_ioctl.c
delete mode 100644 drivers/staging/r8188eu/core/rtw_sreset.c
delete mode 100644 drivers/staging/r8188eu/hal/rtl8188e_mp.c
delete mode 100644 drivers/staging/r8188eu/include/HalHWImg8188E_FW.h
delete mode 100644 drivers/staging/r8188eu/include/mp_custom_oid.h
delete mode 100644 drivers/staging/r8188eu/include/odm_RegDefine11AC.h
delete mode 100644 drivers/staging/r8188eu/include/odm_reg.h
delete mode 100644 drivers/staging/r8188eu/include/rtw_ioctl_rtl.h
delete mode 100644 drivers/staging/r8188eu/include/rtw_mp.h
delete mode 100644 drivers/staging/r8188eu/include/rtw_mp_ioctl.h
delete mode 100644 drivers/staging/r8188eu/include/rtw_mp_phy_regdef.h
delete mode 100644 drivers/staging/r8188eu/include/rtw_sreset.h
^ permalink raw reply
* Re: [PATCH v2 3/8] staging: vt6655: Remove unused `i` increments
From: Dan Carpenter @ 2021-11-04 13:38 UTC (permalink / raw)
To: Karolina Drobnik
Cc: outreachy-kernel, gregkh, forest, linux-staging, linux-kernel
In-Reply-To: <79a4f03c8f2bfa555ea149ddd1c0f938dd431a0b.1635773680.git.karolinadrobnik@gmail.com>
On Mon, Nov 01, 2021 at 02:32:01PM +0000, Karolina Drobnik wrote:
> Commit c569952d92ba ("staging: vt6655: Use incrementation in `idx`")
> rendered the incrementation of `i` outside of the loop unnecessary
> so it can be deleted.
>
That commit hash is something that only exists on your system. Commit
hashes are stable once they hit Greg's tree (he only rebases in extremely
rarely cases).
This commit is cleaning something that was left in a different patch in
the same patch set. Just merge it into the original patch. Don't make
a mess and then fix it.
It's tricky to know how to break up patches. My suggestion is:
patch 1: remove all the unnecesary (unsigned short) casts
patch 2: merge the rest of patches 1-3 together and send it at once
The rest of the patchset is fine.
regards,
dan carpenter
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox